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