You are viewing a plain text version of this content. The canonical link for it is here.
Posted to oak-commits@jackrabbit.apache.org by st...@apache.org on 2012/05/31 21:58:19 UTC

svn commit: r1344884 - in /jackrabbit/oak/trunk: oak-core/src/main/java/org/apache/jackrabbit/mk/util/ oak-mk/src/main/java/org/apache/jackrabbit/mk/blobs/ oak-mk/src/main/java/org/apache/jackrabbit/mk/persistence/ oak-mk/src/main/java/org/apache/jackr...

Author: stefan
Date: Thu May 31 19:58:19 2012
New Revision: 1344884

URL: http://svn.apache.org/viewvc?rev=1344884&view=rev
Log:
OAK-77: Consolidate Utilities

move StringCache and ExceptionFactory utility classes to the oak-core component where they are referenced

Added:
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/mk/util/
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/mk/util/ExceptionFactory.java   (contents, props changed)
      - copied, changed from r1344879, jackrabbit/oak/trunk/oak-mk/src/main/java/org/apache/jackrabbit/mk/util/ExceptionFactory.java
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/mk/util/StringCache.java   (contents, props changed)
      - copied, changed from r1344288, jackrabbit/oak/trunk/oak-mk/src/main/java/org/apache/jackrabbit/mk/util/StringCache.java
Removed:
    jackrabbit/oak/trunk/oak-mk/src/main/java/org/apache/jackrabbit/mk/util/ExceptionFactory.java
    jackrabbit/oak/trunk/oak-mk/src/main/java/org/apache/jackrabbit/mk/util/StringCache.java
Modified:
    jackrabbit/oak/trunk/oak-mk/src/main/java/org/apache/jackrabbit/mk/blobs/AbstractBlobStore.java
    jackrabbit/oak/trunk/oak-mk/src/main/java/org/apache/jackrabbit/mk/blobs/FileBlobStore.java
    jackrabbit/oak/trunk/oak-mk/src/main/java/org/apache/jackrabbit/mk/persistence/MongoPersistence.java

Copied: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/mk/util/ExceptionFactory.java (from r1344879, jackrabbit/oak/trunk/oak-mk/src/main/java/org/apache/jackrabbit/mk/util/ExceptionFactory.java)
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/mk/util/ExceptionFactory.java?p2=jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/mk/util/ExceptionFactory.java&p1=jackrabbit/oak/trunk/oak-mk/src/main/java/org/apache/jackrabbit/mk/util/ExceptionFactory.java&r1=1344879&r2=1344884&rev=1344884&view=diff
==============================================================================
    (empty)

Propchange: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/mk/util/ExceptionFactory.java
------------------------------------------------------------------------------
    svn:eol-style = native

Copied: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/mk/util/StringCache.java (from r1344288, jackrabbit/oak/trunk/oak-mk/src/main/java/org/apache/jackrabbit/mk/util/StringCache.java)
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/mk/util/StringCache.java?p2=jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/mk/util/StringCache.java&p1=jackrabbit/oak/trunk/oak-mk/src/main/java/org/apache/jackrabbit/mk/util/StringCache.java&r1=1344288&r2=1344884&rev=1344884&view=diff
==============================================================================
    (empty)

Propchange: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/mk/util/StringCache.java
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: jackrabbit/oak/trunk/oak-mk/src/main/java/org/apache/jackrabbit/mk/blobs/AbstractBlobStore.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-mk/src/main/java/org/apache/jackrabbit/mk/blobs/AbstractBlobStore.java?rev=1344884&r1=1344883&r2=1344884&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-mk/src/main/java/org/apache/jackrabbit/mk/blobs/AbstractBlobStore.java (original)
+++ jackrabbit/oak/trunk/oak-mk/src/main/java/org/apache/jackrabbit/mk/blobs/AbstractBlobStore.java Thu May 31 19:58:19 2012
@@ -16,7 +16,6 @@
  */
 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.Cache;
 import org.apache.jackrabbit.mk.util.StringUtils;
@@ -105,25 +104,21 @@ public abstract class AbstractBlobStore 
         return blockSize;
     }
 
