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