Author: angela
Date: Wed Dec 13 17:30:38 2017
New Revision: 1818045

URL: http://svn.apache.org/viewvc?rev=1818045&view=rev
Log:
OAK-7017 : Replace usage in oak-core

Modified:
    
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/authentication/token/TokenValidatorProvider.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/authorization/accesscontrol/AccessControlValidator.java
    
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/accesscontrol/AccessControlValidatorProvider.java
    
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/composite/CompositeAuthorizationConfiguration.java
    
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/composite/CompositePermissionProvider.java
    
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/permission/MountPermissionProvider.java
    
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/permission/MoveAwarePermissionValidator.java
    
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/permission/PermissionHook.java
    
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/permission/PermissionProviderImpl.java
    
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/permission/PermissionStoreEditor.java
    
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/permission/PermissionValidator.java
    
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/permission/PermissionValidatorProvider.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/privilege/PrivilegeInitializer.java
    
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/privilege/PrivilegeValidatorProvider.java
    
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/CacheValidatorProvider.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/security/user/UserValidatorProvider.java
    
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authentication/token/TokenConfigurationImplTest.java
    
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authorization/accesscontrol/AccessControlValidatorTest.java
    
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authorization/composite/AbstractCompositeProviderTest.java
    
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authorization/composite/CompositeAuthorizationConfigurationTest.java
    
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authorization/composite/CompositeProviderCustomMixTest.java
    
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authorization/composite/CompositeTreePermissionTest.java
    
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/privilege/PrivilegeConfigurationImplTest.java
    
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/user/UserConfigurationImplTest.java
    
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/user/UserValidatorTest.java

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=1818045&r1=1818044&r2=1818045&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
 Wed Dec 13 17:30:38 2017
@@ -21,13 +21,11 @@ import java.util.List;
 import java.util.Map;
 import java.util.Set;
 import java.util.concurrent.ConcurrentHashMap;
-
 import javax.annotation.Nonnull;
 
 import com.google.common.collect.ImmutableList;
 import com.google.common.collect.ImmutableMap;
 import com.google.common.collect.ImmutableSet;
-
 import org.apache.jackrabbit.oak.api.Root;
 import org.apache.jackrabbit.oak.spi.commit.MoveTracker;
 import org.apache.jackrabbit.oak.spi.commit.ValidatorProvider;
@@ -112,7 +110,7 @@ public class TokenConfigurationImpl exte
         super();
     }
 
-    public TokenConfigurationImpl(SecurityProvider securityProvider) {
+    public TokenConfigurationImpl(@Nonnull SecurityProvider securityProvider) {
         super(securityProvider, securityProvider.getParameters(NAME));
     }
 
@@ -147,7 +145,7 @@ public class TokenConfigurationImpl exte
     @Nonnull
     @Override
     public List<? extends ValidatorProvider> getValidators(@Nonnull String 
workspaceName, @Nonnull Set<Principal> principals, @Nonnull MoveTracker 
moveTracker) {
-        ValidatorProvider vp = new 
TokenValidatorProvider(getSecurityProvider().getParameters(UserConfiguration.NAME));
+        ValidatorProvider vp = new 
TokenValidatorProvider(getSecurityProvider().getParameters(UserConfiguration.NAME),
 getTreeProvider());
         return ImmutableList.of(vp);
     }
 

Modified: 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authentication/token/TokenValidatorProvider.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authentication/token/TokenValidatorProvider.java?rev=1818045&r1=1818044&r2=1818045&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authentication/token/TokenValidatorProvider.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authentication/token/TokenValidatorProvider.java
 Wed Dec 13 17:30:38 2017
@@ -25,7 +25,8 @@ import org.apache.jackrabbit.oak.api.Com
 import org.apache.jackrabbit.oak.api.PropertyState;
 import org.apache.jackrabbit.oak.api.Tree;
 import org.apache.jackrabbit.oak.api.Type;
-import org.apache.jackrabbit.oak.plugins.tree.factories.TreeFactory;
+import org.apache.jackrabbit.oak.plugins.tree.TreeProvider;
+import org.apache.jackrabbit.oak.plugins.tree.TreeUtil;
 import org.apache.jackrabbit.oak.spi.commit.CommitInfo;
 import org.apache.jackrabbit.oak.spi.commit.DefaultValidator;
 import org.apache.jackrabbit.oak.spi.commit.Validator;
@@ -36,7 +37,6 @@ import org.apache.jackrabbit.oak.spi.sec
 import org.apache.jackrabbit.oak.spi.security.user.UserConstants;
 import org.apache.jackrabbit.oak.spi.security.user.util.PasswordUtil;
 import org.apache.jackrabbit.oak.spi.state.NodeState;
-import org.apache.jackrabbit.oak.plugins.tree.TreeUtil;
 import org.apache.jackrabbit.util.Text;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -49,8 +49,11 @@ class TokenValidatorProvider extends Val
 
     private final String userRootPath;
 
-    TokenValidatorProvider(@Nonnull ConfigurationParameters userConfig) {
+    private final TreeProvider treeProvider;
+
+    TokenValidatorProvider(@Nonnull ConfigurationParameters userConfig, 
@Nonnull TreeProvider treeProvider) {
         userRootPath = 
userConfig.getConfigValue(UserConstants.PARAM_USER_PATH, 
UserConstants.DEFAULT_USER_PATH);
+        this.treeProvider = treeProvider;
     }
 
     @Override
@@ -69,7 +72,7 @@ class TokenValidatorProvider extends Val
         private final CommitInfo commitInfo;
 
         TokenValidator(@Nonnull NodeState parentBefore, @Nonnull NodeState 
parentAfter, @Nonnull CommitInfo commitInfo) {
-            this(TreeFactory.createReadOnlyTree(parentBefore), 
TreeFactory.createReadOnlyTree(parentAfter), commitInfo);
+            this(treeProvider.createReadOnlyTree(parentBefore), 
treeProvider.createReadOnlyTree(parentAfter), commitInfo);
         }
 
         private TokenValidator(@Nullable Tree parentBefore, @Nonnull Tree 
parentAfter, @Nonnull CommitInfo commitInfo) {

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=1818045&r1=1818044&r2=1818045&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
 Wed Dec 13 17:30:38 2017
@@ -16,20 +16,16 @@
  */
 package org.apache.jackrabbit.oak.security.authorization;
 
-import static 
org.apache.jackrabbit.oak.spi.security.RegistrationConstants.OAK_SECURITY_NAME;
-
 import java.security.Principal;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
-
 import javax.annotation.Nonnull;
 import javax.jcr.security.AccessControlManager;
 
+import com.google.common.collect.ImmutableList;
 import org.apache.jackrabbit.oak.api.Root;
 import org.apache.jackrabbit.oak.namepath.NamePathMapper;
-import org.apache.jackrabbit.oak.spi.namespace.NamespaceConstants;
-import org.apache.jackrabbit.oak.spi.nodetype.NodeTypeConstants;
 import org.apache.jackrabbit.oak.plugins.version.VersionablePathHook;
 import 
org.apache.jackrabbit.oak.security.authorization.accesscontrol.AccessControlImporter;
 import 
org.apache.jackrabbit.oak.security.authorization.accesscontrol.AccessControlManagerImpl;
@@ -46,6 +42,8 @@ import org.apache.jackrabbit.oak.spi.com
 import org.apache.jackrabbit.oak.spi.lifecycle.WorkspaceInitializer;
 import org.apache.jackrabbit.oak.spi.mount.MountInfoProvider;
 import org.apache.jackrabbit.oak.spi.mount.Mounts;
+import org.apache.jackrabbit.oak.spi.namespace.NamespaceConstants;
+import org.apache.jackrabbit.oak.spi.nodetype.NodeTypeConstants;
 import org.apache.jackrabbit.oak.spi.security.ConfigurationBase;
 import org.apache.jackrabbit.oak.spi.security.ConfigurationParameters;
 import org.apache.jackrabbit.oak.spi.security.Context;
@@ -58,8 +56,6 @@ import org.apache.jackrabbit.oak.spi.sec
 import org.apache.jackrabbit.oak.spi.security.privilege.PrivilegeConstants;
 import org.apache.jackrabbit.oak.spi.xml.ImportBehavior;
 import org.apache.jackrabbit.oak.spi.xml.ProtectedItemImporter;
-
-import com.google.common.collect.ImmutableList;
 import org.osgi.service.component.annotations.Activate;
 import org.osgi.service.component.annotations.Component;
 import org.osgi.service.component.annotations.Reference;
@@ -68,6 +64,8 @@ import org.osgi.service.metatype.annotat
 import org.osgi.service.metatype.annotations.ObjectClassDefinition;
 import org.osgi.service.metatype.annotations.Option;
 
+import static 
org.apache.jackrabbit.oak.spi.security.RegistrationConstants.OAK_SECURITY_NAME;
+
 /**
  * Default implementation of the {@code AccessControlConfiguration}.
  */
@@ -125,6 +123,10 @@ public class AuthorizationConfigurationI
         super();
     }
 
+    public AuthorizationConfigurationImpl(@Nonnull SecurityProvider 
securityProvider) {
+        super(securityProvider, securityProvider.getParameters(NAME));
+    }
+
     @SuppressWarnings("UnusedDeclaration")
     @Activate
     // reference to @Configuration class needed for correct DS xml generation
@@ -132,10 +134,6 @@ public class AuthorizationConfigurationI
         setParameters(ConfigurationParameters.of(properties));
     }
 
-    public AuthorizationConfigurationImpl(SecurityProvider securityProvider) {
-        super(securityProvider, securityProvider.getParameters(NAME));
-    }
-
     //----------------------------------------------< SecurityConfiguration 
>---
     @Nonnull
     @Override
@@ -160,7 +158,7 @@ public class AuthorizationConfigurationI
     public List<? extends CommitHook> getCommitHooks(@Nonnull String 
workspaceName) {
         return ImmutableList.of(
                 new VersionablePathHook(workspaceName),
-                new PermissionHook(workspaceName, getRestrictionProvider(), 
mountInfoProvider));
+                new PermissionHook(workspaceName, getRestrictionProvider(), 
mountInfoProvider, getRootProvider(), getTreeProvider()));
     }
 
     @Nonnull
