Author: tripod
Date: Tue Nov 26 12:58:15 2013
New Revision: 1545641

URL: http://svn.apache.org/r1545641
Log:
OAK-1225 Session.nodeExists("/foo/bar[2]") must not throw PathNotFoundException

Modified:
    
jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/session/SessionImpl.java
    
jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/RepositoryTest.java

Modified: 
jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/session/SessionImpl.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/session/SessionImpl.java?rev=1545641&r1=1545640&r2=1545641&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/session/SessionImpl.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/session/SessionImpl.java
 Tue Nov 26 12:58:15 2013
@@ -161,7 +161,11 @@ public class SessionImpl implements Jack
         return perform(new ReadOperation<Node>() {
             @Override
             public Node perform() throws RepositoryException {
-                return 
NodeImpl.createNodeOrNull(sd.getNode(getOakPathOrThrow(absPath)), 
sessionContext);
+                try {
+                    return 
NodeImpl.createNodeOrNull(sd.getNode(getOakPathOrThrow(absPath)), 
sessionContext);
+                } catch (PathNotFoundException e) {
+                    return null;
+                }
             }
         });
     }
@@ -179,7 +183,12 @@ public class SessionImpl implements Jack
         if (absPath.equals("/")) {
             return null;
         } else {
-            final String oakPath = getOakPathOrThrow(absPath);
+            final String oakPath;
+            try {
+                oakPath = getOakPathOrThrow(absPath);
+            } catch (PathNotFoundException e) {
+                return null;
+            }
             return perform(new ReadOperation<Property>() {
                 @Override
                 public Property perform() throws RepositoryException {

Modified: 
jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/RepositoryTest.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/RepositoryTest.java?rev=1545641&r1=1545640&r2=1545641&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/RepositoryTest.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/RepositoryTest.java
 Tue Nov 26 12:58:15 2013
@@ -299,6 +299,17 @@ public class RepositoryTest extends Abst
             // expected.
         }
 
+        try {
+            getProperty("/foo[1]/bar[2]/jcr:primaryType");
+            fail("retrieving wrong SNS index should throw 
PathNotFoundException");
+        } catch (PathNotFoundException e) {
+            // expected.
+        }
+
+        assertTrue(getAdminSession().nodeExists("/foo[1]/bar[1]"));
+        
assertTrue(getAdminSession().propertyExists("/foo[1]/bar[1]/jcr:primaryType"));
+        assertFalse(getAdminSession().nodeExists("/foo[1]/bar[2]"));
+        
assertFalse(getAdminSession().propertyExists("/foo[1]/bar[2]/jcr:primaryType"));
     }
 
     @Test(expected = RepositoryException.class)


Reply via email to