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 an...@apache.org on 2012/08/02 16:38:55 UTC

svn commit: r1368490 - in /jackrabbit/oak/trunk/oak-jcr: pom.xml src/main/java/org/apache/jackrabbit/oak/jcr/SessionImpl.java

Author: angela
Date: Thu Aug  2 14:38:54 2012
New Revision: 1368490

URL: http://svn.apache.org/viewvc?rev=1368490&view=rev
Log:
OAK-218 : Session methods rely on accessibility of root node (WIP)

Modified:
    jackrabbit/oak/trunk/oak-jcr/pom.xml
    jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/SessionImpl.java

Modified: jackrabbit/oak/trunk/oak-jcr/pom.xml
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-jcr/pom.xml?rev=1368490&r1=1368489&r2=1368490&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-jcr/pom.xml (original)
+++ jackrabbit/oak/trunk/oak-jcr/pom.xml Thu Aug  2 14:38:54 2012
@@ -33,6 +33,7 @@
 
   <properties>
     <known.issues>
+org.apache.jackrabbit.test.api.PathTest#testGetItem<!-- OAK-23 -->
 org.apache.jackrabbit.test.api.SessionTest#testMoveConstraintViolationExceptionSrc<!--OAK-132-->
 org.apache.jackrabbit.test.api.SessionTest#testMoveConstraintViolationExceptionDest<!--OAK-132-->
 org.apache.jackrabbit.test.api.SessionTest#testSaveConstraintViolationException<!--OAK-66-->

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=1368490&r1=1368489&r2=1368490&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 Aug  2 14:38:54 2012
@@ -29,6 +29,7 @@ import javax.jcr.Item;
 import javax.jcr.ItemNotFoundException;
 import javax.jcr.NamespaceException;
 import javax.jcr.Node;
+import javax.jcr.PathNotFoundException;
 import javax.jcr.Property;
 import javax.jcr.Repository;
 import javax.jcr.RepositoryException;
@@ -160,26 +161,50 @@ public class SessionImpl extends Abstrac
 
     @Override
     public Item getItem(String absPath) throws RepositoryException {
-        // FIXME OAK-218
-        return super.getItem(absPath);
+        if (nodeExists(absPath)) {
+            return getNode(absPath);
+        } else {
+            return getProperty(absPath);
+        }
     }
 
     @Override
     public boolean itemExists(String absPath) throws RepositoryException {
-        // FIXME OAK-218
-        return super.itemExists(absPath);
+        return nodeExists(absPath) || propertyExists(absPath);
     }
 
     @Override
-    public Node getNode(String absPath) throws RepositoryException {
-        // FIXME OAK-218
-        return super.getNode(absPath);
+    public Node getNode(final String absPath) throws RepositoryException {
+        ensureIsAlive();
+
+        // FIXME: deal with identifier path (OAK-23)
+
+        return dlg.perform(new SessionOperation<NodeImpl>() {
+            @Override
+            public NodeImpl perform() throws RepositoryException {
+                String oakPath = dlg.getOakPathOrThrow(absPath);
+                NodeDelegate d = dlg.getNode(oakPath);
+                if (d == null) {
+                    throw new PathNotFoundException("Node with path " + absPath + " does not exist.");
+                }
+                return new NodeImpl(d);
+            }
+        });
     }
 
     @Override
-    public boolean nodeExists(String absPath) throws RepositoryException {
-        // FIXME OAK-218
-        return super.nodeExists(absPath);
+    public boolean nodeExists(final String absPath) throws RepositoryException {
+        ensureIsAlive();
+
+        // FIXME: deal with identifier path (OAK-23)
+
+        return dlg.perform(new SessionOperation<Boolean>() {
+            @Override
+            public Boolean perform() throws RepositoryException {
+                String oakPath = dlg.getOakPathOrThrow(absPath);
+                return dlg.getNode(oakPath) != null;
+            }
+        });
     }
 
     @Override