Author: stillalex
Date: Fri Jul 21 15:44:34 2017
New Revision: 1802609

URL: http://svn.apache.org/viewvc?rev=1802609&view=rev
Log:
OAK-6481 Missing versionable path property for oak:mount-libs-crx.default
 - patch provided by Tomek Rękawek



Modified:
    
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/AuthorizationConfigurationImpl.java
    
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/AuthorizationInitializer.java
    
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/composite/MultiplexingPermissionProvider.java
    
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/permission/CompiledPermissionImpl.java
    
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/permission/PermissionHook.java
    
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/permission/PermissionProviderImpl.java
    
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/permission/PermissionStoreImpl.java
    
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/permission/PermissionUtil.java
    
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authorization/composite/MultiplexingProviderTest.java

Modified: 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/AuthorizationConfigurationImpl.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/AuthorizationConfigurationImpl.java?rev=1802609&r1=1802608&r2=1802609&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/AuthorizationConfigurationImpl.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/AuthorizationConfigurationImpl.java
 Fri Jul 21 15:44:34 2017
@@ -199,16 +199,17 @@ public class AuthorizationConfigurationI
 
         if (mountInfoProvider.hasNonDefaultMounts()) {
             List<AggregatedPermissionProvider> agg = new ArrayList<>();
-            agg.add(new PermissionProviderImpl(root, workspaceName, 
principals, getRestrictionProvider(),
+            agg.add(new PermissionProviderImpl(root, workspaceName, 
workspaceName, principals, getRestrictionProvider(),
                     getParameters(), ctx));
             for (Mount m : mountInfoProvider.getNonDefaultMounts()) {
-                String ws = MultiplexingPermissionProvider.getWorkspaceName(m, 
workspaceName);
-                agg.add(new PermissionProviderImpl(root, ws, principals, 
getRestrictionProvider(), getParameters(),
+                String permissionRootName = 
MultiplexingPermissionProvider.getPermissionRootName(m, workspaceName);
+                agg.add(new PermissionProviderImpl(root, workspaceName, 
permissionRootName, principals, getRestrictionProvider(), getParameters(),
                         ctx));
             }
             return new MultiplexingPermissionProvider(root, agg, ctx);
+        } else {
+            return new PermissionProviderImpl(root, workspaceName, 
workspaceName, principals, getRestrictionProvider(), getParameters(),
+                    ctx);
         }
-        return new PermissionProviderImpl(root, workspaceName, principals, 
getRestrictionProvider(), getParameters(),
-                ctx);
     }
 }

Modified: 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/AuthorizationInitializer.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/AuthorizationInitializer.java?rev=1802609&r1=1802608&r2=1802609&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/AuthorizationInitializer.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/AuthorizationInitializer.java
 Fri Jul 21 15:44:34 2017
@@ -72,9 +72,9 @@ class AuthorizationInitializer implement
             
permissionStore.child(workspaceName).setProperty(JcrConstants.JCR_PRIMARYTYPE, 
NT_REP_PERMISSION_STORE, Type.NAME);
         }
         for (Mount m : mountInfoProvider.getNonDefaultMounts()) {
-            String ws =  MultiplexingPermissionProvider.getWorkspaceName(m, 
workspaceName);
-            if (!permissionStore.hasChildNode(ws)) {
-                
permissionStore.child(ws).setProperty(JcrConstants.JCR_PRIMARYTYPE, 
NT_REP_PERMISSION_STORE, Type.NAME);
+            String permissionRootName =  
MultiplexingPermissionProvider.getPermissionRootName(m, workspaceName);
+            if (!permissionStore.hasChildNode(permissionRootName)) {
+                
permissionStore.child(permissionRootName).setProperty(JcrConstants.JCR_PRIMARYTYPE,
 NT_REP_PERMISSION_STORE, Type.NAME);
             }
         }
     }

Modified: 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/composite/MultiplexingPermissionProvider.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/composite/MultiplexingPermissionProvider.java?rev=1802609&r1=1802608&r2=1802609&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/composite/MultiplexingPermissionProvider.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/composite/MultiplexingPermissionProvider.java
 Fri Jul 21 15:44:34 2017
@@ -18,6 +18,8 @@ package org.apache.jackrabbit.oak.securi
 
 import java.util.List;
 
+import javax.annotation.Nonnull;
+
 import org.apache.jackrabbit.oak.api.Root;
 import 
org.apache.jackrabbit.oak.security.authorization.composite.CompositeAuthorizationConfiguration.CompositionType;
 import org.apache.jackrabbit.oak.spi.mount.Mount;
@@ -30,8 +32,13 @@ public class MultiplexingPermissionProvi
         super(root, pps, acContext, CompositionType.OR);
     }
 
