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 tr...@apache.org on 2014/02/27 03:08:22 UTC

svn commit: r1572401 - in /jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak: security/ security/authentication/ security/authentication/token/ security/authorization/ security/principal/ security/privilege/ security/user/ spi/secur...

Author: tripod
Date: Thu Feb 27 02:08:22 2014
New Revision: 1572401

URL: http://svn.apache.org/r1572401
Log:
OAK-1474 ConfigurationBase must not use 'componentAbstract'

- removed componentAbstract
- make configuration propagation for OSGi more robust

Modified:
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/SecurityProviderImpl.java
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authentication/AuthenticationConfigurationImpl.java
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authentication/token/TokenConfigurationImpl.java
    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/principal/PrincipalConfigurationImpl.java
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/privilege/PrivilegeConfigurationImpl.java
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/UserConfigurationImpl.java
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/security/ConfigurationBase.java

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/SecurityProviderImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/SecurityProviderImpl.java?rev=1572401&r1=1572400&r2=1572401&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/SecurityProviderImpl.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/SecurityProviderImpl.java Thu Feb 27 02:08:22 2014
@@ -16,7 +16,6 @@
  */
 package org.apache.jackrabbit.oak.security;
 
-import java.util.HashMap;
 import java.util.HashSet;
 import java.util.Map;
 import java.util.Set;
@@ -211,36 +210,31 @@ public class SecurityProviderImpl implem
     }
 
     protected void bindAuthorizationConfiguration(@Nonnull ServiceReference reference) {
-        // also initialize authorization config specific default parameters or OSGi environments
+        // also add authorization config specific default parameters for OSGi environments
+        // todo: the config class should track the 'restrictionProvider' itself.
         Map<String, WhiteboardRestrictionProvider> authorizMap = ImmutableMap.of(
                 AccessControlConstants.PARAM_RESTRICTION_PROVIDER, restrictionProvider
         );
-        Map<String, Object> newConfig = new HashMap<String, Object>(configuration);
-        newConfig.put(AuthorizationConfiguration.NAME, ConfigurationParameters.of(authorizMap));
-        configuration = ConfigurationParameters.of(newConfig);
-
-        authorizationConfiguration = (AuthorizationConfiguration) initConfiguration(reference);
+        authorizationConfiguration =
+                (AuthorizationConfiguration) initConfiguration(reference, ConfigurationParameters.of(authorizMap));
     }
 
     protected void bindAuthenticationConfiguration(@Nonnull ServiceReference reference) {
-        authenticationConfiguration = (AuthenticationConfiguration) initConfiguration(reference);
+        authenticationConfiguration =
+                (AuthenticationConfiguration) initConfiguration(reference, ConfigurationParameters.EMPTY);
     }
 
     protected void bindUserConfiguration(@Nonnull ServiceReference reference) {
-        // also initialize user config specific default parameters or OSGi environments
+        // also initialize user config specific default parameters for OSGi environments
+        // todo: the config class should track the 'providers' itself.
         Map<String, Object> userMap = ImmutableMap.of(
                 UserConstants.PARAM_AUTHORIZABLE_ACTION_PROVIDER, authorizableActionProvider,
                 UserConstants.PARAM_AUTHORIZABLE_NODE_NAME, authorizableNodeName);
-
-        Map<String, Object> newConfig = new HashMap<String, Object>(configuration);
-        newConfig.put(UserConfiguration.NAME, ConfigurationParameters.of(userMap));
-        configuration = ConfigurationParameters.of(newConfig);
-
-        userConfiguration = (UserConfiguration) initConfiguration(reference);
+        userConfiguration = (UserConfiguration) initConfiguration(reference, ConfigurationParameters.of(userMap));
     }
 
     protected void bindPrivilegeConfiguration(@Nonnull ServiceReference reference) {
-        privilegeConfiguration = (PrivilegeConfiguration) initConfiguration(reference);
+        privilegeConfiguration = (PrivilegeConfiguration) initConfiguration(reference, ConfigurationParameters.EMPTY);
     }
 
     protected void bindPrincipalConfiguration(@Nonnull ServiceReference reference) {
@@ -249,7 +243,7 @@ public class SecurityProviderImpl implem
             principalConfiguration = new CompositePrincipalConfiguration(this);
         }
         ((CompositePrincipalConfiguration) principalConfiguration).addConfiguration(
-                (PrincipalConfiguration) initConfiguration(reference));
+                (PrincipalConfiguration) initConfiguration(reference, ConfigurationParameters.EMPTY));
     }
 
     protected void unbindPrincipalConfiguration(@Nonnull ServiceReference reference) {
@@ -267,7 +261,7 @@ public class SecurityProviderImpl implem
             tokenConfiguration = new CompositeTokenConfiguration(this);
         }
         ((CompositeTokenConfiguration) tokenConfiguration).addConfiguration(
-                (TokenConfiguration) initConfiguration(reference));
+                (TokenConfiguration) initConfiguration(reference, ConfigurationParameters.EMPTY));
     }
 
     protected void unbindTokenConfiguration(@Nonnull ServiceReference reference) {
@@ -286,10 +280,12 @@ public class SecurityProviderImpl implem
         }
     }
 
