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 2019/12/02 20:17:42 UTC

svn commit: r1870731 - in /jackrabbit/oak/branches/1.6: ./ oak-jcr/ oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/session/SessionImpl.java oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/RepositoryTest.java

Author: reschke
Date: Mon Dec  2 20:17:41 2019
New Revision: 1870731

URL: http://svn.apache.org/viewvc?rev=1870731&view=rev
Log:
OAK-8583: getNodeByIdentifier may fail with RuntimeException (merged r1866039 and r1866041 into 1.6)

Modified:
    jackrabbit/oak/branches/1.6/   (props changed)
    jackrabbit/oak/branches/1.6/oak-jcr/   (props changed)
    jackrabbit/oak/branches/1.6/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/session/SessionImpl.java
    jackrabbit/oak/branches/1.6/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/RepositoryTest.java

Propchange: jackrabbit/oak/branches/1.6/
------------------------------------------------------------------------------
  Merged /jackrabbit/oak/trunk:r1866039,1866041

Propchange: jackrabbit/oak/branches/1.6/oak-jcr/
------------------------------------------------------------------------------
  Merged /jackrabbit/oak/trunk/oak-jcr:r1866039,1866041

Modified: jackrabbit/oak/branches/1.6/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/session/SessionImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/branches/1.6/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/session/SessionImpl.java?rev=1870731&r1=1870730&r2=1870731&view=diff
==============================================================================
--- jackrabbit/oak/branches/1.6/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/session/SessionImpl.java (original)
+++ jackrabbit/oak/branches/1.6/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/session/SessionImpl.java Mon Dec  2 20:17:41 2019
@@ -319,11 +319,15 @@ public class SessionImpl implements Jack
             @Nonnull
             @Override
             public Node perform() throws RepositoryException {
-                NodeDelegate nd = sd.getNodeByIdentifier(id);
-                if (nd == null) {
-                    throw new ItemNotFoundException("Node with id " + id + " does not exist.");
+                try {
+                    NodeDelegate nd = sd.getNodeByIdentifier(id);
+                    if (nd == null) {
+                        throw new ItemNotFoundException("Node with id " + id + " does not exist.");
+                    }
+                    return NodeImpl.createNode(nd, sessionContext);
+                } catch (IllegalArgumentException ex) {
+                    throw new RepositoryException(ex);
                 }
-                return NodeImpl.createNode(nd, sessionContext);
             }
         });
     }

Modified: jackrabbit/oak/branches/1.6/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/RepositoryTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/branches/1.6/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/RepositoryTest.java?rev=1870731&r1=1870730&r2=1870731&view=diff
==============================================================================
--- jackrabbit/oak/branches/1.6/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/RepositoryTest.java (original)
+++ jackrabbit/oak/branches/1.6/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/RepositoryTest.java Mon Dec  2 20:17:41 2019
@@ -50,6 +50,7 @@ import javax.jcr.GuestCredentials;
 import javax.jcr.InvalidItemStateException;
 import javax.jcr.Item;
 import javax.jcr.ItemExistsException;
+import javax.jcr.ItemNotFoundException;
 import javax.jcr.NamespaceException;
 import javax.jcr.NamespaceRegistry;
 import javax.jcr.NoSuchWorkspaceException;
@@ -376,6 +377,26 @@ public class RepositoryTest extends Abst
     }
 
     @Test
+    public void getNodeByIncorrectIdentifier() throws RepositoryException {
+        Node node = getNode("/foo");
+        String id = node.getIdentifier() + "foofoofoo";
+        try {
+            getAdminSession().getNodeByIdentifier(id);
+            fail("should not get here");
+        } catch (ItemNotFoundException expected) {
+        }
+    }
+
+    @Test
+    public void getNodeByEmptyIdentifier() throws RepositoryException {
+        try {
+            getAdminSession().getNodeByIdentifier("");
+            fail("should not get here");
+        } catch (RepositoryException expected) {
+        }
+    }
+
+    @Test
     public void getNodeByUUID() throws RepositoryException {
         Node node = getNode("/foo").addNode("boo");
         node.addMixin(JcrConstants.MIX_REFERENCEABLE);