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 re...@apache.org on 2012/04/26 11:54:59 UTC

svn commit: r1330737 - in /jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr: NodeImpl.java PropertyDelegate.java PropertyImpl.java SessionContext.java SessionImpl.java security/user/UserManagerImpl.java

Author: reschke
Date: Thu Apr 26 09:54:59 2012
New Revision: 1330737

URL: http://svn.apache.org/viewvc?rev=1330737&view=rev
Log:
OAK-61: split NodeImpl into NodeImpl and NodeDelegate

Modified:
    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/PropertyDelegate.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/SessionImpl.java
    jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/security/user/UserManagerImpl.java

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=1330737&r1=1330736&r2=1330737&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 Apr 26 09:54:59 2012
@@ -58,6 +58,7 @@ import java.io.InputStream;
 import java.math.BigDecimal;
 import java.util.Calendar;
 import java.util.Iterator;
+import java.util.List;
 
 import static org.apache.jackrabbit.oak.util.Iterators.filter;
 
@@ -71,13 +72,24 @@ public class NodeImpl extends ItemImpl i
      */
     private static final Logger log = LoggerFactory.getLogger(NodeImpl.class);
 
-    private Tree tree;
-
+    // private Tree tree;
+    private final NodeDelegate dlg;
+    
     NodeImpl(SessionContext<SessionImpl> sessionContext, Tree tree) {
         super(sessionContext);
-        this.tree = tree;
+        this.dlg = new NodeDelegate(sessionContext, tree);
+    }
+
+    NodeImpl(NodeDelegate dlg) {
+        super(dlg.getSessionContext());
+        this.dlg = dlg;
     }
 
+    // TODO
+    public String getOakPath() {
+        return dlg.getPath();
+    }
+    
     //---------------------------------------------------------------< Item >---
     /**
      * @see javax.jcr.Item#isNode()
@@ -92,15 +104,17 @@ public class NodeImpl extends ItemImpl i
      */
     @Override
     public String getName() throws RepositoryException {
-        return name();
+        String oakName = dlg.getName();
+        // special case name of root node
+        return oakName.isEmpty() ? "" : toJcrPath(dlg.getName());
     }
 
     /**
-     * @see javax.jcr.Item#getPath()
+     * @see javax.jcr.Property#getPath()
      */
     @Override
     public String getPath() throws RepositoryException {
-        return path();
+        return toJcrPath(dlg.getPath());
     }
 
     /**
@@ -108,11 +122,7 @@ public class NodeImpl extends ItemImpl i
      */
     @Override
     public Node getParent() throws RepositoryException {
-        if (getTree().getParent() == null) {
-            throw new ItemNotFoundException("Root has no parent");
-        }
-
-        return new NodeImpl(sessionContext, getTree().getParent());
+        return new NodeImpl(dlg.getParent());
     }
 
     /**
@@ -120,16 +130,7 @@ public class NodeImpl extends ItemImpl i
      */
     @Override
     public Item getAncestor(int depth) throws RepositoryException {
-        int current = getDepth();
-        if (depth < 0 || depth > current) {
-            throw new ItemNotFoundException("ancestor at depth " + depth + " does not exist");
-        }
-        Tree ancestor = getTree();
-        while (depth < current) {
-            ancestor = ancestor.getParent();
-            current -= 1;
-        }
-        return new NodeImpl(sessionContext, ancestor);
+        return new NodeImpl(dlg.getAncestor(depth));
     }
 
     /**
@@ -137,7 +138,7 @@ public class NodeImpl extends ItemImpl i
      */
     @Override
     public int getDepth() throws RepositoryException {
-        return Paths.getDepth(getPath());
+        return dlg.getDepth();
     }
 
     /**
@@ -145,7 +146,7 @@ public class NodeImpl extends ItemImpl i
      */
     @Override
     public boolean isNew() {
-        return getTree().getParent().getChildStatus(name()) == Status.NEW;
+        return dlg.getNodeStatus() == Status.NEW;
     }
 
     /**
@@ -153,7 +154,7 @@ public class NodeImpl extends ItemImpl i
      */
     @Override
     public boolean isModified() {
-        return getTree().getParent().getChildStatus(name()) == Status.MODIFIED;
+        return dlg.getNodeStatus() == Status.MODIFIED;
     }
 
     /**
@@ -161,7 +162,7 @@ public class NodeImpl extends ItemImpl i
      */
     @Override
     public void remove() throws RepositoryException {
-        getTree().getParent().removeChild(getName());
+        dlg.remove();
     }
 
     /**
@@ -178,18 +179,10 @@ public class NodeImpl extends ItemImpl i
      * @see Node#addNode(String)
      */
     @Override