-    private Object initConfiguration(@Nonnull ServiceReference reference) {
+    private Object initConfiguration(@Nonnull ServiceReference reference, @Nonnull ConfigurationParameters params) {
         Object service = reference.getBundle().getBundleContext().getService(reference);
         if (service instanceof ConfigurationBase) {
-            ((ConfigurationBase) service).setSecurityProvider(this);
+            ConfigurationBase cfg = (ConfigurationBase) service;
+            cfg.setSecurityProvider(this);
+            cfg.setParameters(ConfigurationParameters.of(params, cfg.getParameters()));
         }
         return service;
     }

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authentication/AuthenticationConfigurationImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authentication/AuthenticationConfigurationImpl.java?rev=1572401&r1=1572400&r2=1572401&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authentication/AuthenticationConfigurationImpl.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authentication/AuthenticationConfigurationImpl.java Thu Feb 27 02:08:22 2014
@@ -16,13 +16,17 @@
  */
 package org.apache.jackrabbit.oak.security.authentication;
 
+import java.util.Dictionary;
+
 import javax.annotation.Nonnull;
 import javax.security.auth.login.Configuration;
 
+import org.apache.felix.scr.annotations.Activate;
 import org.apache.felix.scr.annotations.Component;
 import org.apache.felix.scr.annotations.Service;
 import org.apache.jackrabbit.oak.api.ContentRepository;
 import org.apache.jackrabbit.oak.spi.security.ConfigurationBase;
+import org.apache.jackrabbit.oak.spi.security.ConfigurationParameters;
 import org.apache.jackrabbit.oak.spi.security.SecurityConfiguration;
 import org.apache.jackrabbit.oak.spi.security.SecurityProvider;
 import org.apache.jackrabbit.oak.spi.security.authentication.AuthenticationConfiguration;
@@ -58,12 +62,17 @@ public class AuthenticationConfiguration
         super();
     }
 
+    @Activate
+    private void activate(Dictionary<String, Object> properties) {
+        setParameters(ConfigurationParameters.of(properties));
+    }
+
     /**
      * Constructor for non-OSGi
      * @param securityProvider
      */
     public AuthenticationConfigurationImpl(SecurityProvider securityProvider) {
-        super(securityProvider);
+        super(securityProvider, securityProvider.getParameters(NAME));
     }
 
     //----------------------------------------------< SecurityConfiguration >---

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authentication/token/TokenConfigurationImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authentication/token/TokenConfigurationImpl.java?rev=1572401&r1=1572400&r2=1572401&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authentication/token/TokenConfigurationImpl.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authentication/token/TokenConfigurationImpl.java Thu Feb 27 02:08:22 2014
@@ -16,8 +16,11 @@
  */
 package org.apache.jackrabbit.oak.security.authentication.token;
 
+import java.util.Dictionary;
+
 import javax.annotation.Nonnull;
 
+import org.apache.felix.scr.annotations.Activate;
 import org.apache.felix.scr.annotations.Component;
 import org.apache.felix.scr.annotations.Service;
 import org.apache.jackrabbit.oak.api.Root;
@@ -41,7 +44,12 @@ public class TokenConfigurationImpl exte
     }
 
     public TokenConfigurationImpl(SecurityProvider securityProvider) {
-        super(securityProvider);
+        super(securityProvider, securityProvider.getParameters(NAME));
+    }
+
+    @Activate
+    private void activate(Dictionary<String, Object> properties) {
+        setParameters(ConfigurationParameters.of(properties));
     }
 
     //----------------------------------------------< SecurityConfiguration >---

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=1572401&r1=1572400&r2=1572401&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 Thu Feb 27 02:08:22 2014
@@ -18,12 +18,14 @@ package org.apache.jackrabbit.oak.securi
 
 import java.security.Principal;
 import java.util.Collections;
+import java.util.Dictionary;
 import java.util.List;
 import java.util.Set;
 
 import javax.annotation.Nonnull;
 import javax.jcr.security.AccessControlManager;
 
