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);