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 ju...@apache.org on 2013/08/12 09:29:25 UTC

svn commit: r1513063 - in /jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr: ItemImpl.java NodeImpl.java PropertyImpl.java SessionContext.java WorkspaceImpl.java version/VersionManagerImpl.java xml/ImporterImpl.java

Author: jukka
Date: Mon Aug 12 07:29:24 2013
New Revision: 1513063

URL: http://svn.apache.org/r1513063
Log:
OAK-953: Allow sub-classing of SessionImpl

Reduce the number of extra utility methods to simplify dependency tracking

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/SessionContext.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/version/VersionManagerImpl.java
    jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/xml/ImporterImpl.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=1513063&r1=1513062&r2=1513063&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 Mon Aug 12 07:29:24 2013
@@ -41,7 +41,6 @@ import javax.jcr.Value;
 import javax.jcr.ValueFactory;
 import javax.jcr.nodetype.ConstraintViolationException;
 import javax.jcr.nodetype.ItemDefinition;
-import javax.jcr.nodetype.NodeTypeManager;
 import javax.jcr.version.VersionManager;
 
 import org.apache.jackrabbit.oak.api.PropertyState;
@@ -53,8 +52,7 @@ import org.apache.jackrabbit.oak.jcr.del
 import org.apache.jackrabbit.oak.jcr.operation.ItemOperation;
 import org.apache.jackrabbit.oak.jcr.operation.SessionOperation;
 import org.apache.jackrabbit.oak.plugins.memory.MemoryPropertyBuilder;
-import org.apache.jackrabbit.oak.plugins.nodetype.DefinitionProvider;
-import org.apache.jackrabbit.oak.plugins.nodetype.EffectiveNodeTypeProvider;
+import org.apache.jackrabbit.oak.plugins.nodetype.write.ReadWriteNodeTypeManager;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -149,9 +147,8 @@ abstract class ItemImpl<T extends ItemDe
         }));
     }
 
-    @Override
-    @Nonnull
-    public Session getSession() throws RepositoryException {
+    @Override @Nonnull
+    public Session getSession() {
         return sessionContext.getSession();
     }
 
@@ -301,23 +298,13 @@ abstract class ItemImpl<T extends ItemDe
     }
 
     @Nonnull
-    NodeTypeManager getNodeTypeManager() {
-        return sessionContext.getNodeTypeManager();
-    }
-
-    @Nonnull
-    DefinitionProvider getDefinitionProvider() {
-        return sessionContext.getDefinitionProvider();
-    }
-
-    @Nonnull
-    EffectiveNodeTypeProvider getEffectiveNodeTypeProvider() {
-        return sessionContext.getEffectiveNodeTypeProvider();
+    ReadWriteNodeTypeManager getNodeTypeManager() {
+        return sessionContext.getWorkspace().getNodeTypeManager();
     }
 
     @Nonnull
     VersionManager getVersionManager() throws RepositoryException {
-        return sessionContext.getVersionManager();
+        return sessionContext.getWorkspace().getVersionManager();
     }
 
     protected PropertyState createSingleState(

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=1513063&r1=1513062&r2=1513063&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 Mon Aug 12 07:29:24 2013
@@ -40,7 +40,6 @@ import javax.jcr.PropertyType;
 import javax.jcr.RepositoryException;
 import javax.jcr.UnsupportedRepositoryOperationException;
 import javax.jcr.Value;
-import javax.jcr.Workspace;
 import javax.jcr.lock.Lock;
 import javax.jcr.nodetype.ConstraintViolationException;
 import javax.jcr.nodetype.NodeDefinition;
@@ -86,6 +85,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 import static com.google.common.base.Preconditions.checkNotNull;
+import static java.util.Arrays.asList;
 import static java.util.Collections.singleton;
 import static javax.jcr.Property.JCR_LOCK_IS_DEEP;
 import static javax.jcr.Property.JCR_LOCK_OWNER;
@@ -874,8 +874,7 @@ public class NodeImpl<T extends NodeDele
         return perform(new NodeOperation<Boolean>(dlg) {
             @Override
             public Boolean perform() throws RepositoryException {
-                return getEffectiveNodeTypeProvider().isNodeType(
-                        node.getTree(), oakName);
+                return getNodeTypeManager().isNodeType(node.getTree(), oakName);
             }
         });
     }
@@ -949,7 +948,7 @@ public class NodeImpl<T extends NodeDele
                 return sessionContext.getAccessManager().hasPermissions(
                     node.getTree(), prop, Permissions.NODE_TYPE_MANAGEMENT)
                         && !node.isProtected()
-                        && sessionContext.getVersionManager().isCheckedOut(toJcrPath(dlg.getPath())) // TODO: avoid nested calls
+                        && getVersionManager().isCheckedOut(toJcrPath(dlg.getPath())) // TODO: avoid nested calls
                         && node.canAddMixin(oakTypeName);
             }
         });
