You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jackrabbit.apache.org by st...@apache.org on 2011/04/11 18:27:33 UTC

svn commit: r1091112 - in /jackrabbit/sandbox/microkernel/src/main/java/org: apache/jackrabbit/mk/store/ObjectStore.java apache/jackrabbit/mk/store/git/GitStore.java eclipse/jgit/storage/file/ObjectDbInserter.java

Author: stefan
Date: Mon Apr 11 16:27:32 2011
New Revision: 1091112

URL: http://svn.apache.org/viewvc?rev=1091112&view=rev
Log:
MicroKernel prototype (WIP)

Modified:
    jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/store/ObjectStore.java
    jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/store/git/GitStore.java
    jackrabbit/sandbox/microkernel/src/main/java/org/eclipse/jgit/storage/file/ObjectDbInserter.java

Modified: jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/store/ObjectStore.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/store/ObjectStore.java?rev=1091112&r1=1091111&r2=1091112&view=diff
==============================================================================
--- jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/store/ObjectStore.java (original)
+++ jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/store/ObjectStore.java Mon Apr 11 16:27:32 2011
@@ -70,4 +70,7 @@ public class ObjectStore implements Cons
         return getCommit(store.getHeadCommitId());
     }
 
+    public String computeId(int type, byte[] data) {
+        return store.computeId(type, data);
+    }
 }

Modified: jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/store/git/GitStore.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/store/git/GitStore.java?rev=1091112&r1=1091111&r2=1091112&view=diff
==============================================================================
--- jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/store/git/GitStore.java (original)
+++ jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/store/git/GitStore.java Mon Apr 11 16:27:32 2011
@@ -75,6 +75,10 @@ public class GitStore implements DataSto
         RefUpdate.Result result = refUpd.update();
     }
 
+    public String computeId(int type, byte[] data) {
+        return rep.getObjectDb().newInserter().idFor(type, data).name();
+    }
+
     //------------------------------------------------------------< DataStore >
     public byte[] get(String id) throws Exception {
         return get(id, ANY);

Modified: jackrabbit/sandbox/microkernel/src/main/java/org/eclipse/jgit/storage/file/ObjectDbInserter.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/microkernel/src/main/java/org/eclipse/jgit/storage/file/ObjectDbInserter.java?rev=1091112&r1=1091111&r2=1091112&view=diff
==============================================================================
--- jackrabbit/sandbox/microkernel/src/main/java/org/eclipse/jgit/storage/file/ObjectDbInserter.java (original)
+++ jackrabbit/sandbox/microkernel/src/main/java/org/eclipse/jgit/storage/file/ObjectDbInserter.java Mon Apr 11 16:27:32 2011
@@ -18,9 +18,13 @@ package org.eclipse.jgit.storage.file;
 
 import org.apache.jackrabbit.mk.store.Constants;
 import org.eclipse.jgit.lib.Config;
+import org.eclipse.jgit.lib.ObjectId;
 
+import java.io.EOFException;
 import java.io.IOException;
+import java.io.InputStream;
 import java.io.OutputStream;
+import java.security.MessageDigest;
 
 /**
  *
@@ -38,4 +42,34 @@ public class ObjectDbInserter extends Ob
         out.write(Long.toString(len).getBytes());
         out.write((byte) 0);
     }
+
+    @Override
+    public ObjectId idFor(int objectType, long length, InputStream in) throws IOException {
+        MessageDigest md = digest();
+        md.update(Constants.TYPE_NAMES[objectType].getBytes());
+        md.update((byte) ' ');
+        md.update(Long.toString(length).getBytes());
+        md.update((byte) 0);
+        byte[] buf = buffer();
+        while (length > 0) {
+                int n = in.read(buf, 0, (int) Math.min(length, buf.length));
+                if (n < 0)
+                        throw new EOFException("Unexpected end of input");
+                md.update(buf, 0, n);
+                length -= n;
+        }
+        return ObjectId.fromRaw(md.digest());
+    }
+
+    @Override
+    public ObjectId idFor(int type, byte[] data, int off, int len) {
+        MessageDigest md = digest();
+        md.update(Constants.TYPE_NAMES[type].getBytes());
+        md.update((byte) ' ');
+        md.update(Long.toString(len).getBytes());
+        md.update((byte) 0);
+        md.update(data, off, len);
+        return ObjectId.fromRaw(md.digest());
+    }
+
 }