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 st...@apache.org on 2018/03/16 13:05:46 UTC

svn commit: r1826984 - in /jackrabbit/oak/trunk: oak-auth-external/src/test/java/org/apache/jackrabbit/oak/spi/security/authentication/external/ oak-authorization-cug/src/test/java/org/apache/jackrabbit/oak/spi/security/authorization/cug/impl/ oak-benc...

Author: stillalex
Date: Fri Mar 16 13:05:46 2018
New Revision: 1826984

URL: http://svn.apache.org/viewvc?rev=1826984&view=rev
Log:
OAK-7340 Remove SecurityProviderImpl usage from tests


Added:
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/internal/SecurityProviderBuilder.java   (with props)
    jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/internal/SecurityProviderHelper.java   (with props)
Removed:
    jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/internal/SecurityProviderBuilder.java
Modified:
    jackrabbit/oak/trunk/oak-auth-external/src/test/java/org/apache/jackrabbit/oak/spi/security/authentication/external/TestSecurityProvider.java
    jackrabbit/oak/trunk/oak-authorization-cug/src/test/java/org/apache/jackrabbit/oak/spi/security/authorization/cug/impl/CugSecurityProvider.java
    jackrabbit/oak/trunk/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/AbstractLoginTest.java
    jackrabbit/oak/trunk/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/AddMembersTest.java
    jackrabbit/oak/trunk/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/CompositeAuthorizationTest.java
    jackrabbit/oak/trunk/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/CugTest.java
    jackrabbit/oak/trunk/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/IsMemberTest.java
    jackrabbit/oak/trunk/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/MemberBaseTest.java
    jackrabbit/oak/trunk/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/ReadWithMembershipTest.java
    jackrabbit/oak/trunk/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/RemoveMembersTest.java
    jackrabbit/oak/trunk/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/authentication/external/AbstractExternalTest.java
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/Oak.java
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/internal/SecurityProviderRegistration.java
    jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/AbstractSecurityTest.java
    jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/observation/ChangeCollectorProviderTest.java
    jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authentication/AuthenticationConfigurationImplTest.java
    jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authentication/user/LoginModuleImplTest.java
    jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authorization/permission/MountPermissionProviderRandomTestIT.java
    jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/internal/SecurityProviderRegistrationTest.java
    jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/user/UserInitializerTest.java
    jackrabbit/oak/trunk/oak-it/src/test/java/org/apache/jackrabbit/oak/security/authorization/permission/ClusterPermissionsTest.java
    jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/security/authorization/ImportIgnoreTest.java
    jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/security/user/AbstractImportTest.java
    jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/InitializerTest.java
    jackrabbit/oak/trunk/oak-store-document/src/test/java/org/apache/jackrabbit/oak/plugins/document/InitializerTest.java

Modified: jackrabbit/oak/trunk/oak-auth-external/src/test/java/org/apache/jackrabbit/oak/spi/security/authentication/external/TestSecurityProvider.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-auth-external/src/test/java/org/apache/jackrabbit/oak/spi/security/authentication/external/TestSecurityProvider.java?rev=1826984&r1=1826983&r2=1826984&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-auth-external/src/test/java/org/apache/jackrabbit/oak/spi/security/authentication/external/TestSecurityProvider.java (original)
+++ jackrabbit/oak/trunk/oak-auth-external/src/test/java/org/apache/jackrabbit/oak/spi/security/authentication/external/TestSecurityProvider.java Fri Mar 16 13:05:46 2018
@@ -19,6 +19,7 @@ package org.apache.jackrabbit.oak.spi.se
 import javax.annotation.Nonnull;
 
 import org.apache.jackrabbit.oak.security.internal.SecurityProviderBuilder;
+import org.apache.jackrabbit.oak.security.internal.SecurityProviderHelper;
 import org.apache.jackrabbit.oak.spi.security.ConfigurationParameters;
 import org.apache.jackrabbit.oak.spi.security.SecurityProvider;
 import org.apache.jackrabbit.oak.spi.security.authentication.external.impl.principal.ExternalPrincipalConfiguration;
@@ -30,6 +31,8 @@ public final class TestSecurityProvider
 
     public static SecurityProvider newTestSecurityProvider(@Nonnull ConfigurationParameters configuration,
             @Nonnull ExternalPrincipalConfiguration externalPrincipalConfiguration) {
-        return new SecurityProviderBuilder().with(configuration).with(externalPrincipalConfiguration, PrincipalConfiguration.class).build();
+        SecurityProvider sp = SecurityProviderBuilder.newBuilder().with(configuration).build();
+        SecurityProviderHelper.updateConfig(sp, externalPrincipalConfiguration, PrincipalConfiguration.class);
+        return sp;
     }
 }
\ No newline at end of file

Modified: jackrabbit/oak/trunk/oak-authorization-cug/src/test/java/org/apache/jackrabbit/oak/spi/security/authorization/cug/impl/CugSecurityProvider.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-authorization-cug/src/test/java/org/apache/jackrabbit/oak/spi/security/authorization/cug/impl/CugSecurityProvider.java?rev=1826984&r1=1826983&r2=1826984&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-authorization-cug/src/test/java/org/apache/jackrabbit/oak/spi/security/authorization/cug/impl/CugSecurityProvider.java (original)
+++ jackrabbit/oak/trunk/oak-authorization-cug/src/test/java/org/apache/jackrabbit/oak/spi/security/authorization/cug/impl/CugSecurityProvider.java Fri Mar 16 13:05:46 2018
@@ -20,6 +20,7 @@ import javax.annotation.Nonnull;
 
 import org.apache.jackrabbit.oak.security.authorization.composite.CompositeAuthorizationConfiguration;
 import org.apache.jackrabbit.oak.security.internal.SecurityProviderBuilder;
+import org.apache.jackrabbit.oak.security.internal.SecurityProviderHelper;
 import org.apache.jackrabbit.oak.spi.security.ConfigurationParameters;
 import org.apache.jackrabbit.oak.spi.security.SecurityProvider;
 import org.apache.jackrabbit.oak.spi.security.authorization.AuthorizationConfiguration;