@@ -963,9 +962,9 @@ public class NodeImpl<T extends NodeDele
             public NodeDefinition perform() throws RepositoryException {
                 NodeDelegate parent = node.getParent();
                 if (parent == null) {
-                    return getDefinitionProvider().getRootDefinition();
+                    return getNodeTypeManager().getRootDefinition();
                 } else {
-                    return getDefinitionProvider().getDefinition(
+                    return getNodeTypeManager().getDefinition(
                             parent.getTree(), node.getTree());
                 }
             }
@@ -1261,7 +1260,7 @@ public class NodeImpl<T extends NodeDele
     //------------------------------------------------------------< internal >---
 
     private EffectiveNodeType getEffectiveNodeType() throws RepositoryException {
-        return getEffectiveNodeTypeProvider().getEffectiveNodeType(dlg.getTree());
+        return getNodeTypeManager().getEffectiveNodeType(dlg.getTree());
     }
 
     private Iterator<Node> nodeIterator(Iterator<NodeDelegate> childNodes) {
@@ -1286,14 +1285,14 @@ public class NodeImpl<T extends NodeDele
                 });
     }
 
-    private void checkValidWorkspace(String workspaceName) throws RepositoryException {
-        Workspace workspace = sessionContext.getWorkspace();
-        for (String wn : workspace.getAccessibleWorkspaceNames()) {
-            if (wn.equals(workspaceName)) {
-                return;
-            }
+    private void checkValidWorkspace(String workspaceName)
+            throws RepositoryException {
+        String[] workspaceNames =
+                getSession().getWorkspace().getAccessibleWorkspaceNames();
+        if (!asList(workspaceNames).contains(workspaceName)) {
+            throw new NoSuchWorkspaceException(
+                    "Workspace " + workspaceName + " does not exist");
         }
-        throw new NoSuchWorkspaceException(workspaceName + " does not exist.");
     }
 
     private void internalSetPrimaryType(final String nodeTypeName) throws RepositoryException {

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=1513063&r1=1513062&r2=1513063&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 Mon Aug 12 07:29:24 2013
@@ -386,7 +386,7 @@ public class PropertyImpl extends ItemIm
         return perform(new PropertyOperation<PropertyDefinition>(dlg) {
             @Override
             public PropertyDefinition perform() throws RepositoryException {
-                return getDefinitionProvider().getDefinition(
+                return getNodeTypeManager().getDefinition(
                         property.getParent().getTree(),
                         property.getPropertyState(), true);
             }

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=1513063&r1=1513062&r2=1513063&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 Mon Aug 12 07:29:24 2013
@@ -33,11 +33,8 @@ import javax.jcr.Session;
 import javax.jcr.UnsupportedRepositoryOperationException;
 import javax.jcr.ValueFactory;
 import javax.jcr.Workspace;
-import javax.jcr.lock.LockManager;
-import javax.jcr.nodetype.NodeTypeManager;
 import javax.jcr.observation.ObservationManager;
 import javax.jcr.security.AccessControlManager;
-import javax.jcr.version.VersionManager;
 
 import org.apache.jackrabbit.api.security.authorization.PrivilegeManager;
 import org.apache.jackrabbit.api.security.principal.PrincipalManager;
@@ -56,8 +53,6 @@ import org.apache.jackrabbit.oak.namepat
 import org.apache.jackrabbit.oak.namepath.NamePathMapper;
 import org.apache.jackrabbit.oak.namepath.NamePathMapperImpl;
 import org.apache.jackrabbit.oak.plugins.name.Namespaces;
-import org.apache.jackrabbit.oak.plugins.nodetype.DefinitionProvider;
-import org.apache.jackrabbit.oak.plugins.nodetype.EffectiveNodeTypeProvider;
 import org.apache.jackrabbit.oak.plugins.nodetype.ReadOnlyNodeTypeManager;
 import org.apache.jackrabbit.oak.plugins.observation.Observable;
 import org.apache.jackrabbit.oak.plugins.value.ValueFactoryImpl;
@@ -164,26 +159,6 @@ public class SessionContext implements N
         return new WorkspaceImpl(this);
     }
 
-    public LockManager getLockManager() {
-        return getWorkspace().getLockManager();
-    }
-
-    public NodeTypeManager getNodeTypeManager() {
-        return getWorkspace().getNodeTypeManager();
-    }
-
-    public VersionManager getVersionManager() throws RepositoryException {
-        return getWorkspace().getVersionManager();
-    }
-
-    public EffectiveNodeTypeProvider getEffectiveNodeTypeProvider() {
-        return getWorkspace().getReadWriteNodeTypeManager();
-    }
-
-    public DefinitionProvider getDefinitionProvider() {
-        return getWorkspace().getReadWriteNodeTypeManager();
-    }
-
     @Nonnull
     public Repository getRepository() {
         return repository;

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=1513063&r1=1513062&r2=1513063&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 Mon Aug 12 07:29:24 2013
@@ -27,7 +27,6 @@ import javax.jcr.Session;
 import javax.jcr.UnsupportedRepositoryOperationException;
 import javax.jcr.ValueFactory;
 import javax.jcr.lock.LockManager;
-import javax.jcr.nodetype.NodeTypeManager;
 import javax.jcr.observation.ObservationManager;
 import javax.jcr.query.QueryManager;
 import javax.jcr.version.Version;
@@ -214,7 +213,7 @@ public class WorkspaceImpl implements Ja
     }
 
     @Override
-    public NodeTypeManager getNodeTypeManager() {
+    public ReadWriteNodeTypeManager getNodeTypeManager() {
         return nodeTypeManager;
     }
 
@@ -317,12 +316,6 @@ public class WorkspaceImpl implements Ja
         return sessionContext.getPrivilegeManager();
     }
 
-    //-----------------------------------------------------------< internal >---
-
-    ReadWriteNodeTypeManager getReadWriteNodeTypeManager() {
-        return nodeTypeManager;
-    }
-
     //------------------------------------------------------------< private >---
 
     private void ensureIsAlive() throws RepositoryException {

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=1513063&r1=1513062&r2=1513063&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 Mon Aug 12 07:29:24 2013
@@ -31,7 +31,6 @@ import javax.jcr.Property;
 import javax.jcr.RepositoryException;
 import javax.jcr.UnsupportedRepositoryOperationException;
 import javax.jcr.lock.LockException;
-import javax.jcr.lock.LockManager;
 import javax.jcr.nodetype.NodeType;
 import javax.jcr.util.TraversingItemVisitor;
 import javax.jcr.version.Version;
@@ -324,11 +323,6 @@ public class VersionManagerImpl implemen
         return v;
     }
 
-    @Nonnull
-    private LockManager getLockManager() {
-        return sessionContext.getLockManager();
-    }
-
     @Override
     public void checkout(final String absPath) throws RepositoryException {
         final SessionDelegate sessionDelegate = sessionContext.getSessionDelegate();
@@ -381,7 +375,8 @@ public class VersionManagerImpl implemen
     }
 
     private void checkNotLocked(String absPath) throws RepositoryException {
-        if (getLockManager().isLocked(absPath)) {
+        // TODO: avoid nested calls
+        if (sessionContext.getWorkspace().getLockManager().isLocked(absPath)) {
             throw new LockException("Node at " + absPath + " is locked");
         }
     }

Modified: jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/xml/ImporterImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/xml/ImporterImpl.java?rev=1513063&r1=1513062&r2=1513063&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/xml/ImporterImpl.java (original)
+++ jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/xml/ImporterImpl.java Mon Aug 12 07:29:24 2013
@@ -130,18 +130,18 @@ public class ImporterImpl implements Imp
         }
 
         // TODO: review usage of write-root and object obtained from session-context (OAK-931)
-        VersionManager vMgr = sessionContext.getVersionManager();
+        VersionManager vMgr = sessionContext.getWorkspace().getVersionManager();
         if (!vMgr.isCheckedOut(absPath)) {
             throw new VersionException("Target node is checked in.");
         }
-        if (sessionContext.getLockManager().isLocked(absPath)) {
+        if (sessionContext.getWorkspace().getLockManager().isLocked(absPath)) {
             throw new LockException("Target node is locked.");
         }
         ntTypesRoot = root.getTree(NODE_TYPES_PATH);
         accessManager = sessionContext.getAccessManager();
         idManager = new IdentifierManager(root);
-        effectiveNodeTypeProvider = sessionContext.getEffectiveNodeTypeProvider();
-        definitionProvider = sessionContext.getDefinitionProvider();
+        effectiveNodeTypeProvider = sessionContext.getWorkspace().getNodeTypeManager();
+        definitionProvider = sessionContext.getWorkspace().getNodeTypeManager();
         // TODO: end
 
         refTracker = new ReferenceChangeTracker();