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;


Reply via email to