@@ -34,7 +35,9 @@ final class CugSecurityProvider {
         ConfigurationParameters params = configuration.getConfigValue(AuthorizationConfiguration.NAME, ConfigurationParameters.EMPTY);
         cugConfiguration.activate(params);
 
-        return new SecurityProviderBuilder().with(configuration).with(cugConfiguration, AuthorizationConfiguration.class).build();
+        SecurityProvider sp = SecurityProviderBuilder.newBuilder().with(configuration).build();
+        SecurityProviderHelper.updateConfig(sp, cugConfiguration, AuthorizationConfiguration.class);
+        return sp;
     }
 
     public static CugConfiguration getCugConfiguration(@Nonnull SecurityProvider securityProvider) {

Modified: jackrabbit/oak/trunk/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/AbstractLoginTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/AbstractLoginTest.java?rev=1826984&r1=1826983&r2=1826984&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/AbstractLoginTest.java (original)
+++ jackrabbit/oak/trunk/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/AbstractLoginTest.java Fri Mar 16 13:05:46 2018
@@ -143,7 +143,7 @@ abstract class AbstractLoginTest extends
                                     UserConfiguration.NAME, ConfigurationParameters.of(iterations, cache));
                         }
                         conf = prepare(conf);
-                        SecurityProvider sp = new SecurityProviderBuilder().with(conf).build();
+                        SecurityProvider sp = SecurityProviderBuilder.newBuilder().with(conf).build();
                         return new Jcr(oak).with(sp);
                     }
                 });

Modified: jackrabbit/oak/trunk/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/AddMembersTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/AddMembersTest.java?rev=1826984&r1=1826983&r2=1826984&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/AddMembersTest.java (original)
+++ jackrabbit/oak/trunk/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/AddMembersTest.java Fri Mar 16 13:05:46 2018
@@ -137,7 +137,7 @@ public class AddMembersTest extends Abst
                 public Jcr customize(Oak oak) {
                     ConfigurationParameters config = ConfigurationParameters.of(UserConfiguration.NAME,
                             ConfigurationParameters.of(ProtectedItemImporter.PARAM_IMPORT_BEHAVIOR, importBehavior));
-                    SecurityProvider sp = new SecurityProviderBuilder().with(config).build();
+                    SecurityProvider sp = SecurityProviderBuilder.newBuilder().with(config).build();
                     return new Jcr(oak).with(sp);
                 }
             });

Modified: jackrabbit/oak/trunk/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/CompositeAuthorizationTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/CompositeAuthorizationTest.java?rev=1826984&r1=1826983&r2=1826984&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/CompositeAuthorizationTest.java (original)
+++ jackrabbit/oak/trunk/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/CompositeAuthorizationTest.java Fri Mar 16 13:05:46 2018
@@ -89,7 +89,7 @@ public class CompositeAuthorizationTest
     }
 
     private static SecurityProvider newTestSecurityProvider(int cnt) {
-        SecurityProvider delegate = new SecurityProviderBuilder().build();
+        SecurityProvider delegate = SecurityProviderBuilder.newBuilder().build();
 
         AuthorizationConfiguration authorizationConfiguration = delegate
                 .getConfiguration(AuthorizationConfiguration.class);

Modified: jackrabbit/oak/trunk/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/CugTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/CugTest.java?rev=1826984&r1=1826983&r2=1826984&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/CugTest.java (original)
+++ jackrabbit/oak/trunk/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/CugTest.java Fri Mar 16 13:05:46 2018
@@ -83,7 +83,7 @@ public class CugTest extends ReadDeepTre
 
     private static SecurityProvider newTestSecurityProvider(@Nonnull ConfigurationParameters params,
             boolean reverseOrder) {
-        SecurityProvider delegate = new SecurityProviderBuilder().with(params).build();
+        SecurityProvider delegate = SecurityProviderBuilder.newBuilder().with(params).build();
         CompositeAuthorizationConfiguration authorizationConfiguration = (CompositeAuthorizationConfiguration) delegate
                 .getConfiguration((AuthorizationConfiguration.class));
         AuthorizationConfiguration defaultAuthorization = checkNotNull(authorizationConfiguration.getDefaultConfig());

Modified: jackrabbit/oak/trunk/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/IsMemberTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/IsMemberTest.java?rev=1826984&r1=1826983&r2=1826984&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/IsMemberTest.java (original)
+++ jackrabbit/oak/trunk/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/IsMemberTest.java Fri Mar 16 13:05:46 2018
@@ -142,7 +142,7 @@ public class IsMemberTest extends Abstra
                     ConfigurationParameters conf = ConfigurationParameters.of(UserConfiguration.NAME,
                             ConfigurationParameters.of(ProtectedItemImporter.PARAM_IMPORT_BEHAVIOR,
                                     ImportBehavior.NAME_BESTEFFORT));
-                    SecurityProvider sp = new SecurityProviderBuilder().with(conf).build();
+                    SecurityProvider sp = SecurityProviderBuilder.newBuilder().with(conf).build();
                     return new Jcr(oak).with(sp);
                 }
             });

Modified: jackrabbit/oak/trunk/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/MemberBaseTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/MemberBaseTest.java?rev=1826984&r1=1826983&r2=1826984&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/MemberBaseTest.java (original)
+++ jackrabbit/oak/trunk/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/MemberBaseTest.java Fri Mar 16 13:05:46 2018
@@ -164,7 +164,7 @@ abstract class MemberBaseTest extends Ab
                 public Jcr customize(Oak oak) {
                     ConfigurationParameters conf = ConfigurationParameters.of(UserConfiguration.NAME,
                             ConfigurationParameters.of(ProtectedItemImporter.PARAM_IMPORT_BEHAVIOR, ImportBehavior.NAME_BESTEFFORT));
-                    SecurityProvider sp = new SecurityProviderBuilder().with(conf).build();
+                    SecurityProvider sp = SecurityProviderBuilder.newBuilder().with(conf).build();
                     return new Jcr(oak).with(sp);
                 }
             });

