You are viewing a plain text version of this content. The canonical link for it is here.
Posted to oak-commits@jackrabbit.apache.org by ju...@apache.org on 2014/02/10 23:21:12 UTC
svn commit: r1566764 -
/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/kernel/NodeStoreKernel.java
Author: jukka
Date: Mon Feb 10 22:21:12 2014
New Revision: 1566764
URL: http://svn.apache.org/r1566764
Log:
OAK-920: workspace#copy and permission handling
NodeStoreKernel still needs to support the JSOP copy operation,
even when there is no matching NodeBuilder method anymore
Modified:
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/kernel/NodeStoreKernel.java
Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/kernel/NodeStoreKernel.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/kernel/NodeStoreKernel.java?rev=1566764&r1=1566763&r2=1566764&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/kernel/NodeStoreKernel.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/kernel/NodeStoreKernel.java Mon Feb 10 22:21:12 2014
@@ -24,6 +24,7 @@ import java.util.Map;
import java.util.UUID;
import java.util.zip.CheckedInputStream;
import java.util.zip.Checksum;
+
import javax.annotation.CheckForNull;
import javax.annotation.Nonnull;
@@ -218,9 +219,25 @@ public class NodeStoreKernel implements
throw new MicroKernelException("Move failed");
}
break;
+ case '*':
+ tokenizer.read(':');
+ String copyTarget = tokenizer.readString();
+ String copyTargetPath = getParentPath(copyTarget);
+ String copyTargetName = getName(copyTarget);
+
+ NodeState copySource = getNode(builder, path).getNodeState();
+ NodeBuilder copyTargetParent = getNode(builder, copyTargetPath);
+ if (copySource.exists()
+ && !copyTargetParent.hasChildNode(copyTargetName)) {
+ copyTargetParent.setChildNode(copyTargetName, copySource);
+ } else {
+ throw new MicroKernelException("Copy failed");
+ }
+ break;
default:
throw new MicroKernelException(
- "Unexpected token: " + tokenizer.getEscapedToken());
+ "Unexpected token " + (char) token
+ + " in " + jsonDiff);
}
token = tokenizer.read();
}