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 md...@apache.org on 2013/03/13 17:26:35 UTC

svn commit: r1456029 - in /jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr: ./ lock/ query/ query/qom/ version/ xml/

Author: mduerig
Date: Wed Mar 13 16:26:34 2013
New Revision: 1456029

URL: http://svn.apache.org/r1456029
Log:
OAK-672: Avoid JCR APIs calling other JCR APIs
- Remove SessionContextProvider and pass SessionContext instances to JCR implementation classes

Removed:
    jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/SessionContextProvider.java
Modified:
    jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/ItemImpl.java
    jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/NodeImpl.java
    jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/PropertyImpl.java
    jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/RepositoryImpl.java
    jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/SessionContext.java
    jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/SessionImpl.java
    jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/WorkspaceImpl.java
    jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/lock/LockManagerImpl.java
    jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/query/QueryImpl.java
    jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/query/QueryManagerImpl.java
    jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/query/QueryResultImpl.java
    jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/query/qom/QueryObjectModelFactoryImpl.java
    jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/version/VersionHistoryImpl.java
    jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/version/VersionImpl.java
    jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/version/VersionManagerImpl.java
    jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/xml/ImportHandler.java
    jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/xml/SessionImporter.java

Modified: jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/ItemImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/ItemImpl.java?rev=1456029&r1=1456028&r2=1456029&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/ItemImpl.java (original)
+++ jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/ItemImpl.java Wed Mar 13 16:26:34 2013
@@ -48,6 +48,7 @@ abstract class ItemImpl<T extends ItemDe
     protected static final boolean DISABLE_TRANSIENT_DEFINITION_CHECKS =
             Boolean.getBoolean("OAK-652");
 
+    protected final SessionContext sessionContext;
     protected final SessionDelegate sessionDelegate;
     protected final T dlg;
 
@@ -56,7 +57,8 @@ abstract class ItemImpl<T extends ItemDe
      */
     private static final Logger log = LoggerFactory.getLogger(ItemImpl.class);
 
-    protected ItemImpl(T itemDelegate) {
+    protected ItemImpl(T itemDelegate, SessionContext sessionContext) {
+        this.sessionContext = sessionContext;
         this.sessionDelegate = itemDelegate.getSessionDelegate();
         this.dlg = itemDelegate;
     }
@@ -106,7 +108,7 @@ abstract class ItemImpl<T extends ItemDe
     @Override
     @Nonnull
     public Session getSession() throws RepositoryException {
-        return SessionContextProvider.getSession(sessionDelegate);
+        return sessionContext.getSession();
     }
 
     /**
@@ -236,22 +238,22 @@ abstract class ItemImpl<T extends ItemDe
      */
     @Nonnull
     ValueFactoryImpl getValueFactory() {
-        return SessionContextProvider.getValueFactory(sessionDelegate);
+        return sessionContext.getValueFactory();
     }
 
     @Nonnull
     NodeTypeManager getNodeTypeManager() {
-        return SessionContextProvider.getNodeTypeManager(sessionDelegate);
+        return sessionContext.getNodeTypeManager();
     }
 
     @Nonnull
     DefinitionProvider getDefinitionProvider() {
-        return SessionContextProvider.getDefinitionProvider(sessionDelegate);
+        return sessionContext.getDefinitionProvider();
     }
 
     @Nonnull
     String toJcrPath(String oakPath) {
-        NamePathMapper namePathMapper = SessionContextProvider.getNamePathMapper(sessionDelegate);
+        NamePathMapper namePathMapper = sessionContext.getNamePathMapper();
         return namePathMapper.getJcrPath(oakPath);
     }
 }

Modified: jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/NodeImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/NodeImpl.java?rev=1456029&r1=1456028&r2=1456029&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/NodeImpl.java (original)
+++ jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/NodeImpl.java Wed Mar 13 16:26:34 2013
@@ -105,8 +105,8 @@ public class NodeImpl<T extends NodeDele
      */
     private static final Logger log = LoggerFactory.getLogger(NodeImpl.class);
 
-    public NodeImpl(T dlg) {
-        super(dlg);
+    public NodeImpl(T dlg, SessionContext sessionContext) {
+        super(dlg, sessionContext);
     }
 
     //---------------------------------------------------------------< Item >---
@@ -140,7 +140,7 @@ public class NodeImpl<T extends NodeDele
                     if (parent == null) {
                         throw new AccessDeniedException();
                     }
-                    return new NodeImpl<NodeDelegate>(parent);
+                    return new NodeImpl<NodeDelegate>(parent, sessionContext);
                 }
             }
         });
@@ -226,7 +226,7 @@ public class NodeImpl<T extends NodeDele
     }
 
     private String getOakPath(String jcrPath) throws RepositoryException {
-        return SessionContextProvider.getOakPath(sessionDelegate, jcrPath);
+        return sessionContext.getOakPath(jcrPath);
     }
 
     @Override