Modified: jackrabbit/oak/trunk/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/ReadWithMembershipTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/ReadWithMembershipTest.java?rev=1826984&r1=1826983&r2=1826984&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/ReadWithMembershipTest.java (original)
+++ jackrabbit/oak/trunk/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/ReadWithMembershipTest.java Fri Mar 16 13:05:46 2018
@@ -98,7 +98,7 @@ public class ReadWithMembershipTest exte
                 @Override
                 public Jcr customize(Oak oak) {
                     ConfigurationParameters params = ConfigurationParameters.of("eagerCacheSize", 100);
-                    SecurityProvider securityProvider = new SecurityProviderBuilder().with(ConfigurationParameters.of(AuthorizationConfiguration.NAME, params)).build();
+                    SecurityProvider securityProvider = SecurityProviderBuilder.newBuilder().with(ConfigurationParameters.of(AuthorizationConfiguration.NAME, params)).build();
                     return new Jcr(oak).with(securityProvider);
                 }
             });

Modified: jackrabbit/oak/trunk/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/RemoveMembersTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/RemoveMembersTest.java?rev=1826984&r1=1826983&r2=1826984&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/RemoveMembersTest.java (original)
+++ jackrabbit/oak/trunk/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/RemoveMembersTest.java Fri Mar 16 13:05:46 2018
@@ -136,7 +136,7 @@ public class RemoveMembersTest extends A
                     ConfigurationParameters conf = ConfigurationParameters.of(UserConfiguration.NAME,
                             ConfigurationParameters.of(ProtectedItemImporter.PARAM_IMPORT_BEHAVIOR,
                                     ImportBehavior.NAME_BESTEFFORT));
-                    SecurityProvider sp = new SecurityProviderBuilder().with(conf).build();
+                    SecurityProvider sp = SecurityProviderBuilder.newBuilder().with(conf).build();
                     return new Jcr(oak).with(sp);
                 }
             });

