You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jackrabbit.apache.org by tr...@apache.org on 2005/05/24 16:34:14 UTC
svn commit: r178171 - in
/incubator/jackrabbit/trunk/src/java/org/apache/jackrabbit/core:
BatchedItemOperations.java NodeImpl.java SessionImpl.java
Author: tripod
Date: Tue May 24 07:34:14 2005
New Revision: 178171
URL: http://svn.apache.org/viewcvs?rev=178171&view=rev
Log:
- optimize move operations
Modified:
incubator/jackrabbit/trunk/src/java/org/apache/jackrabbit/core/BatchedItemOperations.java
incubator/jackrabbit/trunk/src/java/org/apache/jackrabbit/core/NodeImpl.java
incubator/jackrabbit/trunk/src/java/org/apache/jackrabbit/core/SessionImpl.java
Modified: incubator/jackrabbit/trunk/src/java/org/apache/jackrabbit/core/BatchedItemOperations.java
URL: http://svn.apache.org/viewcvs/incubator/jackrabbit/trunk/src/java/org/apache/jackrabbit/core/BatchedItemOperations.java?rev=178171&r1=178170&r2=178171&view=diff
==============================================================================
--- incubator/jackrabbit/trunk/src/java/org/apache/jackrabbit/core/BatchedItemOperations.java (original)
+++ incubator/jackrabbit/trunk/src/java/org/apache/jackrabbit/core/BatchedItemOperations.java Tue May 24 07:34:14 2005
@@ -422,6 +422,16 @@
boolean renameOnly = srcParent.getUUID().equals(destParent.getUUID());
+ // remove from old parent
+ if (!renameOnly) {
+ target.removeParentUUID(srcParent.getUUID());
+ }
+ int srcNameIndex = srcName.getIndex();
+ if (srcNameIndex == 0) {
+ srcNameIndex = 1;
+ }
+ srcParent.removeChildNodeEntry(srcName.getName(), srcNameIndex);
+
// add to new parent
if (!renameOnly) {
target.addParentUUID(destParent.getUUID());
@@ -433,17 +443,6 @@
findApplicableNodeDefinition(destName.getName(),
target.getNodeTypeName(), destParent);
target.setDefinitionId(newTargetDef.getId());
-
- // remove from old parent
- if (!renameOnly) {
- target.removeParentUUID(srcParent.getUUID());
- }
-
- int srcNameIndex = srcName.getIndex();
- if (srcNameIndex == 0) {
- srcNameIndex = 1;
- }
- srcParent.removeChildNodeEntry(srcName.getName(), srcNameIndex);
// store states
stateMgr.store(target);
Modified: incubator/jackrabbit/trunk/src/java/org/apache/jackrabbit/core/NodeImpl.java
URL: http://svn.apache.org/viewcvs/incubator/jackrabbit/trunk/src/java/org/apache/jackrabbit/core/NodeImpl.java?rev=178171&r1=178170&r2=178171&view=diff
==============================================================================
--- incubator/jackrabbit/trunk/src/java/org/apache/jackrabbit/core/NodeImpl.java (original)
+++ incubator/jackrabbit/trunk/src/java/org/apache/jackrabbit/core/NodeImpl.java Tue May 24 07:34:14 2005
@@ -546,6 +546,16 @@
return (NodeImpl) itemMgr.getItem(targetId);
}
+ protected NodeImpl renameChildNodeLink(QName oldName, int index, String uuid, QName newName)
+ throws RepositoryException {
+ // modify the state of 'this', i.e. the parent node
+ NodeState thisState = (NodeState) getOrCreateTransientItemState();
+ thisState.removeChildNodeEntry(oldName, index);
+ thisState.addChildNodeEntry(newName, uuid);
+
+ return (NodeImpl) itemMgr.getItem(new NodeId(uuid));
+ }
+
protected void removeChildProperty(String propName) throws RepositoryException {
QName qName;
Modified: incubator/jackrabbit/trunk/src/java/org/apache/jackrabbit/core/SessionImpl.java
URL: http://svn.apache.org/viewcvs/incubator/jackrabbit/trunk/src/java/org/apache/jackrabbit/core/SessionImpl.java?rev=178171&r1=178170&r2=178171&view=diff
==============================================================================
--- incubator/jackrabbit/trunk/src/java/org/apache/jackrabbit/core/SessionImpl.java (original)
+++ incubator/jackrabbit/trunk/src/java/org/apache/jackrabbit/core/SessionImpl.java Tue May 24 07:34:14 2005
@@ -911,21 +911,24 @@
}
// check lock status
-
srcParentNode.checkLock();
destParentNode.checkLock();
- // do move operation
-
String targetUUID = ((NodeState) targetNode.getItemState()).getUUID();
- // add target to new parent
- destParentNode.createChildNodeLink(destName.getName(), targetUUID);
- // remove target from old parent
int index = srcName.getIndex();
if (index == 0) {
index = 1;
}
- srcParentNode.removeChildNode(srcName.getName(), index);
+
+ if (srcParentNode.isSame(destParentNode)) {
+ // do rename
+ destParentNode.renameChildNodeLink(srcName.getName(), index, targetUUID, destName.getName());
+ } else {
+ // do move
+ destParentNode.createChildNodeLink(destName.getName(), targetUUID);
+ srcParentNode.removeChildNode(srcName.getName(), index);
+ }
+
// change definition of target if necessary
NodeDefinitionImpl oldTargetDef = (NodeDefinitionImpl) targetNode.getDefinition();
NodeDefId oldTargetDefId = oldTargetDef.unwrap().getId();