@@ -168,8 +166,8 @@ public class AuthorizationConfigurationI
     public List<ValidatorProvider> getValidators(@Nonnull String 
workspaceName, @Nonnull Set<Principal> principals, @Nonnull MoveTracker 
moveTracker) {
         return ImmutableList.of(
                 new PermissionStoreValidatorProvider(),
-                new PermissionValidatorProvider(getSecurityProvider(), 
workspaceName, principals, moveTracker),
-                new AccessControlValidatorProvider(getSecurityProvider()));
+                new PermissionValidatorProvider(getSecurityProvider(), 
workspaceName, principals, moveTracker, getRootProvider(), getTreeProvider()),
+                new AccessControlValidatorProvider(getSecurityProvider(), 
getRootProvider(), getTreeProvider()));
     }
 
     @Nonnull
@@ -204,10 +202,10 @@ public class AuthorizationConfigurationI
 
         if (mountInfoProvider.hasNonDefaultMounts()) {
             return new MountPermissionProvider(root, workspaceName, 
principals, getRestrictionProvider(),
-                    getParameters(), ctx, mountInfoProvider);
+                    getParameters(), ctx, mountInfoProvider, 
getRootProvider());
         } else {
             return new PermissionProviderImpl(root, workspaceName, principals, 
getRestrictionProvider(),
-                    getParameters(), ctx);
+                    getParameters(), ctx, getRootProvider());
         }
     }
 

Modified: 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/accesscontrol/AccessControlValidator.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/accesscontrol/AccessControlValidator.java?rev=1818045&r1=1818044&r2=1818045&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/accesscontrol/AccessControlValidator.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/accesscontrol/AccessControlValidator.java
 Wed Dec 13 17:30:38 2017
@@ -19,7 +19,6 @@ package org.apache.jackrabbit.oak.securi
 import java.util.Collection;
 import java.util.Collections;
 import java.util.Set;
-
 import javax.annotation.Nonnull;
 import javax.jcr.RepositoryException;
 import javax.jcr.security.AccessControlException;
@@ -28,7 +27,6 @@ import javax.jcr.security.Privilege;
 import com.google.common.base.Objects;
 import com.google.common.collect.Iterables;
 import com.google.common.collect.Sets;
-
 import org.apache.jackrabbit.JcrConstants;
 import org.apache.jackrabbit.api.security.authorization.PrivilegeManager;
 import org.apache.jackrabbit.oak.api.CommitFailedException;
@@ -36,9 +34,10 @@ import org.apache.jackrabbit.oak.api.Pro
 import org.apache.jackrabbit.oak.api.Tree;
 import org.apache.jackrabbit.oak.api.Type;
 import org.apache.jackrabbit.oak.plugins.nodetype.TypePredicate;
-import org.apache.jackrabbit.oak.plugins.tree.factories.TreeFactory;
-import org.apache.jackrabbit.oak.plugins.tree.impl.AbstractTree;
 import org.apache.jackrabbit.oak.plugins.tree.TreeConstants;
+import org.apache.jackrabbit.oak.plugins.tree.TreeProvider;
+import org.apache.jackrabbit.oak.plugins.tree.TreeUtil;
+import org.apache.jackrabbit.oak.plugins.tree.impl.AbstractTree;
 import org.apache.jackrabbit.oak.spi.commit.DefaultValidator;
 import org.apache.jackrabbit.oak.spi.commit.Validator;
 import org.apache.jackrabbit.oak.spi.commit.VisibleValidator;
@@ -48,7 +47,6 @@ import org.apache.jackrabbit.oak.spi.sec
 import org.apache.jackrabbit.oak.spi.security.privilege.PrivilegeBits;
 import org.apache.jackrabbit.oak.spi.security.privilege.PrivilegeBitsProvider;
 import org.apache.jackrabbit.oak.spi.state.NodeState;
-import org.apache.jackrabbit.oak.plugins.tree.TreeUtil;
 import org.apache.jackrabbit.util.Text;
 
 import static com.google.common.base.Preconditions.checkNotNull;
@@ -70,11 +68,12 @@ class AccessControlValidator extends Def
     private final TypePredicate isRepoAccessControllable;
     private final TypePredicate isAccessControllable;
 
