You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jackrabbit.apache.org by st...@apache.org on 2011/07/15 23:18:35 UTC

svn commit: r1147320 - in /jackrabbit/trunk/jackrabbit-core/src: main/java/org/apache/jackrabbit/core/SessionImpl.java test/java/org/apache/jackrabbit/core/integration/SessionImplTest.java

Author: stefan
Date: Fri Jul 15 21:18:34 2011
New Revision: 1147320

URL: http://svn.apache.org/viewvc?rev=1147320&view=rev
Log:
JCR-3014: Identifier paths for inexistent items throw exception

Modified:
    jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/SessionImpl.java
    jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/integration/SessionImplTest.java

Modified: jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/SessionImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/SessionImpl.java?rev=1147320&r1=1147319&r2=1147320&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/SessionImpl.java (original)
+++ jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/SessionImpl.java Fri Jul 15 21:18:34 2011
@@ -790,6 +790,15 @@ public class SessionImpl extends Abstrac
      */
     @Override
     public boolean itemExists(String absPath) throws RepositoryException {
+        if (absPath != null && absPath.startsWith("[") && absPath.endsWith("]")) {
+            // an identifier segment has been specified (JCR-3014)
+            try {
+                NodeId id = NodeId.valueOf(absPath.substring(1, absPath.length() - 1));
+                return getItemManager().itemExists(id);
+            } catch (IllegalArgumentException e) {
+                throw new MalformedPathException(absPath);
+            }
+        }
         return perform(SessionItemOperation.itemExists(absPath));
     }
 
@@ -1111,6 +1120,15 @@ public class SessionImpl extends Abstrac
      */
     @Override
     public boolean nodeExists(String absPath) throws RepositoryException {
+        if (absPath != null && absPath.startsWith("[") && absPath.endsWith("]")) {
+            // an identifier segment has been specified (JCR-3014)
+            try {
+                NodeId id = NodeId.valueOf(absPath.substring(1, absPath.length() - 1));
+                return getItemManager().itemExists(id);
+            } catch (IllegalArgumentException e) {
+                throw new MalformedPathException(absPath);
+            }
+        }
         return perform(SessionItemOperation.nodeExists(absPath));
     }
 

Modified: jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/integration/SessionImplTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/integration/SessionImplTest.java?rev=1147320&r1=1147319&r2=1147320&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/integration/SessionImplTest.java (original)
+++ jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/integration/SessionImplTest.java Fri Jul 15 21:18:34 2011
@@ -27,6 +27,7 @@ import javax.security.auth.Subject;
 
 import org.apache.jackrabbit.core.RepositoryImpl;
 import org.apache.jackrabbit.core.SessionImpl;
+import org.apache.jackrabbit.core.id.NodeId;
 import org.apache.jackrabbit.core.security.principal.PrincipalImpl;
 import org.apache.jackrabbit.test.AbstractJCRTest;
 import org.apache.jackrabbit.test.NotExecutableException;
@@ -162,4 +163,15 @@ public class SessionImplTest extends Abs
             // success
         }
     }
+
+    /**
+     * JCR-3014 Identifier paths for inexistent items throw exception
+     *
+     * @see <a href="https://issues.apache.org/jira/browse/JCR-3014">JCR-3014</a>
+     */
+    public void testCheckNonExistingItem() throws Exception {
+        String dummyPath = "[" + NodeId.randomId() + "]";
+        assertFalse(superuser.itemExists(dummyPath));
+        assertFalse(superuser.nodeExists(dummyPath));
+    }
 }