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/07 10:51:34 UTC
svn commit: r1166064 - in /jackrabbit/sandbox/microkernel/src:
main/java/org/apache/jackrabbit/mk/blobs/
main/java/org/apache/jackrabbit/mk/util/
test/java/org/apache/jackrabbit/mk/blobs/
Author: thomasm
Date: Wed Sep 7 08:51:33 2011
New Revision: 1166064
URL: http://svn.apache.org/viewvc?rev=1166064&view=rev
Log:
Use MicroKernelException where possible.
Modified:
jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/blobs/AbstractBlobStore.java
jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/util/ExceptionFactory.java
jackrabbit/sandbox/microkernel/src/test/java/org/apache/jackrabbit/mk/blobs/DataStoreTest.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/blobs/AbstractBlobStore.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/blobs/AbstractBlobStore.java?rev=1166064&r1=1166063&r2=1166064&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 Wed Sep 7 08:51:33 2011
@@ -16,6 +16,7 @@
*/
package org.apache.jackrabbit.mk.blobs;
+import org.apache.jackrabbit.mk.util.ExceptionFactory;
import org.apache.jackrabbit.mk.util.IOUtils;
import org.apache.jackrabbit.mk.util.StringUtils;
import org.h2.util.SmallLRUCache;
@@ -82,12 +83,16 @@ public abstract class AbstractBlobStore
this.blockSize = x;
}
- public String writeBlob(InputStream in) throws Exception {
- ByteArrayOutputStream idStream = new ByteArrayOutputStream();
- convertBlobToId(in, idStream, 0, 0);
- byte[] id = idStream.toByteArray();
- // System.out.println(" write blob " + StringUtils.convertBytesToHex(id));
- return StringUtils.convertBytesToHex(id);
+ public String writeBlob(InputStream in) {
+ try {
+ ByteArrayOutputStream idStream = new ByteArrayOutputStream();
+ convertBlobToId(in, idStream, 0, 0);
+ byte[] id = idStream.toByteArray();
+ // System.out.println(" write blob " + StringUtils.convertBytesToHex(id));
+ return StringUtils.convertBytesToHex(id);
+ } catch (Exception e) {
+ throw ExceptionFactory.convert(e);
+ }
}
private void convertBlobToId(InputStream in, ByteArrayOutputStream idStream, int level, long totalLength) throws Exception {
@@ -143,50 +148,54 @@ public abstract class AbstractBlobStore
protected abstract void storeBlock(byte[] blockId, int level, byte[] data) throws Exception;
- public int readBlob(String blobId, long pos, byte[] buff, int off, int length) throws Exception {
- byte[] id = StringUtils.convertHexToBytes(blobId);
- ByteArrayInputStream idStream = new ByteArrayInputStream(id);
- while (true) {
- int type = idStream.read();
- if (type == -1) {
- return -1;
- } else if (type == TYPE_DATA) {
- int len = IOUtils.readVarInt(idStream);
- if (pos < len) {
- IOUtils.skipFully(idStream, (int) pos);
- len -= pos;
- if (length < len) {
- len = length;
+ public int readBlob(String blobId, long pos, byte[] buff, int off, int length) {
+ try {
+ byte[] id = StringUtils.convertHexToBytes(blobId);
+ ByteArrayInputStream idStream = new ByteArrayInputStream(id);
+ while (true) {
+ int type = idStream.read();
+ if (type == -1) {
+ return -1;
+ } else if (type == TYPE_DATA) {
+ int len = IOUtils.readVarInt(idStream);
+ if (pos < len) {
+ IOUtils.skipFully(idStream, (int) pos);
+ len -= pos;
+ if (length < len) {
+ len = length;
+ }
+ IOUtils.readFully(idStream, buff, off, len);
+ return len;
}
- IOUtils.readFully(idStream, buff, off, len);
- return len;
- }
- IOUtils.skipFully(idStream, len);
- pos -= len;
- } else if (type == TYPE_HASH) {
- int level = IOUtils.readVarInt(idStream);
- long totalLength = IOUtils.readVarLong(idStream);
- if (level > 0) {
- // block length (ignored)
- IOUtils.readVarLong(idStream);
- }
- byte[] digest = new byte[IOUtils.readVarInt(idStream)];
- IOUtils.readFully(idStream, digest, 0, digest.length);
- if (pos >= totalLength) {
- pos -= totalLength;
- } else {
- byte[] block = readBlock(digest);
+ IOUtils.skipFully(idStream, len);
+ pos -= len;
+ } else if (type == TYPE_HASH) {
+ int level = IOUtils.readVarInt(idStream);
+ long totalLength = IOUtils.readVarLong(idStream);
if (level > 0) {
- idStream = new ByteArrayInputStream(block);
+ // block length (ignored)
+ IOUtils.readVarLong(idStream);
+ }
+ byte[] digest = new byte[IOUtils.readVarInt(idStream)];
+ IOUtils.readFully(idStream, digest, 0, digest.length);
+ if (pos >= totalLength) {
+ pos -= totalLength;
} else {
- ByteArrayInputStream in = new ByteArrayInputStream(block);
- IOUtils.skipFully(in, (int) pos);
- return IOUtils.readFully(in, buff, off, length);
+ byte[] block = readBlock(digest);
+ if (level > 0) {
+ idStream = new ByteArrayInputStream(block);
+ } else {
+ ByteArrayInputStream in = new ByteArrayInputStream(block);
+ IOUtils.skipFully(in, (int) pos);
+ return IOUtils.readFully(in, buff, off, length);
+ }
}
+ } else {
+ throw new IOException("Unknown blobs id type " + type + " for blob " + blobId);
}
- } else {
- throw new IOException("Unknown blobs id type " + type + " for blob " + blobId);
}
+ } catch (Exception e) {
+ throw ExceptionFactory.convert(e);
}
}
@@ -202,33 +211,37 @@ public abstract class AbstractBlobStore
protected abstract byte[] readBlockFromBackend(byte[] blockId) throws Exception;
- public long getBlobLength(String blobId) throws IOException {
- byte[] id = StringUtils.convertHexToBytes(blobId);
- ByteArrayInputStream idStream = new ByteArrayInputStream(id);
- long totalLength = 0;
- while (true) {
- int type = idStream.read();
- if (type == -1) {
- break;
- }
- if (type == TYPE_DATA) {
- int len = IOUtils.readVarInt(idStream);
- IOUtils.skipFully(idStream, len);
- totalLength += len;
- } else if (type == TYPE_HASH) {
- int level = IOUtils.readVarInt(idStream);
- totalLength += IOUtils.readVarLong(idStream);
- if (level > 0) {
- // block length (ignored)
- IOUtils.readVarLong(idStream);
+ public long getBlobLength(String blobId) {
+ try {
+ byte[] id = StringUtils.convertHexToBytes(blobId);
+ ByteArrayInputStream idStream = new ByteArrayInputStream(id);
+ long totalLength = 0;
+ while (true) {
+ int type = idStream.read();
+ if (type == -1) {
+ break;
+ }
+ if (type == TYPE_DATA) {
+ int len = IOUtils.readVarInt(idStream);
+ IOUtils.skipFully(idStream, len);
+ totalLength += len;
+ } else if (type == TYPE_HASH) {
+ int level = IOUtils.readVarInt(idStream);
+ totalLength += IOUtils.readVarLong(idStream);
+ if (level > 0) {
+ // block length (ignored)
+ IOUtils.readVarLong(idStream);
+ }
+ int digestLength = IOUtils.readVarInt(idStream);
+ IOUtils.skipFully(idStream, digestLength);
+ } else {
+ throw new IOException("Datastore id type " + type + " for blob " + blobId);
}
- int digestLength = IOUtils.readVarInt(idStream);
- IOUtils.skipFully(idStream, digestLength);
- } else {
- throw new IOException("Datastore id type " + type + " for blob " + blobId);
}
+ return totalLength;
+ } catch (IOException e) {
+ throw ExceptionFactory.convert(e);
}
- return totalLength;
}
public abstract void clear();
Modified: jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/util/ExceptionFactory.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/util/ExceptionFactory.java?rev=1166064&r1=1166063&r2=1166064&view=diff
==============================================================================
--- jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/util/ExceptionFactory.java (original)
+++ jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/util/ExceptionFactory.java Wed Sep 7 08:51:33 2011
@@ -17,6 +17,7 @@
package org.apache.jackrabbit.mk.util;
import org.apache.jackrabbit.mk.Constants;
+import org.apache.jackrabbit.mk.api.MicroKernelException;
import java.text.MessageFormat;
import java.util.ConcurrentModificationException;
@@ -34,6 +35,16 @@ public class ExceptionFactory {
static final HashMap<Integer, String> MESSAGE_MAP = new HashMap<Integer, String>();
+ public static MicroKernelException convert(Exception e) {
+ if (e instanceof MicroKernelException) {
+ return (MicroKernelException) e;
+ }
+ return new MicroKernelException(e.getMessage(), e);
+ }
+
+ public static MicroKernelException get(String s) {
+ return new MicroKernelException(s);
+ }
static {
MESSAGE_MAP.put(CLOSED_0, "The repository is closed");
Modified: jackrabbit/sandbox/microkernel/src/test/java/org/apache/jackrabbit/mk/blobs/DataStoreTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/microkernel/src/test/java/org/apache/jackrabbit/mk/blobs/DataStoreTest.java?rev=1166064&r1=1166063&r2=1166064&view=diff
==============================================================================
--- jackrabbit/sandbox/microkernel/src/test/java/org/apache/jackrabbit/mk/blobs/DataStoreTest.java (original)
+++ jackrabbit/sandbox/microkernel/src/test/java/org/apache/jackrabbit/mk/blobs/DataStoreTest.java Wed Sep 7 08:51:33 2011
@@ -33,7 +33,7 @@ import java.util.Random;
public class DataStoreTest extends TestCase {
// private static final String URL = "fs:{homeDir}/target;clean";
- private static final String URL = "mem:fs:target/temp";
+ private static final String URL = "mem:fs:target/temp;clean";
// private static final String URL = "mem:";
private MicroKernel mk;
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=1166064&r1=1166063&r2=1166064&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 Wed Sep 7 08:51:33 2011
@@ -17,6 +17,7 @@
package org.apache.jackrabbit.mk.blobs;
import junit.framework.TestCase;
+import org.apache.jackrabbit.mk.api.MicroKernelException;
import org.apache.jackrabbit.mk.json.JsopBuilder;
import org.apache.jackrabbit.mk.json.JsopTokenizer;
import org.apache.jackrabbit.mk.util.IOUtilsTest;
@@ -91,13 +92,13 @@ public class DbBlobStoreTest extends Tes
try {
store.readBlob("ff", 0, data, 0, 1);
fail();
- } catch (IOException e) {
+ } catch (MicroKernelException e) {
// expected
}
try {
store.getBlobLength("ff");
fail();
- } catch (IOException e) {
+ } catch (MicroKernelException e) {
// expected
}
}