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 2013/04/25 17:12:58 UTC

svn commit: r1475819 - in /jackrabbit/oak/trunk/oak-core/src: main/java/org/apache/jackrabbit/oak/core/ test/java/org/apache/jackrabbit/oak/security/authorization/evaluation/

Author: mduerig
Date: Thu Apr 25 15:12:57 2013
New Revision: 1475819

URL: http://svn.apache.org/r1475819
Log:
OAK-766: TreeImpl#*Location: unable retrieve child location if access to parent is denied
tentative fix

Modified:
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/core/AbstractNodeLocation.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/security/authorization/evaluation/RootTest.java

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/core/AbstractNodeLocation.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/core/AbstractNodeLocation.java?rev=1475819&r1=1475818&r2=1475819&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/core/AbstractNodeLocation.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/core/AbstractNodeLocation.java Thu Apr 25 15:12:57 2013
@@ -57,15 +57,15 @@ abstract class AbstractNodeLocation<T ex
 
     @Override
     public TreeLocation getChild(String name) {
-        T child = getChildTree(name);
-        if (child != null) {
-            return createNodeLocation(child);
-        }
-
         PropertyState prop = getPropertyState(name);
         if (prop != null) {
             return createPropertyLocation(this, name);
         }
+
+        T child = getChildTree(name);
+        if (child != null) {
+            return createNodeLocation(child);
+        }
         return new NullLocation(this, name);
     }
 

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=1475819&r1=1475818&r2=1475819&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 Apr 25 15:12:57 2013
@@ -91,7 +91,7 @@ public class TreeImpl implements Tree {
         this.root = checkNotNull(root);
         this.parent = checkNotNull(parent);
         this.name = checkNotNull(name);
-        this.nodeBuilder = parent.nodeBuilder.child(name);
+        this.nodeBuilder = parent.nodeBuilder.getChildNode(name);
         this.pendingMoves = checkNotNull(pendingMoves);
     }
 
@@ -187,11 +187,7 @@ public class TreeImpl implements Tree {
         checkNotNull(name);
         enter();
         TreeImpl child = internalGetChild(name);
-        if (child != null && canRead(child)) {
-            return child;
-        } else {
-            return null;
-        }
+        return canRead(child) ? child : null;
     }
 
     @Override
@@ -438,11 +434,8 @@ public class TreeImpl implements Tree {
         TreeImpl child = this;
         for (String name : elements(path)) {
             child = child.internalGetChild(name);
-            if (child == null) {
-                return null;
-            }
         }
-        return (canRead(child)) ? child : null;
+        return canRead(child) ? child : null;
     }
 
     /**
@@ -526,9 +519,7 @@ public class TreeImpl implements Tree {
     }
 
     private TreeImpl internalGetChild(String childName) {
-        return nodeBuilder.hasChildNode(childName)
-            ? new TreeImpl(root, this, childName, pendingMoves)
-            : null;
+        return new TreeImpl(root, this, childName, pendingMoves);
     }
 
     private PropertyState internalGetProperty(String propertyName) {

Modified: jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authorization/evaluation/RootTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authorization/evaluation/RootTest.java?rev=1475819&r1=1475818&r2=1475819&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authorization/evaluation/RootTest.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authorization/evaluation/RootTest.java Thu Apr 25 15:12:57 2013
@@ -16,6 +16,9 @@
  */
 package org.apache.jackrabbit.oak.security.authorization.evaluation;
 
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
+
 import java.util.List;
 
 import com.google.common.collect.ImmutableList;
@@ -24,12 +27,8 @@ import org.apache.jackrabbit.oak.api.Roo
 import org.apache.jackrabbit.oak.api.TreeLocation;
 import org.apache.jackrabbit.oak.commons.PathUtils;
 import org.apache.jackrabbit.oak.spi.security.privilege.PrivilegeConstants;
-import org.junit.Ignore;
 import org.junit.Test;
 
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertNull;
-
 /**
  * Testing {@link Root} with access control restrictions in place.
  */
@@ -53,7 +52,6 @@ public class RootTest extends AbstractOa
         assertNull(testRoot.getTree("/a/bb"));
     }
 
-    @Ignore("OAK-766") // FIXME
     @Test
     public void testGetTree2() throws Exception {
         setupPermission("/a", testPrincipal, true, PrivilegeConstants.JCR_READ);
@@ -93,7 +91,6 @@ public class RootTest extends AbstractOa
         assertNull(location.getTree());
     }
 
-    @Ignore("OAK-766") // FIXME
     @Test
     public void testGetNodeLocation2() throws Exception {
         setupPermission("/a", testPrincipal, true, PrivilegeConstants.REP_READ_NODES);
@@ -154,7 +151,6 @@ public class RootTest extends AbstractOa
         }
     }
 
-    @Ignore("OAK-766") // FIXME
     @Test
     public void testGetPropertyLocation2() throws Exception {
         setupPermission("/", testPrincipal, true, PrivilegeConstants.REP_READ_PROPERTIES);
@@ -177,7 +173,6 @@ public class RootTest extends AbstractOa
         }
     }
 
-    @Ignore("OAK-766") // FIXME
     @Test
     public void testGetPropertyLocation3() throws Exception {
         setupPermission("/a", testPrincipal, true, PrivilegeConstants.REP_READ_PROPERTIES);