Author: mreutegg
Date: Tue Aug 25 13:11:53 2015
New Revision: 1697669

URL: http://svn.apache.org/r1697669
Log:
OAK-3247: DocumentNodeStore.retrieve() should not throw IllegalArgumentException

Modified:
    
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentNodeStore.java
    
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/DocumentNodeStoreTest.java

Modified: 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentNodeStore.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentNodeStore.java?rev=1697669&r1=1697668&r2=1697669&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentNodeStore.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentNodeStore.java
 Tue Aug 25 13:11:53 2015
@@ -1598,7 +1598,13 @@ public final class DocumentNodeStore
     @CheckForNull
     @Override
     public NodeState retrieve(@Nonnull String checkpoint) {
-        Revision r = Revision.fromString(checkpoint);
+        Revision r;
+        try {
+            r = Revision.fromString(checkpoint);
+        } catch (IllegalArgumentException e) {
+            LOG.warn("Malformed checkpoint reference: {}", checkpoint);
+            return null;
+        }
         SortedMap<Revision, Info> checkpoints = 
this.checkpoints.getCheckpoints();
         if (checkpoints != null && checkpoints.containsKey(r)) {
             return getRoot(r);

Modified: 
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/DocumentNodeStoreTest.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/DocumentNodeStoreTest.java?rev=1697669&r1=1697668&r2=1697669&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/DocumentNodeStoreTest.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/DocumentNodeStoreTest.java
 Tue Aug 25 13:11:53 2015
@@ -43,6 +43,7 @@ import java.util.Map;
 import java.util.Set;
 import java.util.SortedSet;
 import java.util.TreeSet;
+import java.util.UUID;
 import java.util.concurrent.ArrayBlockingQueue;
 import java.util.concurrent.BlockingQueue;
 import java.util.concurrent.ConcurrentSkipListMap;
@@ -1374,6 +1375,18 @@ public class DocumentNodeStoreTest {
         }
     }
 
+    @Test
+    public void retrieve() throws Exception {
+        DocumentNodeStore store = new DocumentMK.Builder().getNodeStore();
+        String ref = store.checkpoint(60000);
+        assertNotNull(store.retrieve(ref));
+        ref = Revision.newRevision(1).toString();
+        assertNull(store.retrieve(ref));
+        ref = UUID.randomUUID().toString();
+        assertNull(store.retrieve(ref));
+        store.dispose();
+    }
+
     /**
      * Utility class that eases creating single cluster id merge conflicts. 
The two methods:
      * <ul>


Reply via email to