-    AccessControlValidator(NodeState parentAfter,
-                           PrivilegeManager privilegeManager,
-                           PrivilegeBitsProvider privilegeBitsProvider,
-                           RestrictionProvider restrictionProvider) {
-        this.parentAfter = TreeFactory.createReadOnlyTree(parentAfter);
+    AccessControlValidator(@Nonnull NodeState parentAfter,
+                           @Nonnull PrivilegeManager privilegeManager,
+                           @Nonnull PrivilegeBitsProvider 
privilegeBitsProvider,
+                           @Nonnull RestrictionProvider restrictionProvider,
+                           @Nonnull TreeProvider treeProvider) {
+        this.parentAfter = treeProvider.createReadOnlyTree(parentAfter);
         this.privilegeBitsProvider = privilegeBitsProvider;
         this.privilegeManager = privilegeManager;
         this.restrictionProvider = restrictionProvider;

Modified: 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/accesscontrol/AccessControlValidatorProvider.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/accesscontrol/AccessControlValidatorProvider.java?rev=1818045&r1=1818044&r2=1818045&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/accesscontrol/AccessControlValidatorProvider.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/accesscontrol/AccessControlValidatorProvider.java
 Wed Dec 13 17:30:38 2017
@@ -20,8 +20,9 @@ import javax.annotation.Nonnull;
 
 import org.apache.jackrabbit.api.security.authorization.PrivilegeManager;
 import org.apache.jackrabbit.oak.api.Root;
-import org.apache.jackrabbit.oak.plugins.tree.factories.RootFactory;
+import org.apache.jackrabbit.oak.plugins.tree.RootProvider;
 import org.apache.jackrabbit.oak.namepath.NamePathMapper;
+import org.apache.jackrabbit.oak.plugins.tree.TreeProvider;
 import org.apache.jackrabbit.oak.spi.commit.CommitInfo;
 import org.apache.jackrabbit.oak.spi.commit.Validator;
 import org.apache.jackrabbit.oak.spi.commit.ValidatorProvider;
@@ -41,9 +42,13 @@ import org.apache.jackrabbit.oak.spi.sta
 public class AccessControlValidatorProvider extends ValidatorProvider {
 
     private final SecurityProvider securityProvider;
+    private final RootProvider rootProvider;
+    private final TreeProvider treeProvider;
 
-    public AccessControlValidatorProvider(@Nonnull SecurityProvider 
securityProvider) {
+    public AccessControlValidatorProvider(@Nonnull SecurityProvider 
securityProvider, @Nonnull RootProvider rootProvider, @Nonnull TreeProvider 
treeProvider) {
         this.securityProvider = securityProvider;
+        this.rootProvider = rootProvider;
+        this.treeProvider = treeProvider;
     }
 
     //--------------------------------------------------< ValidatorProvider 
>---
@@ -53,11 +58,11 @@ public class AccessControlValidatorProvi
 
         RestrictionProvider restrictionProvider = 
getConfig(AuthorizationConfiguration.class).getRestrictionProvider();
 
-        Root root = RootFactory.createReadOnlyRoot(before);
+        Root root = rootProvider.createReadOnlyRoot(before);
         PrivilegeManager privilegeManager = 
getConfig(PrivilegeConfiguration.class).getPrivilegeManager(root, 
NamePathMapper.DEFAULT);
         PrivilegeBitsProvider privilegeBitsProvider = new 
PrivilegeBitsProvider(root);
 
-        return new AccessControlValidator(after, privilegeManager, 
privilegeBitsProvider, restrictionProvider);
+        return new AccessControlValidator(after, privilegeManager, 
privilegeBitsProvider, restrictionProvider, treeProvider);
     }
 
     private <T> T getConfig(Class<T> configClass) {

Modified: 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/composite/CompositeAuthorizationConfiguration.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/composite/CompositeAuthorizationConfiguration.java?rev=1818045&r1=1818044&r2=1818045&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/composite/CompositeAuthorizationConfiguration.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/composite/CompositeAuthorizationConfiguration.java
 Wed Dec 13 17:30:38 2017
@@ -24,7 +24,6 @@ import javax.annotation.Nonnull;
 import javax.annotation.Nullable;
 import javax.jcr.security.AccessControlManager;
 
-import com.google.common.base.Function;
 import com.google.common.collect.Lists;
 import org.apache.jackrabbit.oak.api.Root;
 import org.apache.jackrabbit.oak.namepath.NamePathMapper;
@@ -133,12 +132,7 @@ public class CompositeAuthorizationConfi
             case 0: throw new IllegalStateException();
             case 1: return configurations.get(0).getAccessControlManager(root, 
namePathMapper);
             default:
-                List<AccessControlManager> mgrs = 
Lists.transform(configurations, new Function<AuthorizationConfiguration, 
AccessControlManager>() {
-                    @Override
-                    public AccessControlManager 
apply(AuthorizationConfiguration authorizationConfiguration) {
-                        return 
authorizationConfiguration.getAccessControlManager(root, namePathMapper);
-                    }
-                });
+                List<AccessControlManager> mgrs = 
Lists.transform(configurations, authorizationConfiguration -> 
authorizationConfiguration.getAccessControlManager(root, namePathMapper));
                 return new CompositeAccessControlManager(root, namePathMapper, 
getSecurityProvider(), mgrs);
 
         }
@@ -191,7 +185,7 @@ public class CompositeAuthorizationConfi
                         pp = aggrPermissionProviders.get(0);
                         break;
                     default :
-                        pp = new CompositePermissionProvider(root, 
aggrPermissionProviders, getContext(), compositionType);
+                        pp = new CompositePermissionProvider(root, 
aggrPermissionProviders, getContext(), compositionType, getRootProvider());
                 }
                 return pp;
         }

Modified: 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/composite/CompositePermissionProvider.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/composite/CompositePermissionProvider.java?rev=1818045&r1=1818044&r2=1818045&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/composite/CompositePermissionProvider.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/composite/CompositePermissionProvider.java
 Wed Dec 13 17:30:38 2017
@@ -16,19 +16,16 @@
  */
 package org.apache.jackrabbit.oak.security.authorization.composite;
 
-import static 
org.apache.jackrabbit.oak.security.authorization.composite.CompositeAuthorizationConfiguration.CompositionType.AND;
-
 import java.util.List;
 import java.util.Set;
 import java.util.function.Function;
-
 import javax.annotation.Nonnull;
 import javax.annotation.Nullable;
 
 import org.apache.jackrabbit.oak.api.PropertyState;
 import org.apache.jackrabbit.oak.api.Root;
 import org.apache.jackrabbit.oak.api.Tree;
-import org.apache.jackrabbit.oak.plugins.tree.factories.RootFactory;
+import org.apache.jackrabbit.oak.plugins.tree.RootProvider;
 import org.apache.jackrabbit.oak.plugins.tree.TreeLocation;
 import org.apache.jackrabbit.oak.plugins.tree.TreeType;
 import org.apache.jackrabbit.oak.plugins.tree.TreeTypeProvider;
@@ -44,6 +41,8 @@ import org.apache.jackrabbit.oak.spi.sec
 import org.apache.jackrabbit.oak.spi.security.privilege.PrivilegeBits;
 import org.apache.jackrabbit.oak.spi.security.privilege.PrivilegeBitsProvider;
 
+import static 
org.apache.jackrabbit.oak.security.authorization.composite.CompositeAuthorizationConfiguration.CompositionType.AND;
+
 /**
  * Permission provider implementation that aggregates a list of different
  * provider implementations. Note, that the aggregated provider implementations
@@ -57,6 +56,7 @@ class CompositePermissionProvider implem
     private final AggregatedPermissionProvider[] pps;
     private final Context ctx;
     private final CompositionType compositionType;
+    private final RootProvider rootProvider;
 
     private final RepositoryPermission repositoryPermission;
 
@@ -65,14 +65,16 @@ class CompositePermissionProvider implem
     private TreeTypeProvider typeProvider;
 
     CompositePermissionProvider(@Nonnull Root root, @Nonnull 
List<AggregatedPermissionProvider> pps,
-            @Nonnull Context acContext, @Nonnull CompositionType 
compositionType) {
+                                @Nonnull Context acContext, @Nonnull 
CompositionType compositionType,
+                                @Nonnull RootProvider rootProvider) {
         this.root = root;
         this.pps = pps.toArray(new AggregatedPermissionProvider[pps.size()]);
         this.ctx = acContext;
         this.compositionType = compositionType;
+        this.rootProvider = rootProvider;
 
         repositoryPermission = new CompositeRepositoryPermission(this.pps, 
this.compositionType);
-        immutableRoot = RootFactory.createReadOnlyRoot(root);
+        immutableRoot = rootProvider.createReadOnlyRoot(root);
         privilegeBitsProvider = new PrivilegeBitsProvider(immutableRoot);
         typeProvider = new TreeTypeProvider(ctx);
     }
@@ -80,7 +82,7 @@ class CompositePermissionProvider implem
     //-------------------------------------------------< PermissionProvider 
>---
     @Override
     public void refresh() {
-        immutableRoot = RootFactory.createReadOnlyRoot(root);
+        immutableRoot = rootProvider.createReadOnlyRoot(root);
         privilegeBitsProvider = new PrivilegeBitsProvider(immutableRoot);
 
         for (PermissionProvider pp : pps) {

Modified: 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/permission/MountPermissionProvider.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/permission/MountPermissionProvider.java?rev=1818045&r1=1818044&r2=1818045&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/permission/MountPermissionProvider.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/permission/MountPermissionProvider.java
 Wed Dec 13 17:30:38 2017
@@ -26,6 +26,7 @@ import java.util.Set;
 import javax.annotation.Nonnull;
 
 import org.apache.jackrabbit.oak.api.Root;
+import org.apache.jackrabbit.oak.plugins.tree.RootProvider;
 import org.apache.jackrabbit.oak.spi.mount.Mount;
 import org.apache.jackrabbit.oak.spi.mount.MountInfoProvider;
 import org.apache.jackrabbit.oak.spi.security.ConfigurationParameters;
@@ -48,9 +49,11 @@ public class MountPermissionProvider ext
     private final MountInfoProvider mountInfoProvider;
 
     public MountPermissionProvider(@Nonnull Root root, @Nonnull String 
workspaceName,
-            @Nonnull Set<Principal> principals, @Nonnull RestrictionProvider 
restrictionProvider,
-            @Nonnull ConfigurationParameters options, @Nonnull Context ctx, 
MountInfoProvider mountInfoProvider) {
-        super(root, workspaceName, principals, restrictionProvider, options, 
ctx);
+                                   @Nonnull Set<Principal> principals, 
@Nonnull RestrictionProvider restrictionProvider,
+                                   @Nonnull ConfigurationParameters options, 
@Nonnull Context ctx,
+                                   @Nonnull MountInfoProvider 
mountInfoProvider,
+                                   @Nonnull RootProvider rootProvider) {
+        super(root, workspaceName, principals, restrictionProvider, options, 
ctx, rootProvider);
         this.mountInfoProvider = mountInfoProvider;
     }
 

Modified: 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/permission/MoveAwarePermissionValidator.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/permission/MoveAwarePermissionValidator.java?rev=1818045&r1=1818044&r2=1818045&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/permission/MoveAwarePermissionValidator.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/permission/MoveAwarePermissionValidator.java
 Wed Dec 13 17:30:38 2017
@@ -24,7 +24,6 @@ import org.apache.jackrabbit.oak.api.Com
 import org.apache.jackrabbit.oak.api.Root;
 import org.apache.jackrabbit.oak.api.Tree;
 import org.apache.jackrabbit.oak.commons.PathUtils;
-import org.apache.jackrabbit.oak.plugins.tree.factories.RootFactory;
 import org.apache.jackrabbit.oak.plugins.tree.impl.ImmutableTree;
 import org.apache.jackrabbit.oak.spi.commit.EditorDiff;
 import org.apache.jackrabbit.oak.spi.commit.MoveTracker;
@@ -47,7 +46,7 @@ public class MoveAwarePermissionValidato
                                  @Nonnull PermissionValidatorProvider provider,
                                  @Nonnull MoveTracker moveTracker) {
         super(rootBefore, rootAfter, permissionProvider, provider);
-        moveCtx = new MoveContext(moveTracker, rootBefore, rootAfter);
+        moveCtx = new MoveContext(moveTracker, 
provider.createReadOnlyRoot(rootBefore), 
provider.createReadOnlyRoot(rootAfter));
     }
 
     private MoveAwarePermissionValidator(@Nullable Tree parentBefore,
@@ -115,11 +114,11 @@ public class MoveAwarePermissionValidato
         private final Root rootAfter;
 
         private MoveContext(@Nonnull MoveTracker moveTracker,
-                            @Nonnull NodeState before,
-                            @Nonnull NodeState after) {
+                            @Nonnull Root before,
+                            @Nonnull Root after) {
             this.moveTracker = moveTracker;
-            rootBefore = RootFactory.createReadOnlyRoot(before);
-            rootAfter = RootFactory.createReadOnlyRoot(after);
+            rootBefore = before;
+            rootAfter = after;
         }
 
         private boolean containsMove(@Nullable Tree parentBefore, @Nullable 
Tree parentAfter) {

Modified: 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/permission/PermissionHook.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/permission/PermissionHook.java?rev=1818045&r1=1818044&r2=1818045&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/permission/PermissionHook.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/permission/PermissionHook.java
 Wed Dec 13 17:30:38 2017
@@ -22,7 +22,8 @@ import javax.annotation.Nonnull;
 
 import org.apache.jackrabbit.oak.api.CommitFailedException;
 import org.apache.jackrabbit.oak.plugins.nodetype.TypePredicate;
-import org.apache.jackrabbit.oak.plugins.tree.factories.RootFactory;
+import org.apache.jackrabbit.oak.plugins.tree.RootProvider;
+import org.apache.jackrabbit.oak.plugins.tree.TreeProvider;
 import org.apache.jackrabbit.oak.spi.commit.CommitInfo;
 import org.apache.jackrabbit.oak.spi.commit.PostValidationHook;
 import org.apache.jackrabbit.oak.spi.mount.Mount;
@@ -67,6 +68,8 @@ public class PermissionHook implements P
     private final RestrictionProvider restrictionProvider;
     private final String workspaceName;
     private final MountInfoProvider mountInfoProvider;
+    private final RootProvider rootProvider;
+    private final TreeProvider treeProvider;
 
     private NodeBuilder permissionStore;
     private PrivilegeBitsProvider bitsProvider;
@@ -78,10 +81,14 @@ public class PermissionHook implements P
     private Map<String, PermissionStoreEditor> modified = new HashMap<String, 
PermissionStoreEditor>();
     private Map<String, PermissionStoreEditor> deleted = new HashMap<String, 
PermissionStoreEditor>();
 
-    public PermissionHook(String workspaceName, RestrictionProvider 
restrictionProvider, MountInfoProvider mountInfoProvider) {
+    public PermissionHook(@Nonnull String workspaceName, @Nonnull 
RestrictionProvider restrictionProvider,
+                          @Nonnull MountInfoProvider mountInfoProvider, 
@Nonnull RootProvider rootProvider,
+                          @Nonnull TreeProvider treeProvider) {
         this.workspaceName = workspaceName;
         this.restrictionProvider = restrictionProvider;
         this.mountInfoProvider = mountInfoProvider;
+        this.rootProvider = rootProvider;
+        this.treeProvider = treeProvider;
     }
 
     //---------------------------------------------------------< CommitHook 
>---
@@ -93,7 +100,7 @@ public class PermissionHook implements P
         NodeBuilder rootAfter = after.builder();
 
         permissionStore = getPermissionStore(rootAfter);
-        bitsProvider = new 
PrivilegeBitsProvider(RootFactory.createReadOnlyRoot(after));
+        bitsProvider = new 
PrivilegeBitsProvider(rootProvider.createReadOnlyRoot(after));
 
         isACL = new TypePredicate(after, NT_REP_ACL);
         isACE = new TypePredicate(after, NT_REP_ACE);
@@ -209,7 +216,7 @@ public class PermissionHook implements P
         }
 
         private PermissionStoreEditor createPermissionStoreEditor(@Nonnull 
String nodeName, @Nonnull NodeState nodeState) {
-            return new PermissionStoreEditor(parentPath, nodeName, nodeState, 
getPermissionRoot(parentPath), isACE, isGrantACE, bitsProvider, 
restrictionProvider);
+            return new PermissionStoreEditor(parentPath, nodeName, nodeState, 
getPermissionRoot(parentPath), isACE, isGrantACE, bitsProvider, 
restrictionProvider, treeProvider);
         }
     }
 }

Modified: 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/permission/PermissionProviderImpl.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/permission/PermissionProviderImpl.java?rev=1818045&r1=1818044&r2=1818045&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/permission/PermissionProviderImpl.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/permission/PermissionProviderImpl.java
 Wed Dec 13 17:30:38 2017
@@ -24,7 +24,7 @@ import javax.annotation.Nullable;
 import org.apache.jackrabbit.oak.api.PropertyState;
 import org.apache.jackrabbit.oak.api.Root;
 import org.apache.jackrabbit.oak.api.Tree;
-import org.apache.jackrabbit.oak.plugins.tree.factories.RootFactory;
+import org.apache.jackrabbit.oak.plugins.tree.RootProvider;
 import org.apache.jackrabbit.oak.plugins.tree.TreeLocation;
 import org.apache.jackrabbit.oak.plugins.tree.TreeType;
 import org.apache.jackrabbit.oak.spi.version.VersionConstants;
@@ -56,6 +56,8 @@ public class PermissionProviderImpl impl
 
     private final Context ctx;
 
+    private final RootProvider rootProvider;
+
     private CompiledPermissions compiledPermissions;
 
     private Root immutableRoot;
@@ -65,20 +67,22 @@ public class PermissionProviderImpl impl
                                   @Nonnull Set<Principal> principals,
                                   @Nonnull RestrictionProvider 
restrictionProvider,
                                   @Nonnull ConfigurationParameters options,
-                                  @Nonnull Context ctx) {
+                                  @Nonnull Context ctx,
+                                  @Nonnull RootProvider rootProvider) {
         this.root = root;
         this.workspaceName = workspaceName;
         this.principals = principals;
         this.restrictionProvider = restrictionProvider;
         this.options = options;
         this.ctx = ctx;
+        this.rootProvider = rootProvider;
 
-        immutableRoot = RootFactory.createReadOnlyRoot(root);
+        immutableRoot = rootProvider.createReadOnlyRoot(root);
     }
 
     @Override
     public void refresh() {
-        immutableRoot = RootFactory.createReadOnlyRoot(root);
+        immutableRoot = rootProvider.createReadOnlyRoot(root);
         getCompiledPermissions().refresh(immutableRoot, workspaceName);
     }
 

Modified: 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/permission/PermissionStoreEditor.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/permission/PermissionStoreEditor.java?rev=1818045&r1=1818044&r2=1818045&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/permission/PermissionStoreEditor.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/permission/PermissionStoreEditor.java
 Wed Dec 13 17:30:38 2017
@@ -30,7 +30,7 @@ import org.apache.jackrabbit.oak.api.Pro
 import org.apache.jackrabbit.oak.api.Type;
 import org.apache.jackrabbit.oak.plugins.memory.PropertyStates;
 import org.apache.jackrabbit.oak.plugins.nodetype.TypePredicate;
-import org.apache.jackrabbit.oak.plugins.tree.factories.TreeFactory;
+import org.apache.jackrabbit.oak.plugins.tree.TreeProvider;
 import 
org.apache.jackrabbit.oak.spi.security.authorization.accesscontrol.AccessControlConstants;
 import 
org.apache.jackrabbit.oak.spi.security.authorization.permission.PermissionConstants;
 import 
org.apache.jackrabbit.oak.spi.security.authorization.restriction.Restriction;
@@ -62,7 +62,8 @@ final class PermissionStoreEditor implem
                           @Nonnull NodeState node, @Nonnull NodeBuilder 
permissionRoot,
                           @Nonnull TypePredicate isACE, @Nonnull TypePredicate 
isGrantACE,
                           @Nonnull PrivilegeBitsProvider bitsProvider,
-                          @Nonnull RestrictionProvider restrictionProvider) {
+                          @Nonnull RestrictionProvider restrictionProvider,
+                          @Nonnull TreeProvider treeProvider) {
         this.permissionRoot = permissionRoot;
         if (name.equals(REP_REPO_POLICY)) {
             accessControlledPath = "";
@@ -84,7 +85,7 @@ final class PermissionStoreEditor implem
             if (isACE.apply(ace)) {
                 boolean isAllow = isGrantACE.apply(ace);
                 PrivilegeBits privilegeBits = 
bitsProvider.getBits(ace.getNames(REP_PRIVILEGES));
-                Set<Restriction> restrictions = 
restrictionProvider.readRestrictions(Strings.emptyToNull(accessControlledPath), 
TreeFactory.createReadOnlyTree(ace));
+                Set<Restriction> restrictions = 
restrictionProvider.readRestrictions(Strings.emptyToNull(accessControlledPath), 
treeProvider.createReadOnlyTree(ace));
 
                 AcEntry entry = (privilegeBits.equals(jcrAll)) ?
                         new JcrAllAcEntry(ace, accessControlledPath, index, 
isAllow, privilegeBits, restrictions) :

Modified: 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/permission/PermissionValidator.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/permission/PermissionValidator.java?rev=1818045&r1=1818044&r2=1818045&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/permission/PermissionValidator.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/permission/PermissionValidator.java
 Wed Dec 13 17:30:38 2017
@@ -25,7 +25,6 @@ import org.apache.jackrabbit.oak.api.Com
 import org.apache.jackrabbit.oak.api.PropertyState;
 import org.apache.jackrabbit.oak.api.Tree;
 import org.apache.jackrabbit.oak.plugins.index.IndexConstants;
-import org.apache.jackrabbit.oak.plugins.tree.factories.TreeFactory;
 import org.apache.jackrabbit.oak.plugins.tree.impl.ImmutableTree;
 import org.apache.jackrabbit.oak.plugins.lock.LockConstants;
 import org.apache.jackrabbit.oak.plugins.nodetype.TypePredicate;
@@ -69,8 +68,8 @@ class PermissionValidator extends Defaul
                         @Nonnull NodeState rootAfter,
                         @Nonnull PermissionProvider permissionProvider,
                         @Nonnull PermissionValidatorProvider provider) {
-        this.parentBefore = TreeFactory.createReadOnlyTree(rootBefore);
-        this.parentAfter = TreeFactory.createReadOnlyTree(rootAfter);
+        this.parentBefore = provider.createReadOnlyTree(rootBefore);
+        this.parentAfter = provider.createReadOnlyTree(rootAfter);
         this.parentPermission = 
permissionProvider.getTreePermission(parentBefore, TreePermission.EMPTY);
 
         this.permissionProvider = permissionProvider;

Modified: 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/permission/PermissionValidatorProvider.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/permission/PermissionValidatorProvider.java?rev=1818045&r1=1818044&r2=1818045&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/permission/PermissionValidatorProvider.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/permission/PermissionValidatorProvider.java
 Wed Dec 13 17:30:38 2017
@@ -18,10 +18,12 @@ package org.apache.jackrabbit.oak.securi
 
 import java.security.Principal;
 import java.util.Set;
-
 import javax.annotation.Nonnull;
 
-import org.apache.jackrabbit.oak.plugins.tree.factories.RootFactory;
+import org.apache.jackrabbit.oak.api.Root;
+import org.apache.jackrabbit.oak.api.Tree;
+import org.apache.jackrabbit.oak.plugins.tree.RootProvider;
+import org.apache.jackrabbit.oak.plugins.tree.TreeProvider;
 import org.apache.jackrabbit.oak.spi.commit.CommitInfo;
 import org.apache.jackrabbit.oak.spi.commit.MoveTracker;
 import org.apache.jackrabbit.oak.spi.commit.Validator;
@@ -50,10 +52,15 @@ public class PermissionValidatorProvider
     private final Set<Principal> principals;
     private final MoveTracker moveTracker;
 
+    private final RootProvider rootProvider;
+    private final TreeProvider treeProvider;
+
     private Context acCtx;
     private Context userCtx;
 
-    public PermissionValidatorProvider(SecurityProvider securityProvider, 
String workspaceName, Set<Principal> principals, MoveTracker moveTracker) {
+    public PermissionValidatorProvider(@Nonnull SecurityProvider 
securityProvider, @Nonnull String workspaceName,
+                                       @Nonnull Set<Principal> principals, 
@Nonnull MoveTracker moveTracker,
+                                       @Nonnull RootProvider rootProvider, 
@Nonnull TreeProvider treeProvider) {
         this.securityProvider = securityProvider;
         this.acConfig = 
securityProvider.getConfiguration(AuthorizationConfiguration.class);
 
@@ -64,6 +71,9 @@ public class PermissionValidatorProvider
         this.workspaceName = workspaceName;
         this.principals = principals;
         this.moveTracker = moveTracker;
+
+        this.rootProvider = rootProvider;
+        this.treeProvider = treeProvider;
     }
 
     //--------------------------------------------------< ValidatorProvider 
>---
@@ -71,7 +81,7 @@ public class PermissionValidatorProvider
     @Override @Nonnull
     public Validator getRootValidator(
             NodeState before, NodeState after, CommitInfo info) {
-        PermissionProvider pp = 
acConfig.getPermissionProvider(RootFactory.createReadOnlyRoot(before), 
workspaceName, principals);
+        PermissionProvider pp = 
acConfig.getPermissionProvider(createReadOnlyRoot(before), workspaceName, 
principals);
         if (moveTracker.isEmpty()) {
             return new PermissionValidator(before, after, pp, this);
         } else {
@@ -100,4 +110,11 @@ public class PermissionValidatorProvider
         return Permissions.includes(jr2Permissions, permission);
     }
 
+    Root createReadOnlyRoot(@Nonnull NodeState nodeState) {
+        return rootProvider.createReadOnlyRoot(nodeState);
+    }
+
+    Tree createReadOnlyTree(@Nonnull NodeState nodeState) {
+        return treeProvider.createReadOnlyTree(nodeState);
+    }
 }

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=1818045&r1=1818044&r2=1818045&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
 Wed Dec 13 17:30:38 2017
@@ -21,7 +21,6 @@ import java.util.Collections;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
-
 import javax.annotation.Nonnull;
 
 import org.apache.jackrabbit.api.security.authorization.PrivilegeManager;
@@ -68,7 +67,7 @@ public class PrivilegeConfigurationImpl
     @Nonnull
     @Override
     public RepositoryInitializer getRepositoryInitializer() {
-        return new PrivilegeInitializer();
+        return new PrivilegeInitializer(getRootProvider());
     }
 
     @Nonnull
@@ -80,7 +79,7 @@ public class PrivilegeConfigurationImpl
     @Nonnull
     @Override
     public List<? extends ValidatorProvider> getValidators(@Nonnull String 
workspaceName, @Nonnull Set<Principal> principals, @Nonnull MoveTracker 
moveTracker) {
-        return Collections.singletonList(new PrivilegeValidatorProvider());
+        return Collections.singletonList(new 
PrivilegeValidatorProvider(getRootProvider()));
     }
 
     @Nonnull

Modified: 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/privilege/PrivilegeInitializer.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/privilege/PrivilegeInitializer.java?rev=1818045&r1=1818044&r2=1818045&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/privilege/PrivilegeInitializer.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/privilege/PrivilegeInitializer.java
 Wed Dec 13 17:30:38 2017
@@ -23,9 +23,9 @@ import org.apache.jackrabbit.JcrConstant
 import org.apache.jackrabbit.oak.api.Root;
 import org.apache.jackrabbit.oak.api.Type;
 import org.apache.jackrabbit.oak.plugins.memory.MemoryNodeStore;
-import org.apache.jackrabbit.oak.spi.nodetype.NodeTypeConstants;
-import org.apache.jackrabbit.oak.plugins.tree.factories.RootFactory;
+import org.apache.jackrabbit.oak.plugins.tree.RootProvider;
 import org.apache.jackrabbit.oak.spi.lifecycle.RepositoryInitializer;
+import org.apache.jackrabbit.oak.spi.nodetype.NodeTypeConstants;
 import org.apache.jackrabbit.oak.spi.security.privilege.PrivilegeConstants;
 import org.apache.jackrabbit.oak.spi.state.ApplyDiff;
 import org.apache.jackrabbit.oak.spi.state.NodeBuilder;
@@ -46,6 +46,12 @@ class PrivilegeInitializer implements Re
 
     private static final Logger log = 
LoggerFactory.getLogger(PrivilegeInitializer.class);
 
+    private final RootProvider rootProvider;
+
+    PrivilegeInitializer(@Nonnull RootProvider rootProvider) {
+        this.rootProvider = rootProvider;
+    }
+
     @Override
     public void initialize(@Nonnull NodeBuilder builder) {
         NodeBuilder system = builder.child(JcrConstants.JCR_SYSTEM);
@@ -59,7 +65,7 @@ class PrivilegeInitializer implements Re
             NodeState base = squeeze(builder.getNodeState());
             NodeStore store = new MemoryNodeStore(base);
             try {
-                Root systemRoot = RootFactory.createSystemRoot(store, null, 
null, null, null);
+                Root systemRoot = rootProvider.createSystemRoot(store, null);
                 new 
PrivilegeDefinitionWriter(systemRoot).writeBuiltInDefinitions();
             } catch (RepositoryException e) {
                 log.error("Failed to register built-in privileges", e);

Modified: 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/privilege/PrivilegeValidatorProvider.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/privilege/PrivilegeValidatorProvider.java?rev=1818045&r1=1818044&r2=1818045&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/privilege/PrivilegeValidatorProvider.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/privilege/PrivilegeValidatorProvider.java
 Wed Dec 13 17:30:38 2017
@@ -19,7 +19,7 @@ package org.apache.jackrabbit.oak.securi
 import javax.annotation.Nonnull;
 
 import org.apache.jackrabbit.oak.api.Root;
-import org.apache.jackrabbit.oak.plugins.tree.factories.RootFactory;
+import org.apache.jackrabbit.oak.plugins.tree.RootProvider;
 import org.apache.jackrabbit.oak.spi.commit.CommitInfo;
 import org.apache.jackrabbit.oak.spi.commit.SubtreeValidator;
 import org.apache.jackrabbit.oak.spi.commit.Validator;
@@ -36,6 +36,12 @@ import static org.apache.jackrabbit.oak.
  */
 class PrivilegeValidatorProvider extends ValidatorProvider {
 
+    private final RootProvider rootProvider;
+
+    PrivilegeValidatorProvider(@Nonnull RootProvider rootProvider) {
+        this.rootProvider = rootProvider;
+    }
+
     @Nonnull
     @Override
     public Validator getRootValidator(
@@ -45,6 +51,6 @@ class PrivilegeValidatorProvider extends
     }
 
     private Root createRoot(NodeState nodeState) {
-        return RootFactory.createReadOnlyRoot(nodeState);
+        return rootProvider.createReadOnlyRoot(nodeState);
     }
 }
\ No newline at end of file

Modified: 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/CacheValidatorProvider.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/CacheValidatorProvider.java?rev=1818045&r1=1818044&r2=1818045&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/CacheValidatorProvider.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/CacheValidatorProvider.java
 Wed Dec 13 17:30:38 2017
@@ -28,7 +28,7 @@ import org.apache.jackrabbit.oak.api.Com
 import org.apache.jackrabbit.oak.api.PropertyState;
 import org.apache.jackrabbit.oak.api.Tree;
 import org.apache.jackrabbit.oak.plugins.nodetype.TypePredicate;
-import org.apache.jackrabbit.oak.plugins.tree.factories.TreeFactory;
+import org.apache.jackrabbit.oak.plugins.tree.TreeProvider;
 import org.apache.jackrabbit.oak.spi.commit.CommitInfo;
 import org.apache.jackrabbit.oak.spi.commit.DefaultValidator;
 import org.apache.jackrabbit.oak.spi.commit.Validator;
@@ -47,10 +47,12 @@ import static com.google.common.base.Pre
 class CacheValidatorProvider extends ValidatorProvider implements 
CacheConstants {
 
     private final boolean isSystem;
+    private final TreeProvider treeProvider;
 
-    CacheValidatorProvider(@Nonnull Set<Principal> principals) {
+    CacheValidatorProvider(@Nonnull Set<Principal> principals, @Nonnull 
TreeProvider treeProvider) {
         super();
         isSystem = principals.contains(SystemPrincipal.INSTANCE);
+        this.treeProvider = treeProvider;
     }
 
     @CheckForNull
@@ -58,7 +60,7 @@ class CacheValidatorProvider extends Val
     protected Validator getRootValidator(NodeState before, NodeState after, 
CommitInfo info) {
         TypePredicate cachePredicate = new TypePredicate(after, NT_REP_CACHE);
         boolean isValidCommitInfo = CommitMarker.isValidCommitInfo(info);
-        return new CacheValidator(TreeFactory.createReadOnlyTree(before), 
TreeFactory.createReadOnlyTree(after), cachePredicate, isValidCommitInfo);
+        return new CacheValidator(treeProvider.createReadOnlyTree(before), 
treeProvider.createReadOnlyTree(after), cachePredicate, isValidCommitInfo);
     }
 
     
//--------------------------------------------------------------------------

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=1818045&r1=1818044&r2=1818045&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
 Wed Dec 13 17:30:38 2017
@@ -206,7 +206,7 @@ public class UserConfigurationImpl exten
     @Nonnull
     @Override
     public List<? extends ValidatorProvider> getValidators(@Nonnull String 
workspaceName, @Nonnull Set<Principal> principals, @Nonnull MoveTracker 
moveTracker) {
-        return ImmutableList.of(new UserValidatorProvider(getParameters()), 
new CacheValidatorProvider(principals));
+        return ImmutableList.of(new UserValidatorProvider(getParameters(), 
getRootProvider(), getTreeProvider()), new CacheValidatorProvider(principals, 
getTreeProvider()));
     }
 
     @Nonnull

Modified: 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/UserValidatorProvider.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/UserValidatorProvider.java?rev=1818045&r1=1818044&r2=1818045&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/UserValidatorProvider.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/UserValidatorProvider.java
 Wed Dec 13 17:30:38 2017
@@ -18,27 +18,29 @@ package org.apache.jackrabbit.oak.securi
 
 import javax.annotation.Nonnull;
 
-import org.apache.jackrabbit.oak.plugins.tree.factories.RootFactory;
-import org.apache.jackrabbit.oak.plugins.tree.factories.TreeFactory;
+import org.apache.jackrabbit.oak.plugins.tree.RootProvider;
+import org.apache.jackrabbit.oak.plugins.tree.TreeProvider;
 import org.apache.jackrabbit.oak.spi.commit.CommitInfo;
 import org.apache.jackrabbit.oak.spi.commit.Validator;
 import org.apache.jackrabbit.oak.spi.commit.ValidatorProvider;
 import org.apache.jackrabbit.oak.spi.security.ConfigurationParameters;
 import org.apache.jackrabbit.oak.spi.state.NodeState;
 
-import static com.google.common.base.Preconditions.checkNotNull;
-
 /**
  * Provides a validator for user and group management.
  */
 class UserValidatorProvider extends ValidatorProvider {
 
     private final ConfigurationParameters config;
+    private final RootProvider rootProvider;
+    private final TreeProvider treeProvider;
 
     private MembershipProvider membershipProvider;
 
-    UserValidatorProvider(ConfigurationParameters config) {
-        this.config = checkNotNull(config);
+    UserValidatorProvider(@Nonnull ConfigurationParameters config, @Nonnull 
RootProvider rootProvider, @Nonnull TreeProvider treeProvider) {
+        this.config = config;
+        this.rootProvider = rootProvider;
+        this.treeProvider = treeProvider;
     }
 
     //--------------------------------------------------< ValidatorProvider 
>---
@@ -46,8 +48,8 @@ class UserValidatorProvider extends Vali
     @Override @Nonnull
     public Validator getRootValidator(
             NodeState before, NodeState after, CommitInfo info) {
-        membershipProvider = new 
MembershipProvider(RootFactory.createReadOnlyRoot(after), config);
-        return new UserValidator(TreeFactory.createReadOnlyTree(before), 
TreeFactory.createReadOnlyTree(after), this);
+        membershipProvider = new 
MembershipProvider(rootProvider.createReadOnlyRoot(after), config);
+        return new UserValidator(treeProvider.createReadOnlyTree(before), 
treeProvider.createReadOnlyTree(after), this);
     }
 
     //-----------------------------------------------------------< internal 
>---

Modified: 
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authentication/token/TokenConfigurationImplTest.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authentication/token/TokenConfigurationImplTest.java?rev=1818045&r1=1818044&r2=1818045&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authentication/token/TokenConfigurationImplTest.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authentication/token/TokenConfigurationImplTest.java
 Wed Dec 13 17:30:38 2017
@@ -40,6 +40,7 @@ public class TokenConfigurationImplTest
     public void before() throws Exception {
         super.before();
         tc = new TokenConfigurationImpl(getSecurityProvider());
+        tc.setTreeProvider(getTreeProvider());
     }
 
     @Override

Modified: 
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authorization/accesscontrol/AccessControlValidatorTest.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authorization/accesscontrol/AccessControlValidatorTest.java?rev=1818045&r1=1818044&r2=1818045&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authorization/accesscontrol/AccessControlValidatorTest.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authorization/accesscontrol/AccessControlValidatorTest.java
 Wed Dec 13 17:30:38 2017
@@ -89,6 +89,10 @@ public class AccessControlValidatorTest
         return new NodeUtil(root.getTree(testPath));
     }
 
+    private AccessControlValidatorProvider createValidatorProvider() {
+        return new AccessControlValidatorProvider(getSecurityProvider(), 
getRootProvider(), getTreeProvider());
+    }
+
     private NodeUtil createAcl() throws AccessDeniedException {
         NodeUtil testRoot = getTestRoot();
         testRoot.setNames(JcrConstants.JCR_MIXINTYPES, 
MIX_REP_ACCESS_CONTROLLABLE);
@@ -406,7 +410,7 @@ public class AccessControlValidatorTest
 
     @Test
     public void hiddenNodeAdded() throws CommitFailedException {
-        AccessControlValidatorProvider provider = new 
AccessControlValidatorProvider(getSecurityProvider());
+        AccessControlValidatorProvider provider = createValidatorProvider();
         MemoryNodeStore store = new MemoryNodeStore();
         NodeState root = store.getRoot();
         NodeBuilder builder = root.builder();
@@ -425,7 +429,7 @@ public class AccessControlValidatorTest
 
     @Test
     public void hiddenNodeChanged() throws CommitFailedException {
-        AccessControlValidatorProvider provider = new 
AccessControlValidatorProvider(getSecurityProvider());
+        AccessControlValidatorProvider provider = createValidatorProvider();
         MemoryNodeStore store = new MemoryNodeStore();
         NodeBuilder builder = store.getRoot().builder();
         builder.child("test").child(":hidden");
@@ -447,7 +451,7 @@ public class AccessControlValidatorTest
 
     @Test
     public void hiddenNodeDeleted() throws CommitFailedException {
-        AccessControlValidatorProvider provider = new 
AccessControlValidatorProvider(getSecurityProvider());
+        AccessControlValidatorProvider provider = createValidatorProvider();
         MemoryNodeStore store = new MemoryNodeStore();
         NodeBuilder builder = store.getRoot().builder();
         builder.child("test").child(":hidden");

Modified: 
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authorization/composite/AbstractCompositeProviderTest.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authorization/composite/AbstractCompositeProviderTest.java?rev=1818045&r1=1818044&r2=1818045&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authorization/composite/AbstractCompositeProviderTest.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authorization/composite/AbstractCompositeProviderTest.java
 Wed Dec 13 17:30:38 2017
@@ -254,7 +254,7 @@ public abstract class AbstractCompositeP
         String workspaceName = root.getContentSession().getWorkspaceName();
         AuthorizationConfiguration config = 
getConfig(AuthorizationConfiguration.class);
         return new CompositePermissionProvider(root, 
getAggregatedProviders(workspaceName, config, principals),
-                config.getContext(), CompositionType.AND);
+                config.getContext(), CompositionType.AND, getRootProvider());
     }
 
     CompositePermissionProvider createPermissionProviderOR(Principal... 
principals) {
@@ -265,7 +265,7 @@ public abstract class AbstractCompositeP
         String workspaceName = root.getContentSession().getWorkspaceName();
         AuthorizationConfiguration config = 
getConfig(AuthorizationConfiguration.class);
         return new CompositePermissionProvider(root, 
getAggregatedProviders(workspaceName, config, principals),
-                config.getContext(), CompositionType.OR);
+                config.getContext(), CompositionType.OR, getRootProvider());
     }
 
     @Test

Modified: 
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authorization/composite/CompositeAuthorizationConfigurationTest.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authorization/composite/CompositeAuthorizationConfigurationTest.java?rev=1818045&r1=1818044&r2=1818045&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authorization/composite/CompositeAuthorizationConfigurationTest.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authorization/composite/CompositeAuthorizationConfigurationTest.java
 Wed Dec 13 17:30:38 2017
@@ -43,12 +43,22 @@ public class CompositeAuthorizationConfi
 
     private CompositeAuthorizationConfiguration 
getCompositeConfiguration(AuthorizationConfiguration... entries) {
         CompositeAuthorizationConfiguration compositeConfiguration = new 
CompositeAuthorizationConfiguration(getSecurityProvider());
+        compositeConfiguration.setRootProvider(getRootProvider());
+        compositeConfiguration.setTreeProvider(getTreeProvider());
+
         for (AuthorizationConfiguration ac : entries) {
             compositeConfiguration.addConfiguration(ac);
         }
         return compositeConfiguration;
     }
 
+    private AuthorizationConfigurationImpl 
createAuthorizationConfigurationImpl() {
+        AuthorizationConfigurationImpl ac = new 
AuthorizationConfigurationImpl(getSecurityProvider());
+        ac.setRootProvider(getRootProvider());
+        ac.setTreeProvider(getTreeProvider());
+        return ac;
+    }
+
     @Test(expected = IllegalStateException.class)
     public void testEmptyGetAccessControlManager() {
         getCompositeConfiguration().getAccessControlManager(root, 
NamePathMapper.DEFAULT);
@@ -66,7 +76,7 @@ public class CompositeAuthorizationConfi
 
     @Test
     public void testSingleGetAccessControlManager() {
-        CompositeAuthorizationConfiguration cc = getCompositeConfiguration(new 
AuthorizationConfigurationImpl(getSecurityProvider()));
+        CompositeAuthorizationConfiguration cc = 
getCompositeConfiguration(createAuthorizationConfigurationImpl());
 
         AccessControlManager accessControlManager = 
cc.getAccessControlManager(root, NamePathMapper.DEFAULT);
         assertFalse(accessControlManager instanceof 
CompositeAccessControlManager);
@@ -74,7 +84,7 @@ public class CompositeAuthorizationConfi
 
     @Test
     public void testSingleGetPermissionProvider() {
-        CompositeAuthorizationConfiguration cc = getCompositeConfiguration(new 
AuthorizationConfigurationImpl(getSecurityProvider()));
+        CompositeAuthorizationConfiguration cc = 
getCompositeConfiguration(createAuthorizationConfigurationImpl());
 
         PermissionProvider pp = cc.getPermissionProvider(root, 
root.getContentSession().getWorkspaceName(), Collections.<Principal>emptySet());
         assertFalse(pp instanceof CompositePermissionProvider);
@@ -82,7 +92,7 @@ public class CompositeAuthorizationConfi
 
     @Test
     public void testSingleRestrictionProvider() {
-        CompositeAuthorizationConfiguration cc = getCompositeConfiguration(new 
AuthorizationConfigurationImpl(getSecurityProvider()));
+        CompositeAuthorizationConfiguration cc = 
getCompositeConfiguration(createAuthorizationConfigurationImpl());
 
         RestrictionProvider rp = cc.getRestrictionProvider();
         assertFalse(rp instanceof CompositeRestrictionProvider);
@@ -91,8 +101,8 @@ public class CompositeAuthorizationConfi
     @Test
     public void testMultipleGetAccessControlManager() throws 
RepositoryException {
         CompositeAuthorizationConfiguration cc = getCompositeConfiguration(
-                new AuthorizationConfigurationImpl(getSecurityProvider()),
-                new AuthorizationConfigurationImpl(getSecurityProvider()));
+                createAuthorizationConfigurationImpl(),
+                createAuthorizationConfigurationImpl());
 
         AccessControlManager accessControlManager = 
cc.getAccessControlManager(root, NamePathMapper.DEFAULT);
         assertTrue(accessControlManager instanceof 
CompositeAccessControlManager);
@@ -102,7 +112,7 @@ public class CompositeAuthorizationConfi
     public void testMultipleGetPermissionProvider() {
         CompositeAuthorizationConfiguration cc = getCompositeConfiguration(
                 new OpenAuthorizationConfiguration(),
-                new AuthorizationConfigurationImpl(getSecurityProvider()));
+                createAuthorizationConfigurationImpl());
 
         PermissionProvider pp = cc.getPermissionProvider(root, 
root.getContentSession().getWorkspaceName(), Collections.<Principal>emptySet());
         assertFalse(pp instanceof CompositePermissionProvider);
@@ -111,8 +121,8 @@ public class CompositeAuthorizationConfi
     @Test
     public void testMultipleGetPermissionProvider2() {
         CompositeAuthorizationConfiguration cc = getCompositeConfiguration(
-                new AuthorizationConfigurationImpl(getSecurityProvider()),
-                new AuthorizationConfigurationImpl(getSecurityProvider()));
+                createAuthorizationConfigurationImpl(),
+                createAuthorizationConfigurationImpl());
 
         PermissionProvider pp = cc.getPermissionProvider(root, 
root.getContentSession().getWorkspaceName(), Collections.<Principal>emptySet());
         assertTrue(pp instanceof CompositePermissionProvider);
@@ -132,8 +142,8 @@ public class CompositeAuthorizationConfi
     @Test
     public void testMultipleRestrictionProvider() {
         CompositeAuthorizationConfiguration cc = getCompositeConfiguration(
-                new AuthorizationConfigurationImpl(getSecurityProvider()),
-                new AuthorizationConfigurationImpl(getSecurityProvider()));
+                createAuthorizationConfigurationImpl(),
+                createAuthorizationConfigurationImpl());
 
         RestrictionProvider rp = cc.getRestrictionProvider();
         assertTrue(rp instanceof CompositeRestrictionProvider);
@@ -142,7 +152,7 @@ public class CompositeAuthorizationConfi
     @Test
     public void testMultipleWithEmptyRestrictionProvider() {
         CompositeAuthorizationConfiguration cc = getCompositeConfiguration(
-                new AuthorizationConfigurationImpl(getSecurityProvider()),
+                createAuthorizationConfigurationImpl(),
                 new OpenAuthorizationConfiguration() {
                     @Nonnull
                     @Override

Modified: 
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authorization/composite/CompositeProviderCustomMixTest.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authorization/composite/CompositeProviderCustomMixTest.java?rev=1818045&r1=1818044&r2=1818045&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authorization/composite/CompositeProviderCustomMixTest.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authorization/composite/CompositeProviderCustomMixTest.java
 Wed Dec 13 17:30:38 2017
@@ -232,7 +232,7 @@ public class CompositeProviderCustomMixT
 
         AuthorizationConfiguration config = 
getConfig(AuthorizationConfiguration.class);
         List<AggregatedPermissionProvider> composite = ImmutableList.of(a1, 
a2);
-        return new CompositePermissionProvider(root, composite, 
config.getContext(), type);
+        return new CompositePermissionProvider(root, composite, 
config.getContext(), type, getRootProvider());
     }
 
     private static class CustomProvider implements 
AggregatedPermissionProvider {

Modified: 
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authorization/composite/CompositeTreePermissionTest.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authorization/composite/CompositeTreePermissionTest.java?rev=1818045&r1=1818044&r2=1818045&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authorization/composite/CompositeTreePermissionTest.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authorization/composite/CompositeTreePermissionTest.java
 Wed Dec 13 17:30:38 2017
@@ -73,7 +73,7 @@ public class CompositeTreePermissionTest
     }
 
     private TreePermission 
createRootTreePermission(AggregatedPermissionProvider... providers) {
-        return new CompositePermissionProvider(readOnlyRoot, 
Arrays.asList(providers), Context.DEFAULT, CompositionType.AND)
+        return new CompositePermissionProvider(readOnlyRoot, 
Arrays.asList(providers), Context.DEFAULT, CompositionType.AND, 
getRootProvider())
                 .getTreePermission(rootTree, TreePermission.EMPTY);
     }
 

Modified: 
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/privilege/PrivilegeConfigurationImplTest.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/privilege/PrivilegeConfigurationImplTest.java?rev=1818045&r1=1818044&r2=1818045&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/privilege/PrivilegeConfigurationImplTest.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/privilege/PrivilegeConfigurationImplTest.java
 Wed Dec 13 17:30:38 2017
@@ -23,10 +23,12 @@ import com.google.common.collect.Immutab
 import org.apache.jackrabbit.api.security.authorization.PrivilegeManager;
 import org.apache.jackrabbit.oak.api.Root;
 import org.apache.jackrabbit.oak.namepath.NamePathMapper;
+import org.apache.jackrabbit.oak.plugins.tree.impl.RootProviderService;
 import org.apache.jackrabbit.oak.spi.commit.CommitHook;
 import org.apache.jackrabbit.oak.spi.commit.MoveTracker;
 import org.apache.jackrabbit.oak.spi.commit.ValidatorProvider;
 import org.apache.jackrabbit.oak.spi.security.privilege.PrivilegeConfiguration;
+import org.junit.Before;
 import org.junit.Test;
 import org.mockito.Mockito;
 
@@ -38,6 +40,11 @@ public class PrivilegeConfigurationImplT
 
     private final PrivilegeConfigurationImpl configuration = new 
PrivilegeConfigurationImpl();
 
+    @Before
+    public void before() {
+        configuration.setRootProvider(new RootProviderService());
+    }
+
     @Test
     public void testGetName() {
         assertEquals(PrivilegeConfiguration.NAME, configuration.getName());

Modified: 
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/user/UserConfigurationImplTest.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/user/UserConfigurationImplTest.java?rev=1818045&r1=1818044&r2=1818045&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/user/UserConfigurationImplTest.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/user/UserConfigurationImplTest.java
 Wed Dec 13 17:30:38 2017
@@ -59,6 +59,9 @@ public class UserConfigurationImplTest e
     @Test
     public void testValidators() {
         UserConfigurationImpl configuration = new 
UserConfigurationImpl(getSecurityProvider());
+        configuration.setRootProvider(getRootProvider());
+        configuration.setTreeProvider(getTreeProvider());
+
         List<? extends ValidatorProvider> validators = 
configuration.getValidators(adminSession.getWorkspaceName(), 
Collections.<Principal>emptySet(), new MoveTracker());
         assertEquals(2, validators.size());
 

Modified: 
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/user/UserValidatorTest.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/user/UserValidatorTest.java?rev=1818045&r1=1818044&r2=1818045&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/user/UserValidatorTest.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/user/UserValidatorTest.java
 Wed Dec 13 17:30:38 2017
@@ -60,6 +60,10 @@ public class UserValidatorTest extends A
         userPath = getTestUser().getPath();
     }
 
+    private UserValidatorProvider createValidatorProvider() {
+        return new UserValidatorProvider(getConfig(), getRootProvider(), 
getTreeProvider());
+    }
+
     @Test
     public void removePassword() throws Exception {
         try {
@@ -341,7 +345,7 @@ public class UserValidatorTest extends A
 
     @Test
     public void hiddenNodeAdded() throws CommitFailedException {
-        UserValidatorProvider provider = new 
UserValidatorProvider(getConfig());
+        UserValidatorProvider provider = createValidatorProvider();
         MemoryNodeStore store = new MemoryNodeStore();
         NodeState root = store.getRoot();
         NodeBuilder builder = root.builder();
@@ -361,7 +365,7 @@ public class UserValidatorTest extends A
 
     @Test
     public void hiddenNodeChanged() throws CommitFailedException {
-        UserValidatorProvider provider = new 
UserValidatorProvider(getConfig());
+        UserValidatorProvider provider = createValidatorProvider();
         MemoryNodeStore store = new MemoryNodeStore();
         NodeBuilder builder = store.getRoot().builder();
         builder.child("test").child(":hidden");
@@ -384,7 +388,7 @@ public class UserValidatorTest extends A
 
     @Test
     public void hiddenNodeDeleted() throws CommitFailedException {
-        UserValidatorProvider provider = new 
UserValidatorProvider(getConfig());
+        UserValidatorProvider provider = createValidatorProvider();
         MemoryNodeStore store = new MemoryNodeStore();
         NodeBuilder builder = store.getRoot().builder();
         builder.child("test").child(":hidden");


Reply via email to