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 an...@apache.org on 2012/08/03 16:26:41 UTC

svn commit: r1368980 - in /jackrabbit/oak/trunk/oak-core/src: main/java/org/apache/jackrabbit/oak/core/ main/java/org/apache/jackrabbit/oak/security/authorization/ main/java/org/apache/jackrabbit/oak/spi/security/authorization/ test/java/org/apache/jac...

Author: angela
Date: Fri Aug  3 14:26:40 2012
New Revision: 1368980

URL: http://svn.apache.org/viewvc?rev=1368980&view=rev
Log:
OAK-51 : Implement JCR Access Control Management  (Work In Progress)

Added:
    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/PermissionValidatorProvider.java
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/security/authorization/AccessControlContextImpl.java
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/CompiledPermissionImpl.java
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/security/authorization/AccessControlContext.java
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/security/authorization/CompiledPermissions.java
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/security/authorization/Permissions.java
    jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/core/TestAcContext.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=1368980&r1=1368979&r2=1368980&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 Fri Aug  3 14:26:40 2012
@@ -38,17 +38,21 @@ public class ReadOnlyTree implements Tre
     /** Underlying node state */
     private final NodeState state;
 
+    private final String path;
+
     public ReadOnlyTree(NodeState root) {
         this(null, "", root);
     }
 
-    private ReadOnlyTree(Tree parent, String name, NodeState state) {
+    public ReadOnlyTree(ReadOnlyTree parent, String name, NodeState state) {
         assert name != null;
         assert !name.isEmpty() || parent == null;
         assert state != null;
+
         this.parent = parent;
         this.name = name;
         this.state = state;
+        this.path = (parent == null) ? "" : parent.getPath() + '/' + name;
     }
 
     @Override
@@ -63,11 +67,7 @@ public class ReadOnlyTree implements Tre
 
     @Override
     public String getPath() {
-        if (parent == null) {
-            return "";
-        } else {
-            return parent.getPath() + '/' + name;
-        }
+        return path;
     }
 
     @Override

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/AccessControlContextImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/AccessControlContextImpl.java?rev=1368980&r1=1368979&r2=1368980&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/AccessControlContextImpl.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/AccessControlContextImpl.java Fri Aug  3 14:26:40 2012
@@ -68,7 +68,7 @@ public class AccessControlContextImpl im
         }
 
         @Override
-        public boolean isGranted(String path, boolean isProperty, int permissions) {
+        public boolean isGranted(String path, int permissions) {
             return allowed;
         }
 

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/CompiledPermissionImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/CompiledPermissionImpl.java?rev=1368980&r1=1368979&r2=1368980&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/CompiledPermissionImpl.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/CompiledPermissionImpl.java Fri Aug  3 14:26:40 2012
@@ -38,7 +38,7 @@ class CompiledPermissionImpl implements 
     }
 
     @Override