Modified: jackrabbit/oak/trunk/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/authentication/external/AbstractExternalTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/authentication/external/AbstractExternalTest.java?rev=1826984&r1=1826983&r2=1826984&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/authentication/external/AbstractExternalTest.java (original)
+++ jackrabbit/oak/trunk/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/authentication/external/AbstractExternalTest.java Fri Mar 16 13:05:46 2018
@@ -236,7 +236,7 @@ abstract class AbstractExternalTest exte
 
     private static SecurityProvider newTestSecurityProvider(
             ExternalPrincipalConfiguration externalPrincipalConfiguration) {
-        SecurityProvider delegate = new SecurityProviderBuilder().build();
+        SecurityProvider delegate = SecurityProviderBuilder.newBuilder().build();
 
         PrincipalConfiguration principalConfiguration = delegate.getConfiguration(PrincipalConfiguration.class);
         if (!(principalConfiguration instanceof CompositePrincipalConfiguration)) {

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/Oak.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/Oak.java?rev=1826984&r1=1826983&r2=1826984&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/Oak.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/Oak.java Fri Mar 16 13:05:46 2018
@@ -97,7 +97,7 @@ import org.apache.jackrabbit.oak.plugins
 import org.apache.jackrabbit.oak.plugins.version.VersionHook;
 import org.apache.jackrabbit.oak.query.QueryEngineSettings;
 import org.apache.jackrabbit.oak.query.stats.QueryStatsMBean;
-import org.apache.jackrabbit.oak.security.SecurityProviderImpl;
+import org.apache.jackrabbit.oak.security.internal.SecurityProviderBuilder;
 import org.apache.jackrabbit.oak.spi.commit.CompositeConflictHandler;
 import org.apache.jackrabbit.oak.spi.commit.CommitHook;
 import org.apache.jackrabbit.oak.spi.commit.CommitInfo;
@@ -952,7 +952,7 @@ public class Oak {
         private  final Iterable<QueryIndexProvider> queryIndexProviders = ImmutableList
                 .of(new ReferenceIndexProvider(), new PropertyIndexProvider(), new NodeTypeIndexProvider());
 
-        private  final SecurityProvider securityProvider = new SecurityProviderImpl();
+        private  final SecurityProvider securityProvider = SecurityProviderBuilder.newBuilder().build();
 
         private OakDefaultComponents() {
         }

Added: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/internal/SecurityProviderBuilder.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/internal/SecurityProviderBuilder.java?rev=1826984&view=auto
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/internal/SecurityProviderBuilder.java (added)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/internal/SecurityProviderBuilder.java Fri Mar 16 13:05:46 2018
@@ -0,0 +1,230 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.jackrabbit.oak.security.internal;
+
+import static org.apache.jackrabbit.oak.security.internal.ConfigurationInitializer.initializeConfiguration;
+import static org.apache.jackrabbit.oak.security.internal.ConfigurationInitializer.initializeConfigurations;
+import static org.apache.jackrabbit.oak.spi.security.ConfigurationParameters.EMPTY;
+
+import javax.annotation.Nonnull;
+
+import org.apache.jackrabbit.oak.plugins.tree.RootProvider;
+import org.apache.jackrabbit.oak.plugins.tree.TreeProvider;
+import org.apache.jackrabbit.oak.plugins.tree.impl.RootProviderService;
+import org.apache.jackrabbit.oak.plugins.tree.impl.TreeProviderService;
+import org.apache.jackrabbit.oak.security.authentication.AuthenticationConfigurationImpl;
+import org.apache.jackrabbit.oak.security.authentication.token.TokenConfigurationImpl;
+import org.apache.jackrabbit.oak.security.authorization.AuthorizationConfigurationImpl;
+import org.apache.jackrabbit.oak.security.authorization.composite.CompositeAuthorizationConfiguration;
+import org.apache.jackrabbit.oak.security.authorization.restriction.RestrictionProviderImpl;
+import org.apache.jackrabbit.oak.security.principal.PrincipalConfigurationImpl;
+import org.apache.jackrabbit.oak.security.privilege.PrivilegeConfigurationImpl;
+import org.apache.jackrabbit.oak.security.user.RandomAuthorizableNodeName;
+import org.apache.jackrabbit.oak.security.user.UserConfigurationImpl;
+import org.apache.jackrabbit.oak.spi.security.ConfigurationParameters;
+import org.apache.jackrabbit.oak.spi.security.SecurityProvider;
+import org.apache.jackrabbit.oak.spi.security.authentication.AuthenticationConfiguration;
+import org.apache.jackrabbit.oak.spi.security.authentication.token.CompositeTokenConfiguration;
+import org.apache.jackrabbit.oak.spi.security.authentication.token.TokenConfiguration;
+import org.apache.jackrabbit.oak.spi.security.authorization.AuthorizationConfiguration;
+import org.apache.jackrabbit.oak.spi.security.authorization.accesscontrol.AccessControlConstants;
+import org.apache.jackrabbit.oak.spi.security.authorization.restriction.RestrictionProvider;
+import org.apache.jackrabbit.oak.spi.security.principal.CompositePrincipalConfiguration;
+import org.apache.jackrabbit.oak.spi.security.principal.PrincipalConfiguration;
+import org.apache.jackrabbit.oak.spi.security.privilege.PrivilegeConfiguration;
+import org.apache.jackrabbit.oak.spi.security.user.AuthorizableNodeName;
+import org.apache.jackrabbit.oak.spi.security.user.UserAuthenticationFactory;
+import org.apache.jackrabbit.oak.spi.security.user.UserConfiguration;
+import org.apache.jackrabbit.oak.spi.security.user.UserConstants;
+import org.apache.jackrabbit.oak.spi.security.user.action.AuthorizableActionProvider;
+import org.apache.jackrabbit.oak.spi.security.user.action.DefaultAuthorizableActionProvider;
+import org.apache.jackrabbit.oak.spi.whiteboard.Whiteboard;
+
+public class SecurityProviderBuilder {
+
+    private Whiteboard whiteboard;
+    private RootProvider rootProvider;
+    private TreeProvider treeProvider;
+
+    private ConfigurationParameters authenticationParams = EMPTY;
+    private AuthenticationConfiguration authenticationConfiguration;
+
+    private ConfigurationParameters privilegeParams = EMPTY;
+    private PrivilegeConfiguration privilegeConfiguration;
+
+    private ConfigurationParameters userParams = EMPTY;
+    private UserConfiguration userConfiguration;
+
+    private ConfigurationParameters authorizationParams = EMPTY;
+    private CompositeAuthorizationConfiguration authorizationConfiguration;
+
+    private ConfigurationParameters principalParams = EMPTY;
+    private CompositePrincipalConfiguration principalConfiguration;
+
+    private ConfigurationParameters tokenParams = EMPTY;
+    private CompositeTokenConfiguration tokenConfiguration;
+
+    @Nonnull
+    public static SecurityProviderBuilder newBuilder() {
+        return new SecurityProviderBuilder();
+    }
+
+    private SecurityProviderBuilder() {
+    }
+
+    public SecurityProviderBuilder with(@Nonnull ConfigurationParameters configuration) {
+        authenticationParams = configuration.getConfigValue(AuthenticationConfiguration.NAME, EMPTY);
+        privilegeParams = configuration.getConfigValue(PrivilegeConfiguration.NAME, EMPTY);
+
+        if (configuration.contains(UserConfiguration.NAME)) {
+            userParams = configuration.getConfigValue(UserConfiguration.NAME, EMPTY);
+        } else {
+            AuthorizableActionProvider authorizableActionProvider = new DefaultAuthorizableActionProvider();
+            AuthorizableNodeName authorizableNodeName = new RandomAuthorizableNodeName();
+            UserAuthenticationFactory userAuthenticationFactory = UserConfigurationImpl
+                    .getDefaultAuthenticationFactory();
+
+            userParams = ConfigurationParameters.of(
+                    ConfigurationParameters.of(UserConstants.PARAM_AUTHORIZABLE_ACTION_PROVIDER,
+                            authorizableActionProvider),
+                    ConfigurationParameters.of(UserConstants.PARAM_AUTHORIZABLE_NODE_NAME, authorizableNodeName),
+                    ConfigurationParameters.of(UserConstants.PARAM_USER_AUTHENTICATION_FACTORY,
+                            userAuthenticationFactory));
+        }
+        if (configuration.contains(AuthorizationConfiguration.NAME)) {
+            authorizationParams = configuration.getConfigValue(AuthorizationConfiguration.NAME, EMPTY);
+        } else {
+            RestrictionProvider restrictionProvider = new RestrictionProviderImpl();
+            authorizationParams = ConfigurationParameters.of(AccessControlConstants.PARAM_RESTRICTION_PROVIDER,
+                    restrictionProvider);
+        }
+        principalParams = configuration.getConfigValue(PrincipalConfiguration.NAME, EMPTY);
+        tokenParams = configuration.getConfigValue(TokenConfiguration.NAME, EMPTY);
+        return this;
+    }
+
+    public SecurityProviderBuilder with(@Nonnull AuthenticationConfiguration authenticationConfiguration,
+            @Nonnull ConfigurationParameters authenticationParams,
+            @Nonnull PrivilegeConfiguration privilegeConfiguration, @Nonnull ConfigurationParameters privilegeParams,
+            @Nonnull UserConfiguration userConfiguration, @Nonnull ConfigurationParameters userParams,
+            @Nonnull CompositeAuthorizationConfiguration authorizationConfiguration,
+            @Nonnull ConfigurationParameters authorizationParams,
+            @Nonnull CompositePrincipalConfiguration principalConfiguration,
+            @Nonnull ConfigurationParameters principalParams, @Nonnull CompositeTokenConfiguration tokenConfiguration,
+            @Nonnull ConfigurationParameters tokenParams) {
+
+        this.authenticationConfiguration = authenticationConfiguration;
+        this.authenticationParams = authenticationParams;
+
+        this.privilegeConfiguration = privilegeConfiguration;
+        this.privilegeParams = privilegeParams;
+
+        this.userConfiguration = userConfiguration;
+        this.userParams = userParams;
+
+        this.authorizationConfiguration = authorizationConfiguration;
+        this.authorizationParams = authorizationParams;
+
+        this.principalConfiguration = principalConfiguration;
+        this.principalParams = principalParams;
+
+        this.tokenConfiguration = tokenConfiguration;
+        this.tokenParams = tokenParams;
+
+        return this;
+    }
+
+    public SecurityProvider build() {
+        InternalSecurityProvider securityProvider = new InternalSecurityProvider();
+
+        if (rootProvider == null) {
+            rootProvider = new RootProviderService();
+        }
+        if (treeProvider == null) {
+            treeProvider = new TreeProviderService();
+        }
+
+        // authentication
+        if (authenticationConfiguration == null) {
+            authenticationConfiguration = new AuthenticationConfigurationImpl();
+        }
+        securityProvider.setAuthenticationConfiguration(initializeConfiguration(authenticationConfiguration,
+                securityProvider, authenticationParams, rootProvider, treeProvider));
+
+        // privilege
+        if (privilegeConfiguration == null) {
+            privilegeConfiguration = new PrivilegeConfigurationImpl();
+        }
+        securityProvider.setPrivilegeConfiguration(initializeConfiguration(privilegeConfiguration, securityProvider,
+                privilegeParams, rootProvider, treeProvider));
+
+        // user
+        if (userConfiguration == null) {
+            userConfiguration = new UserConfigurationImpl();
+        }
+        securityProvider.setUserConfiguration(
+                initializeConfiguration(userConfiguration, securityProvider, userParams, rootProvider, treeProvider));
+
+        // authorization
+        if (authorizationConfiguration == null) {
+            authorizationConfiguration = new CompositeAuthorizationConfiguration();
+            authorizationConfiguration.setDefaultConfig(new AuthorizationConfigurationImpl());
+        }
+        initializeConfigurations(authorizationConfiguration, securityProvider, authorizationParams, rootProvider,
+                treeProvider);
+        securityProvider.setAuthorizationConfiguration(authorizationConfiguration);
+
+        // principal
+        if (principalConfiguration == null) {
+            principalConfiguration = new CompositePrincipalConfiguration();
+            principalConfiguration.setDefaultConfig(new PrincipalConfigurationImpl());
+        }
+        initializeConfigurations(principalConfiguration, securityProvider, principalParams, rootProvider, treeProvider);
+        securityProvider.setPrincipalConfiguration(principalConfiguration);
+
+        // token
+        if (tokenConfiguration == null) {
+            tokenConfiguration = new CompositeTokenConfiguration();
+            tokenConfiguration.setDefaultConfig(new TokenConfigurationImpl());
+        }
+
+        initializeConfigurations(tokenConfiguration, securityProvider, tokenParams, rootProvider, treeProvider);
+        securityProvider.setTokenConfiguration(tokenConfiguration);
+
+        if (whiteboard != null) {
+            securityProvider.setWhiteboard(whiteboard);
+        }
+
+        return securityProvider;
+    }
+
+    public SecurityProviderBuilder withWhiteboard(@Nonnull Whiteboard whiteboard) {
+        this.whiteboard = whiteboard;
+        return this;
+    }
+
+    public SecurityProviderBuilder withRootProvider(@Nonnull RootProvider rootProvider) {
+        this.rootProvider = rootProvider;
+        return this;
+    }
+
+    public SecurityProviderBuilder withTreeProvider(@Nonnull TreeProvider treeProvider) {
+        this.treeProvider = treeProvider;
+        return this;
+    }
+
+}

Propchange: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/internal/SecurityProviderBuilder.java
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/internal/SecurityProviderRegistration.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/internal/SecurityProviderRegistration.java?rev=1826984&r1=1826983&r2=1826984&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/internal/SecurityProviderRegistration.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/internal/SecurityProviderRegistration.java Fri Mar 16 13:05:46 2018
@@ -70,6 +70,7 @@ import org.slf4j.LoggerFactory;
 import static com.google.common.collect.Lists.newArrayList;
 import static com.google.common.collect.Lists.newCopyOnWriteArrayList;
 import static org.apache.jackrabbit.oak.spi.security.RegistrationConstants.OAK_SECURITY_NAME;
+import static org.apache.jackrabbit.oak.spi.security.ConfigurationParameters.EMPTY;
 
 @Component(immediate=true)
 @Designate(ocd = SecurityProviderRegistration.Configuration.class)
@@ -290,7 +291,7 @@ public class SecurityProviderRegistratio
         unbindConfiguration(tokenConfiguration, configuration, properties);
     }
 
-    private void bindConfiguration(@Nonnull CompositeConfiguration composite, @Nonnull SecurityConfiguration configuration, Map<String, Object> properties) {
+    private <T extends SecurityConfiguration> void bindConfiguration(@Nonnull CompositeConfiguration<T> composite, @Nonnull T configuration, Map<String, Object> properties) {
         synchronized (this) {
             composite.addConfiguration(configuration, ConfigurationParameters.of(properties));
             addCandidate(properties);
@@ -298,7 +299,7 @@ public class SecurityProviderRegistratio
         maybeRegister();
     }
 
-    private void unbindConfiguration(@Nonnull CompositeConfiguration composite, @Nonnull SecurityConfiguration configuration, Map<String, Object> properties) {
+    private <T extends SecurityConfiguration> void unbindConfiguration(@Nonnull CompositeConfiguration<T> composite, @Nonnull T configuration, Map<String, Object> properties) {
         synchronized (this) {
             composite.removeConfiguration(configuration);
             removeCandidate(properties);
@@ -514,36 +515,19 @@ public class SecurityProviderRegistratio
     }
 
     private SecurityProvider createSecurityProvider(@Nonnull BundleContext context) {
-        InternalSecurityProvider securityProvider = new InternalSecurityProvider();
-
-        // Static, mandatory references
-
-        securityProvider.setAuthenticationConfiguration(ConfigurationInitializer.initializeConfiguration(authenticationConfiguration, securityProvider, rootProvider, treeProvider));
-        securityProvider.setPrivilegeConfiguration(ConfigurationInitializer.initializeConfiguration(privilegeConfiguration, securityProvider, rootProvider, treeProvider));
-
         ConfigurationParameters userParams = ConfigurationParameters.of(
-                ConfigurationParameters.of(UserConstants.PARAM_AUTHORIZABLE_ACTION_PROVIDER, createWhiteboardAuthorizableActionProvider()),
-                ConfigurationParameters.of(UserConstants.PARAM_AUTHORIZABLE_NODE_NAME, createWhiteboardAuthorizableNodeName()),
-                ConfigurationParameters.of(UserConstants.PARAM_USER_AUTHENTICATION_FACTORY, createWhiteboardUserAuthenticationFactory()));
-        securityProvider.setUserConfiguration(ConfigurationInitializer.initializeConfiguration(userConfiguration, securityProvider, userParams, rootProvider, treeProvider));
-
-        // Multiple, dynamic references
-
-        ConfigurationParameters restrictionParams = ConfigurationParameters.of(AccessControlConstants.PARAM_RESTRICTION_PROVIDER, createWhiteboardRestrictionProvider());
-        ConfigurationInitializer.initializeConfigurations(authorizationConfiguration, securityProvider, restrictionParams, rootProvider, treeProvider);
-        securityProvider.setAuthorizationConfiguration(authorizationConfiguration);
-
-        ConfigurationInitializer.initializeConfigurations(principalConfiguration, securityProvider, ConfigurationParameters.EMPTY, rootProvider, treeProvider);
-        securityProvider.setPrincipalConfiguration(principalConfiguration);
-
-        ConfigurationInitializer.initializeConfigurations(tokenConfiguration, securityProvider, ConfigurationParameters.EMPTY, rootProvider, treeProvider);
-        securityProvider.setTokenConfiguration(tokenConfiguration);
-
-        // Whiteboard
-
-        securityProvider.setWhiteboard(new OsgiWhiteboard(context));
-
-        return securityProvider;
+              ConfigurationParameters.of(UserConstants.PARAM_AUTHORIZABLE_ACTION_PROVIDER, createWhiteboardAuthorizableActionProvider()),
+              ConfigurationParameters.of(UserConstants.PARAM_AUTHORIZABLE_NODE_NAME, createWhiteboardAuthorizableNodeName()),
+              ConfigurationParameters.of(UserConstants.PARAM_USER_AUTHENTICATION_FACTORY, createWhiteboardUserAuthenticationFactory()));
+
+        ConfigurationParameters authorizationParams = ConfigurationParameters
+                .of(AccessControlConstants.PARAM_RESTRICTION_PROVIDER, createWhiteboardRestrictionProvider());
+
+        return SecurityProviderBuilder.newBuilder().withRootProvider(rootProvider).withTreeProvider(treeProvider)
+                .with(authenticationConfiguration, EMPTY, privilegeConfiguration, EMPTY, userConfiguration, userParams,
+                        authorizationConfiguration, authorizationParams, principalConfiguration, EMPTY,
+                        tokenConfiguration, EMPTY)
+                .withWhiteboard(new OsgiWhiteboard(context)).build();
     }
 
     private RestrictionProvider createWhiteboardRestrictionProvider() {

Modified: jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/AbstractSecurityTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/AbstractSecurityTest.java?rev=1826984&r1=1826983&r2=1826984&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/AbstractSecurityTest.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/AbstractSecurityTest.java Fri Mar 16 13:05:46 2018
@@ -139,7 +139,7 @@ public abstract class AbstractSecurityTe
     }
 
     protected SecurityProvider initSecurityProvider() {
-        return new SecurityProviderBuilder().with(getSecurityConfigParameters()).build();
+        return SecurityProviderBuilder.newBuilder().with(getSecurityConfigParameters()).build();
     }
 
     protected Oak withEditors(Oak oak) {

Modified: jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/observation/ChangeCollectorProviderTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/observation/ChangeCollectorProviderTest.java?rev=1826984&r1=1826983&r2=1826984&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/observation/ChangeCollectorProviderTest.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/observation/ChangeCollectorProviderTest.java Fri Mar 16 13:05:46 2018
@@ -94,7 +94,7 @@ public class ChangeCollectorProviderTest
 
     protected SecurityProvider getSecurityProvider() {
         if (securityProvider == null) {
-            securityProvider = new SecurityProviderBuilder().build();
+            securityProvider = SecurityProviderBuilder.newBuilder().build();
         }
         return securityProvider;
     }

Modified: jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authentication/AuthenticationConfigurationImplTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authentication/AuthenticationConfigurationImplTest.java?rev=1826984&r1=1826983&r2=1826984&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authentication/AuthenticationConfigurationImplTest.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authentication/AuthenticationConfigurationImplTest.java Fri Mar 16 13:05:46 2018
@@ -46,7 +46,7 @@ public class AuthenticationConfiguration
 
     @Test
     public void testGetLoginCtxProvider() {
-        authConfiguration.setSecurityProvider(new SecurityProviderBuilder().build());
+        authConfiguration.setSecurityProvider(SecurityProviderBuilder.newBuilder().build());
 
         assertNotNull(authConfiguration.getLoginContextProvider(repo));
     }

Modified: jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authentication/user/LoginModuleImplTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authentication/user/LoginModuleImplTest.java?rev=1826984&r1=1826983&r2=1826984&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authentication/user/LoginModuleImplTest.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authentication/user/LoginModuleImplTest.java Fri Mar 16 13:05:46 2018
@@ -394,7 +394,7 @@ public class LoginModuleImplTest extends
                     UserConfiguration.NAME,
                     ConfigurationParameters.of(
                             UserConstants.PARAM_USER_AUTHENTICATION_FACTORY, authenticationFactory));
-            this.sp = new SecurityProviderBuilder().with(params).build();
+            this.sp = SecurityProviderBuilder.newBuilder().with(params).build();
         }
 
         @Override

Modified: jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authorization/permission/MountPermissionProviderRandomTestIT.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authorization/permission/MountPermissionProviderRandomTestIT.java?rev=1826984&r1=1826983&r2=1826984&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authorization/permission/MountPermissionProviderRandomTestIT.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authorization/permission/MountPermissionProviderRandomTestIT.java Fri Mar 16 13:05:46 2018
@@ -51,7 +51,7 @@ public class MountPermissionProviderRand
     @Override
     protected PermissionProvider candidatePermissionProvider(@Nonnull Root root, @Nonnull String workspaceName,
             @Nonnull Set<Principal> principals) {
-        SecurityProvider sp = new SecurityProviderBuilder().build();
+        SecurityProvider sp = SecurityProviderBuilder.newBuilder().build();
         AuthorizationConfiguration acConfig = MountUtils.bindMountInfoProvider(sp, mountInfoProvider);
         PermissionProvider composite = acConfig.getPermissionProvider(root, workspaceName, principals);
         Assert.assertTrue(composite instanceof MountPermissionProvider);

Added: jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/internal/SecurityProviderHelper.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/internal/SecurityProviderHelper.java?rev=1826984&view=auto
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/internal/SecurityProviderHelper.java (added)
+++ jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/internal/SecurityProviderHelper.java Fri Mar 16 13:05:46 2018
@@ -0,0 +1,50 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.jackrabbit.oak.security.internal;
+
+import javax.annotation.Nonnull;
+
+import org.apache.jackrabbit.oak.spi.security.CompositeConfiguration;
+import org.apache.jackrabbit.oak.spi.security.ConfigurationBase;
+import org.apache.jackrabbit.oak.spi.security.SecurityConfiguration;
+import org.apache.jackrabbit.oak.spi.security.SecurityProvider;
+
+public class SecurityProviderHelper {
+
+    public static SecurityProvider updateConfig(@Nonnull SecurityProvider securityProvider,
+            @Nonnull SecurityConfiguration sc, @Nonnull Class<? extends SecurityConfiguration> cls) {
+
+        Object cc = securityProvider.getConfiguration(cls);
+        if (!(cc instanceof CompositeConfiguration)) {
+            throw new IllegalStateException();
+        } else {
+            CompositeConfiguration composite = (CompositeConfiguration) cc;
+            SecurityConfiguration defConfig = composite.getDefaultConfig();
+
+            if (sc instanceof ConfigurationBase) {
+                ConfigurationBase cb = (ConfigurationBase) sc;
+                cb.setSecurityProvider(securityProvider);
+                cb.setRootProvider(((ConfigurationBase) defConfig).getRootProvider());
+                cb.setTreeProvider(((ConfigurationBase) defConfig).getTreeProvider());
+            }
+            composite.addConfiguration(sc);
+            composite.addConfiguration(defConfig);
+        }
+        return securityProvider;
+    }
+
+}

Propchange: jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/internal/SecurityProviderHelper.java
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/internal/SecurityProviderRegistrationTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/internal/SecurityProviderRegistrationTest.java?rev=1826984&r1=1826983&r2=1826984&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/internal/SecurityProviderRegistrationTest.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/internal/SecurityProviderRegistrationTest.java Fri Mar 16 13:05:46 2018
@@ -163,7 +163,7 @@ public class SecurityProviderRegistratio
 
         SecurityProvider service = context.getService(SecurityProvider.class);
         assertNotNull(service);
-        assertEquals(3, Iterables.size(Iterables.filter(service.getConfigurations(), Predicates.notNull())));
+        assertEquals(6, Iterables.size(Iterables.filter(service.getConfigurations(), Predicates.notNull())));
     }
 
     @Test

Modified: jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/user/UserInitializerTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/user/UserInitializerTest.java?rev=1826984&r1=1826983&r2=1826984&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/user/UserInitializerTest.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/user/UserInitializerTest.java Fri Mar 16 13:05:46 2018
@@ -150,7 +150,7 @@ public class UserInitializerTest extends
         userParams.put(UserConstants.PARAM_OMIT_ADMIN_PW, true);
 
         ConfigurationParameters params = ConfigurationParameters.of(UserConfiguration.NAME, ConfigurationParameters.of(userParams));
-        SecurityProvider sp = new SecurityProviderBuilder().with(params).build();
+        SecurityProvider sp = SecurityProviderBuilder.newBuilder().with(params).build();
         final ContentRepository repo = new Oak().with(new InitialContent())
                 .with(new PropertyIndexEditorProvider())
                 .with(new PropertyIndexProvider())
@@ -201,7 +201,7 @@ public class UserInitializerTest extends
         userParams.put(UserConstants.PARAM_ANONYMOUS_ID, "");
 
         ConfigurationParameters params = ConfigurationParameters.of(UserConfiguration.NAME, ConfigurationParameters.of(userParams));
-        SecurityProvider sp = new SecurityProviderBuilder().with(params).build();
+        SecurityProvider sp = SecurityProviderBuilder.newBuilder().with(params).build();
         final ContentRepository repo = new Oak().with(new InitialContent())
                 .with(new PropertyIndexEditorProvider())
                 .with(new PropertyIndexProvider())

Modified: jackrabbit/oak/trunk/oak-it/src/test/java/org/apache/jackrabbit/oak/security/authorization/permission/ClusterPermissionsTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-it/src/test/java/org/apache/jackrabbit/oak/security/authorization/permission/ClusterPermissionsTest.java?rev=1826984&r1=1826983&r2=1826984&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-it/src/test/java/org/apache/jackrabbit/oak/security/authorization/permission/ClusterPermissionsTest.java (original)
+++ jackrabbit/oak/trunk/oak-it/src/test/java/org/apache/jackrabbit/oak/security/authorization/permission/ClusterPermissionsTest.java Fri Mar 16 13:05:46 2018
@@ -102,7 +102,7 @@ public class ClusterPermissionsTest {
                 .with(new PropertyIndexEditorProvider())
                 .with(new PropertyIndexProvider())
                 .with(new TypeEditorProvider())
-                .with(securityProvider1 = new SecurityProviderBuilder().with(getSecurityConfigParameters()).build());
+                .with(securityProvider1 = SecurityProviderBuilder.newBuilder().with(getSecurityConfigParameters()).build());
         contentRepository1 = oak.createContentRepository();
         adminSession1 = login1(getAdminCredentials());
         root1 = adminSession1.getLatestRoot();
@@ -119,7 +119,7 @@ public class ClusterPermissionsTest {
                 .with(new PropertyIndexEditorProvider())
                 .with(new PropertyIndexProvider())
                 .with(new TypeEditorProvider())
-                .with(securityProvider2 = new SecurityProviderBuilder().with(getSecurityConfigParameters()).build());
+                .with(securityProvider2 = SecurityProviderBuilder.newBuilder().with(getSecurityConfigParameters()).build());
 
         contentRepository2 = oak.createContentRepository();
         adminSession2 = login2(getAdminCredentials());

Modified: jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/security/authorization/ImportIgnoreTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/security/authorization/ImportIgnoreTest.java?rev=1826984&r1=1826983&r2=1826984&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/security/authorization/ImportIgnoreTest.java (original)
+++ jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/security/authorization/ImportIgnoreTest.java Fri Mar 16 13:05:46 2018
@@ -81,9 +81,9 @@ public class ImportIgnoreTest {
             params.put(ProtectedItemImporter.PARAM_IMPORT_BEHAVIOR, getImportBehavior());
             ConfigurationParameters config = ConfigurationParameters.of(AuthorizationConfiguration.NAME, ConfigurationParameters.of(params));
 
-            securityProvider = new SecurityProviderBuilder().with(config).build();
+            securityProvider = SecurityProviderBuilder.newBuilder().with(config).build();
         } else {
-            securityProvider = new SecurityProviderBuilder().build();
+            securityProvider = SecurityProviderBuilder.newBuilder().build();
         }
 
         QueryEngineSettings queryEngineSettings = new QueryEngineSettings();

Modified: jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/security/user/AbstractImportTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/security/user/AbstractImportTest.java?rev=1826984&r1=1826983&r2=1826984&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/security/user/AbstractImportTest.java (original)
+++ jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/security/user/AbstractImportTest.java Fri Mar 16 13:05:46 2018
@@ -74,9 +74,9 @@ public abstract class AbstractImportTest
     public void before() throws Exception {
         ConfigurationParameters config = getConfigurationParameters();
         if (config != null) {
-            securityProvider = new SecurityProviderBuilder().with(config).build();
+            securityProvider = SecurityProviderBuilder.newBuilder().with(config).build();
         } else {
-            securityProvider = new SecurityProviderBuilder().build();
+            securityProvider = SecurityProviderBuilder.newBuilder().build();
         }
         QueryEngineSettings queryEngineSettings = new QueryEngineSettings();
         queryEngineSettings.setFailTraversal(true);

Modified: jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/InitializerTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/InitializerTest.java?rev=1826984&r1=1826983&r2=1826984&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/InitializerTest.java (original)
+++ jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/InitializerTest.java Fri Mar 16 13:05:46 2018
@@ -47,7 +47,7 @@ public class InitializerTest {
         NodeBuilder builder = store.getRoot().builder();
         new InitialContent().initialize(builder);
 
-        SecurityProvider provider = new SecurityProviderBuilder().with(
+        SecurityProvider provider = SecurityProviderBuilder.newBuilder().with(
                 ConfigurationParameters.of(ImmutableMap.of(UserConfiguration.NAME,
                         ConfigurationParameters.of(ImmutableMap.of("anonymousId", "anonymous",
                                 "adminId", "admin",

Modified: jackrabbit/oak/trunk/oak-store-document/src/test/java/org/apache/jackrabbit/oak/plugins/document/InitializerTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-store-document/src/test/java/org/apache/jackrabbit/oak/plugins/document/InitializerTest.java?rev=1826984&r1=1826983&r2=1826984&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-store-document/src/test/java/org/apache/jackrabbit/oak/plugins/document/InitializerTest.java (original)
+++ jackrabbit/oak/trunk/oak-store-document/src/test/java/org/apache/jackrabbit/oak/plugins/document/InitializerTest.java Fri Mar 16 13:05:46 2018
@@ -35,7 +35,7 @@ public class InitializerTest extends Abs
         NodeBuilder builder = mk.getNodeStore().getRoot().builder();
         new InitialContent().initialize(builder);
 
-        SecurityProvider provider = new SecurityProviderBuilder().with(
+        SecurityProvider provider = SecurityProviderBuilder.newBuilder().with(
                 ConfigurationParameters.of(ImmutableMap.of(UserConfiguration.NAME,
                         ConfigurationParameters.of(ImmutableMap.of("anonymousId", "anonymous",
                                 "adminId", "admin",
@@ -54,7 +54,7 @@ public class InitializerTest extends Abs
         new InitialContent().initialize(builder);
         mk.getNodeStore().merge(builder, EmptyHook.INSTANCE, CommitInfo.EMPTY);
 
-        SecurityProvider provider = new SecurityProviderBuilder().with(
+        SecurityProvider provider = SecurityProviderBuilder.newBuilder().with(
                 ConfigurationParameters.of(ImmutableMap.of(UserConfiguration.NAME,
                         ConfigurationParameters.of(ImmutableMap.of("anonymousId", "anonymous",
                                 "adminId", "admin",