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 md...@apache.org on 2012/08/16 17:44:00 UTC

svn commit: r1373889 - in /jackrabbit/oak/trunk: oak-core/src/main/java/org/apache/jackrabbit/oak/core/ oak-core/src/main/java/org/apache/jackrabbit/oak/kernel/ oak-core/src/main/java/org/apache/jackrabbit/oak/namepath/ oak-core/src/test/java/org/apach...

Author: mduerig
Date: Thu Aug 16 15:43:59 2012
New Revision: 1373889

URL: http://svn.apache.org/viewvc?rev=1373889&view=rev
Log:
OAK-221: Clarify nature of 'path' parameter in oak-api
 require leading forward slash in paths for all oak-core APIs

Modified:
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/core/TreeImpl.java
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/kernel/JsopDiff.java
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/kernel/KernelNodeStoreBranch.java
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/namepath/PathMapper.java
    jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/core/RootImplFuzzIT.java
    jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/core/RootImplTest.java
    jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/kernel/JsopDiffTest.java
    jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/SessionDelegate.java

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/core/TreeImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/core/TreeImpl.java?rev=1373889&r1=1373888&r2=1373889&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/core/TreeImpl.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/core/TreeImpl.java Thu Aug 16 15:43:59 2012
@@ -396,6 +396,7 @@ public class TreeImpl implements Tree, P
      */
     @CheckForNull
     TreeImpl getTree(String path) {
+        assert path.startsWith("/");
         TreeImpl child = this;
         for (String name : elements(path)) {
             child = child.internalGetChild(name);

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/kernel/JsopDiff.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/kernel/JsopDiff.java?rev=1373889&r1=1373888&r2=1373889&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/kernel/JsopDiff.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/kernel/JsopDiff.java Thu Aug 16 15:43:59 2012
@@ -16,8 +16,6 @@
  */
 package org.apache.jackrabbit.oak.kernel;
 
-import static org.apache.jackrabbit.oak.kernel.CoreValueMapper.TYPE2HINT;
-
 import javax.jcr.PropertyType;
 
 import org.apache.jackrabbit.mk.json.JsopBuilder;
@@ -28,6 +26,8 @@ import org.apache.jackrabbit.oak.spi.sta
 import org.apache.jackrabbit.oak.spi.state.NodeState;
 import org.apache.jackrabbit.oak.spi.state.NodeStateDiff;
 
+import static org.apache.jackrabbit.oak.kernel.CoreValueMapper.TYPE2HINT;
+
 class JsopDiff implements NodeStateDiff {
 
     protected final JsopBuilder jsop;
@@ -40,7 +40,7 @@ class JsopDiff implements NodeStateDiff 
     }
 
     public JsopDiff() {
-        this(new JsopBuilder(), "");
+        this(new JsopBuilder(), "/");
     }
 
     public static void diffToJsop(
@@ -101,7 +101,7 @@ class JsopDiff implements NodeStateDiff 
         return PathUtils.concat(path, name);
     }
 
-    private void toJson(NodeState nodeState, JsopBuilder jsop) {
+    private static void toJson(NodeState nodeState, JsopBuilder jsop) {
         jsop.object();
         for (PropertyState property : nodeState.getProperties()) {
             jsop.key(property.getName());
@@ -114,7 +114,7 @@ class JsopDiff implements NodeStateDiff 
         jsop.endObject();
     }
 
-    private void toJson(PropertyState propertyState, JsopBuilder jsop) {
+    private static void toJson(PropertyState propertyState, JsopBuilder jsop) {
         if (propertyState.isArray()) {
             jsop.array();
             for (CoreValue value : propertyState.getValues()) {
@@ -126,7 +126,7 @@ class JsopDiff implements NodeStateDiff 
         }
     }
 
-    private void toJson(CoreValue value, JsopBuilder jsop) {
+    private static void toJson(CoreValue value, JsopBuilder jsop) {
         int type = value.getType();
         if (type == PropertyType.BOOLEAN) {
             jsop.value(value.getBoolean());

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/kernel/KernelNodeStoreBranch.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/kernel/KernelNodeStoreBranch.java?rev=1373889&r1=1373888&r2=1373889&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/kernel/KernelNodeStoreBranch.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/kernel/KernelNodeStoreBranch.java Thu Aug 16 15:43:59 2012
@@ -145,6 +145,7 @@ class KernelNodeStoreBranch implements N
     //------------------------------------------------------------< private >---
 
     private NodeState getNode(String path) {
+        assert path.startsWith("/");
         NodeState node = getRoot();
         for (String name : elements(path)) {
             node = node.getChildNode(name);
@@ -158,7 +159,7 @@ class KernelNodeStoreBranch implements N
 
     private void commit(String jsop) {
         MicroKernel kernel = store.getKernel();
-        branchRevision = kernel.commit("/", jsop, branchRevision, null);
+        branchRevision = kernel.commit("", jsop, branchRevision, null);
         currentRoot = new KernelNodeState(kernel, "/", branchRevision);
         committed = currentRoot;
     }

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/namepath/PathMapper.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/namepath/PathMapper.java?rev=1373889&r1=1373888&r2=1373889&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/namepath/PathMapper.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/namepath/PathMapper.java Thu Aug 16 15:43:59 2012
@@ -23,10 +23,9 @@ import javax.annotation.Nonnull;
  * {@code PathMapper} instances provide methods for mapping paths from their JCR
  * string representation to their Oak representation and vice versa.
  *
- * The Oak representation of a path consists of an optional forward slash followed
- * by the names of the respective items in the
- * {@link org.apache.jackrabbit.oak.api.Tree} separated by forward slashes.
- * FIXME make leading forward slash not optional. See OAK-221
+ * The Oak representation of a path consists of a forward slash followed by the
+ * names of the respective items in the {@link org.apache.jackrabbit.oak.api.Tree}
+ * separated by forward slashes.
  */
 public interface PathMapper {
 

Modified: jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/core/RootImplFuzzIT.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/core/RootImplFuzzIT.java?rev=1373889&r1=1373888&r2=1373889&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/core/RootImplFuzzIT.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/core/RootImplFuzzIT.java Thu Aug 16 15:43:59 2012
@@ -183,7 +183,7 @@ public class RootImplFuzzIT {
 
             @Override
             void apply(RootImpl root) {
-                root.move(source.substring(1), destination.substring(1));
+                root.move(source, destination);
             }
 
             @Override
@@ -203,7 +203,7 @@ public class RootImplFuzzIT {
 
             @Override
             void apply(RootImpl root) {
-                root.copy(source.substring(1), destination.substring(1));
+                root.copy(source, destination);
             }
 
             @Override

Modified: jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/core/RootImplTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/core/RootImplTest.java?rev=1373889&r1=1373888&r2=1373889&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/core/RootImplTest.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/core/RootImplTest.java Thu Aug 16 15:43:59 2012
@@ -78,7 +78,7 @@ public class RootImplTest extends Abstra
         Tree y = tree.getChild("y");
 
         assertTrue(tree.hasChild("x"));
-        root.move("x", "y/xx");
+        root.move("/x", "/y/xx");
         assertFalse(tree.hasChild("x"));
         assertTrue(y.hasChild("xx"));
         
@@ -93,13 +93,13 @@ public class RootImplTest extends Abstra
     @Test
     public void move2() {
         RootImpl root = createRootImpl(null);
-        Tree r = root.getTree("");
+        Tree r = root.getTree("/");
         Tree x = r.getChild("x");
         Tree y = r.getChild("y");
 
         assertFalse(y.hasChild("x"));
         assertEquals("", x.getParent().getName());
-        root.move("x", "y/x");
+        root.move("/x", "/y/x");
         assertTrue(y.hasChild("x"));
         assertEquals("y", x.getParent().getName());
     }
@@ -110,11 +110,11 @@ public class RootImplTest extends Abstra
      */
     public void removeMoved() throws CommitFailedException {
         RootImpl root = createRootImpl(null);
-        Tree r = root.getTree("");
+        Tree r = root.getTree("/");
         r.addChild("a");
         r.addChild("b");
 
-        root.move("a", "b/c");
+        root.move("/a", "/b/c");
         assertFalse(r.hasChild("a"));
         assertTrue(r.hasChild("b"));
 
@@ -133,7 +133,7 @@ public class RootImplTest extends Abstra
         Tree tree = root.getTree("/");
 
         assertTrue(tree.hasChild("x"));
-        root.move("x", "xx");
+        root.move("/x", "/xx");
         assertFalse(tree.hasChild("x"));
         assertTrue(tree.hasChild("xx"));
         
@@ -152,7 +152,7 @@ public class RootImplTest extends Abstra
         Tree y = tree.getChild("y");
 
         assertTrue(tree.hasChild("x"));
-        root.copy("x", "y/xx");
+        root.copy("/x", "/y/xx");
         assertTrue(tree.hasChild("x"));
         assertTrue(y.hasChild("xx"));
         
@@ -171,8 +171,8 @@ public class RootImplTest extends Abstra
 
         Tree y = tree.getChild("y");
 
-        root.getTree("x").addChild("x1");
-        root.copy("x", "y/xx");
+        root.getTree("/x").addChild("x1");
+        root.copy("/x", "/y/xx");
         assertTrue(y.hasChild("xx"));
         assertTrue(y.getChild("xx").hasChild("x1"));
 

Modified: jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/kernel/JsopDiffTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/kernel/JsopDiffTest.java?rev=1373889&r1=1373888&r2=1373889&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/kernel/JsopDiffTest.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/kernel/JsopDiffTest.java Thu Aug 16 15:43:59 2012
@@ -16,15 +16,14 @@
  */
 package org.apache.jackrabbit.oak.kernel;
 
-import static junit.framework.Assert.assertEquals;
-
+import com.google.common.collect.ImmutableMap;
 import org.apache.jackrabbit.oak.api.PropertyState;
 import org.apache.jackrabbit.oak.plugins.memory.MemoryNodeState;
 import org.apache.jackrabbit.oak.plugins.memory.SinglePropertyState;
 import org.apache.jackrabbit.oak.spi.state.NodeState;
 import org.junit.Test;
 
-import com.google.common.collect.ImmutableMap;
+import static junit.framework.Assert.assertEquals;
 
 public class JsopDiffTest {
 
@@ -35,23 +34,23 @@ public class JsopDiffTest {
 
         diff = new JsopDiff();
         diff.propertyAdded(before);
-        assertEquals("^\"foo\":\"bar\"", diff.toString());
+        assertEquals("^\"/foo\":\"bar\"", diff.toString());
 
         diff = new JsopDiff();
         diff.propertyChanged(before, SinglePropertyState.create("foo", 123));
-        assertEquals("^\"foo\":123", diff.toString());
+        assertEquals("^\"/foo\":123", diff.toString());
 
         diff = new JsopDiff();
         diff.propertyChanged(before, SinglePropertyState.create("foo", 1.23));
-        assertEquals("^\"foo\":\"dou:1.23\"", diff.toString()); // TODO: 1.23?
+        assertEquals("^\"/foo\":\"dou:1.23\"", diff.toString()); // TODO: 1.23?
 
         diff = new JsopDiff();
         diff.propertyChanged(before, SinglePropertyState.create("foo", true));
-        assertEquals("^\"foo\":true", diff.toString());
+        assertEquals("^\"/foo\":true", diff.toString());
 
         diff = new JsopDiff();
         diff.propertyDeleted(before);
-        assertEquals("^\"foo\":null", diff.toString());
+        assertEquals("^\"/foo\":null", diff.toString());
     }
 
     @Test
@@ -67,15 +66,15 @@ public class JsopDiffTest {
 
         diff = new JsopDiff();
         diff.childNodeAdded("test", before);
-        assertEquals("+\"test\":{}", diff.toString());
+        assertEquals("+\"/test\":{}", diff.toString());
 
         diff = new JsopDiff();
         diff.childNodeChanged("test", before, after);
-        assertEquals("^\"test/a\":1+\"test/x\":{}", diff.toString());
+        assertEquals("^\"/test/a\":1+\"/test/x\":{}", diff.toString());
 
         diff = new JsopDiff();
         diff.childNodeDeleted("test", after);
-        assertEquals("-\"test\"", diff.toString());
+        assertEquals("-\"/test\"", diff.toString());
     }
 
 }

Modified: jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/SessionDelegate.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/SessionDelegate.java?rev=1373889&r1=1373888&r2=1373889&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/SessionDelegate.java (original)
+++ jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/SessionDelegate.java Thu Aug 16 15:43:59 2012
@@ -167,7 +167,7 @@ public class SessionDelegate {
 
     @CheckForNull
     public NodeDelegate getRoot() {
-        Tree root = getTree("");
+        Tree root = getTree("/");
         if (root == null) {
             return null;
         } else {
@@ -320,27 +320,24 @@ public class SessionDelegate {
         return contentSession.getWorkspaceName();
     }
 
-    public void copy(String srcAbsPath, String destAbsPath) throws RepositoryException {
-        String srcPath = PathUtils.relativize("/", srcAbsPath);
-        String destPath = PathUtils.relativize("/", destAbsPath);
-
+    public void copy(String srcPath, String destPath) throws RepositoryException {
         // check destination
         Tree dest = getTree(destPath);
         if (dest != null) {
-            throw new ItemExistsException(destAbsPath);
+            throw new ItemExistsException(destPath);
         }
 
         // check parent of destination
         String destParentPath = PathUtils.getParentPath(destPath);
         Tree destParent = getTree(destParentPath);
         if (destParent == null) {
-            throw new PathNotFoundException(PathUtils.getParentPath(destAbsPath));
+            throw new PathNotFoundException(PathUtils.getParentPath(destPath));
         }
 
         // check source exists
         Tree src = getTree(srcPath);
         if (src == null) {
-            throw new PathNotFoundException(srcAbsPath);
+            throw new PathNotFoundException(srcPath);
         }
 
         try {
@@ -353,30 +350,28 @@ public class SessionDelegate {
         }
     }
 
-    public void move(String srcAbsPath, String destAbsPath, boolean transientOp)
+    public void move(String srcPath, String destPath, boolean transientOp)
             throws RepositoryException {
 
-        String srcPath = PathUtils.relativize("/", srcAbsPath);
-        String destPath = PathUtils.relativize("/", destAbsPath);
         Root moveRoot = transientOp ? root : contentSession.getCurrentRoot();
 
         // check destination
         Tree dest = moveRoot.getTree(destPath);
         if (dest != null) {
-            throw new ItemExistsException(destAbsPath);
+            throw new ItemExistsException(destPath);
         }
 
         // check parent of destination
         String destParentPath = PathUtils.getParentPath(destPath);
         Tree destParent = moveRoot.getTree(destParentPath);
         if (destParent == null) {
-            throw new PathNotFoundException(PathUtils.getParentPath(destAbsPath));
+            throw new PathNotFoundException(PathUtils.getParentPath(destPath));
         }
 
         // check source exists
         Tree src = moveRoot.getTree(srcPath);
         if (src == null) {
-            throw new PathNotFoundException(srcAbsPath);
+            throw new PathNotFoundException(srcPath);
         }
 
         try {