-    public boolean isGranted(String path, boolean isProperty, int permissions) {
+    public boolean isGranted(String path, int permissions) {
         // TODO
         return (permissions == Permissions.READ);
     }

Added: 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=1368980&view=auto
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/PermissionValidator.java (added)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/PermissionValidator.java Fri Aug  3 14:26:40 2012
@@ -0,0 +1,155 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.jackrabbit.oak.security.authorization;
+
+import javax.jcr.AccessDeniedException;
+
+import org.apache.jackrabbit.oak.api.CommitFailedException;
+import org.apache.jackrabbit.oak.api.PropertyState;
+import org.apache.jackrabbit.oak.commons.PathUtils;
+import org.apache.jackrabbit.oak.core.ReadOnlyTree;
+import org.apache.jackrabbit.oak.spi.commit.Validator;
+import org.apache.jackrabbit.oak.spi.security.authorization.CompiledPermissions;
+import org.apache.jackrabbit.oak.spi.security.authorization.Permissions;
+import org.apache.jackrabbit.oak.spi.state.NodeState;
+
+/**
+ * PermissionValidator... TODO
+ */
+public class PermissionValidator implements Validator {
+
+    /* TODO
+     * - special permissions for protected items (versioning, access control, etc.)
+     * - Renaming nodes or Move with same parent are reflected as remove+add -> needs special handling
+     * - review usage of OAK_CHILD_ORDER property (in particular if the property was removed
+     *
+     */
+
+    private final CompiledPermissions compiledPermissions;
+
+    private final ReadOnlyTree parentBefore;
+    private final ReadOnlyTree parentAfter;
+
+    PermissionValidator(CompiledPermissions compiledPermissions,
+                        ReadOnlyTree parentBefore, ReadOnlyTree parentAfter) {
+        this.compiledPermissions = compiledPermissions;
+        this.parentBefore = parentBefore;
+        this.parentAfter = parentAfter;
+
+    }
+
+    //----------------------------------------------------------< Validator >---
+    @Override
+    public void propertyAdded(PropertyState after) throws CommitFailedException {
+        int permissions = getPermissions(after, Permissions.ADD_PROPERTY);
+        checkPermissions(getPath(after), permissions);
+    }
+
+    @Override
+    public void propertyChanged(PropertyState before, PropertyState after) throws CommitFailedException {
+        int permissions = getPermissions(after, Permissions.MODIFY_PROPERTY);
+        checkPermissions(getPath(after), permissions);
+    }
+
+    @Override
+    public void propertyDeleted(PropertyState before) throws CommitFailedException {
+        int permissions = getPermissions(before, Permissions.REMOVE_PROPERTY);
+        checkPermissions(getPath(before), permissions);
+    }
+
+    @Override
+    public Validator childNodeAdded(String name, NodeState after) throws CommitFailedException {
+        ReadOnlyTree child = new ReadOnlyTree(parentAfter, name, after);
+
+        int permissions = getPermissions(child, Permissions.ADD_NODE);
+        checkPermissions(child.getPath(), permissions);
+
+        return new PermissionValidator(compiledPermissions, null, child);
+    }
+
+    @Override
+    public Validator childNodeChanged(String name, NodeState before, NodeState after) throws CommitFailedException {
+        ReadOnlyTree childBefore = new ReadOnlyTree(parentBefore, name, before);
+        ReadOnlyTree childAfter = new ReadOnlyTree(parentAfter, name, after);
+
+        // TODO
+
+        return new PermissionValidator(compiledPermissions, childBefore, childAfter);
+
+    }
+
+    @Override
+    public Validator childNodeDeleted(String name, NodeState before) throws CommitFailedException {
+        ReadOnlyTree child = new ReadOnlyTree(parentBefore, name, before);
+
+        int permissions = getPermissions(child, Permissions.REMOVE_NODE);
+        checkPermissions(child.getPath(), permissions);
+
+        return new PermissionValidator(compiledPermissions, child, null);
+    }
+
+    //------------------------------------------------------------< private >---
+    private void checkPermissions(String path, int permissions) throws CommitFailedException {
+        if (!compiledPermissions.isGranted(path, permissions))    {
+            throw new CommitFailedException(new AccessDeniedException());
+        }
+    }
+
+
+    private int getPermissions(PropertyState property, int defaultPermission) {
+        if (isProtected(property)) {
+            // TODO: identify specific permission depending on type of protection
+            // - access controlled property
+            // - lock property
+            // - version property
+            // - mixinType/primaryType -> nt-management permission
+            // - node type definition -> nt-definition-management
+            // - namespace definition -> namespace management
+            // - privilege -> privilege management
+            // - user/group property -> user management
+            return Permissions.NO_PERMISSION;
+        } else if (PropertyState.OAK_CHILD_ORDER.equals(property.getName())) {
+            return Permissions.MODIFY_CHILD_NODE_COLLECTION;
+        } else {
+            return defaultPermission;
+        }
+    }
+
+    private int getPermissions(ReadOnlyTree tree, int defaultPermissions) {
+        if (isProtected(tree)) {
+            // TODO: identify specific permission depending on type of protection
+            return Permissions.NO_PERMISSION;
+        } else {
+            return defaultPermissions;
+        }
+    }
+
+    private boolean isProtected(PropertyState property) {
+        // TODO
+        return false;
+    }
+
+    private boolean isProtected(ReadOnlyTree tree) {
+        // TODO
+        return false;
+    }
+
+    private String getPath(PropertyState property) {
+        String parentPath = (parentAfter != null) ? parentAfter.getPath() : parentBefore.getPath();
+        return PathUtils.concat(parentPath, property.getName());
+    }
+}
\ No newline at end of file

Added: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/PermissionValidatorProvider.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/PermissionValidatorProvider.java?rev=1368980&view=auto
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/PermissionValidatorProvider.java (added)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/PermissionValidatorProvider.java Fri Aug  3 14:26:40 2012
@@ -0,0 +1,47 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.jackrabbit.oak.security.authorization;
+
+import javax.annotation.Nonnull;
+
+import org.apache.jackrabbit.oak.core.ReadOnlyTree;
+import org.apache.jackrabbit.oak.spi.commit.Validator;
+import org.apache.jackrabbit.oak.spi.commit.ValidatorProvider;
+import org.apache.jackrabbit.oak.spi.security.authorization.AccessControlContext;
+import org.apache.jackrabbit.oak.spi.state.NodeState;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * PermissionValidatorProvider... TODO
+ */
+public class PermissionValidatorProvider implements ValidatorProvider {
+
+    /**
+     * logger instance
+     */
+    private static final Logger log = LoggerFactory.getLogger(PermissionValidatorProvider.class);
+
+    private final AccessControlContext acContext = null; // TODO
+
+    //--------------------------------------------------< ValidatorProvider >---
+    @Nonnull
+    @Override
+    public Validator getRootValidator(NodeState before, NodeState after) {
+        return new PermissionValidator(acContext.getPermissions(), new ReadOnlyTree(before), new ReadOnlyTree(after));
+    }
+}
\ No newline at end of file

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/security/authorization/AccessControlContext.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/security/authorization/AccessControlContext.java?rev=1368980&r1=1368979&r2=1368980&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/security/authorization/AccessControlContext.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/security/authorization/AccessControlContext.java Fri Aug  3 14:26:40 2012
@@ -26,5 +26,6 @@ public interface AccessControlContext {
 
     void initialize(Set<Principal> principals);
 
+    // TODO define how permissions eval is bound to a particular revision/branch. (passing Tree?)
     CompiledPermissions getPermissions();
 }

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/security/authorization/CompiledPermissions.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/security/authorization/CompiledPermissions.java?rev=1368980&r1=1368979&r2=1368980&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/security/authorization/CompiledPermissions.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/security/authorization/CompiledPermissions.java Fri Aug  3 14:26:40 2012
@@ -23,6 +23,6 @@ public interface CompiledPermissions {
 
     boolean canRead(String path, boolean isProperty);
 
-    boolean isGranted(String path, boolean isProperty, int permissions);
+    boolean isGranted(String path, int permissions);
 
 }

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/security/authorization/Permissions.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/security/authorization/Permissions.java?rev=1368980&r1=1368979&r2=1368980&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/security/authorization/Permissions.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/security/authorization/Permissions.java Fri Aug  3 14:26:40 2012
@@ -16,6 +16,9 @@
  */
 package org.apache.jackrabbit.oak.spi.security.authorization;
 
+import java.util.LinkedHashMap;
+import java.util.Map;
+
 /**
  * Permissions... TODO
  */
@@ -23,9 +26,11 @@ public final class Permissions {
 
     public static final int NO_PERMISSION = 0;
 
-    public static final int READ = 1;
+    public static final int READ_NODE = 1;
+
+    public static final int READ_PROPERTY = READ_NODE << 1;
 
-    public static final int ADD_PROPERTY = READ << 1;
+    public static final int ADD_PROPERTY = READ_PROPERTY << 1;
 
     public static final int MODIFY_PROPERTY = ADD_PROPERTY << 1;
 
@@ -45,9 +50,13 @@ public final class Permissions {
 
     public static final int LOCK_MANAGEMENT = VERSION_MANAGEMENT << 1;
 
-    public static final int MODIFY_CHILD_NODE_COLLECTION = LOCK_MANAGEMENT << 1;
+    public static final int LIFECYCLE_MANAGEMENT = LOCK_MANAGEMENT << 1;
+
+    public static final int RETENTION_MANAGEMENT = LIFECYCLE_MANAGEMENT << 1;
+
+    public static final int MODIFY_CHILD_NODE_COLLECTION = RETENTION_MANAGEMENT << 1;
 
-    public static final int NODE_TYPE_DEFINITION_MANAGEMENT = MODIFY_CHILD_NODE_COLLECTION << 1;
+    public static final int NODE_TYPE_DEFINITION_MANAGEMENT = RETENTION_MANAGEMENT << 1;
 
     public static final int NAMESPACE_MANAGEMENT = NODE_TYPE_DEFINITION_MANAGEMENT << 1;
 
@@ -55,9 +64,65 @@ public final class Permissions {
 
     public static final int PRIVILEGE_MANAGEMENT = WORKSPACE_MANAGEMENT << 1;
 
-    public static final int ALL = (READ | ADD_PROPERTY | MODIFY_PROPERTY
+    public static final int USER_MANAGEMENT = PRIVILEGE_MANAGEMENT << 1;
+
+    public static final int READ = READ_NODE | READ_PROPERTY;
+
+    public static final int ALL = (READ
+            | ADD_PROPERTY | MODIFY_PROPERTY | REMOVE_PROPERTY
             | ADD_NODE | REMOVE_NODE
-            | REMOVE_PROPERTY | READ_ACCESS_CONTROL | MODIFY_ACCESS_CONTROL | NODE_TYPE_MANAGEMENT
-            | VERSION_MANAGEMENT | LOCK_MANAGEMENT | MODIFY_CHILD_NODE_COLLECTION
-            | NODE_TYPE_DEFINITION_MANAGEMENT | NAMESPACE_MANAGEMENT | WORKSPACE_MANAGEMENT | PRIVILEGE_MANAGEMENT);
+            | READ_ACCESS_CONTROL | MODIFY_ACCESS_CONTROL
+            | NODE_TYPE_MANAGEMENT
+            | VERSION_MANAGEMENT
+            | LOCK_MANAGEMENT
+            | LIFECYCLE_MANAGEMENT
+            | RETENTION_MANAGEMENT
+            | MODIFY_CHILD_NODE_COLLECTION
+            | NODE_TYPE_DEFINITION_MANAGEMENT
+            | NAMESPACE_MANAGEMENT
+            | WORKSPACE_MANAGEMENT
+            | PRIVILEGE_MANAGEMENT
+            | USER_MANAGEMENT
+    );
+
+    private static final Map<Integer,String> PERMISSION_NAMES = new LinkedHashMap<Integer, String>();
+    static {
+        PERMISSION_NAMES.put(READ_NODE, "READ_NODE");
+        PERMISSION_NAMES.put(READ_PROPERTY, "READ_PROPERTY");
+        PERMISSION_NAMES.put(ADD_PROPERTY, "ADD_PROPERTY");
+        PERMISSION_NAMES.put(MODIFY_PROPERTY, "MODIFY_PROPERTY");
+        PERMISSION_NAMES.put(REMOVE_PROPERTY, "REMOVE_PROPERTY");
+        PERMISSION_NAMES.put(ADD_NODE, "ADD_NODE");
+        PERMISSION_NAMES.put(REMOVE_NODE, "REMOVE_NODE");
+        PERMISSION_NAMES.put(MODIFY_CHILD_NODE_COLLECTION, "MODIFY_CHILD_NODE_COLLECTION");
+        PERMISSION_NAMES.put(READ_ACCESS_CONTROL, "READ_ACCESS_CONTROL");
+        PERMISSION_NAMES.put(MODIFY_ACCESS_CONTROL, "MODIFY_ACCESS_CONTROL");
+        PERMISSION_NAMES.put(NODE_TYPE_MANAGEMENT, "NODE_TYPE_MANAGEMENT");
+        PERMISSION_NAMES.put(VERSION_MANAGEMENT, "VERSION_MANAGEMENT");
+        PERMISSION_NAMES.put(LOCK_MANAGEMENT, "LOCK_MANAGEMENT");
+        PERMISSION_NAMES.put(LIFECYCLE_MANAGEMENT, "LIFECYCLE_MANAGEMENT");
+        PERMISSION_NAMES.put(RETENTION_MANAGEMENT, "RETENTION_MANAGEMENT");
+        PERMISSION_NAMES.put(NODE_TYPE_DEFINITION_MANAGEMENT, "NODE_TYPE_DEFINITION_MANAGEMENT");
+        PERMISSION_NAMES.put(NAMESPACE_MANAGEMENT, "NAMESPACE_MANAGEMENT");
+        PERMISSION_NAMES.put(WORKSPACE_MANAGEMENT, "WORKSPACE_MANAGEMENT");
+        PERMISSION_NAMES.put(PRIVILEGE_MANAGEMENT, "PRIVILEGE_MANAGEMENT");
+        PERMISSION_NAMES.put(USER_MANAGEMENT, "USER_MANAGEMENT");
+
+    }
+
+    public String getString(int permissions) {
+        if (PERMISSION_NAMES.containsKey(permissions)) {
+            return PERMISSION_NAMES.get(permissions);
+        } else {
+            StringBuilder sb = new StringBuilder();
+            sb.append('|');
+            for (int key : PERMISSION_NAMES.keySet()) {
+                if ((permissions & key) == key) {
+                    sb.append(PERMISSION_NAMES.get(key)).append('|');
+                }
+            }
+            return sb.toString();
+        }
+
+    }
 }

Modified: jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/core/TestAcContext.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/core/TestAcContext.java?rev=1368980&r1=1368979&r2=1368980&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/core/TestAcContext.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/core/TestAcContext.java Fri Aug  3 14:26:40 2012
@@ -49,7 +49,7 @@ public class TestAcContext implements Ac
             }
 
             @Override
-            public boolean isGranted(String path, boolean isProperty, int permissions) {
+            public boolean isGranted(String path, int permissions) {
                 return true;
             }
         };