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 2012/05/03 23:23:04 UTC

svn commit: r1333630 - in /jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr: ItemImpl.java NodeImpl.java PropertyImpl.java SessionImpl.java WorkspaceImpl.java

Author: mduerig
Date: Thu May  3 21:23:04 2012
New Revision: 1333630

URL: http://svn.apache.org/viewvc?rev=1333630&view=rev
Log:
OAK-84: Delegates for Session, Node, Property and Item
- clean up: leverage SessionDelegate where possible 

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/SessionImpl.java
    jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/WorkspaceImpl.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=1333630&r1=1333629&r2=1333630&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 Thu May  3 21:23:04 2012
@@ -134,7 +134,8 @@ abstract class ItemImpl implements Item 
         getSession().refresh(keepChanges);
     }
 
-    //--------------------------------------------------------------------------
+    //------------------------------------------------------------< internal >---
+
     /**
      * Performs a sanity check on this item and the associated session.
      *
@@ -175,6 +176,9 @@ abstract class ItemImpl implements Item 
         return sessionDelegate.getValueFactory();
     }
 
+    String toOakName(String jcrName) {
+        return sessionDelegate.getNamePathMapper().getOakName(jcrName);
+    }
     
     String toOakPath(String jcrPath) throws RepositoryException {
         try {
@@ -185,6 +189,10 @@ abstract class ItemImpl implements Item 
         }
     }
 
+    String toJcrName(String oakName) {
+        return sessionDelegate.getNamePathMapper().getJcrName(oakName);
+    }
+
     String toJcrPath(String oakPath) {
         return sessionDelegate.getNamePathMapper().toJcrPath(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=1333630&r1=1333629&r2=1333630&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 Thu May  3 21:23:04 2012
@@ -158,7 +158,7 @@ public class NodeImpl extends ItemImpl i
         }
 
         // TODO: figure out the right place for this check
-        NodeTypeManager ntm = sessionDelegate.getSession().getWorkspace().getNodeTypeManager();
+        NodeTypeManager ntm = sessionDelegate.getNodeTypeManager();
         NodeType nt = ntm.getNodeType(primaryNodeTypeName); // throws on not found
         if (nt.isAbstract() || nt.isMixin()) {
             throw new ConstraintViolationException();
@@ -568,7 +568,7 @@ public class NodeImpl extends ItemImpl i
         checkStatus();
 
         // TODO: check if transient changes to mixin-types are reflected here
-        NodeTypeManager ntMgr = getSession().getWorkspace().getNodeTypeManager();
+        NodeTypeManager ntMgr = sessionDelegate.getNodeTypeManager();
         String primaryNtName = getProperty(Property.JCR_PRIMARY_TYPE).getString();
 
         return ntMgr.getNodeType(primaryNtName);
@@ -583,7 +583,7 @@ public class NodeImpl extends ItemImpl i
 
         // TODO: check if transient changes to mixin-types are reflected here
         if (hasProperty(Property.JCR_MIXIN_TYPES)) {
-            NodeTypeManager ntMgr = getSession().getWorkspace().getNodeTypeManager();
+            NodeTypeManager ntMgr = sessionDelegate.getNodeTypeManager();
             Value[] mixinNames = getProperty(Property.JCR_MIXIN_TYPES).getValues();
             NodeType[] mixinTypes = new NodeType[mixinNames.length];
             for (int i = 0; i < mixinNames.length; i++) {
@@ -600,10 +600,10 @@ public class NodeImpl extends ItemImpl i
         checkStatus();
 
         // TODO: might be expanded, need a better way for this
-        String jcrName = sessionDelegate.getNamePathMapper().getJcrName(sessionDelegate.getNamePathMapper().getOakName(nodeTypeName));
+        String jcrName = toJcrName(toOakName(nodeTypeName));
 
         // TODO: figure out the right place for this check
-        NodeTypeManager ntm = sessionDelegate.getSession().getWorkspace().getNodeTypeManager();
+        NodeTypeManager ntm = sessionDelegate.getNodeTypeManager();
         NodeType ntToCheck = ntm.getNodeType(jcrName); // throws on not found
         String nameToCheck = ntToCheck.getName();
 
@@ -949,18 +949,14 @@ public class NodeImpl extends ItemImpl i
     private NodeImpl getNodeOrNull(String relJcrPath)
             throws RepositoryException {
 
-        String relOakPath = toOakPath(relJcrPath);
-
-        NodeDelegate nd = dlg.getNodeOrNull(relOakPath);
+        NodeDelegate nd = dlg.getNodeOrNull(toOakPath(relJcrPath));
         return nd == null ? null : new NodeImpl(nd);
     }
 
     private PropertyImpl getPropertyOrNull(String relJcrPath)
             throws RepositoryException {
 
-        String relOakPath = toOakPath(relJcrPath);
-
-        PropertyDelegate pd = dlg.getPropertyOrNull(relOakPath);
+        PropertyDelegate pd = dlg.getPropertyOrNull(toOakPath(relJcrPath));
         return pd == null ? null : new PropertyImpl(pd);
     }
 

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=1333630&r1=1333629&r2=1333630&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 Thu May  3 21:23:04 2012
@@ -505,6 +505,8 @@ public class PropertyImpl extends ItemIm
         return dlg.getPropertyState().isArray();
     }
 
+    //------------------------------------------------------------< private >---
+
     /**
      * Return the length of the specified JCR value object.
      *
@@ -580,7 +582,7 @@ public class PropertyImpl extends ItemIm
           throw new ValueFormatException("Attempt to set multiple values to single valued property.");
       }
       if (values == null) {
-          remove();
+          dlg.remove();
       } else {
           Value[] targetValues = ValueHelper.convert(values, requiredType, sessionDelegate.getValueFactory());
           dlg.setValues(ValueConverter.toCoreValues(targetValues, sessionDelegate));

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=1333630&r1=1333629&r2=1333630&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 Thu May  3 21:23:04 2012
@@ -125,7 +125,7 @@ public class SessionImpl extends Abstrac
     @Override
     public void move(String srcAbsPath, String destAbsPath) throws RepositoryException {
         ensureIsAlive();
-        dlg.move(dlg.getNamePathMapper().toOakPath(srcAbsPath), dlg.getNamePathMapper().toOakPath(destAbsPath), true);
+        dlg.move(toOakPath(srcAbsPath), toOakPath(destAbsPath), true);
     }
 
     //------------------------------------------------------------< state >---
@@ -165,7 +165,7 @@ public class SessionImpl extends Abstrac
 
     @Override
     public ContentHandler getImportContentHandler(String parentAbsPath, int uuidBehavior) throws RepositoryException {
-        return internalGetImportContentHandler(dlg.getNamePathMapper().toOakPath(parentAbsPath), uuidBehavior);
+        return internalGetImportContentHandler(toOakPath(parentAbsPath), uuidBehavior);
     }
 
     private ContentHandler internalGetImportContentHandler(String parentAbsPath, int uuidBehavior) throws RepositoryException {
@@ -215,7 +215,7 @@ public class SessionImpl extends Abstrac
 
     @Override
     public boolean hasPermission(String absPath, String actions) throws RepositoryException {
-        return internalHasPermission(dlg.getNamePathMapper().toOakPath(absPath), actions);
+        return internalHasPermission(toOakPath(absPath), actions);
     }
 
     private boolean internalHasPermission(String absPath, String actions) throws RepositoryException {
@@ -285,4 +285,13 @@ public class SessionImpl extends Abstrac
         }
     }
 
+    private String toOakPath(String jcrPath) throws RepositoryException {
+        try {
+            return dlg.getNamePathMapper().toOakPath(jcrPath);
+        } catch (IllegalArgumentException ex) {
+            // TODO we shouldn't have to catch this one
+            throw new RepositoryException(ex);
+        }
+    }
+
 }
\ No newline at end of file

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=1333630&r1=1333629&r2=1333630&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 Thu May  3 21:23:04 2012
@@ -51,12 +51,9 @@ public class WorkspaceImpl implements Ja
     private static final Logger log = LoggerFactory.getLogger(WorkspaceImpl.class);
 
     private final SessionDelegate sessionDelegate;
-
-    private QueryManagerImpl queryManager;
-
     private final NamespaceRegistry nsRegistry;
-
     private final NodeTypeManager nodeTypeManager;
+    private final QueryManagerImpl queryManager;
 
     public WorkspaceImpl(SessionDelegate sessionDelegate, NamespaceRegistry nsRegistry)
             throws RepositoryException {
@@ -64,6 +61,7 @@ public class WorkspaceImpl implements Ja
         this.sessionDelegate = sessionDelegate;
         this.nsRegistry = nsRegistry;
         this.nodeTypeManager = new NodeTypeManagerImpl(sessionDelegate.getNamePathMapper());
+        this.queryManager = new QueryManagerImpl(this, sessionDelegate);
     }
 
     //----------------------------------------------------------< Workspace >---
@@ -93,7 +91,7 @@ public class WorkspaceImpl implements Ja
         }
 
         // FIXME: convert to oak paths
-        sessionDelegate.copy(srcAbsPath, destAbsPath);
+        sessionDelegate.copy(toOakPath(srcAbsPath), toOakPath(destAbsPath));
     }
 
     @SuppressWarnings("deprecation")
@@ -111,7 +109,7 @@ public class WorkspaceImpl implements Ja
         ensureSupportedOption(Repository.LEVEL_2_SUPPORTED);
         ensureIsAlive();
 
-        sessionDelegate.move(srcAbsPath, destAbsPath, false);
+        sessionDelegate.move(toOakPath(srcAbsPath), toOakPath(destAbsPath), false);
     }
 
     @Override
@@ -129,9 +127,6 @@ public class WorkspaceImpl implements Ja
     @Override
     public QueryManager getQueryManager() throws RepositoryException {
         ensureIsAlive();
-        if (queryManager == null) {
-            queryManager = new QueryManagerImpl(this, sessionDelegate);
-        }
         return queryManager;
     }
 
@@ -320,5 +315,14 @@ public class WorkspaceImpl implements Ja
         }
     }
 
+    private String toOakPath(String jcrPath) throws RepositoryException {
+        try {
+            return sessionDelegate.getNamePathMapper().toOakPath(jcrPath);
+        } catch (IllegalArgumentException ex) {
+            // TODO we shouldn't have to catch this one
+            throw new RepositoryException(ex);
+        }
+    }
+
 
 }
\ No newline at end of file