+import org.apache.felix.scr.annotations.Activate;
 import org.apache.felix.scr.annotations.Component;
 import org.apache.felix.scr.annotations.Service;
 import org.apache.jackrabbit.oak.api.Root;
@@ -43,6 +45,7 @@ import org.apache.jackrabbit.oak.spi.com
 import org.apache.jackrabbit.oak.spi.commit.ValidatorProvider;
 import org.apache.jackrabbit.oak.spi.lifecycle.WorkspaceInitializer;
 import org.apache.jackrabbit.oak.spi.security.ConfigurationBase;
+import org.apache.jackrabbit.oak.spi.security.ConfigurationParameters;
 import org.apache.jackrabbit.oak.spi.security.Context;
 import org.apache.jackrabbit.oak.spi.security.SecurityConfiguration;
 import org.apache.jackrabbit.oak.spi.security.SecurityProvider;
@@ -67,8 +70,14 @@ public class AuthorizationConfigurationI
         super();
     }
 
+    @Activate
+    private void activate(Dictionary<String, Object> properties) {
+        setParameters(ConfigurationParameters.of(properties));
+    }
+
+
     public AuthorizationConfigurationImpl(SecurityProvider securityProvider) {
-        super(securityProvider);
+        super(securityProvider, securityProvider.getParameters(NAME));
     }
 
     //----------------------------------------------< SecurityConfiguration >---

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/principal/PrincipalConfigurationImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/principal/PrincipalConfigurationImpl.java?rev=1572401&r1=1572400&r2=1572401&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/principal/PrincipalConfigurationImpl.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/principal/PrincipalConfigurationImpl.java Thu Feb 27 02:08:22 2014
@@ -16,14 +16,18 @@
  */
 package org.apache.jackrabbit.oak.security.principal;
 
+import java.util.Dictionary;
+
 import javax.annotation.Nonnull;
 
+import org.apache.felix.scr.annotations.Activate;
 import org.apache.felix.scr.annotations.Component;
 import org.apache.felix.scr.annotations.Service;
 import org.apache.jackrabbit.api.security.principal.PrincipalManager;
 import org.apache.jackrabbit.oak.api.Root;
 import org.apache.jackrabbit.oak.namepath.NamePathMapper;
 import org.apache.jackrabbit.oak.spi.security.ConfigurationBase;
+import org.apache.jackrabbit.oak.spi.security.ConfigurationParameters;
 import org.apache.jackrabbit.oak.spi.security.SecurityConfiguration;
 import org.apache.jackrabbit.oak.spi.security.SecurityProvider;
 import org.apache.jackrabbit.oak.spi.security.principal.PrincipalConfiguration;
@@ -43,9 +47,15 @@ public class PrincipalConfigurationImpl 
     }
 
     public PrincipalConfigurationImpl(SecurityProvider securityProvider) {
-        super(securityProvider);
+        super(securityProvider, securityProvider.getParameters(NAME));
+    }
+
+    @Activate
+    private void activate(Dictionary<String, Object> properties) {
+        setParameters(ConfigurationParameters.of(properties));
     }
 
+
     //---------------------------------------------< PrincipalConfiguration >---
     @Nonnull
     @Override

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/privilege/PrivilegeConfigurationImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/privilege/PrivilegeConfigurationImpl.java?rev=1572401&r1=1572400&r2=1572401&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/privilege/PrivilegeConfigurationImpl.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/privilege/PrivilegeConfigurationImpl.java Thu Feb 27 02:08:22 2014
@@ -18,11 +18,13 @@ package org.apache.jackrabbit.oak.securi
 
 import java.security.Principal;
 import java.util.Collections;
+import java.util.Dictionary;
 import java.util.List;
 import java.util.Set;
 
 import javax.annotation.Nonnull;
 
+import org.apache.felix.scr.annotations.Activate;
 import org.apache.felix.scr.annotations.Component;
 import org.apache.felix.scr.annotations.Service;
 import org.apache.jackrabbit.api.security.authorization.PrivilegeManager;
@@ -33,6 +35,7 @@ import org.apache.jackrabbit.oak.spi.com
 import org.apache.jackrabbit.oak.spi.commit.ValidatorProvider;
 import org.apache.jackrabbit.oak.spi.lifecycle.RepositoryInitializer;
 import org.apache.jackrabbit.oak.spi.security.ConfigurationBase;
