Author: chetanm
Date: Wed Mar 26 07:58:48 2014
New Revision: 1581722

URL: http://svn.apache.org/r1581722
Log:
OAK-1604 - Support for signed references in Blob (WIP)

Update the DocumentNodeStore to distinguish between reference and blobId

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

Modified: 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/blob/BlobStoreBlob.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/blob/BlobStoreBlob.java?rev=1581722&r1=1581721&r2=1581722&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/blob/BlobStoreBlob.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/blob/BlobStoreBlob.java
 Wed Mar 26 07:58:48 2014
@@ -33,48 +33,48 @@ import org.apache.jackrabbit.oak.api.Blo
 public class BlobStoreBlob implements Blob {
     
     private final BlobStore blobStore;
-    private final String id;
+    private final String blobId;
     
-    public BlobStoreBlob(BlobStore blobStore, String id) {
+    public BlobStoreBlob(BlobStore blobStore, String blobId) {
         this.blobStore = blobStore;
-        this.id = id;
+        this.blobId = blobId;
     }
 
     @Override
     @Nonnull
     public InputStream getNewStream() {
         try {
-            return blobStore.getInputStream(id);
+            return blobStore.getInputStream(blobId);
         } catch (IOException e) {
             throw new RuntimeException("Error occurred while obtaining " +
-                    "InputStream for blobId ["+id+"]",e);
+                    "InputStream for blobId ["+ blobId +"]",e);
         }
     }
 
     @Override
     public long length() {
         try {
-            return blobStore.getBlobLength(id);
-        } catch (Exception e) {
-            throw new IllegalArgumentException("Invalid blob id: " + id, e);
+            return blobStore.getBlobLength(blobId);
+        } catch (IOException e) {
+            throw new IllegalArgumentException("Invalid blob id: " + blobId, 
e);
         }
     }
 
     @Override @CheckForNull
     public String getReference() {
-        return id;
+        return blobStore.getReference(blobId);
     }
 
     //------------------------------------------------------------< Object >--
 
     @Override
     public String toString() {
-        return id;
+        return blobId;
     }
     
     @Override
     public int hashCode() {
-        return id.hashCode();
+        return blobId.hashCode();
     }
 
     @Override
@@ -86,7 +86,7 @@ public class BlobStoreBlob implements Bl
             BlobStoreBlob b = (BlobStoreBlob) other;
             // theoretically, the data could be the same  
             // even if the id is different
-            return b.id.equals(id);
+            return b.blobId.equals(blobId);
         }
         return false;
     }

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=1581722&r1=1581721&r2=1581722&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
 Wed Mar 26 07:58:48 2014
@@ -1209,27 +1209,23 @@ public final class DocumentNodeStore
 
     @Override
     public Blob createBlob(InputStream inputStream) throws IOException {
-        String id;
-        try {
-            id = blobStore.writeBlob(inputStream);
-        } catch (IOException e) {
-            throw e;
-        } catch (Exception e) {
-            throw new IOException("Could not write blob", e);
-        }
-        return new BlobStoreBlob(blobStore, id);
+        return new BlobStoreBlob(blobStore, blobStore.writeBlob(inputStream));
     }
 
     /**
      * Returns the {@link Blob} with the given blobId.
      *
-     * @param blobId the blobId of the blob.
+     * @param reference the reference of the blob.
      * @return the blob.
      */
     @Override
-    @Nonnull
-    public Blob getBlob(String blobId) {
-        return new BlobStoreBlob(blobStore, blobId);
+    public Blob getBlob(String reference) {
+        String blobId = blobStore.getBlobId(reference);
+        if(blobId != null){
+            return new BlobStoreBlob(blobStore, blobId);
+        }
+        LOG.debug("No blobId found matching reference [{}]", reference);
+        return null;
     }
 
     @Nonnull


Reply via email to