Author: chetanm
Date: Thu Mar 27 08:27:49 2014
New Revision: 1582216
URL: http://svn.apache.org/r1582216
Log:
OAK-1622 - Duplicate configuration services (regression of OAK-1476)
Changing the logic to use CompositeConfiguration in case of DS mode.
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/spi/security/CompositeConfiguration.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=1582216&r1=1582215&r2=1582216&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 Mar 27 08:27:49 2014
@@ -84,6 +84,7 @@ public class SecurityProviderImpl implem
unbind = "unbindPrincipalConfiguration",
cardinality = ReferenceCardinality.OPTIONAL_MULTIPLE)
private final CompositePrincipalConfiguration
compositePrincipalConfiguration = new CompositePrincipalConfiguration(this);
+ private volatile PrincipalConfiguration principalConfiguration;
@Reference(referenceInterface = TokenConfiguration.class,
name = "tokenConfiguration",
@@ -91,6 +92,8 @@ public class SecurityProviderImpl implem
unbind = "unbindTokenConfiguration",
cardinality = ReferenceCardinality.OPTIONAL_MULTIPLE)
private final CompositeTokenConfiguration compositeTokenConfiguration =
new CompositeTokenConfiguration(this);
+ private volatile TokenConfiguration tokenConfiguration;
+
@Reference(referenceInterface = AuthorizableNodeName.class,
name = "authorizableNodeName",
@@ -124,9 +127,9 @@ public class SecurityProviderImpl implem
authenticationConfiguration = new
AuthenticationConfigurationImpl(this);
authorizationConfiguration = new AuthorizationConfigurationImpl(this);
userConfiguration = new UserConfigurationImpl(this);
- compositePrincipalConfiguration.addConfiguration(new
PrincipalConfigurationImpl(this));
+ principalConfiguration = new PrincipalConfigurationImpl(this);
privilegeConfiguration = new PrivilegeConfigurationImpl();
- compositeTokenConfiguration.addConfiguration(new
TokenConfigurationImpl(this));
+ tokenConfiguration = new TokenConfigurationImpl(this);
}
@Override
@@ -161,9 +164,9 @@ public class SecurityProviderImpl implem
scs.add(authenticationConfiguration);
scs.add(authorizationConfiguration);
scs.add(userConfiguration);
- scs.add(compositePrincipalConfiguration);
+ scs.add(principalConfiguration);
scs.add(privilegeConfiguration);
- scs.add(compositeTokenConfiguration);
+ scs.add(tokenConfiguration);
return scs;
}
@@ -178,11 +181,11 @@ public class SecurityProviderImpl implem
} else if (UserConfiguration.class == configClass) {
return (T) userConfiguration;
} else if (PrincipalConfiguration.class == configClass) {
- return (T) compositePrincipalConfiguration;
+ return (T) principalConfiguration;
} else if (PrivilegeConfiguration.class == configClass) {
return (T) privilegeConfiguration;
} else if (TokenConfiguration.class == configClass) {
- return (T) compositeTokenConfiguration;
+ return (T) tokenConfiguration;
} else {
throw new IllegalArgumentException("Unsupported security
configuration class " + configClass);
}
@@ -221,6 +224,9 @@ public class SecurityProviderImpl implem
initConfiguration(userConfiguration,
ConfigurationParameters.of(userMap));
initConfiguration(privilegeConfiguration,
ConfigurationParameters.EMPTY);
+
+ principalConfiguration = compositePrincipalConfiguration;
+ tokenConfiguration = compositeTokenConfiguration;
}
protected void bindPrincipalConfiguration(@Nonnull PrincipalConfiguration
reference) {
Modified:
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/security/CompositeConfiguration.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/security/CompositeConfiguration.java?rev=1582216&r1=1582215&r2=1582216&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/security/CompositeConfiguration.java
(original)
+++
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/security/CompositeConfiguration.java
Thu Mar 27 08:27:49 2014
@@ -19,9 +19,9 @@
package org.apache.jackrabbit.oak.spi.security;
import java.security.Principal;
-import java.util.ArrayList;
import java.util.List;
import java.util.Set;
+import java.util.concurrent.CopyOnWriteArrayList;
import javax.annotation.Nonnull;
@@ -48,7 +48,7 @@ import org.apache.jackrabbit.oak.plugins
*/
public abstract class CompositeConfiguration<T extends SecurityConfiguration>
implements SecurityConfiguration {
- private final List<T> configurations = new ArrayList<T>();
+ private final List<T> configurations = new CopyOnWriteArrayList<T>();
private final String name;
private final SecurityProvider securityProvider;