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 st...@apache.org on 2017/07/14 13:28:45 UTC

svn commit: r1801963 - /jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/composite/CompositeAuthorizationConfiguration.java

Author: stillalex
Date: Fri Jul 14 13:28:45 2017
New Revision: 1801963

URL: http://svn.apache.org/viewvc?rev=1801963&view=rev
Log:
OAK-6451 MultiplexingPermissionProvider is ignored by the CompositeAuthorizationConfiguration


Modified:
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/composite/CompositeAuthorizationConfiguration.java

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/composite/CompositeAuthorizationConfiguration.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/composite/CompositeAuthorizationConfiguration.java?rev=1801963&r1=1801962&r2=1801963&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/composite/CompositeAuthorizationConfiguration.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/composite/CompositeAuthorizationConfiguration.java Fri Jul 14 13:28:45 2017
@@ -174,10 +174,13 @@ public class CompositeAuthorizationConfi
             case 1: return configurations.get(0).getPermissionProvider(root, workspaceName, principals);
             default:
                 List<AggregatedPermissionProvider> aggrPermissionProviders = new ArrayList<>(configurations.size());
+                CompositePermissionProvider composite = null;
                 for (AuthorizationConfiguration conf : configurations) {
                     PermissionProvider pProvider = conf.getPermissionProvider(root, workspaceName, principals);
                     if (pProvider instanceof AggregatedPermissionProvider) {
                         aggrPermissionProviders.add((AggregatedPermissionProvider) pProvider);
+                    } else if (pProvider instanceof CompositePermissionProvider) {
+                        composite = (CompositePermissionProvider) pProvider;
                     } else {
                         log.debug("Ignoring permission provider of '{}': Not an AggregatedPermissionProvider", conf.getClass().getName());
                     }
@@ -185,7 +188,11 @@ public class CompositeAuthorizationConfi
                 PermissionProvider pp;
                 switch (aggrPermissionProviders.size()) {
                     case 0 :
-                        pp = EmptyPermissionProvider.getInstance();
+                        if (composite != null) {
+                            pp = composite;
+                        } else {
+                            pp = EmptyPermissionProvider.getInstance();
+                        }
                         break;
                     case 1 :
                         pp = aggrPermissionProviders.get(0);