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 2013/12/12 10:30:45 UTC

svn commit: r1550384 - /jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/osgi/OsgiSecurityProvider.java

Author: angela
Date: Thu Dec 12 09:30:45 2013
New Revision: 1550384

URL: http://svn.apache.org/r1550384
Log:
OAK-754 : Pluggable Security Setup (resolve todo wrt authorizable node name generation)

Modified:
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/osgi/OsgiSecurityProvider.java

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/osgi/OsgiSecurityProvider.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/osgi/OsgiSecurityProvider.java?rev=1550384&r1=1550383&r2=1550384&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/osgi/OsgiSecurityProvider.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/osgi/OsgiSecurityProvider.java Thu Dec 12 09:30:45 2013
@@ -91,6 +91,12 @@ public class OsgiSecurityProvider implem
             policyOption = ReferencePolicyOption.GREEDY)
     private CompositeTokenConfiguration tokenConfiguration = new CompositeTokenConfiguration(this);
 
+    @Reference(referenceInterface = AuthorizableNodeName.class,
+            bind = "bindAuthorizableNodeName",
+            cardinality = ReferenceCardinality.OPTIONAL_UNARY,
+            policyOption = ReferencePolicyOption.GREEDY)
+    private NameGenerator authorizableNodeName = new NameGenerator();
+
     private final WhiteboardAuthorizableActionProvider authorizableActionProvider = new WhiteboardAuthorizableActionProvider();
     private final WhiteboardRestrictionProvider restrictionProvider = new WhiteboardRestrictionProvider();
 
@@ -99,7 +105,7 @@ public class OsgiSecurityProvider implem
     public OsgiSecurityProvider() {
         Map<String, Object> userMap = ImmutableMap.of(
                 UserConstants.PARAM_AUTHORIZABLE_ACTION_PROVIDER, authorizableActionProvider,
-                UserConstants.PARAM_AUTHORIZABLE_NODE_NAME, AuthorizableNodeName.DEFAULT); // TODO
+                UserConstants.PARAM_AUTHORIZABLE_NODE_NAME, authorizableNodeName);
 
         Map<String, WhiteboardRestrictionProvider> authorizMap = ImmutableMap.of(
                 AccessControlConstants.PARAM_RESTRICTION_PROVIDER, restrictionProvider
@@ -212,6 +218,13 @@ public class OsgiSecurityProvider implem
         }
     }
 
+    protected void bindAuthorizableNodeName(@Nonnull ServiceReference reference) {
+        Object ann = reference.getBundle().getBundleContext().getService(reference);
+        if (ann instanceof AuthorizableNodeName) {
+            authorizableNodeName.dlg = (AuthorizableNodeName) ann;
+        }
+    }
+
     private Object initConfiguration(@Nonnull ServiceReference reference) {
         Object service = reference.getBundle().getBundleContext().getService(reference);
         if (service instanceof ConfigurationBase) {
@@ -219,4 +232,15 @@ public class OsgiSecurityProvider implem
         }
         return service;
     }
+
+    private final class NameGenerator implements AuthorizableNodeName {
+
+        private AuthorizableNodeName dlg = AuthorizableNodeName.DEFAULT;
+
+        @Nonnull
+        @Override
+        public String generateNodeName(@Nonnull String authorizableId) {
+            return dlg.generateNodeName(authorizableId);
+        }
+    }
 }