-    public Node addNode(String relPath) throws RepositoryException {
+    public Node addNode(String relJcrPath) throws RepositoryException {
         checkStatus();
-
-        String parentPath = Paths.concat(path(), Paths.getParentPath(relPath));
-        Tree parentState = getBranch().getTree(parentPath);
-        if (parentState == null) {
-            throw new PathNotFoundException(relPath);
-        }
-
-        String name = Paths.getName(relPath);
-        parentState.addChild(name);
-        return new NodeImpl(sessionContext, parentState.getChild(name));
+        NodeDelegate added = dlg.addNode(toOakPath(relJcrPath));
+        return new NodeImpl(added);
     }
 
     @Override
@@ -203,8 +196,7 @@ public class NodeImpl extends ItemImpl i
     @Override
     public void orderBefore(String srcChildRelPath, String destChildRelPath) throws RepositoryException {
         checkStatus();
-
-        // TODO
+        throw new UnsupportedRepositoryOperationException("TODO: ordering not supported");
     }
 
     /**
@@ -223,13 +215,16 @@ public class NodeImpl extends ItemImpl i
      * @see Node#setProperty(String, javax.jcr.Value, int)
      */
     @Override
-    public Property setProperty(String name, Value value, int type) throws RepositoryException {
+    public Property setProperty(String jcrName, Value value, int type)
+            throws RepositoryException {
         checkStatus();
 
-        int targetType = getTargetType(value,  type);
-        Value targetValue = ValueHelper.convert(value, targetType, getValueFactory());
-        getState().setProperty(name, ValueConverter.toCoreValue(targetValue, sessionContext));
-        return getProperty(name);
+        int targetType = getTargetType(value, type);
+        Value targetValue = ValueHelper.convert(value, targetType,
+                getValueFactory());
+        CoreValue oakValue = ValueConverter.toCoreValue(targetValue,
+                sessionContext);
+        return new PropertyImpl(dlg.setProperty(toOakPath(jcrName), oakValue));
     }
 
     /**
@@ -247,13 +242,16 @@ public class NodeImpl extends ItemImpl i
     }
 
     @Override
-    public Property setProperty(String name, Value[] values, int type) throws RepositoryException {
+    public Property setProperty(String jcrName, Value[] values, int type)
+            throws RepositoryException {
         checkStatus();
 
         int targetType = getTargetType(values, type);
-        Value[] targetValues = ValueHelper.convert(values, targetType, getValueFactory());
-        getState().setProperty(name, ValueConverter.toCoreValues(targetValues, sessionContext));
-        return getProperty(name);
+        Value[] targetValue = ValueHelper.convert(values, targetType,
+                getValueFactory());
+        List<CoreValue> oakValue = ValueConverter.toCoreValues(targetValue,
+                sessionContext);
+        return new PropertyImpl(dlg.setProperty(toOakPath(jcrName), oakValue));
     }
 
     /**
@@ -384,19 +382,21 @@ public class NodeImpl extends ItemImpl i
     public NodeIterator getNodes() throws RepositoryException {
         checkStatus();
 
-        Iterable<Tree> children = getTree().getChildren();
-        return new NodeIteratorAdapter(nodeIterator(children.iterator()));
+        Iterator<NodeDelegate> children = dlg.getChildren();
+        return new NodeIteratorAdapter(nodeIterator(children));
     }
 
     @Override
-    public NodeIterator getNodes(final String namePattern) throws RepositoryException {
+    public NodeIterator getNodes(final String namePattern)
+            throws RepositoryException {
         checkStatus();
 
-        Iterator<Tree> children = filter(getTree().getChildren().iterator(),
-                new Predicate<Tree>() {
+        Iterator<NodeDelegate> children = filter(dlg.getChildren(),
+                new Predicate<NodeDelegate>() {
                     @Override
-                    public boolean evaluate(Tree state) {
-                        return ItemNameMatcher.matches(state.getName(), namePattern);
+                    public boolean evaluate(NodeDelegate state) {
+                        return ItemNameMatcher.matches(
+                                toJcrPath(state.getName()), namePattern);
                     }
                 });
 
@@ -407,11 +407,11 @@ public class NodeImpl extends ItemImpl i
     public NodeIterator getNodes(final String[] nameGlobs) throws RepositoryException {
         checkStatus();
 
-        Iterator<Tree> children = filter(getTree().getChildren().iterator(),
-                new Predicate<Tree>() {
+        Iterator<NodeDelegate> children = filter(dlg.getChildren(),
+                new Predicate<NodeDelegate>() {
                     @Override
-                    public boolean evaluate(Tree state) {
-                        return ItemNameMatcher.matches(state.getName(), nameGlobs);
+                    public boolean evaluate(NodeDelegate state) {
+                        return ItemNameMatcher.matches(toJcrPath(state.getName()), nameGlobs);
                     }
                 });
 
@@ -434,19 +434,20 @@ public class NodeImpl extends ItemImpl i
     public PropertyIterator getProperties() throws RepositoryException {
         checkStatus();
 
-        Iterable<PropertyState> properties = getTree().getProperties();
-        return new PropertyIteratorAdapter(propertyIterator(properties.iterator()));
+        Iterator<PropertyDelegate> properties = dlg.getProperties();
+        return new PropertyIteratorAdapter(propertyIterator(properties));
     }
 
     @Override
     public PropertyIterator getProperties(final String namePattern) throws RepositoryException {
         checkStatus();
 
-        Iterator<PropertyState> properties = filter(getTree().getProperties().iterator(),
-                new Predicate<PropertyState>() {
+        Iterator<PropertyDelegate> properties = filter(dlg.getProperties(),
+                new Predicate<PropertyDelegate>() {
                     @Override
-                    public boolean evaluate(PropertyState entry) {
-                        return ItemNameMatcher.matches(entry.getName(), namePattern);
+                    public boolean evaluate(PropertyDelegate entry) {
+                        return ItemNameMatcher.matches(
+                                toJcrPath(entry.getName()), namePattern);
                     }
                 });
 
@@ -455,11 +456,12 @@ public class NodeImpl extends ItemImpl i
 
     @Override
     public PropertyIterator getProperties(final String[] nameGlobs) throws RepositoryException {
-        Iterator<PropertyState> propertyNames = filter(getTree().getProperties().iterator(),
-                new Predicate<PropertyState>() {
+        Iterator<PropertyDelegate> propertyNames = filter(dlg.getProperties(),
+                new Predicate<PropertyDelegate>() {
                     @Override
-                    public boolean evaluate(PropertyState entry) {
-                        return ItemNameMatcher.matches(entry.getName(), nameGlobs);
+                    public boolean evaluate(PropertyDelegate entry) {
+                        return ItemNameMatcher.matches(
+                                toJcrPath(entry.getName()), nameGlobs);
                     }
                 });
 
@@ -507,13 +509,13 @@ public class NodeImpl extends ItemImpl i
             return getProperty(JcrConstants.JCR_UUID).getString();
         } else {
             // TODO
-            return path();
+            return getPath();
         }
     }
 
     @Override
     public int getIndex() throws RepositoryException {
-        // as long as we don not support same name siblings, index always is 1
+        // as long as we do not support same name siblings, index always is 1
         return 1;
     }
 
@@ -563,14 +565,14 @@ public class NodeImpl extends ItemImpl i
     public boolean hasNodes() throws RepositoryException {
         checkStatus();
 
-        return getTree().getChildrenCount() != 0;
+        return dlg.getChildrenCount() != 0;
     }
 
     @Override
     public boolean hasProperties() throws RepositoryException {
         checkStatus();
 
-        return getTree().getPropertyCount() != 0;
+        return dlg.getPropertyCount() != 0;
     }
 
     /**
@@ -632,7 +634,7 @@ public class NodeImpl extends ItemImpl i
         checkStatus();
 
         CoreValue cv = ValueConverter.toCoreValue(nodeTypeName, PropertyType.NAME, sessionContext);
-        getState().setProperty(JcrConstants.JCR_PRIMARYTYPE, cv);
+        dlg.setProperty(toOakPath(JcrConstants.JCR_PRIMARYTYPE), cv);
     }
 
     @Override
@@ -852,79 +854,51 @@ public class NodeImpl extends ItemImpl i
 
     }
 
-    //------------------------------------------------------------< package >---
-
-    String name() {
-        return getTree().getName();
-    }
-
-    String path() {
-        return '/' + getTree().getPath();
-    }
-
     //------------------------------------------------------------< private >---
 
-    /**
-     * @return The node state associated with this node
-     */
-    private Tree getState() {
-        return getTree();
-    }
-
-    private Root getBranch() {
-        return sessionContext.getBranch();
-    }
 
-    private synchronized Tree getTree() {
-        return tree = getBranch().getTree(tree.getPath());
-    }
-
-    private Iterator<Node> nodeIterator(Iterator<Tree> childNodeStates) {
-        return Iterators.map(childNodeStates, new Function1<Tree, Node>() {
+    private Iterator<Node> nodeIterator(Iterator<NodeDelegate> childNodes) {
+        return Iterators.map(childNodes, new Function1<NodeDelegate, Node>() {
             @Override
-            public Node apply(Tree state) {
-                return new NodeImpl(sessionContext, state);
+            public Node apply(NodeDelegate state) {
+                return new NodeImpl(state);
             }
         });
     }
 
-    private Iterator<Property> propertyIterator(Iterator<PropertyState> properties) {
-        return Iterators.map(properties, new Function1<PropertyState, Property>() {
-            @Override
-            public Property apply(PropertyState propertyState) {
-                return new PropertyImpl(sessionContext, getTree(), propertyState);
-            }
-        });
+    private Iterator<Property> propertyIterator(
+            Iterator<PropertyDelegate> properties) {
+        return Iterators.map(properties,
+                new Function1<PropertyDelegate, Property>() {
+                    @Override
+                    public Property apply(PropertyDelegate propertyDelegate) {
+                        return new PropertyImpl(propertyDelegate);
+                    }
+                });
     }
 
-    private NodeImpl getNodeOrNull(String relPath) {
-        String absPath = Paths.concat(path(), relPath);
-        Tree tree = getBranch().getTree(absPath);
-        return tree == null
-            ? null
-            : new NodeImpl(sessionContext, tree);
+    private NodeImpl getNodeOrNull(String relJcrPath)
+            throws RepositoryException {
+
+        String relOakPath = toOakPath(relJcrPath);
+
+        NodeDelegate nd = dlg.getNodeOrNull(relOakPath);
+        return nd == null ? null : new NodeImpl(nd);
     }
-    
-    private PropertyImpl getPropertyOrNull(String relJcrPath) throws RepositoryException {
-        
+
+    private PropertyImpl getPropertyOrNull(String relJcrPath)
+            throws RepositoryException {
+
         String relOakPath = toOakPath(relJcrPath);
-        
-        String absPath = Paths.concat(path(), Paths.getParentPath(relOakPath));
-        Tree parent = getBranch().getTree(absPath);
-        if (parent == null) {
-            return null;
-        }
 
-        String name = Paths.getName(relOakPath);
-        PropertyState propertyState = parent.getProperty(name);
-        return propertyState == null
-            ? null
-            : new PropertyImpl(sessionContext, parent, propertyState);
+        PropertyDelegate pd = dlg.getPropertyOrNull(relOakPath);
+        return pd == null ? null : new PropertyImpl(pd);
     }
 
     private int getTargetType(Value value, int type) {
         if (value == null) {
-            return PropertyType.STRING; // TODO: review again. rather use property definition
+            return PropertyType.STRING; // TODO: review again. rather use
+                                        // property definition
         } else {
             return value.getType();
         }
@@ -932,9 +906,11 @@ public class NodeImpl extends ItemImpl i
 
     private int getTargetType(Value[] values, int type) {
         if (values == null || values.length == 0) {
-            return PropertyType.STRING; // TODO: review again. rather use property definition
+            return PropertyType.STRING; // TODO: review again. rather use
+                                        // property definition
         } else {
-            // TODO deal with values array containing a null value in the first position
+            // TODO deal with values array containing a null value in the first
+            // position
             return getTargetType(values[0], type);
         }
     }

Modified: jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/PropertyDelegate.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/PropertyDelegate.java?rev=1330737&r1=1330736&r2=1330737&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/PropertyDelegate.java (original)
+++ jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/PropertyDelegate.java Thu Apr 26 09:54:59 2012
@@ -79,6 +79,10 @@ public class PropertyDelegate {
         return '/' + getParentContentTree().getPath() + '/' + getName();
     }
 
+    SessionContext<SessionImpl> getSessionContext() {
+        return sessionContext;
+    }
+
     //------------------------------------------------------------< private >---
 
     private Root getBranch() {

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=1330737&r1=1330736&r2=1330737&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 Apr 26 09:54:59 2012
@@ -53,13 +53,19 @@ public class PropertyImpl extends ItemIm
      */
     private static final Logger log = LoggerFactory.getLogger(PropertyImpl.class);
 
-    private final PropertyDelegate pd;
+    private final PropertyDelegate dlg;
     
     PropertyImpl(SessionContext<SessionImpl> sessionContext, Tree parent,
             PropertyState propertyState) {
 
         super(sessionContext);
-        this.pd = new PropertyDelegate(sessionContext, parent, propertyState);
+        this.dlg = new PropertyDelegate(sessionContext, parent, propertyState);
+    }
+
+    PropertyImpl(PropertyDelegate dlg) {
+
+        super(dlg.getSessionContext());
+        this.dlg = dlg;
     }
 
     //---------------------------------------------------------------< Item >---
@@ -76,7 +82,7 @@ public class PropertyImpl extends ItemIm
      */
     @Override
     public String getName() throws RepositoryException {
-        return toJcrPath(pd.getName());
+        return toJcrPath(dlg.getName());
     }
 
     /**
@@ -84,7 +90,7 @@ public class PropertyImpl extends ItemIm
      */
     @Override
     public String getPath() throws RepositoryException {
-        return toJcrPath(pd.getPath());
+        return toJcrPath(dlg.getPath());
     }
 
     /**
@@ -92,7 +98,7 @@ public class PropertyImpl extends ItemIm
      */
     @Override
     public Node getParent() throws RepositoryException {
-        return new NodeImpl(sessionContext, pd.getParentContentTree());
+        return new NodeImpl(sessionContext, dlg.getParentContentTree());
     }
 
     /**
@@ -120,7 +126,7 @@ public class PropertyImpl extends ItemIm
      */
     @Override
     public boolean isNew() {
-        return pd.getPropertyStatus() == Status.NEW;
+        return dlg.getPropertyStatus() == Status.NEW;
     }
 
     /**
@@ -128,7 +134,7 @@ public class PropertyImpl extends ItemIm
      */
     @Override
     public boolean isModified() {
-        return pd.getPropertyStatus() == Status.MODIFIED;
+        return dlg.getPropertyStatus() == Status.MODIFIED;
     }
 
     /**
@@ -136,7 +142,7 @@ public class PropertyImpl extends ItemIm
      */
     @Override
     public void remove() throws RepositoryException {
-        pd.remove();
+        dlg.remove();
     }
 
     /**
@@ -497,7 +503,7 @@ public class PropertyImpl extends ItemIm
 
     @Override
     public PropertyDefinition getDefinition() throws RepositoryException {
-        return pd.getDefinition();
+        return dlg.getDefinition();
     }
 
     /**
@@ -520,7 +526,7 @@ public class PropertyImpl extends ItemIm
 
     @Override
     public boolean isMultiple() throws RepositoryException {
-        return pd.getPropertyState().isArray();
+        return dlg.getPropertyState().isArray();
     }
 
     /**
@@ -560,7 +566,7 @@ public class PropertyImpl extends ItemIm
    }
 
     private PropertyState getPropertyState() {
-        return pd.getPropertyState();
+        return dlg.getPropertyState();
     }
 
     /**
@@ -574,10 +580,10 @@ public class PropertyImpl extends ItemIm
        assert(requiredType != PropertyType.UNDEFINED);
        
        if (value == null) {
-           pd.remove();
+           dlg.remove();
        } else {
            Value targetValue = ValueHelper.convert(value, requiredType, sessionContext.getValueFactory());
-           pd.setValue(ValueConverter.toCoreValue(targetValue, sessionContext));
+           dlg.setValue(ValueConverter.toCoreValue(targetValue, sessionContext));
        }
    }
 
@@ -595,7 +601,7 @@ public class PropertyImpl extends ItemIm
           remove();
       } else {
           Value[] targetValues = ValueHelper.convert(values, requiredType, sessionContext.getValueFactory());
-          pd.setValues(ValueConverter.toCoreValues(targetValues, sessionContext));
+          dlg.setValues(ValueConverter.toCoreValues(targetValues, sessionContext));
       }
   }
 

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=1330737&r1=1330736&r2=1330737&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 Thu Apr 26 09:54:59 2012
@@ -42,7 +42,7 @@ public interface SessionContext<T extend
     NodeTypeManager getNodeTypeManager() throws RepositoryException;
     VersionManager getVersionManager() throws RepositoryException;
     Root getBranch();
-    Tree getContentTree(NodeImpl node);
+    Tree getContentTree(String path);
     String toOakPath(String jcrPath) throws RepositoryException;
     String toJcrPath(String oakPath);
 }

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=1330737&r1=1330736&r2=1330737&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 Apr 26 09:54:59 2012
@@ -524,8 +524,8 @@ public class SessionImpl extends Abstrac
         }
 
         @Override
-        public Tree getContentTree(NodeImpl node) {
-            return root.getTree(node.path());
+        public Tree getContentTree(String oakPath) {
+            return root.getTree(oakPath);
         }
 
         @Override

Modified: jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/security/user/UserManagerImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/security/user/UserManagerImpl.java?rev=1330737&r1=1330736&r2=1330737&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/security/user/UserManagerImpl.java (original)
+++ jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/security/user/UserManagerImpl.java Thu Apr 26 09:54:59 2012
@@ -328,16 +328,16 @@ public class UserManagerImpl implements 
 
     void setInternalProperty(NodeImpl userNode, String name, String value, int type) throws RepositoryException {
         CoreValue cv = ValueConverter.toCoreValue(value, type, sessionContext);
-        sessionContext.getContentTree(userNode).setProperty(name, cv);
+        sessionContext.getContentTree(userNode.getOakPath()).setProperty(name, cv);
     }
 
     void setInternalProperty(NodeImpl userNode, String name, String[] values, int type) throws RepositoryException {
         List<CoreValue> cvs = ValueConverter.toCoreValues(values, type, sessionContext);
-        sessionContext.getContentTree(userNode).setProperty(name, cvs);
+        sessionContext.getContentTree(userNode.getOakPath()).setProperty(name, cvs);
     }
 
     void removeInternalProperty(NodeImpl userNode, String name) {
-        sessionContext.getContentTree(userNode).removeProperty(name);
+        sessionContext.getContentTree(userNode.getOakPath()).removeProperty(name);
     }
 
     private Authorizable getAuthorizable(NodeImpl node) throws RepositoryException {