Author: angela
Date: Thu Feb  4 17:41:13 2016
New Revision: 1728523

URL: http://svn.apache.org/viewvc?rev=1728523&view=rev
Log:
OAK-1268 : Add support for composite authorization setup (cleanup, javadoc)

Removed:
    
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/spi/security/authorization/permission/CompositePermissionProviderTest.java
Modified:
    
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/composite/CompositeAuthorizationConfiguration.java
    
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/composite/CompositePermissionProvider.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=1728523&r1=1728522&r2=1728523&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
 Thu Feb  4 17:41:13 2016
@@ -29,22 +29,54 @@ import org.apache.jackrabbit.oak.api.Roo
 import org.apache.jackrabbit.oak.namepath.NamePathMapper;
 import org.apache.jackrabbit.oak.spi.security.CompositeConfiguration;
 import org.apache.jackrabbit.oak.spi.security.SecurityProvider;
-import 
org.apache.jackrabbit.oak.spi.security.authentication.token.TokenConfiguration;
 import 
org.apache.jackrabbit.oak.spi.security.authorization.AuthorizationConfiguration;
 import 
org.apache.jackrabbit.oak.spi.security.authorization.permission.AggregatedPermissionProvider;
 import 
org.apache.jackrabbit.oak.spi.security.authorization.permission.EmptyPermissionProvider;
 import 
org.apache.jackrabbit.oak.spi.security.authorization.permission.PermissionProvider;
 import 
org.apache.jackrabbit.oak.spi.security.authorization.restriction.CompositeRestrictionProvider;
 import 
org.apache.jackrabbit.oak.spi.security.authorization.restriction.RestrictionProvider;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 /**
  * {@link CompositeAuthorizationConfiguration} that combines different
  * authorization models. This implementation has the following characteristics:
  *
- * TODO This is work in progress (OAK-1268)
+ * <h2>AccessControlManager</h2>
+ * <ul>
+ *     <li>This method will return an aggregation of {@code 
AccessControlManager}s in case
+ *     multiple {@code AuthorizationConfiguration}s are present (see {@code 
CompositeAccessControlManager}).</li>
+ *     <li>If the composite only contains a single entry the {@code 
AccessControlManager}
+ *     of this implementation is return without extra wrapping.</li>
+ *     <li>If the list of configurations is empty an {@code 
IllegalStateException} is thrown.</li>
+ * </ul>
+ *
+ * <h2>PermissionProvider</h2>
+ * <ul>
+ *     <li>This method will return an aggregation of {@code 
PermissionProvider}s in case
+ *     multiple {@code AuthorizationConfiguration}s exposing an {@link 
AggregatedPermissionProvider}
+ *     are present (see {@link CompositePermissionProvider}. Note however, that
+ *     providers not implementing the {@code AggregatedPermissionProvider} 
extension
+ *     will be ignored.</li>
+ *     <li>If the composite only contains a single entry the {@code 
PermissionProvider}
+ *     of this implementation is return without extra wrapping.</li>
+ *     <li>If the list of configurations is empty an {@code 
IllegalStateException} is thrown.</li>
+ * </ul>
+ *
+ * <h2>RestrictionProvider</h2>
+  * <ul>
+  *     <li>This method will return an aggregation of {@code 
RestrictionProvider}s in case
+  *     multiple {@code AuthorizationConfiguration}s are present (see {@code 
CompositeRestrictionProvider}).</li>
+  *     <li>If the composite only contains a single entry the {@code 
RestrictionProvider}
+  *     of this implementation is return without extra wrapping.</li>
+  *     <li>If the list of configurations is empty {@link 
RestrictionProvider#EMPTY } is returned.</li>
+  * </ul>
+ *
  */
 public class CompositeAuthorizationConfiguration extends 
CompositeConfiguration<AuthorizationConfiguration> implements 
AuthorizationConfiguration {
 
+    private static final Logger log = 
LoggerFactory.getLogger(CompositeAuthorizationConfiguration.class);
+
     public CompositeAuthorizationConfiguration() {
         super(AuthorizationConfiguration.NAME);
     }
@@ -106,6 +138,8 @@ public class CompositeAuthorizationConfi
                     PermissionProvider pProvider = 
conf.getPermissionProvider(root, workspaceName, principals);
                     if (pProvider instanceof AggregatedPermissionProvider) {
                         
aggrPermissionProviders.add((AggregatedPermissionProvider) pProvider);
+                    } else {
+                        log.warn("Ignoring permission provider of '{}': 
missing implementation of AggregatedPermissionProvider", 
conf.getClass().getName());
                     }
                 }
                 PermissionProvider pp;

Modified: 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/composite/CompositePermissionProvider.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/composite/CompositePermissionProvider.java?rev=1728523&r1=1728522&r2=1728523&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/composite/CompositePermissionProvider.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/composite/CompositePermissionProvider.java
 Thu Feb  4 17:41:13 2016
@@ -40,11 +40,10 @@ import org.apache.jackrabbit.oak.spi.sec
 
 /**
  * Permission provider implementation that aggregates a list of different
- * provider implementations. Note, that the implementations *must* implement
- * the {@link 
org.apache.jackrabbit.oak.spi.security.authorization.permission.AggregatedPermissionProvider}
+ * provider implementations. Note, that the aggregated provider implementations
+ * *must* implement the
+ * {@link 
org.apache.jackrabbit.oak.spi.security.authorization.permission.AggregatedPermissionProvider}
  * interface.
- *
- * TODO This is work in progress (OAK-1268)
  */
 class CompositePermissionProvider implements PermissionProvider {
 


Reply via email to