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/20 12:27:30 UTC

svn commit: r1173068 - in /jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/blobs: AbstractBlobStore.java DbBlobStore.java FileBlobStore.java MemoryBlobStore.java

Author: thomasm
Date: Tue Sep 20 10:27:30 2011
New Revision: 1173068

URL: http://svn.apache.org/viewvc?rev=1173068&view=rev
Log:
Simplify the blob store a bit, and use the file system abstraction.

Modified:
    jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/blobs/AbstractBlobStore.java
    jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/blobs/DbBlobStore.java
    jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/blobs/FileBlobStore.java
    jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/blobs/MemoryBlobStore.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=1173068&r1=1173067&r2=1173068&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 Tue Sep 20 10:27:30 2011
@@ -247,8 +247,6 @@ public abstract class AbstractBlobStore 
         }
     }
 
-    public abstract void clear();
-
     public static class Data implements Cache.Value {
 
         final byte[] data;

Modified: jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/blobs/DbBlobStore.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/blobs/DbBlobStore.java?rev=1173068&r1=1173067&r2=1173068&view=diff
==============================================================================
--- jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/blobs/DbBlobStore.java (original)
+++ jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/blobs/DbBlobStore.java Tue Sep 20 10:27:30 2011
@@ -118,9 +118,4 @@ public class DbBlobStore extends Abstrac
         }
     }
 
-    @Override
-    public void clear() {
-        // TODO currently not cleared
-    }
-
 }

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=1173068&r1=1173067&r2=1173068&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 Tue Sep 20 10:27:30 2011
@@ -16,12 +16,13 @@
  */
 package org.apache.jackrabbit.mk.blobs;
 
+import org.apache.jackrabbit.mk.fs.FilePath;
+import org.apache.jackrabbit.mk.fs.FileUtils;
+import org.apache.jackrabbit.mk.util.IOUtils;
 import org.apache.jackrabbit.mk.util.StringUtils;
-import org.h2.util.IOUtils;
 
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileOutputStream;
+import java.io.InputStream;
+import java.io.OutputStream;
 import java.io.IOException;
 
 /**
@@ -29,42 +30,42 @@ import java.io.IOException;
  */
 public class FileBlobStore extends AbstractBlobStore {
 
-    private final File baseDir;
+    private final FilePath baseDir;
 
-    public FileBlobStore(String dir) {
-        baseDir = new File(dir);
-        baseDir.mkdirs();
+    public FileBlobStore(String dir) throws IOException {
+        baseDir = FilePath.get(dir);
+        FileUtils.createDirectories(dir);
     }
 
     @Override
     protected synchronized void storeBlock(byte[] blockId, int level, byte[] data) throws IOException {
-        File f = getFile(blockId);
+        FilePath f = getFile(blockId);
         if (f.exists()) {
             return;
         }
-        File parent = f.getParentFile();
+        FilePath parent = f.getParent();
         if (!parent.exists()) {
-            parent.mkdirs();
+            FileUtils.createDirectories(parent.toString());
         }
-        File temp = new File(parent, f.getName() + ".temp");
-        FileOutputStream out = new FileOutputStream(temp);
+        FilePath temp = parent.resolve(f.getName() + ".temp");
+        OutputStream out = temp.newOutputStream(false);
         out.write(data);
         out.close();
-        temp.renameTo(f);
+        temp.moveTo(f);
     }
 
-    private File getFile(byte[] blockId) {
+    private FilePath getFile(byte[] blockId) {
         String id = StringUtils.convertBytesToHex(blockId);
         String sub = id.substring(id.length() - 2);
-        return new File(new File(baseDir, sub), id + ".dat");
+        return baseDir.resolve(sub).resolve(id + ".dat");
     }
 
     @Override
     protected byte[] readBlockFromBackend(byte[] blockId) throws IOException {
-        File f = getFile(blockId);
-        int length = (int) f.length();
+        FilePath f = getFile(blockId);
+        int length = (int) f.size();
         byte[] data = new byte[length];
-        FileInputStream in = new FileInputStream(f);
+        InputStream in = f.newInputStream();
         try {
             IOUtils.readFully(in, data, 0, length);
         } finally {
@@ -73,9 +74,4 @@ public class FileBlobStore extends Abstr
         return data;
     }
 
-    @Override
-    public void clear() {
-        // TODO currently not cleared
-    }
-
 }
\ No newline at end of file

Modified: jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/blobs/MemoryBlobStore.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/blobs/MemoryBlobStore.java?rev=1173068&r1=1173067&r2=1173068&view=diff
==============================================================================
--- jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/blobs/MemoryBlobStore.java (original)
+++ jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/blobs/MemoryBlobStore.java Tue Sep 20 10:27:30 2011
@@ -41,9 +41,4 @@ public class MemoryBlobStore extends Abs
         map.put(getId(blockId), data);
     }
 
-    @Override
-    public synchronized void clear() {
-        map.clear();
-    }
-
 }