You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jackrabbit.apache.org by th...@apache.org on 2011/09/02 16:18:08 UTC
svn commit: r1164542 - in /jackrabbit/sandbox/microkernel/src:
main/java/org/apache/jackrabbit/mk/api/
main/java/org/apache/jackrabbit/mk/blobs/
test/java/org/apache/jackrabbit/mk/blobs/
Author: thomasm
Date: Fri Sep 2 14:18:00 2011
New Revision: 1164542
URL: http://svn.apache.org/viewvc?rev=1164542&view=rev
Log:
Blob store: document and test that the stream is closed.
Modified:
jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/api/MicroKernel.java
jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/blobs/AbstractBlobStore.java
jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/blobs/FileBlobStore.java
jackrabbit/sandbox/microkernel/src/test/java/org/apache/jackrabbit/mk/blobs/DbBlobStoreTest.java
Modified: jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/api/MicroKernel.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/api/MicroKernel.java?rev=1164542&r1=1164541&r2=1164542&view=diff
==============================================================================
--- jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/api/MicroKernel.java (original)
+++ jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/api/MicroKernel.java Fri Sep 2 14:18:00 2011
@@ -298,9 +298,11 @@ public interface MicroKernel {
/**
* Stores the content of the given stream and returns an associated
* identifier for later retrieval.
- * <p/>
+ * <p>
* If identical stream content has been stored previously, then the existing
* identifier will be returned instead of storing a redundant copy.
+ * <p>
+ * The stream is closed by this method.
*
* @param in InputStream providing the blob content
* @return blob identifier associated with the given content
Modified: jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/blobs/AbstractBlobStore.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/blobs/AbstractBlobStore.java?rev=1164542&r1=1164541&r2=1164542&view=diff
==============================================================================
--- jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/blobs/AbstractBlobStore.java (original)
+++ jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/blobs/AbstractBlobStore.java Fri Sep 2 14:18:00 2011
@@ -138,6 +138,7 @@ public abstract class AbstractBlobStore
idStream.reset();
convertBlobToId(new ByteArrayInputStream(idBlock), idStream, level + 1, totalLength);
}
+ in.close();
}
protected abstract void storeBlock(byte[] blockId, int level, byte[] data) throws Exception;
Modified: jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/blobs/FileBlobStore.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/blobs/FileBlobStore.java?rev=1164542&r1=1164541&r2=1164542&view=diff
==============================================================================
--- jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/blobs/FileBlobStore.java (original)
+++ jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/blobs/FileBlobStore.java Fri Sep 2 14:18:00 2011
@@ -54,10 +54,9 @@ public class FileBlobStore extends Abstr
}
private File getFile(byte[] blockId) {
- String id = StringUtils.convertBytesToHex(blockId) + ".dat";
- File dir = new File(baseDir, id.substring(0, 2));
- File f = new File(dir, id);
- return f;
+ String id = StringUtils.convertBytesToHex(blockId);
+ String sub = id.substring(id.length() - 2);
+ return new File(new File(baseDir, sub), id + ".dat");
}
@Override
Modified: jackrabbit/sandbox/microkernel/src/test/java/org/apache/jackrabbit/mk/blobs/DbBlobStoreTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/microkernel/src/test/java/org/apache/jackrabbit/mk/blobs/DbBlobStoreTest.java?rev=1164542&r1=1164541&r2=1164542&view=diff
==============================================================================
--- jackrabbit/sandbox/microkernel/src/test/java/org/apache/jackrabbit/mk/blobs/DbBlobStoreTest.java (original)
+++ jackrabbit/sandbox/microkernel/src/test/java/org/apache/jackrabbit/mk/blobs/DbBlobStoreTest.java Fri Sep 2 14:18:00 2011
@@ -27,9 +27,11 @@ import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
+import java.io.InputStream;
import java.sql.Connection;
import java.util.ArrayList;
import java.util.Random;
+import java.util.concurrent.atomic.AtomicBoolean;
/**
* Tests the DbBlobStore implementation.
@@ -70,6 +72,20 @@ public class DbBlobStoreTest extends Tes
assertEquals(0, store.getBlobLength(""));
}
+ public void testCloseStream() throws Exception {
+ final AtomicBoolean closed = new AtomicBoolean();
+ InputStream in = new InputStream() {
+ public void close() {
+ closed.set(true);
+ }
+ public int read() throws IOException {
+ return -1;
+ }
+ };
+ store.writeBlob(in);
+ assertTrue(closed.get());
+ }
+
public void testIllegalIdentifier() throws Exception {
byte[] data = new byte[1];
try {