+import org.apache.jackrabbit.oak.spi.security.ConfigurationParameters;
 import org.apache.jackrabbit.oak.spi.security.Context;
 import org.apache.jackrabbit.oak.spi.security.SecurityConfiguration;
 import org.apache.jackrabbit.oak.spi.security.privilege.PrivilegeConfiguration;
@@ -51,6 +54,11 @@ public class PrivilegeConfigurationImpl 
         return new PrivilegeManagerImpl(root, namePathMapper);
     }
 
+    @Activate
+    private void activate(Dictionary<String, Object> properties) {
+        setParameters(ConfigurationParameters.of(properties));
+    }
+
     //----------------------------------------------< SecurityConfiguration >---
     @Nonnull
     @Override

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/UserConfigurationImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/UserConfigurationImpl.java?rev=1572401&r1=1572400&r2=1572401&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/UserConfigurationImpl.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/UserConfigurationImpl.java Thu Feb 27 02:08:22 2014
@@ -18,11 +18,13 @@ package org.apache.jackrabbit.oak.securi
 
 import java.security.Principal;
 import java.util.Collections;
+import java.util.Dictionary;
 import java.util.List;
 import java.util.Set;
 
 import javax.annotation.Nonnull;
 
+import org.apache.felix.scr.annotations.Activate;
 import org.apache.felix.scr.annotations.Component;
 import org.apache.felix.scr.annotations.Service;
 import org.apache.jackrabbit.api.security.user.UserManager;
@@ -33,6 +35,7 @@ import org.apache.jackrabbit.oak.spi.com
 import org.apache.jackrabbit.oak.spi.commit.ValidatorProvider;
 import org.apache.jackrabbit.oak.spi.lifecycle.WorkspaceInitializer;
 import org.apache.jackrabbit.oak.spi.security.ConfigurationBase;
+import org.apache.jackrabbit.oak.spi.security.ConfigurationParameters;
 import org.apache.jackrabbit.oak.spi.security.Context;
 import org.apache.jackrabbit.oak.spi.security.SecurityConfiguration;
 import org.apache.jackrabbit.oak.spi.security.SecurityProvider;
@@ -52,7 +55,12 @@ public class UserConfigurationImpl exten
     }
 
     public UserConfigurationImpl(SecurityProvider securityProvider) {
-        super(securityProvider);
+        super(securityProvider, securityProvider.getParameters(NAME));
+    }
+
+    @Activate
+    private void activate(Dictionary<String, Object> properties) {
+        setParameters(ConfigurationParameters.of(properties));
     }
 
     //----------------------------------------------< SecurityConfiguration >---

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/security/ConfigurationBase.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/security/ConfigurationBase.java?rev=1572401&r1=1572400&r2=1572401&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/security/ConfigurationBase.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/security/ConfigurationBase.java Thu Feb 27 02:08:22 2014
@@ -18,25 +18,27 @@ package org.apache.jackrabbit.oak.spi.se
 
 import javax.annotation.Nonnull;
 
-import org.apache.felix.scr.annotations.Activate;
-import org.apache.felix.scr.annotations.Component;
-import org.osgi.service.component.ComponentContext;
-
 /**
  * Abstract base implementation for the various security configurations.
  */
-@Component(componentAbstract = true)
 public abstract class ConfigurationBase extends SecurityConfiguration.Default {
 
     private SecurityProvider securityProvider;
+
     private ConfigurationParameters config = ConfigurationParameters.EMPTY;
 
+    /**
+     * osgi constructor
+     */
     public ConfigurationBase() {
     }
 
-    public ConfigurationBase(SecurityProvider securityProvider) {
+    /**
+     * non-osgi constructor
+     */
+    public ConfigurationBase(@Nonnull SecurityProvider securityProvider, @Nonnull ConfigurationParameters config) {
         this.securityProvider = securityProvider;
-        this.config = securityProvider.getParameters(getName());
+        this.config = config;
     }
 
     @Nonnull
@@ -49,7 +51,10 @@ public abstract class ConfigurationBase 
 
     public void setSecurityProvider(@Nonnull SecurityProvider securityProvider) {
         this.securityProvider = securityProvider;
-        config = ConfigurationParameters.of(securityProvider.getParameters(getName()), config);
+    }
+
+    public void setParameters(@Nonnull ConfigurationParameters config) {
+        this.config = config;
     }
 
     //----------------------------------------------< SecurityConfiguration >---
@@ -59,9 +64,4 @@ public abstract class ConfigurationBase 
         return config;
     }
 
-    //----------------------------------------------------< SCR Integration >---
-    @Activate
-    protected void activate(ComponentContext context) {
-        config = ConfigurationParameters.of(context.getProperties());
-    }
 }