@@ -238,7 +238,7 @@ public class NodeImpl<T extends NodeDele
         return perform(new SessionOperation<Node>() {
             @Override
             public Node perform() throws RepositoryException {
-                String oakPath = SessionContextProvider.getOakPathKeepIndexOrThrowNotFound(sessionDelegate, relPath);
+                String oakPath = sessionContext.getOakPathKeepIndexOrThrowNotFound(relPath);
                 String oakName = PathUtils.getName(oakPath);
                 String parentPath = getOakPath(PathUtils.getParentPath(oakPath));
 
@@ -270,7 +270,7 @@ public class NodeImpl<T extends NodeDele
                 if (ntName == null) {
                     DefinitionProvider dp = getDefinitionProvider();
                     String childName = getOakName(PathUtils.getName(relPath));
-                    NodeDefinition def = dp.getDefinition(new NodeImpl<NodeDelegate>(parent), childName);
+                    NodeDefinition def = dp.getDefinition(new NodeImpl<NodeDelegate>(parent, sessionContext), childName);
                     ntName = def.getDefaultPrimaryTypeName();
                     if (ntName == null) {
                         throw new ConstraintViolationException(
@@ -294,7 +294,7 @@ public class NodeImpl<T extends NodeDele
                     dlg.setOrderableChildren(true);
                 }
 
-                NodeImpl<?> childNode = new NodeImpl<NodeDelegate>(added);
+                NodeImpl<?> childNode = new NodeImpl<NodeDelegate>(added, sessionContext);
                 childNode.internalSetPrimaryType(ntName);
                 childNode.autoCreateItems();
                 return childNode;
@@ -304,7 +304,7 @@ public class NodeImpl<T extends NodeDele
 
     @Nonnull
     private String getOakName(String name) throws RepositoryException {
-        return SessionContextProvider.getOakName(sessionDelegate, name);
+        return sessionContext.getOakName(name);
     }
 
     @Override
@@ -333,7 +333,7 @@ public class NodeImpl<T extends NodeDele
     }
 
     private String getOakPathOrThrowNotFound(String relPath) throws PathNotFoundException {
-        return SessionContextProvider.getOakPathOrThrowNotFound(sessionDelegate, relPath);
+        return sessionContext.getOakPathOrThrowNotFound(relPath);
     }
 
     /**
@@ -519,7 +519,7 @@ public class NodeImpl<T extends NodeDele
                 if (nd == null) {
                     throw new PathNotFoundException(relPath);
                 } else {
-                    return new NodeImpl<NodeDelegate>(nd);
+                    return new NodeImpl<NodeDelegate>(nd, sessionContext);
                 }
             }
         });
@@ -617,7 +617,7 @@ public class NodeImpl<T extends NodeDele
                 if (pd == null) {
                     throw new PathNotFoundException(relPath + " not found on " + getPath());
                 } else {
-                    return new PropertyImpl(pd);
+                    return new PropertyImpl(pd, sessionContext);
                 }
             }
         });
@@ -816,7 +816,7 @@ public class NodeImpl<T extends NodeDele
                             @Override
                             public Property apply(String oakPath) {
                                 PropertyDelegate pd = sessionDelegate.getProperty(oakPath);
-                                return pd == null ? null : new PropertyImpl(pd);
+                                return pd == null ? null : new PropertyImpl(pd, sessionContext);
                             }
                         }
                 );
@@ -945,7 +945,7 @@ public class NodeImpl<T extends NodeDele
 
     @Nonnull
     private EffectiveNodeTypeProvider getEffectiveNodeTypeProvider() {
-        return SessionContextProvider.getEffectiveNodeTypeProvider(sessionDelegate);
+        return sessionContext.getEffectiveNodeTypeProvider();
     }
 
     @Override
@@ -1086,7 +1086,7 @@ public class NodeImpl<T extends NodeDele
 
     @Nonnull
     private VersionManager getVersionManager() throws RepositoryException {
-        return SessionContextProvider.getVersionManager(sessionDelegate);
+        return sessionContext.getVersionManager();
     }
 
     /**
@@ -1393,24 +1393,24 @@ public class NodeImpl<T extends NodeDele
 
     //------------------------------------------------------------< private >---
 
-    private static Iterator<Node> nodeIterator(Iterator<NodeDelegate> childNodes) {
+    private Iterator<Node> nodeIterator(Iterator<NodeDelegate> childNodes) {
         return Iterators.transform(
                 childNodes,
                 new Function<NodeDelegate, Node>() {
                     @Override
                     public Node apply(NodeDelegate nodeDelegate) {
-                        return new NodeImpl<NodeDelegate>(nodeDelegate);
+                        return new NodeImpl<NodeDelegate>(nodeDelegate, sessionContext);
                     }
                 });
     }
 
-    private static Iterator<Property> propertyIterator(Iterator<PropertyDelegate> properties) {
+    private Iterator<Property> propertyIterator(Iterator<PropertyDelegate> properties) {
         return Iterators.transform(
                 properties,
                 new Function<PropertyDelegate, Property>() {
                     @Override
                     public Property apply(PropertyDelegate propertyDelegate) {
-                        return new PropertyImpl(propertyDelegate);
+                        return new PropertyImpl(propertyDelegate, sessionContext);
                     }
                 });
     }
@@ -1521,7 +1521,7 @@ public class NodeImpl<T extends NodeDele
     }
 
     private void checkValidWorkspace(String workspaceName) throws RepositoryException {
-        Workspace workspace = SessionContextProvider.getWorkspace(sessionDelegate);
+        Workspace workspace = sessionContext.getWorkspace();
         for (String wn : workspace.getAccessibleWorkspaceNames()) {
             if (wn.equals(workspaceName)) {
                 return;
@@ -1571,7 +1571,7 @@ public class NodeImpl<T extends NodeDele
                     } else {
                         // Return a property instance which throws on access. See OAK-395
                         return new PropertyImpl(new PropertyDelegate(
-                                sessionDelegate, dlg.getLocation().getChild(oakName)));
+                                sessionDelegate, dlg.getLocation().getChild(oakName)), sessionContext);
                     }
                 } else {
                     Value targetValue;
@@ -1593,7 +1593,7 @@ public class NodeImpl<T extends NodeDele
                         targetValue = ValueHelper.convert(value, targetType, getValueFactory());
                     }
 
-                    return new PropertyImpl(dlg.setProperty(PropertyStates.createProperty(oakName, targetValue)));
+                    return new PropertyImpl(dlg.setProperty(PropertyStates.createProperty(oakName, targetValue)), sessionContext);
                 }
             }
         });
@@ -1618,7 +1618,7 @@ public class NodeImpl<T extends NodeDele
                         return property;
                     } else {
                         return new PropertyImpl(new PropertyDelegate(
-                                sessionDelegate, dlg.getLocation().getChild(oakName)));
+                                sessionDelegate, dlg.getLocation().getChild(oakName)), sessionContext);
                     }
                 } else {
                     Value[] targetValues;
@@ -1643,7 +1643,7 @@ public class NodeImpl<T extends NodeDele
                     Iterable<Value> nonNullValues = Iterables.filter(
                             Arrays.asList(targetValues),
                             Predicates.notNull());
-                    return new PropertyImpl(dlg.setProperty(PropertyStates.createProperty(oakName, nonNullValues)));
+                    return new PropertyImpl(dlg.setProperty(PropertyStates.createProperty(oakName, nonNullValues)), sessionContext);
                 }
             }
         });

Modified: jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/PropertyImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/PropertyImpl.java?rev=1456029&r1=1456028&r2=1456029&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/PropertyImpl.java (original)
+++ jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/PropertyImpl.java Wed Mar 13 16:26:34 2013
@@ -62,8 +62,8 @@ public class PropertyImpl extends ItemIm
 
     private static final Value[] NO_VALUES = new Value[0];
 
-    PropertyImpl(PropertyDelegate dlg) {
-        super(dlg);
+    PropertyImpl(PropertyDelegate dlg, SessionContext sessionContext) {
+        super(dlg, sessionContext);
     }
 
     //---------------------------------------------------------------< Item >---
@@ -89,7 +89,7 @@ public class PropertyImpl extends ItemIm
                 if (parent == null) {
                     throw new AccessDeniedException();
                 } else {
-                    return new NodeImpl<NodeDelegate>(dlg.getParent());
+                    return new NodeImpl<NodeDelegate>(dlg.getParent(), sessionContext);
                 }
             }
         });

Modified: jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/RepositoryImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/RepositoryImpl.java?rev=1456029&r1=1456028&r2=1456029&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/RepositoryImpl.java (original)
+++ jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/RepositoryImpl.java Wed Mar 13 16:26:34 2013
@@ -125,18 +125,21 @@ public class RepositoryImpl implements R
         final boolean autoRefresh = false; // TODO implement auto refresh configuration
         try {
             ContentSession contentSession = contentRepository.login(credentials, workspaceName);
+
+            final SessionContext[] context = new SessionContext[1];
             SessionDelegate sessionDelegate = new SessionDelegate(contentSession) {
                 @Override
                 protected void refresh() {
                     // Refresh is always needed if this is an auto refresh session or there
                     // are pending observation events
-                    if (autoRefresh || SessionContextProvider.hasPendingEvents(this)) {
+                    if (autoRefresh || context[0].hasPendingEvents()) {
                         refresh(true);
                     }
                 }
-
             };
-            return SessionContextProvider.newSession(sessionDelegate, this);
+
+            context[0] = SessionContext.create(sessionDelegate, this);
+            return context[0].getSession();
         } catch (LoginException e) {
             throw new javax.jcr.LoginException(e.getMessage(), e);
         }

Modified: jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/SessionContext.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/SessionContext.java?rev=1456029&r1=1456028&r2=1456029&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/SessionContext.java (original)
+++ jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/SessionContext.java Wed Mar 13 16:26:34 2013
@@ -34,7 +34,7 @@ import static com.google.common.base.Pre
 
 public abstract class SessionContext {
     private final RepositoryImpl repository;
-    private final WorkspaceImpl workspace;
+    private final SessionDelegate delegate;
     private final NamePathMapperImpl namePathMapper;
     private final ValueFactoryImpl valueFactory;
 
@@ -46,10 +46,10 @@ public abstract class SessionContext {
     private AccessControlConfiguration accessControlConfiguration;
     private ObservationManagerImpl observationManager;
 
-    private SessionContext(RepositoryImpl repository, WorkspaceImpl workspace,
+    private SessionContext(RepositoryImpl repository, SessionDelegate delegate,
             NamePathMapperImpl namePathMapper, ValueFactoryImpl valueFactory) {
+        this.delegate = delegate;
         this.repository = repository;
-        this.workspace = workspace;
         this.namePathMapper = namePathMapper;
         this.valueFactory = valueFactory;
     }
@@ -65,16 +65,22 @@ public abstract class SessionContext {
             }
         };
 
-        WorkspaceImpl workspace = new WorkspaceImpl(delegate);
         NamePathMapperImpl namePathMapper = new NamePathMapperImpl(nameMapper, delegate.getIdManager());
         ValueFactoryImpl valueFactory = new ValueFactoryImpl(root.getBlobFactory(), namePathMapper);
 
-        return new SessionContext(checkNotNull(repository), workspace, namePathMapper, valueFactory){
-            SessionImpl session = new SessionImpl(delegate, this, namespaces);
+        return new SessionContext(checkNotNull(repository), delegate, namePathMapper, valueFactory){
+            private final SessionImpl session = new SessionImpl(delegate, this, namespaces);
+            private final WorkspaceImpl workspace = new WorkspaceImpl(delegate, this);
+
             @Override
             public SessionImpl getSession() {
                 return session;
             }
+
+            @Override
+            public WorkspaceImpl getWorkspace() {
+                return workspace;
+            }
         };
     }
 
@@ -82,30 +88,32 @@ public abstract class SessionContext {
         return repository;
     }
 
+    public SessionDelegate getSessionDelegate() {
+        return delegate;
+    }
+
     public abstract SessionImpl getSession();
 
-    public WorkspaceImpl getWorkspace() {
-        return workspace;
-    }
+    public abstract WorkspaceImpl getWorkspace();
 
     public LockManager getLockManager() {
-        return workspace.getLockManager();
+        return getWorkspace().getLockManager();
     }
 
     public NodeTypeManager getNodeTypeManager() {
-        return workspace.getNodeTypeManager();
+        return getWorkspace().getNodeTypeManager();
     }
 
     public VersionManager getVersionManager() throws RepositoryException {
-        return workspace.getVersionManager();
+        return getWorkspace().getVersionManager();
     }
 
     public EffectiveNodeTypeProvider getEffectiveNodeTypeProvider() {
-        return workspace.getReadWriteNodeTypeManager();
+        return getWorkspace().getReadWriteNodeTypeManager();
     }
 
     public DefinitionProvider getDefinitionProvider() {
-        return workspace.getReadWriteNodeTypeManager();
+        return getWorkspace().getReadWriteNodeTypeManager();
     }
 
     public NamePathMapperImpl getNamePathMapper() {
@@ -184,7 +192,7 @@ public abstract class SessionContext {
      * @return Oak path, or {@code null}, with indexes left intact
      * @throws javax.jcr.PathNotFoundException
      */
-    @Nonnull
+    @CheckForNull
     public String getOakPathKeepIndex(String jcrPath) throws PathNotFoundException {
         return namePathMapper.getOakPathKeepIndex(jcrPath);
     }
@@ -217,7 +225,7 @@ public abstract class SessionContext {
     }
 
     @Nonnull
-    public PermissionProvider getPermissionProvider(SessionDelegate delegate) {
+    public PermissionProvider getPermissionProvider() {
         SecurityProvider securityProvider = repository.getSecurityProvider();
 
         // TODO
@@ -226,7 +234,7 @@ public abstract class SessionContext {
     }
 
     @Nonnull
-    public PrincipalManager getPrincipalManager(SessionDelegate delegate) {
+    public PrincipalManager getPrincipalManager() {
         if (principalManager == null) {
             SecurityProvider securityProvider = repository.getSecurityProvider();
             principalManager = securityProvider.getPrincipalConfiguration()
@@ -236,7 +244,7 @@ public abstract class SessionContext {
     }
 
     @Nonnull
-    public UserManager getUserManager(SessionDelegate delegate) {
+    public UserManager getUserManager() {
         if (userManager == null) {
             SecurityProvider securityProvider = repository.getSecurityProvider();
             userManager = securityProvider.getUserConfiguration().getUserManager(delegate.getRoot(), namePathMapper);
@@ -245,7 +253,7 @@ public abstract class SessionContext {
     }
 
     @Nonnull
-    public PrivilegeManager getPrivilegeManager(SessionDelegate delegate) {
+    public PrivilegeManager getPrivilegeManager() {
         if (privilegeManager == null) {
             SecurityProvider securityProvider = repository.getSecurityProvider();
             privilegeManager = securityProvider.getPrivilegeConfiguration().getPrivilegeManager(delegate.getRoot(), namePathMapper);
@@ -272,7 +280,7 @@ public abstract class SessionContext {
     }
 
     @Nonnull
-    public ObservationManager getObservationManager(SessionDelegate delegate) {
+    public ObservationManager getObservationManager() {
         if (observationManager == null) {
             observationManager = new ObservationManagerImpl(
                     delegate.getRoot(), namePathMapper, repository.getObservationExecutor());

Modified: jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/SessionImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/SessionImpl.java?rev=1456029&r1=1456028&r2=1456029&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/SessionImpl.java (original)
+++ jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/SessionImpl.java Wed Mar 13 16:26:34 2013
@@ -53,7 +53,6 @@ import org.apache.jackrabbit.oak.jcr.del
 import org.apache.jackrabbit.oak.jcr.delegate.SessionDelegate;
 import org.apache.jackrabbit.oak.jcr.delegate.SessionOperation;
 import org.apache.jackrabbit.oak.jcr.xml.ImportHandler;
-import org.apache.jackrabbit.oak.namepath.NamePathMapper;
 import org.apache.jackrabbit.oak.spi.security.authentication.ImpersonationCredentials;
 import org.apache.jackrabbit.oak.spi.security.authorization.AccessControlConfiguration;
 import org.apache.jackrabbit.oak.spi.security.authorization.PermissionProvider;
@@ -77,6 +76,8 @@ public class SessionImpl extends Abstrac
 
     private final SessionDelegate dlg;
 
+    private SessionContext sessionContext;
+
     /**
      * Local namespace remappings. Prefixes as keys and namespace URIs as values.
      * <p/>
@@ -87,6 +88,7 @@ public class SessionImpl extends Abstrac
 
     SessionImpl(SessionDelegate dlg, SessionContext sessionContext, Map<String, String> namespaces) {
         this.dlg = dlg;
+        this.sessionContext = sessionContext;
         this.namespaces = namespaces;
     }
 
@@ -102,7 +104,7 @@ public class SessionImpl extends Abstrac
     @Override
     @Nonnull
     public Repository getRepository() {
-        return SessionContextProvider.getRepository(dlg);
+        return sessionContext.getRepository();
     }
 
     @Override
@@ -123,7 +125,7 @@ public class SessionImpl extends Abstrac
     @Override
     @Nonnull
     public Workspace getWorkspace() {
-        return SessionContextProvider.getWorkspace(dlg);
+        return sessionContext.getWorkspace();
     }
 
     @Override
@@ -139,7 +141,7 @@ public class SessionImpl extends Abstrac
     @Nonnull
     public ValueFactory getValueFactory() throws RepositoryException {
         ensureIsAlive();
-        return SessionContextProvider.getValueFactory(dlg);
+        return sessionContext.getValueFactory();
     }
 
     @Override
@@ -157,7 +159,7 @@ public class SessionImpl extends Abstrac
                 if (nd == null) {
                     throw new AccessDeniedException("Root node is not accessible.");
                 } else {
-                    return new NodeImpl<NodeDelegate>(nd);
+                    return new NodeImpl<NodeDelegate>(nd, sessionContext);
                 }
             }
         });
@@ -184,7 +186,7 @@ public class SessionImpl extends Abstrac
                 if (d == null) {
                     throw new ItemNotFoundException("Node with id " + id + " does not exist.");
                 }
-                return new NodeImpl<NodeDelegate>(d);
+                return new NodeImpl<NodeDelegate>(d, sessionContext);
             }
         });
     }
@@ -204,7 +206,7 @@ public class SessionImpl extends Abstrac
     }
 
     private String getOakPath(String absPath) throws RepositoryException {
-        return SessionContextProvider.getOakPath(dlg, absPath);
+        return sessionContext.getOakPath(absPath);
     }
 
     @Override
@@ -222,7 +224,7 @@ public class SessionImpl extends Abstrac
                 if (d == null) {
                     throw new PathNotFoundException("Node with path " + absPath + " does not exist.");
                 }
-                return new NodeImpl<NodeDelegate>(d);
+                return new NodeImpl<NodeDelegate>(d, sessionContext);
             }
         });
     }
@@ -256,7 +258,7 @@ public class SessionImpl extends Abstrac
                     if (loc.getProperty() == null) {
                         throw new PathNotFoundException(absPath);
                     } else {
-                        return new PropertyImpl(new PropertyDelegate(dlg, loc));
+                        return new PropertyImpl(new PropertyDelegate(dlg, loc), sessionContext);
                     }
                 }
             });
@@ -264,7 +266,7 @@ public class SessionImpl extends Abstrac
     }
 
     private String getOakPathOrThrowNotFound(String absPath) throws PathNotFoundException {
-        return SessionContextProvider.getOakPathOrThrowNotFound(dlg, absPath);
+        return sessionContext.getOakPathOrThrowNotFound(absPath);
     }
 
     @Override
@@ -294,7 +296,7 @@ public class SessionImpl extends Abstrac
 
             @Override
             public Void perform() throws RepositoryException {
-                String oakPath = SessionContextProvider.getOakPathKeepIndexOrThrowNotFound(dlg, destAbsPath);
+                String oakPath = sessionContext.getOakPathKeepIndexOrThrowNotFound(destAbsPath);
                 String oakName = PathUtils.getName(oakPath);
                 // handle index
                 if (oakName.contains("[")) {
@@ -337,7 +339,7 @@ public class SessionImpl extends Abstrac
 
     @Override
     public void logout() {
-        SessionContextProvider.remove(dlg);
+        sessionContext.dispose();
         dlg.logout();
         synchronized (namespaces) {
             namespaces.clear();
@@ -348,15 +350,15 @@ public class SessionImpl extends Abstrac
     @Nonnull
     public ContentHandler getImportContentHandler(
             String parentAbsPath, int uuidBehavior) throws RepositoryException {
-        UserConfiguration userConfiguration = SessionContextProvider.getUserConfiguration(dlg);
-        AccessControlConfiguration accessControlConfiguration = SessionContextProvider.getAccessControlConfiguration(dlg);
+        UserConfiguration userConfiguration = sessionContext.getUserConfiguration();
+        AccessControlConfiguration accessControlConfiguration = sessionContext.getAccessControlConfiguration();
         return new ImportHandler(getNode(parentAbsPath), dlg.getRoot(), this,
-                dlg, userConfiguration, accessControlConfiguration, uuidBehavior);
+                dlg, userConfiguration, accessControlConfiguration, uuidBehavior, sessionContext);
     }
 
     @Nonnull
     private LockManager getLockManager() {
-        return SessionContextProvider.getLockManager(dlg);
+        return sessionContext.getLockManager();
     }
 
     /**
@@ -401,13 +403,12 @@ public class SessionImpl extends Abstrac
     public boolean hasPermission(String absPath, String actions) throws RepositoryException {
         ensureIsAlive();
 
-        NamePathMapper namePathMapper = SessionContextProvider.getNamePathMapper(dlg);
-        String oakPath = namePathMapper.getOakPathKeepIndex(absPath);
+        String oakPath = sessionContext.getOakPathKeepIndex(absPath);
         if (oakPath == null) {
             throw new RepositoryException("Invalid JCR path: " + absPath);
         }
 
-        PermissionProvider permissionProvider = SessionContextProvider.getPermissionProvider(dlg);
+        PermissionProvider permissionProvider = sessionContext.getPermissionProvider();
         return permissionProvider.hasPermission(absPath, actions);
     }
 
@@ -429,7 +430,7 @@ public class SessionImpl extends Abstrac
     @Override
     @Nonnull
     public AccessControlManager getAccessControlManager() throws RepositoryException {
-        return SessionContextProvider.getAccessControlManager(dlg);
+        return sessionContext.getAccessControlManager(dlg);
     }
 
     /**
@@ -547,13 +548,13 @@ public class SessionImpl extends Abstrac
     @Override
     @Nonnull
     public PrincipalManager getPrincipalManager() throws RepositoryException {
-        return SessionContextProvider.getPrincipalManager(dlg);
+        return sessionContext.getPrincipalManager();
     }
 
     @Override
     @Nonnull
     public UserManager getUserManager() throws RepositoryException {
-        return SessionContextProvider.getUserManager(dlg);
+        return sessionContext.getUserManager();
     }
 
     //------------------------------------------------------------< private >---

Modified: jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/WorkspaceImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/WorkspaceImpl.java?rev=1456029&r1=1456028&r2=1456029&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/WorkspaceImpl.java (original)
+++ jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/WorkspaceImpl.java Wed Mar 13 16:26:34 2013
@@ -56,16 +56,18 @@ import static org.apache.jackrabbit.oak.
 public class WorkspaceImpl implements JackrabbitWorkspace {
 
     private final SessionDelegate sessionDelegate;
+    private final SessionContext sessionContext;
     private final QueryManagerImpl queryManager;
     private final LockManager lockManager;
     private final VersionManagerImpl versionManager;
     private final ReadWriteNodeTypeManager nodeTypeManager;
 
-    public WorkspaceImpl(final SessionDelegate sessionDelegate) {
+    public WorkspaceImpl(final SessionDelegate sessionDelegate, final SessionContext sessionContext) {
         this.sessionDelegate = sessionDelegate;
-        this.queryManager = new QueryManagerImpl(sessionDelegate);
-        this.lockManager = new LockManagerImpl(sessionDelegate);
-        this.versionManager = new VersionManagerImpl(sessionDelegate);
+        this.sessionContext = sessionContext;
+        this.queryManager = new QueryManagerImpl(sessionDelegate, sessionContext);
+        this.lockManager = new LockManagerImpl(sessionDelegate, sessionContext);
+        this.versionManager = new VersionManagerImpl(sessionDelegate, sessionContext);
         this.nodeTypeManager = new ReadWriteNodeTypeManager() {
             @Override
             protected void refresh() throws RepositoryException {
@@ -86,13 +88,13 @@ public class WorkspaceImpl implements Ja
             @Override
             @Nonnull
             protected ValueFactory getValueFactory() {
-                return SessionContextProvider.getValueFactory(sessionDelegate);
+                return sessionContext.getValueFactory();
             }
 
             @Nonnull
             @Override
             protected NamePathMapper getNamePathMapper() {
-                return SessionContextProvider.getNamePathMapper(sessionDelegate);
+                return sessionContext.getNamePathMapper();
             }
         };
     }
@@ -101,7 +103,7 @@ public class WorkspaceImpl implements Ja
     @Override
     @Nonnull
     public SessionImpl getSession() {
-        return SessionContextProvider.getSession(sessionDelegate);
+        return sessionContext.getSession();
     }
 
     @Override
@@ -115,7 +117,7 @@ public class WorkspaceImpl implements Ja
     }
 
     private String getOakPathKeepIndexOrThrowNotFound(String absPath) throws PathNotFoundException {
-        return SessionContextProvider.getOakPathKeepIndexOrThrowNotFound(sessionDelegate, absPath);
+        return sessionContext.getOakPathKeepIndexOrThrowNotFound(absPath);
     }
 
     @Override
@@ -141,7 +143,7 @@ public class WorkspaceImpl implements Ja
     }
 
     private String getOakPathOrThrowNotFound(String srcAbsPath) throws PathNotFoundException {
-        return SessionContextProvider.getOakPathOrThrowNotFound(sessionDelegate, srcAbsPath);
+        return sessionContext.getOakPathOrThrowNotFound(srcAbsPath);
     }
 
     @Override
@@ -218,7 +220,7 @@ public class WorkspaceImpl implements Ja
     public ObservationManager getObservationManager() throws RepositoryException {
         ensureIsAlive();
 
-        return SessionContextProvider.getObservationManager(sessionDelegate);
+        return sessionContext.getObservationManager();
     }
 
     @Override
@@ -290,7 +292,7 @@ public class WorkspaceImpl implements Ja
      */
     @Override
     public PrivilegeManager getPrivilegeManager() throws RepositoryException {
-        return SessionContextProvider.getPrivilegeManager(sessionDelegate);
+        return sessionContext.getPrivilegeManager();
     }
 
     //------------------------------------------------------------< internal >---

Modified: jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/lock/LockManagerImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/lock/LockManagerImpl.java?rev=1456029&r1=1456028&r2=1456029&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/lock/LockManagerImpl.java (original)
+++ jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/lock/LockManagerImpl.java Wed Mar 13 16:26:34 2013
@@ -28,7 +28,7 @@ import javax.jcr.lock.Lock;
 import javax.jcr.lock.LockException;
 import javax.jcr.lock.LockManager;
 
-import org.apache.jackrabbit.oak.jcr.SessionContextProvider;
+import org.apache.jackrabbit.oak.jcr.SessionContext;
 import org.apache.jackrabbit.oak.jcr.delegate.SessionDelegate;
 
 /**
@@ -39,11 +39,12 @@ import org.apache.jackrabbit.oak.jcr.del
 public class LockManagerImpl implements LockManager {
 
     private final SessionDelegate sessionDelegate;
-
+    private final SessionContext sessionContext;
     private final Set<String> tokens = new HashSet<String>();
 
-    public LockManagerImpl(SessionDelegate sessionDelegate) {
+    public LockManagerImpl(SessionDelegate sessionDelegate, SessionContext sessionContext) {
         this.sessionDelegate = sessionDelegate;
+        this.sessionContext = sessionContext;
     }
 
     @Override
@@ -99,6 +100,6 @@ public class LockManagerImpl implements 
 
     @Nonnull
     private Session getSession() {
-        return SessionContextProvider.getSession(sessionDelegate);
+        return sessionContext.getSession();
     }
 }
\ No newline at end of file

Modified: jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/query/QueryImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/query/QueryImpl.java?rev=1456029&r1=1456028&r2=1456029&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/query/QueryImpl.java (original)
+++ jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/query/QueryImpl.java Wed Mar 13 16:26:34 2013
@@ -20,6 +20,7 @@ package org.apache.jackrabbit.oak.jcr.qu
 
 import java.util.HashMap;
 import java.util.List;
+
 import javax.jcr.ItemNotFoundException;
 import javax.jcr.Node;
 import javax.jcr.PathNotFoundException;
@@ -33,9 +34,9 @@ import javax.jcr.version.VersionExceptio
 
 import org.apache.jackrabbit.JcrConstants;
 import org.apache.jackrabbit.oak.commons.PathUtils;
-import org.apache.jackrabbit.oak.jcr.SessionContextProvider;
-import org.apache.jackrabbit.oak.jcr.delegate.NodeDelegate;
 import org.apache.jackrabbit.oak.jcr.NodeImpl;
+import org.apache.jackrabbit.oak.jcr.SessionContext;
+import org.apache.jackrabbit.oak.jcr.delegate.NodeDelegate;
 import org.apache.jackrabbit.oak.jcr.delegate.SessionDelegate;
 
 /**
@@ -43,6 +44,7 @@ import org.apache.jackrabbit.oak.jcr.del
  */
 public class QueryImpl implements Query {
 
+    private final SessionContext sessionContext;
     private final QueryManagerImpl manager;
     private final HashMap<String, Value> bindVariableMap = new HashMap<String, Value>();
     private final String language;
@@ -52,7 +54,8 @@ public class QueryImpl implements Query 
     private boolean parsed;
     private String storedQueryPath;
 
-    QueryImpl(QueryManagerImpl manager, String statement, String language) {
+    QueryImpl(QueryManagerImpl manager, String statement, String language, SessionContext sessionContext) {
+        this.sessionContext = sessionContext;
         this.manager = manager;
         this.statement = statement;
         this.language = language;
@@ -133,19 +136,19 @@ public class QueryImpl implements Query 
     public Node storeAsNode(String absPath) throws RepositoryException {
         manager.ensureIsAlive();
         SessionDelegate sessionDelegate = manager.getSessionDelegate();
-        String oakPath = SessionContextProvider.getOakPath(sessionDelegate, absPath);
+        String oakPath = sessionContext.getOakPath(absPath);
         String parent = PathUtils.getParentPath(oakPath);
         NodeDelegate parentDelegate = sessionDelegate.getNode(parent);
         if (parentDelegate == null) {
             throw new PathNotFoundException("The specified path does not exist: " + parent);
         }
-        Node parentNode = new NodeImpl<NodeDelegate>(parentDelegate);
+        Node parentNode = new NodeImpl<NodeDelegate>(parentDelegate, sessionContext);
         if (!parentNode.isCheckedOut()) {
             throw new VersionException("Cannot store query. Node at " +
                     absPath + " is checked in.");
         }
         String nodeName = PathUtils.getName(oakPath);
-        ValueFactory vf = SessionContextProvider.getValueFactory(sessionDelegate);
+        ValueFactory vf = sessionContext.getValueFactory();
         Node n = parentNode.addNode(nodeName, JcrConstants.NT_QUERY);
         n.setProperty(JcrConstants.JCR_STATEMENT, vf.createValue(statement));
         n.setProperty(JcrConstants.JCR_LANGUAGE, vf.createValue(language));

Modified: jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/query/QueryManagerImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/query/QueryManagerImpl.java?rev=1456029&r1=1456028&r2=1456029&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/query/QueryManagerImpl.java (original)
+++ jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/query/QueryManagerImpl.java Wed Mar 13 16:26:34 2013
@@ -37,9 +37,9 @@ import javax.jcr.query.qom.QueryObjectMo
 
 import org.apache.jackrabbit.JcrConstants;
 import org.apache.jackrabbit.oak.api.PropertyValue;
-import org.apache.jackrabbit.oak.api.Result;
 import org.apache.jackrabbit.oak.api.QueryEngine;
-import org.apache.jackrabbit.oak.jcr.SessionContextProvider;
+import org.apache.jackrabbit.oak.api.Result;
+import org.apache.jackrabbit.oak.jcr.SessionContext;
 import org.apache.jackrabbit.oak.jcr.delegate.SessionDelegate;
 import org.apache.jackrabbit.oak.jcr.query.qom.QueryObjectModelFactoryImpl;
 import org.apache.jackrabbit.oak.namepath.NamePathMapper;
@@ -51,14 +51,16 @@ import org.apache.jackrabbit.oak.spi.que
  */
 public class QueryManagerImpl implements QueryManager {
 
+    private final SessionDelegate sessionDelegate;
+    private final SessionContext sessionContext;
     private final QueryObjectModelFactoryImpl qomFactory;
     private final QueryEngine queryEngine;
-    private final SessionDelegate sessionDelegate;
     private final HashSet<String> supportedQueryLanguages = new HashSet<String>();
 
-    public QueryManagerImpl(SessionDelegate sessionDelegate) {
+    public QueryManagerImpl(SessionDelegate sessionDelegate, SessionContext sessionContext) {
         this.sessionDelegate = sessionDelegate;
-        qomFactory = new QueryObjectModelFactoryImpl(this, sessionDelegate);
+        this.sessionContext = sessionContext;
+        qomFactory = new QueryObjectModelFactoryImpl(this, sessionDelegate, sessionContext);
         queryEngine = sessionDelegate.getQueryEngine();
         supportedQueryLanguages.addAll(queryEngine.getSupportedQueryLanguages());
     }
@@ -68,7 +70,7 @@ public class QueryManagerImpl implements
         if (!supportedQueryLanguages.contains(language)) {
             throw new InvalidQueryException("The specified language is not supported: " + language);
         }
-        return new QueryImpl(this, statement, language);
+        return new QueryImpl(this, statement, language, sessionContext);
     }
 
     @Override
@@ -117,10 +119,10 @@ public class QueryManagerImpl implements
             long limit, long offset, HashMap<String, Value> bindVariableMap) throws RepositoryException {
         try {
             Map<String, PropertyValue> bindMap = convertMap(bindVariableMap);
-            NamePathMapper namePathMapper = SessionContextProvider.getNamePathMapper(sessionDelegate);
+            NamePathMapper namePathMapper = sessionContext.getNamePathMapper();
             Result r = queryEngine.executeQuery(statement, language, limit, offset,
                     bindMap, namePathMapper);
-            return new QueryResultImpl(sessionDelegate, r);
+            return new QueryResultImpl(sessionDelegate, r, sessionContext);
         } catch (IllegalArgumentException e) {
             throw new InvalidQueryException(e);
         } catch (ParseException e) {

Modified: jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/query/QueryResultImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/query/QueryResultImpl.java?rev=1456029&r1=1456028&r2=1456029&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/query/QueryResultImpl.java (original)
+++ jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/query/QueryResultImpl.java Wed Mar 13 16:26:34 2013
@@ -35,7 +35,7 @@ import org.apache.jackrabbit.oak.api.Res
 import org.apache.jackrabbit.oak.api.ResultRow;
 import org.apache.jackrabbit.oak.commons.PathUtils;
 import org.apache.jackrabbit.oak.jcr.NodeImpl;
-import org.apache.jackrabbit.oak.jcr.SessionContextProvider;
+import org.apache.jackrabbit.oak.jcr.SessionContext;
 import org.apache.jackrabbit.oak.jcr.delegate.NodeDelegate;
 import org.apache.jackrabbit.oak.jcr.delegate.SessionDelegate;
 
@@ -59,11 +59,13 @@ public class QueryResultImpl implements 
      */
     private static final int PREFETCH_TIMEOUT = 100;
 
+    private final SessionContext sessionContext;
     final SessionDelegate sessionDelegate;
     final Result result;
     final String pathFilter;
 
-    public QueryResultImpl(SessionDelegate sessionDelegate, Result result) {
+    public QueryResultImpl(SessionDelegate sessionDelegate, Result result, SessionContext sessionContext) {
+        this.sessionContext = sessionContext;
         this.sessionDelegate = sessionDelegate;
         this.result = result;
 
@@ -158,7 +160,7 @@ public class QueryResultImpl implements 
             return null;
         }
         NodeDelegate d = sessionDelegate.getNode(path);
-        return d == null ? null : new NodeImpl<NodeDelegate>(d);
+        return d == null ? null : new NodeImpl<NodeDelegate>(d, sessionContext);
     }
 
     String getLocalPath(String path) {
@@ -238,7 +240,7 @@ public class QueryResultImpl implements 
         if (value == null) {
             return null;
         } else {
-            return SessionContextProvider.getValueFactory(sessionDelegate).createValue(value);
+            return sessionContext.getValueFactory().createValue(value);
         }
     }
 

Modified: jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/query/qom/QueryObjectModelFactoryImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/query/qom/QueryObjectModelFactoryImpl.java?rev=1456029&r1=1456028&r2=1456029&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/query/qom/QueryObjectModelFactoryImpl.java (original)
+++ jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/query/qom/QueryObjectModelFactoryImpl.java Wed Mar 13 16:26:34 2013
@@ -47,7 +47,7 @@ import javax.jcr.query.qom.Source;
 import javax.jcr.query.qom.StaticOperand;
 import javax.jcr.query.qom.UpperCase;
 
-import org.apache.jackrabbit.oak.jcr.SessionContextProvider;
+import org.apache.jackrabbit.oak.jcr.SessionContext;
 import org.apache.jackrabbit.oak.jcr.delegate.SessionDelegate;
 import org.apache.jackrabbit.oak.jcr.query.QueryManagerImpl;
 
@@ -58,10 +58,12 @@ public class QueryObjectModelFactoryImpl
 
     private final QueryManagerImpl queryManager;
     private final SessionDelegate sessionDelegate;
+    private final SessionContext sessionContext;
 
-    public QueryObjectModelFactoryImpl(QueryManagerImpl queryManager, SessionDelegate sessionDelegate) {
+    public QueryObjectModelFactoryImpl(QueryManagerImpl queryManager, SessionDelegate sessionDelegate, SessionContext sessionContext) {
         this.queryManager = queryManager;
         this.sessionDelegate = sessionDelegate;
+        this.sessionContext = sessionContext;
     }
 
     @Override
@@ -221,7 +223,7 @@ public class QueryObjectModelFactoryImpl
     public QueryObjectModel createQuery(Source source, Constraint constraint, 
             Ordering[] orderings, Column[] columns) {
         QueryObjectModelImpl qom = new QueryObjectModelImpl(queryManager,
-                SessionContextProvider.getValueFactory(sessionDelegate),
+                sessionContext.getValueFactory(),
                 source, constraint, orderings, columns);
         qom.bindVariables();
         return qom;
@@ -231,7 +233,7 @@ public class QueryObjectModelFactoryImpl
         if (jcrName == null) {
             return null;
         }
-        return SessionContextProvider.getOakName(queryManager.getSessionDelegate(), jcrName);
+        return sessionContext.getOakName(jcrName);
     }
 
 }

Modified: jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/version/VersionHistoryImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/version/VersionHistoryImpl.java?rev=1456029&r1=1456028&r2=1456029&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/version/VersionHistoryImpl.java (original)
+++ jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/version/VersionHistoryImpl.java Wed Mar 13 16:26:34 2013
@@ -31,26 +31,25 @@ import javax.jcr.version.VersionExceptio
 import javax.jcr.version.VersionHistory;
 import javax.jcr.version.VersionIterator;
 
+import com.google.common.base.Function;
+import com.google.common.collect.Iterators;
 import org.apache.jackrabbit.commons.iterator.FrozenNodeIteratorAdapter;
 import org.apache.jackrabbit.commons.iterator.VersionIteratorAdapter;
 import org.apache.jackrabbit.oak.jcr.NodeImpl;
-import org.apache.jackrabbit.oak.jcr.SessionContextProvider;
+import org.apache.jackrabbit.oak.jcr.SessionContext;
 import org.apache.jackrabbit.oak.jcr.delegate.VersionDelegate;
 import org.apache.jackrabbit.oak.jcr.delegate.VersionHistoryDelegate;
 import org.apache.jackrabbit.oak.namepath.NamePathMapper;
 import org.apache.jackrabbit.oak.util.TODO;
 
-import com.google.common.base.Function;
-import com.google.common.collect.Iterators;
-
 /**
  * <code>VersionHistoryImpl</code>...
  */
 public class VersionHistoryImpl extends NodeImpl<VersionHistoryDelegate>
         implements VersionHistory {
 
-    public VersionHistoryImpl(VersionHistoryDelegate dlg) {
-        super(dlg);
+    public VersionHistoryImpl(VersionHistoryDelegate dlg, SessionContext sessionContext) {
+        super(dlg, sessionContext);
     }
 
     @Override
@@ -65,7 +64,7 @@ public class VersionHistoryImpl extends 
 
     @Override
     public Version getRootVersion() throws RepositoryException {
-        return new VersionImpl(dlg.getRootVersion());
+        return new VersionImpl(dlg.getRootVersion(), sessionContext);
     }
 
     @Override
@@ -79,7 +78,7 @@ public class VersionHistoryImpl extends 
                 dlg.getAllVersions(), new Function<VersionDelegate, Version>() {
             @Override
             public Version apply(VersionDelegate input) {
-                return new VersionImpl(input);
+                return new VersionImpl(input, sessionContext);
             }
         }));
     }
@@ -97,14 +96,14 @@ public class VersionHistoryImpl extends 
     @Override
     public Version getVersion(String versionName)
             throws VersionException, RepositoryException {
-        return new VersionImpl(dlg.getVersion(versionName));
+        return new VersionImpl(dlg.getVersion(versionName), sessionContext);
     }
 
     @Override
     public Version getVersionByLabel(String label)
             throws VersionException, RepositoryException {
-        String oakLabel = SessionContextProvider.getOakName(sessionDelegate, label);
-        return new VersionImpl(dlg.getVersionByLabel(oakLabel));
+        String oakLabel = sessionContext.getOakName(label);
+        return new VersionImpl(dlg.getVersionByLabel(oakLabel), sessionContext);
     }
 
     @Override
@@ -135,7 +134,7 @@ public class VersionHistoryImpl extends 
 
     @Override
     public String[] getVersionLabels() throws RepositoryException {
-        NamePathMapper mapper = SessionContextProvider.getNamePathMapper(sessionDelegate);
+        NamePathMapper mapper = sessionContext.getNamePathMapper();
         List<String> labels = new ArrayList<String>();
         for (String label : dlg.getVersionLabels()) {
             labels.add(mapper.getJcrName(label));
@@ -150,7 +149,7 @@ public class VersionHistoryImpl extends 
             throw new VersionException("Version is not contained in this " +
                     "VersionHistory");
         }
-        NamePathMapper mapper = SessionContextProvider.getNamePathMapper(sessionDelegate);
+        NamePathMapper mapper = sessionContext.getNamePathMapper();
         List<String> labels = new ArrayList<String>();
         for (String label : dlg.getVersionLabels(version.getIdentifier())) {
             labels.add(mapper.getJcrName(label));

Modified: jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/version/VersionImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/version/VersionImpl.java?rev=1456029&r1=1456028&r2=1456029&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/version/VersionImpl.java (original)
+++ jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/version/VersionImpl.java Wed Mar 13 16:26:34 2013
@@ -31,7 +31,7 @@ import javax.jcr.version.VersionHistory;
 
 import org.apache.jackrabbit.JcrConstants;
 import org.apache.jackrabbit.oak.jcr.NodeImpl;
-import org.apache.jackrabbit.oak.jcr.SessionContextProvider;
+import org.apache.jackrabbit.oak.jcr.SessionContext;
 import org.apache.jackrabbit.oak.jcr.delegate.NodeDelegate;
 import org.apache.jackrabbit.oak.jcr.delegate.PropertyDelegate;
 import org.apache.jackrabbit.oak.jcr.delegate.VersionDelegate;
@@ -44,18 +44,18 @@ import static com.google.common.base.Pre
 
 class VersionImpl extends NodeImpl<VersionDelegate> implements Version {
 
-    public VersionImpl(VersionDelegate dlg) {
-        super(dlg);
+    public VersionImpl(VersionDelegate dlg, SessionContext sessionContext) {
+        super(dlg, sessionContext);
     }
 
     @Override
     public VersionHistory getContainingHistory() throws RepositoryException {
         return new VersionHistoryImpl(
-                getVersionManagerDelegate().getVersionHistory(dlg.getParent()));
+                getVersionManagerDelegate().getVersionHistory(dlg.getParent()), sessionContext);
     }
 
     private ValueFactoryImpl getValueFactory() {
-        return SessionContextProvider.getValueFactory(sessionDelegate);
+        return sessionContext.getValueFactory();
     }
 
     @Override
@@ -85,7 +85,7 @@ class VersionImpl extends NodeImpl<Versi
         VersionManagerDelegate vMgr = getVersionManagerDelegate();
         for (Value v : getValues(p)) {
             String id = v.getString();
-            predecessors.add(new VersionImpl(vMgr.getVersionByIdentifier(id)));
+            predecessors.add(new VersionImpl(vMgr.getVersionByIdentifier(id), sessionContext));
         }
         return predecessors.toArray(new Version[predecessors.size()]);
     }
@@ -97,7 +97,7 @@ class VersionImpl extends NodeImpl<Versi
         VersionManagerDelegate vMgr = getVersionManagerDelegate();
         for (Value v : getValues(p)) {
             String id = v.getString();
-            successors.add(new VersionImpl(vMgr.getVersionByIdentifier(id)));
+            successors.add(new VersionImpl(vMgr.getVersionByIdentifier(id), sessionContext));
         }
         return successors.toArray(new Version[successors.size()]);
     }
@@ -105,7 +105,7 @@ class VersionImpl extends NodeImpl<Versi
     @Override
     public Node getFrozenNode() throws RepositoryException {
         return new NodeImpl<NodeDelegate>(
-                dlg.getChild(VersionConstants.JCR_FROZENNODE));
+                dlg.getChild(VersionConstants.JCR_FROZENNODE), sessionContext);
     }
 
     //------------------------------< internal >--------------------------------

Modified: jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/version/VersionManagerImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/version/VersionManagerImpl.java?rev=1456029&r1=1456028&r2=1456029&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/version/VersionManagerImpl.java (original)
+++ jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/version/VersionManagerImpl.java Wed Mar 13 16:26:34 2013
@@ -32,7 +32,7 @@ import javax.jcr.version.VersionHistory;
 import javax.jcr.version.VersionManager;
 
 import org.apache.jackrabbit.commons.iterator.NodeIteratorAdapter;
-import org.apache.jackrabbit.oak.jcr.SessionContextProvider;
+import org.apache.jackrabbit.oak.jcr.SessionContext;
 import org.apache.jackrabbit.oak.jcr.delegate.NodeDelegate;
 import org.apache.jackrabbit.oak.jcr.delegate.SessionDelegate;
 import org.apache.jackrabbit.oak.jcr.delegate.SessionOperation;
@@ -41,9 +41,11 @@ import org.apache.jackrabbit.oak.util.TO
 
 public class VersionManagerImpl implements VersionManager {
 
+    private final SessionContext sessionContext;
     private final VersionManagerDelegate versionManagerDelegate;
 
-    public VersionManagerImpl(SessionDelegate sessionDelegate) {
+    public VersionManagerImpl(SessionDelegate sessionDelegate, SessionContext sessionContext) {
+        this.sessionContext = sessionContext;
         this.versionManagerDelegate = VersionManagerDelegate.create(sessionDelegate);
     }
 
@@ -129,9 +131,9 @@ public class VersionManagerImpl implemen
         });
     }
 
-    private static String getOakPathOrThrowNotFound(SessionDelegate sessionDelegate, String absPath)
+    private String getOakPathOrThrowNotFound(SessionDelegate sessionDelegate, String absPath)
             throws PathNotFoundException {
-        return SessionContextProvider.getOakPathOrThrowNotFound(sessionDelegate, absPath);
+        return sessionContext.getOakPathOrThrowNotFound(absPath);
     }
 
     @Override
@@ -147,7 +149,7 @@ public class VersionManagerImpl implemen
                     throw new PathNotFoundException(absPath);
                 }
                 return new VersionHistoryImpl(
-                        versionManagerDelegate.getVersionHistory(nodeDelegate));
+                        versionManagerDelegate.getVersionHistory(nodeDelegate), sessionContext);
             }
         });
     }
@@ -164,7 +166,7 @@ public class VersionManagerImpl implemen
                     throw new PathNotFoundException(absPath);
                 }
                 return new VersionImpl(
-                        versionManagerDelegate.getBaseVersion(nodeDelegate));
+                        versionManagerDelegate.getBaseVersion(nodeDelegate), sessionContext);
             }
         });
     }
@@ -196,8 +198,8 @@ public class VersionManagerImpl implemen
     }
 
     @Nonnull
-    private static LockManager getLockManager(SessionDelegate sessionDelegate) {
-        return SessionContextProvider.getLockManager(sessionDelegate);
+    private LockManager getLockManager(SessionDelegate sessionDelegate) {
+        return sessionContext.getLockManager();
     }
 
     @Override
@@ -240,7 +242,7 @@ public class VersionManagerImpl implemen
                 if (getLockManager(sessionDelegate).isLocked(absPath)) {
                     throw new LockException("Node at " + absPath + " is locked");
                 }
-                return new VersionImpl(versionManagerDelegate.checkin(nodeDelegate));
+                return new VersionImpl(versionManagerDelegate.checkin(nodeDelegate), sessionContext);
             }
         });
     }

Modified: jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/xml/ImportHandler.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/xml/ImportHandler.java?rev=1456029&r1=1456028&r2=1456029&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/xml/ImportHandler.java (original)
+++ jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/xml/ImportHandler.java Wed Mar 13 16:26:34 2013
@@ -26,6 +26,7 @@ import javax.jcr.ValueFactory;
 
 import org.apache.jackrabbit.commons.NamespaceHelper;
 import org.apache.jackrabbit.oak.api.Root;
+import org.apache.jackrabbit.oak.jcr.SessionContext;
 import org.apache.jackrabbit.oak.jcr.delegate.SessionDelegate;
 import org.apache.jackrabbit.oak.plugins.name.NamespaceConstants;
 import org.apache.jackrabbit.oak.spi.security.authorization.AccessControlConfiguration;
@@ -68,10 +69,11 @@ public class ImportHandler extends Defau
     public ImportHandler(Node importTargetNode, Root root, Session session,
                          SessionDelegate dlg, UserConfiguration userConfig,
                          AccessControlConfiguration accessControlConfig,
-                         int uuidBehavior)
+                         int uuidBehavior, SessionContext sessionContext)
             throws RepositoryException {
         this.helper = new NamespaceHelper(session);
-        this.importer = new SessionImporter(importTargetNode, root, session, dlg, helper, userConfig, accessControlConfig, uuidBehavior);
+        this.importer = new SessionImporter(importTargetNode, root, session, dlg, helper, userConfig,
+                accessControlConfig, uuidBehavior, sessionContext);
         this.valueFactory = session.getValueFactory();
     }
 

Modified: jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/xml/SessionImporter.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/xml/SessionImporter.java?rev=1456029&r1=1456028&r2=1456029&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/xml/SessionImporter.java (original)
+++ jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/xml/SessionImporter.java Wed Mar 13 16:26:34 2013
@@ -40,7 +40,7 @@ import javax.jcr.nodetype.PropertyDefini
 import org.apache.jackrabbit.JcrConstants;
 import org.apache.jackrabbit.commons.NamespaceHelper;
 import org.apache.jackrabbit.oak.api.Root;
-import org.apache.jackrabbit.oak.jcr.SessionContextProvider;
+import org.apache.jackrabbit.oak.jcr.SessionContext;
 import org.apache.jackrabbit.oak.jcr.delegate.SessionDelegate;
 import org.apache.jackrabbit.oak.namepath.NamePathMapper;
 import org.apache.jackrabbit.oak.plugins.nodetype.EffectiveNodeTypeProvider;
@@ -66,6 +66,7 @@ public class SessionImporter implements 
     private final Node importTargetNode;
     private final Root root;
     private final int uuidBehavior;
+    private final SessionContext sessionContext;
 
     private final NamespaceHelper namespaceHelper;
     private Stack<Node> parents;
@@ -94,12 +95,14 @@ public class SessionImporter implements 
                            NamespaceHelper helper,
                            UserConfiguration userConfig,
                            AccessControlConfiguration accessControlConfig,
-                           int uuidBehavior) throws RepositoryException {
+                           int uuidBehavior,
+                           SessionContext sessionContext) throws RepositoryException {
         this.importTargetNode = importTargetNode;
         this.session = session;
         this.root = root;
         this.namespaceHelper = helper;
         this.uuidBehavior = uuidBehavior;
+        this.sessionContext = sessionContext;
 
         refTracker = new ReferenceChangeTracker();
 
@@ -109,7 +112,7 @@ public class SessionImporter implements 
         pItemImporters.clear();
 
         //TODO clarify how to provide ProtectedItemImporters
-        NamePathMapper namePathMapper = SessionContextProvider.getNamePathMapper(dlg);
+        NamePathMapper namePathMapper = sessionContext.getNamePathMapper();
         for (ProtectedItemImporter importer : userConfig.getProtectedItemImporters()) {
             if (importer.init(session, root, namePathMapper, false, uuidBehavior, refTracker)) {
                 pItemImporters.add(importer);