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:10:51 UTC

svn commit: r1373877 - in /jackrabbit/oak/trunk: oak-core/src/main/java/org/apache/jackrabbit/oak/core/ oak-core/src/test/java/org/apache/jackrabbit/oak/core/ oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/

Author: mduerig
Date: Thu Aug 16 15:10:51 2012
New Revision: 1373877

URL: http://svn.apache.org/viewvc?rev=1373877&view=rev
Log:
OAK-221: Clarify nature of 'path' parameter in oak-api
 Tree.getPath() returns path with leading forward slash

Modified:
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/core/ReadOnlyTree.java
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/core/TreeImpl.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/core/TreeImplTest.java
    jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/NodeDelegate.java

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/core/ReadOnlyTree.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/core/ReadOnlyTree.java?rev=1373877&r1=1373876&r2=1373877&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/core/ReadOnlyTree.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/core/ReadOnlyTree.java Thu Aug 16 15:10:51 2012
@@ -30,7 +30,7 @@ import org.apache.jackrabbit.oak.spi.sta
 public class ReadOnlyTree implements Tree {
 
     /** Parent of this tree, {@code null} for the root */
-    private final Tree parent;
+    private final ReadOnlyTree parent;
 
     /** Name of this tree */
     private final String name;
@@ -38,8 +38,6 @@ public class ReadOnlyTree implements Tre
     /** Underlying node state */
     private final NodeState state;
 
-    private final String path;
-
     public ReadOnlyTree(NodeState root) {
         this(null, "", root);
     }
@@ -52,7 +50,6 @@ public class ReadOnlyTree implements Tre
         this.parent = parent;
         this.name = name;
         this.state = state;
-        this.path = (parent == null) ? "" : parent.getPath() + '/' + name;
     }
 
     @Override
@@ -67,7 +64,21 @@ public class ReadOnlyTree implements Tre
 
     @Override
     public String getPath() {
-        return path;
+        if (isRoot()) {
+            // shortcut
+            return "/";
+        }
+
+        StringBuilder sb = new StringBuilder();
+        buildPath(sb);
+        return sb.toString();
+    }
+
+    private void buildPath(StringBuilder sb) {
+        if (!isRoot()) {
+            parent.buildPath(sb);
+            sb.append('/').append(name);
+        }
     }
 
     @Override

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=1373877&r1=1373876&r2=1373877&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:10:51 2012
@@ -104,9 +104,9 @@ public class TreeImpl implements Tree, P
 
     @Override
     public String getPath() {
-        // Shortcut for root
-        if (parent == null) {
-            return "";
+        if (isRoot()) {
+            // shortcut
+            return "/";
         }
 
         StringBuilder sb = new StringBuilder();
@@ -430,12 +430,9 @@ public class TreeImpl implements Tree, P
             throw new IllegalStateException("Cannot build the path of a removed tree");
         }
 
-        if (parent != null) {
+        if (!isRoot()) {
             parent.buildPath(sb);
-            if (sb.length() > 0) {
-                sb.append('/');
-            }
-            sb.append(name);
+            sb.append('/').append(name);
         }
     }
 

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=1373877&r1=1373876&r2=1373877&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:10:51 2012
@@ -49,13 +49,11 @@ public class RootImplTest extends Abstra
         RootImpl root = createRootImpl(null);
 
         List<String> validPaths = new ArrayList<String>();
-        validPaths.add("");
-        validPaths.add("x");
-        validPaths.add("x/xx");
-        validPaths.add("y");
-        validPaths.add("z");
-        //validPaths.add("/");  FIXME: see OAK-221
-        //validPaths.add("/x"); FIXME: see OAK-221
+        validPaths.add("/");
+        validPaths.add("/x");
+        validPaths.add("/x/xx");
+        validPaths.add("/y");
+        validPaths.add("/z");
 
         for (String treePath : validPaths) {
             Tree tree = root.getTree(treePath);
@@ -64,10 +62,8 @@ public class RootImplTest extends Abstra
         }
 
         List<String> invalidPaths = new ArrayList<String>();
-        invalidPaths.add("any");
-        invalidPaths.add("x/any");
-        //invalidPaths.add("/");      FIXME: see OAK-221
-        //invalidPaths.add("/x/xx");  FIXME: see OAK-221
+        invalidPaths.add("/any");
+        invalidPaths.add("/x/any");
 
         for (String treePath : invalidPaths) {
             assertNull(root.getTree(treePath));

Modified: jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/core/TreeImplTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/core/TreeImplTest.java?rev=1373877&r1=1373876&r2=1373877&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/core/TreeImplTest.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/core/TreeImplTest.java Thu Aug 16 15:10:51 2012
@@ -85,7 +85,7 @@ public class TreeImplTest extends Abstra
         Iterable<Tree> children = tree.getChildren();
 
         Set<String> expectedPaths = new HashSet<String>();
-        Collections.addAll(expectedPaths, "x", "y", "z");
+        Collections.addAll(expectedPaths, "/x", "/y", "/z");
 
         for (Tree child : children) {
             assertTrue(expectedPaths.remove(child.getPath()));

Modified: jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/NodeDelegate.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/NodeDelegate.java?rev=1373877&r1=1373876&r2=1373877&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/NodeDelegate.java (original)
+++ jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/NodeDelegate.java Thu Aug 16 15:10:51 2012
@@ -30,7 +30,9 @@ import javax.annotation.Nonnull;
 import javax.jcr.InvalidItemStateException;
 import javax.jcr.ItemNotFoundException;
 
-import org.apache.jackrabbit.JcrConstants;
+import com.google.common.base.Function;
+import com.google.common.base.Predicate;
+import com.google.common.collect.Iterators;
 import org.apache.jackrabbit.oak.api.CoreValue;
 import org.apache.jackrabbit.oak.api.CoreValueFactory;
 import org.apache.jackrabbit.oak.api.PropertyState;
@@ -38,10 +40,6 @@ import org.apache.jackrabbit.oak.api.Tre
 import org.apache.jackrabbit.oak.api.Tree.Status;
 import org.apache.jackrabbit.oak.commons.PathUtils;
 
-import com.google.common.base.Function;
-import com.google.common.base.Predicate;
-import com.google.common.collect.Iterators;
-
 /**
  * {@code NodeDelegate} serve as internal representations of {@code Node}s.
  * Most methods of this class throw an {@code InvalidItemStateException}
@@ -69,7 +67,7 @@ public class NodeDelegate extends ItemDe
 
     @Override
     public String getPath() throws InvalidItemStateException {
-        return '/' + getTree().getPath();
+        return getTree().getPath();
     }
 
     @Override