-    public static String getWorkspaceName(Mount m, String workspace) {
-        return m.getPathFragmentName() + "-" + workspace;
+    @Nonnull
+    public static String getPermissionRootName(@Nonnull Mount mount, @Nonnull 
String workspace) {
+        if (mount.isDefault()) {
+            return workspace;
+        } else {
+            return mount.getPathFragmentName() + "-" + workspace;
+        }
     }
 
 }

Modified: 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/permission/CompiledPermissionImpl.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/permission/CompiledPermissionImpl.java?rev=1802609&r1=1802608&r2=1802609&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/permission/CompiledPermissionImpl.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/permission/CompiledPermissionImpl.java
 Fri Jul 21 15:44:34 2017
@@ -84,7 +84,9 @@ final class CompiledPermissionImpl imple
     private PrivilegeBitsProvider bitsProvider;
 
     private CompiledPermissionImpl(@Nonnull Set<Principal> principals,
-                                   @Nonnull Root root, @Nonnull String 
workspaceName,
+                                   @Nonnull Root root,
+                                   @Nonnull String workspaceName,
+                                   @Nonnull String permissionRootName,
                                    @Nonnull RestrictionProvider 
restrictionProvider,
                                    @Nonnull ConfigurationParameters options,
                                    @Nonnull Context ctx) {
@@ -97,7 +99,7 @@ final class CompiledPermissionImpl imple
         readPolicy = (readPaths.isEmpty()) ? EmptyReadPolicy.INSTANCE : new 
DefaultReadPolicy(readPaths);
 
         // setup
-        store = new PermissionStoreImpl(root, workspaceName, 
restrictionProvider);
+        store = new PermissionStoreImpl(root, permissionRootName, 
restrictionProvider);
         Set<String> userNames = new HashSet<String>(principals.size());
         Set<String> groupNames = new HashSet<String>(principals.size());
         for (Principal principal : principals) {
@@ -115,16 +117,18 @@ final class CompiledPermissionImpl imple
         typeProvider = new TreeTypeProvider(ctx);
     }
 
-    static CompiledPermissions create(@Nonnull Root root, @Nonnull String 
workspaceName,
+    static CompiledPermissions create(@Nonnull Root root,
+                                      @Nonnull String workspaceName,
+                                      @Nonnull String permissionRootName,
                                       @Nonnull Set<Principal> principals,
                                       @Nonnull RestrictionProvider 
restrictionProvider,
                                       @Nonnull ConfigurationParameters options,
                                       @Nonnull Context ctx) {
-        Tree permissionsTree = PermissionUtil.getPermissionsRoot(root, 
workspaceName);
+        Tree permissionsTree = PermissionUtil.getPermissionsRoot(root, 
permissionRootName);
         if (!permissionsTree.exists() || principals.isEmpty()) {
             return NoPermissions.getInstance();
         } else {
-            return new CompiledPermissionImpl(principals, root, workspaceName, 
restrictionProvider, options, ctx);
+            return new CompiledPermissionImpl(principals, root, workspaceName, 
permissionRootName, restrictionProvider, options, ctx);
         }
     }
 

Modified: 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/permission/PermissionHook.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/permission/PermissionHook.java?rev=1802609&r1=1802608&r2=1802609&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/permission/PermissionHook.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/permission/PermissionHook.java
 Fri Jul 21 15:44:34 2017
@@ -69,7 +69,7 @@ public class PermissionHook implements P
     private final String workspaceName;
     private final MountInfoProvider mountInfoProvider;
 
-    private NodeBuilder permissionRoot;
+    private NodeBuilder permissionStore;
     private PrivilegeBitsProvider bitsProvider;
 
     private TypePredicate isACL;
@@ -93,7 +93,7 @@ public class PermissionHook implements P
             throws CommitFailedException {
         NodeBuilder rootAfter = after.builder();
 
-        permissionRoot = getPermissionRoot(rootAfter);
+        permissionStore = getPermissionStore(rootAfter);
         bitsProvider = new 
PrivilegeBitsProvider(RootFactory.createReadOnlyRoot(after));
 
         isACL = new TypePredicate(after, NT_REP_ACL);
@@ -126,7 +126,7 @@ public class PermissionHook implements P
     }
 
     @Nonnull
-    private static NodeBuilder getPermissionRoot(NodeBuilder rootBuilder) {
+    private static NodeBuilder getPermissionStore(NodeBuilder rootBuilder) {
         // permission root has been created during workspace initialization
         return 
rootBuilder.getChildNode(JCR_SYSTEM).getChildNode(REP_PERMISSION_STORE);
     }
@@ -134,11 +134,7 @@ public class PermissionHook implements P
     @Nonnull
     private NodeBuilder getPermissionRoot(String path) {
         Mount m = mountInfoProvider.getMountByPath(path);
-        String ws = workspaceName;
-        if (!m.isDefault()) {
-            ws = MultiplexingPermissionProvider.getWorkspaceName(m, ws);
-        }
-        return permissionRoot.getChildNode(ws);
+        return 
permissionStore.getChildNode(MultiplexingPermissionProvider.getPermissionRootName(m,
 workspaceName));
     }
 
     private final class Diff extends DefaultNodeStateDiff {

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=1802609&r1=1802608&r2=1802609&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
 Fri Jul 21 15:44:34 2017
@@ -48,6 +48,8 @@ public class PermissionProviderImpl impl
 
     private final String workspaceName;
 
+    private final String permissionRootName;
+
     private final Set<Principal> principals;
 
     private final RestrictionProvider restrictionProvider;
@@ -60,13 +62,16 @@ public class PermissionProviderImpl impl
 
     private Root immutableRoot;
 
-    public PermissionProviderImpl(@Nonnull Root root, @Nonnull String 
workspaceName,
+    public PermissionProviderImpl(@Nonnull Root root,
+                                  @Nonnull String workspaceName,
+                                  @Nonnull String permissionRootName,
                                   @Nonnull Set<Principal> principals,
                                   @Nonnull RestrictionProvider 
restrictionProvider,
                                   @Nonnull ConfigurationParameters options,
                                   @Nonnull Context ctx) {
         this.root = root;
         this.workspaceName = workspaceName;
+        this.permissionRootName = permissionRootName;
         this.principals = principals;
         this.restrictionProvider = restrictionProvider;
         this.options = options;
@@ -159,7 +164,7 @@ public class PermissionProviderImpl impl
             if (PermissionUtil.isAdminOrSystem(principals, options)) {
                 cp = AllPermissions.getInstance();
             } else {
-                cp = CompiledPermissionImpl.create(immutableRoot, 
workspaceName, principals, restrictionProvider, options, ctx);
+                cp = CompiledPermissionImpl.create(immutableRoot, 
workspaceName, permissionRootName, principals, restrictionProvider, options, 
ctx);
             }
             compiledPermissions = cp;
         }

Modified: 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/permission/PermissionStoreImpl.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/permission/PermissionStoreImpl.java?rev=1802609&r1=1802608&r2=1802609&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/permission/PermissionStoreImpl.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/permission/PermissionStoreImpl.java
 Fri Jul 21 15:44:34 2017
@@ -48,7 +48,7 @@ class PermissionStoreImpl implements Per
      */
     private static final Logger log = 
LoggerFactory.getLogger(PermissionStoreImpl.class);
 
-    private final String workspaceName;
+    private final String permissionRootName;
 
     private final RestrictionProvider restrictionProvider;
 
@@ -57,8 +57,8 @@ class PermissionStoreImpl implements Per
     private Tree permissionsTree;
     private PrivilegeBits allBits;
 
-    PermissionStoreImpl(Root root, String workspaceName, RestrictionProvider 
restrictionProvider) {
-        this.workspaceName = workspaceName;
+    PermissionStoreImpl(Root root, String permissionRootName, 
RestrictionProvider restrictionProvider) {
+        this.permissionRootName = permissionRootName;
         this.restrictionProvider = restrictionProvider;
         reset(root);
     }
@@ -69,7 +69,7 @@ class PermissionStoreImpl implements Per
     }
 
     private void reset(@Nonnull Root root) {
-        permissionsTree = PermissionUtil.getPermissionsRoot(root, 
workspaceName);
+        permissionsTree = PermissionUtil.getPermissionsRoot(root, 
permissionRootName);
         allBits = new 
PrivilegeBitsProvider(root).getBits(PrivilegeConstants.JCR_ALL);
     }
 

Modified: 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/permission/PermissionUtil.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/permission/PermissionUtil.java?rev=1802609&r1=1802608&r2=1802609&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/permission/PermissionUtil.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/permission/PermissionUtil.java
 Fri Jul 21 15:44:34 2017
@@ -74,8 +74,8 @@ public final class PermissionUtil implem
     }
 
     @Nonnull
-    public static Tree getPermissionsRoot(@Nonnull Root root, @Nonnull String 
workspaceName) {
-        return root.getTree(PERMISSIONS_STORE_PATH + '/' + workspaceName);
+    public static Tree getPermissionsRoot(@Nonnull Root root, @Nonnull String 
permissionRootName) {
+        return root.getTree(PERMISSIONS_STORE_PATH + '/' + permissionRootName);
     }
 
     @Nonnull

Modified: 
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authorization/composite/MultiplexingProviderTest.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authorization/composite/MultiplexingProviderTest.java?rev=1802609&r1=1802608&r2=1802609&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authorization/composite/MultiplexingProviderTest.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authorization/composite/MultiplexingProviderTest.java
 Fri Jul 21 15:44:34 2017
@@ -16,6 +16,7 @@
  */
 package org.apache.jackrabbit.oak.security.authorization.composite;
 
+import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertTrue;
 
@@ -91,7 +92,7 @@ public class MultiplexingProviderTest ex
         String wsName = adminSession.getWorkspaceName();
         assertTrue(permStore.hasChild(wsName));
         for (Mount m : mountInfoProvider.getNonDefaultMounts()) {
-            
assertTrue(permStore.hasChild(MultiplexingPermissionProvider.getWorkspaceName(m,
 wsName)));
+            
assertTrue(permStore.hasChild(MultiplexingPermissionProvider.getPermissionRootName(m,
 wsName)));
         }
 
         Tree rootNode = root.getTree("/");
@@ -107,7 +108,7 @@ public class MultiplexingProviderTest ex
         // no entries in the default store
         assertFalse(permStore.getChild(wsName).hasChild(p.getName()));
         for (Mount m : mountInfoProvider.getNonDefaultMounts()) {
-            Tree mps = 
permStore.getChild(MultiplexingPermissionProvider.getWorkspaceName(m, wsName));
+            Tree mps = 
permStore.getChild(MultiplexingPermissionProvider.getPermissionRootName(m, 
wsName));
             assertTrue(mps.hasChild(p.getName()));
         }
 
@@ -122,6 +123,12 @@ public class MultiplexingProviderTest ex
         }
     }
 
+    @Test
+    public void testPermissionProviderName() {
+        assertEquals("oak.default", 
MultiplexingPermissionProvider.getPermissionRootName(mountInfoProvider.getDefaultMount(),
 "oak.default"));
+        assertEquals("oak:mount-testMount-oak.default", 
MultiplexingPermissionProvider.getPermissionRootName(mountInfoProvider.getMountByName("testMount"),
 "oak.default"));
+    }
+
     private void setPrivileges(Principal principal, String path, boolean 
allow, String... privileges) throws Exception {
         AccessControlManager acm = getAccessControlManager(root);
         JackrabbitAccessControlList acl = 
AccessControlUtils.getAccessControlList(acm, path);


Reply via email to