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();
         }