-    public String addBlob(String tempFilePath) {
+    public String addBlob(String tempFilePath) throws Exception {
+        File file = new File(tempFilePath);
+        InputStream in = null;
         try {
-            File file = new File(tempFilePath);
-            InputStream in = null;
-            try {
-                in = new FileInputStream(file);
-                return writeBlob(in);
-            } finally {
-                if (in != null) {
-                    in.close();
-                }
-                file.delete();
+            in = new FileInputStream(file);
+            return writeBlob(in);
+        } finally {
+            if (in != null) {
+                in.close();
             }
-        } catch (Exception e) {
-            throw ExceptionFactory.convert(e);
+            file.delete();
         }
     }
 
-    public String writeBlob(InputStream in) {
+    public String writeBlob(InputStream in) throws Exception {
         try {
             ByteArrayOutputStream idStream = new ByteArrayOutputStream();
             convertBlobToId(in, idStream, 0, 0);
@@ -132,13 +127,12 @@ public abstract class AbstractBlobStore 
             String blobId = StringUtils.convertBytesToHex(id);
             usesBlobId(blobId);
             return blobId;
-        } catch (Exception e) {
+        } finally {
             try {
                 in.close();
-            } catch (IOException e1) {
+            } catch (IOException e) {
                 // ignore
             }
-            throw ExceptionFactory.convert(e);
         }
     }
 
@@ -221,59 +215,55 @@ public abstract class AbstractBlobStore 
         }
     }
 
-    public int readBlob(String blobId, long pos, byte[] buff, int off, int length) {
-        try {
-            if (isMarkEnabled()) {
-                mark(blobId);
-            }
-            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;
+    public int readBlob(String blobId, long pos, byte[] buff, int off, int length) throws Exception {
+        if (isMarkEnabled()) {
+            mark(blobId);
+        }
+        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.skipFully(idStream, len);
-                    pos -= len;
-                } else if (type == TYPE_HASH) {
-                    int level = IOUtils.readVarInt(idStream);
-                    long totalLength = IOUtils.readVarLong(idStream);
+                    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 {
                     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;
+                        byte[] block = readBlock(digest, 0);
+                        idStream = new ByteArrayInputStream(block);
                     } else {
-                        if (level > 0) {
-                            byte[] block = readBlock(digest, 0);
-                            idStream = new ByteArrayInputStream(block);
-                        } else {
-                            long readPos = pos - pos % blockSize;
-                            byte[] block = readBlock(digest, readPos);
-                            ByteArrayInputStream in = new ByteArrayInputStream(block);
-                            IOUtils.skipFully(in, pos - readPos);
-                            return IOUtils.readFully(in, buff, off, length);
-                        }
+                        long readPos = pos - pos % blockSize;
+                        byte[] block = readBlock(digest, readPos);
+                        ByteArrayInputStream in = new ByteArrayInputStream(block);
+                        IOUtils.skipFully(in, pos - readPos);
+                        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);
         }
     }
 
@@ -286,46 +276,42 @@ public abstract class AbstractBlobStore 
         try {
             return new Data(readBlockFromBackend(id));
         } catch (Exception e) {
-            throw ExceptionFactory.convert(e);
+            throw new RuntimeException("failed to read block from backend", e);
         }
     }
 
     protected abstract byte[] readBlockFromBackend(BlockId id) throws Exception;
 
-    public long getBlobLength(String blobId) {
-        try {
-            if (isMarkEnabled()) {
-                mark(blobId);
+    public long getBlobLength(String blobId) throws Exception {
+        if (isMarkEnabled()) {
+            mark(blobId);
+        }
+        byte[] id = StringUtils.convertHexToBytes(blobId);
+        ByteArrayInputStream idStream = new ByteArrayInputStream(id);
+        long totalLength = 0;
+        while (true) {
+            int type = idStream.read();
+            if (type == -1) {
+                break;
             }
-            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);
+            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);
             }
-            return totalLength;
-        } catch (IOException e) {
-            throw ExceptionFactory.convert(e);
         }
+        return totalLength;
     }
 
     protected void mark(String blobId) throws IOException {

Modified: jackrabbit/oak/trunk/oak-mk/src/main/java/org/apache/jackrabbit/mk/blobs/FileBlobStore.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-mk/src/main/java/org/apache/jackrabbit/mk/blobs/FileBlobStore.java?rev=1344884&r1=1344883&r2=1344884&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-mk/src/main/java/org/apache/jackrabbit/mk/blobs/FileBlobStore.java (original)
+++ jackrabbit/oak/trunk/oak-mk/src/main/java/org/apache/jackrabbit/mk/blobs/FileBlobStore.java Thu May 31 19:58:19 2012
@@ -25,7 +25,6 @@ import java.io.InputStream;
 import java.io.OutputStream;
 import java.security.DigestInputStream;
 import java.security.MessageDigest;
-import org.apache.jackrabbit.mk.util.ExceptionFactory;
 import org.apache.jackrabbit.mk.util.IOUtils;
 import org.apache.jackrabbit.mk.util.StringUtils;
 
@@ -48,47 +47,43 @@ public class FileBlobStore extends Abstr
     }
 
     @Override
-    public String addBlob(String tempFilePath) {
+    public String addBlob(String tempFilePath) throws Exception {
+        File file = new File(tempFilePath);
+        InputStream in = new FileInputStream(file);
+        MessageDigest messageDigest = MessageDigest.getInstance(HASH_ALGORITHM);
+        DigestInputStream din = new DigestInputStream(in, messageDigest);
+        long length = file.length();
         try {
-            File file = new File(tempFilePath);
-            InputStream in = new FileInputStream(file);
-            MessageDigest messageDigest = MessageDigest.getInstance(HASH_ALGORITHM);
-            DigestInputStream din = new DigestInputStream(in, messageDigest);
-            long length = file.length();
-            try {
-                while (true) {
-                    int len = din.read(buffer, 0, buffer.length);
-                    if (len < 0) {
-                        break;
-                    }
+            while (true) {
+                int len = din.read(buffer, 0, buffer.length);
+                if (len < 0) {
+                    break;
                 }
-            } finally {
-                din.close();
             }
-            ByteArrayOutputStream idStream = new ByteArrayOutputStream();
-            idStream.write(TYPE_HASH);
-            IOUtils.writeVarInt(idStream, 0);
-            IOUtils.writeVarLong(idStream, length);
-            byte[] digest = messageDigest.digest();
-            File f = getFile(digest, false);
-            if (f.exists()) {
-                file.delete();
-            } else {
-                File parent = f.getParentFile();
-                if (!parent.exists()) {
-                    parent.mkdirs();
-                }
-                file.renameTo(f);
+        } finally {
+            din.close();
+        }
+        ByteArrayOutputStream idStream = new ByteArrayOutputStream();
+        idStream.write(TYPE_HASH);
+        IOUtils.writeVarInt(idStream, 0);
+        IOUtils.writeVarLong(idStream, length);
+        byte[] digest = messageDigest.digest();
+        File f = getFile(digest, false);
+        if (f.exists()) {
+            file.delete();
+        } else {
+            File parent = f.getParentFile();
+            if (!parent.exists()) {
+                parent.mkdirs();
             }
-            IOUtils.writeVarInt(idStream, digest.length);
-            idStream.write(digest);
-            byte[] id = idStream.toByteArray();
-            String blobId = StringUtils.convertBytesToHex(id);
-            usesBlobId(blobId);
-            return blobId;
-        } catch (Exception e) {
-            throw ExceptionFactory.convert(e);
+            file.renameTo(f);
         }
+        IOUtils.writeVarInt(idStream, digest.length);
+        idStream.write(digest);
+        byte[] id = idStream.toByteArray();
+        String blobId = StringUtils.convertBytesToHex(id);
+        usesBlobId(blobId);
+        return blobId;
     }
 
     @Override

Modified: jackrabbit/oak/trunk/oak-mk/src/main/java/org/apache/jackrabbit/mk/persistence/MongoPersistence.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-mk/src/main/java/org/apache/jackrabbit/mk/persistence/MongoPersistence.java?rev=1344884&r1=1344883&r2=1344884&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-mk/src/main/java/org/apache/jackrabbit/mk/persistence/MongoPersistence.java (original)
+++ jackrabbit/oak/trunk/oak-mk/src/main/java/org/apache/jackrabbit/mk/persistence/MongoPersistence.java Thu May 31 19:58:19 2012
@@ -35,7 +35,6 @@ import org.apache.jackrabbit.mk.store.Bi
 import org.apache.jackrabbit.mk.store.Binding;
 import org.apache.jackrabbit.mk.store.IdFactory;
 import org.apache.jackrabbit.mk.store.NotFoundException;
-import org.apache.jackrabbit.mk.util.ExceptionFactory;
 import org.apache.jackrabbit.mk.util.IOUtils;
 import org.apache.jackrabbit.mk.util.StringUtils;
 import org.bson.types.ObjectId;
@@ -254,17 +253,13 @@ public class MongoPersistence implements
     //------------------------------------------------------------< BlobStore >
 
     public String addBlob(String tempFilePath) throws Exception {
+        File file = new File(tempFilePath);
+        InputStream in = null;
         try {
-            File file = new File(tempFilePath);
-            InputStream in = null;
-            try {
-                in = new BufferedInputStream(new FileInputStream(file));
-                return writeBlob(in);
-            } finally {
-                file.delete();
-            }
-        } catch (Exception e) {
-            throw ExceptionFactory.convert(e);
+            in = new BufferedInputStream(new FileInputStream(file));
+            return writeBlob(in);
+        } finally {
+            file.delete();
         }
     }