Author: angela
Date: Wed Feb 27 17:04:30 2013
New Revision: 1450844

URL: http://svn.apache.org/r1450844
Log:
OAK-527: permissions (wip)

Modified:
    
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/PermissionValidator.java
    
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/permission/PermissionProviderImpl.java

Modified: 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/PermissionValidator.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/PermissionValidator.java?rev=1450844&r1=1450843&r2=1450844&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/PermissionValidator.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/PermissionValidator.java
 Wed Feb 27 17:04:30 2013
@@ -33,6 +33,8 @@ import org.apache.jackrabbit.oak.spi.sec
 import org.apache.jackrabbit.oak.spi.state.NodeState;
 import org.apache.jackrabbit.oak.spi.state.NodeStateUtils;
 
+import static com.google.common.base.Preconditions.checkNotNull;
+
 /**
  * Validator implementation that checks for sufficient permission for all
  * write operations executed by a given content session.
@@ -91,7 +93,7 @@ class PermissionValidator implements Val
 
     @Override
     public Validator childNodeAdded(String name, NodeState after) throws 
CommitFailedException {
-        Tree child = parentAfter.getChild(name);
+        Tree child = checkNotNull(parentAfter.getChild(name));
         return checkPermissions(child, false, Permissions.ADD_NODE);
     }
 
@@ -107,7 +109,7 @@ class PermissionValidator implements Val
 
     @Override
     public Validator childNodeDeleted(String name, NodeState before) throws 
CommitFailedException {
-        Tree child = parentBefore.getChild(name);
+        Tree child = checkNotNull(parentBefore.getChild(name));
         return checkPermissions(child, true, Permissions.REMOVE_NODE);
     }
 

Modified: 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/permission/PermissionProviderImpl.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/permission/PermissionProviderImpl.java?rev=1450844&r1=1450843&r2=1450844&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/permission/PermissionProviderImpl.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/permission/PermissionProviderImpl.java
 Wed Feb 27 17:04:30 2013
@@ -46,6 +46,8 @@ import org.apache.jackrabbit.util.Text;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import static com.google.common.base.Preconditions.checkNotNull;
+
 /**
  * PermissionProviderImpl... TODO
  * <p/>
@@ -124,7 +126,8 @@ public class PermissionProviderImpl impl
     @Override
     public boolean isGranted(@Nonnull Tree tree, long permissions) {
         if (isVersionContent(tree)) {
-            return compiledPermissions.isGranted(getVersionablePath(tree, 
null), permissions);
+            String path = getVersionablePath(tree, null);
+            return path != null && compiledPermissions.isGranted(path, 
permissions);
         } else {
             return compiledPermissions.isGranted(tree, permissions);
         }
@@ -133,7 +136,8 @@ public class PermissionProviderImpl impl
     @Override
     public boolean isGranted(@Nonnull Tree parent, @Nonnull PropertyState 
property, long permissions) {
         if (isVersionContent(parent)) {
-            return compiledPermissions.isGranted(getVersionablePath(parent, 
property), permissions);
+            String path = getVersionablePath(parent, property);
+            return path != null && compiledPermissions.isGranted(path, 
permissions);
         } else {
             return compiledPermissions.isGranted(parent, property, 
permissions);
         }
@@ -146,10 +150,15 @@ public class PermissionProviderImpl impl
         if (!location.exists()) {
             // TODO: deal with version content
             return compiledPermissions.isGranted(oakPath, permissions);
-        } else if (location.getProperty() != null) {
-            return isGranted(location.getTree(), location.getProperty(), 
permissions);
+        }
+
+        PropertyState property = location.getProperty();
+        if (property != null) {
+            Tree parent = location.getParent().getTree();
+            return parent != null && isGranted(parent, property, permissions);
         } else {
-            return isGranted(location.getTree(), permissions);
+            Tree tree = location.getTree();
+            return tree != null && isGranted(tree, permissions);
         }
     }
 
@@ -217,7 +226,7 @@ public class PermissionProviderImpl impl
         Tree t = versionStoreTree;
         while (t != null && 
!JcrConstants.JCR_VERSIONSTORAGE.equals(t.getName())) {
             String name = t.getName();
-            String ntName = TreeUtil.getPrimaryTypeName(t);
+            String ntName = checkNotNull(TreeUtil.getPrimaryTypeName(t));
             if (VersionConstants.JCR_FROZENNODE.equals(name) && t != 
versionStoreTree) {
                 relPath = PathUtils.relativize(t.getPath(), 
versionStoreTree.getPath());
             } else if (JcrConstants.NT_VERSIONHISTORY.equals(ntName)) {


Reply via email to