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/18 16:28:06 UTC
svn commit: r1094590 - in
/jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/store:
Commit.java DataStore.java GitStore.java MutableCommit.java
MutableNode.java Node.java ObjectStore.java git/GitStore.java
Author: stefan
Date: Mon Apr 18 14:28:05 2011
New Revision: 1094590
URL: http://svn.apache.org/viewvc?rev=1094590&view=rev
Log:
MicroKernel prototype (WIP)
Added:
jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/store/GitStore.java
- copied, changed from r1092760, jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/store/git/GitStore.java
Removed:
jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/store/git/GitStore.java
Modified:
jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/store/Commit.java
jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/store/DataStore.java
jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/store/MutableCommit.java
jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/store/MutableNode.java
jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/store/Node.java
jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/store/ObjectStore.java
Modified: jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/store/Commit.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/store/Commit.java?rev=1094590&r1=1094589&r2=1094590&view=diff
==============================================================================
--- jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/store/Commit.java (original)
+++ jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/store/Commit.java Mon Apr 18 14:28:05 2011
@@ -60,6 +60,9 @@ public class Commit extends StoredObject
public static Commit fromBytes(String id, byte[] data) throws Exception {
ByteArrayInputStream bais = new ByteArrayInputStream(data);
DataInputStream in = new DataInputStream(bais);
+ if (in.read() != Constants.COMMIT) {
+ throw new Exception("unknown data format");
+ }
String rootNodeId = in.readUTF();
long commitTS = in.readLong();
int count = in.readInt();
Modified: jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/store/DataStore.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/store/DataStore.java?rev=1094590&r1=1094589&r2=1094590&view=diff
==============================================================================
--- jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/store/DataStore.java (original)
+++ jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/store/DataStore.java Mon Apr 18 14:28:05 2011
@@ -22,7 +22,7 @@ package org.apache.jackrabbit.mk.store;
*/
public interface DataStore {
- byte[] get(String id, int typeHint) throws Exception;
+ byte[] get(String id) throws Exception;
- String /* id */ put(int type, byte[] data) throws Exception;
+ String /* id */ put(byte[] data) throws Exception;
}
Copied: jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/store/GitStore.java (from r1092760, 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/GitStore.java?p2=jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/store/GitStore.java&p1=jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/store/git/GitStore.java&r1=1092760&r2=1094590&rev=1094590&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/GitStore.java Mon Apr 18 14:28:05 2011
@@ -14,23 +14,25 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.jackrabbit.mk.store.git;
+package org.apache.jackrabbit.mk.store;
-import org.apache.jackrabbit.mk.store.Constants;
import org.apache.jackrabbit.mk.store.DataStore;
+import org.eclipse.jgit.lib.Constants;
import org.eclipse.jgit.lib.ObjectId;
import org.eclipse.jgit.lib.ObjectInserter;
import org.eclipse.jgit.lib.Ref;
import org.eclipse.jgit.lib.RefUpdate;
+import org.eclipse.jgit.lib.Repository;
+import org.eclipse.jgit.storage.file.FileRepository;
import java.io.File;
/**
*
*/
-public class GitStore implements DataStore, Constants {
+public class GitStore implements DataStore {
- MicroKernelRepository rep;
+ Repository rep;
boolean initialized;
public GitStore() {
@@ -43,7 +45,7 @@ public class GitStore implements DataSto
}
File dir = new File(homeDir, ".git");
- rep = new MicroKernelRepository(dir);
+ rep = new FileRepository(dir);
if (! dir.exists()) {
rep.create(true);
}
@@ -77,33 +79,27 @@ 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();
+ public String computeId(byte[] data) {
+ ObjectInserter inserter = rep.getObjectDatabase().newInserter();
+ return inserter.idFor(Constants.OBJ_BLOB, data).name();
}
//------------------------------------------------------------< DataStore >
public byte[] get(String id) throws Exception {
- return get(id, ANY);
- }
-
- public byte[] get(String id, int typeHint) throws Exception {
if (!initialized) {
throw new IllegalStateException("not initialized");
}
- return rep.getObjectDb().newReader().open(ObjectId.fromString(id), typeHint).getBytes();
+ return rep.getObjectDatabase().newReader().open(ObjectId.fromString(id), Constants.OBJ_BLOB).getBytes();
}
- public String put(int type, byte[] data) throws Exception {
+ public String put(byte[] data) throws Exception {
if (!initialized) {
throw new IllegalStateException("not initialized");
}
- if (type < 0 || type >= TYPE_NAMES.length) {
- throw new IllegalArgumentException("invalid type");
- }
- ObjectInserter inserter = rep.getObjectDb().newInserter();
+ ObjectInserter inserter = rep.getObjectDatabase().newInserter();
ObjectId id;
try {
- id = inserter.insert(type, data);
+ id = inserter.insert(Constants.OBJ_BLOB, data);
inserter.flush();
} finally {
inserter.release();
Modified: jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/store/MutableCommit.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/store/MutableCommit.java?rev=1094590&r1=1094589&r2=1094590&view=diff
==============================================================================
--- jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/store/MutableCommit.java (original)
+++ jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/store/MutableCommit.java Mon Apr 18 14:28:05 2011
@@ -67,9 +67,10 @@ public class MutableCommit {
ByteArrayOutputStream baos = new ByteArrayOutputStream();
DataOutputStream out = new DataOutputStream(baos);
try {
+ out.write(Constants.COMMIT);
out.writeUTF(rootNodeId);
out.writeLong(commitTS);
- out.write(parentIds.size());
+ out.writeInt(parentIds.size());
for (String commitId : parentIds) {
out.writeUTF(commitId);
}
Modified: jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/store/MutableNode.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/store/MutableNode.java?rev=1094590&r1=1094589&r2=1094590&view=diff
==============================================================================
--- jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/store/MutableNode.java (original)
+++ jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/store/MutableNode.java Mon Apr 18 14:28:05 2011
@@ -71,12 +71,13 @@ public class MutableNode {
ByteArrayOutputStream baos = new ByteArrayOutputStream();
DataOutputStream out = new DataOutputStream(baos);
try {
- out.write(properties.size());
+ out.write(Constants.NODE);
+ out.writeInt(properties.size());
for (Map.Entry<String, String> entry : properties.entrySet()) {
out.writeUTF(entry.getKey());
out.writeUTF(entry.getValue());
}
- out.write(childEntries.size());
+ out.writeInt(childEntries.size());
for (Map.Entry<String, String> entry : childEntries.entrySet()) {
out.writeUTF(entry.getKey());
out.writeUTF(entry.getValue());
Modified: jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/store/Node.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/store/Node.java?rev=1094590&r1=1094589&r2=1094590&view=diff
==============================================================================
--- jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/store/Node.java (original)
+++ jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/store/Node.java Mon Apr 18 14:28:05 2011
@@ -60,6 +60,9 @@ public class Node extends StoredObject {
public static Node fromBytes(String id, byte[] data) throws Exception {
ByteArrayInputStream bais = new ByteArrayInputStream(data);
DataInputStream in = new DataInputStream(bais);
+ if (in.read() != Constants.NODE) {
+ throw new Exception("unknown data format");
+ }
int count = in.readInt();
Map<String, String> props = new HashMap<String, String>(count);
while (count-- > 0) {
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=1094590&r1=1094589&r2=1094590&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 18 14:28:05 2011
@@ -16,8 +16,6 @@
*/
package org.apache.jackrabbit.mk.store;
-import org.apache.jackrabbit.mk.store.git.GitStore;
-
import java.io.File;
/**
@@ -43,11 +41,11 @@ public class ObjectStore implements Cons
// make sure we've got a HEAD commit
String head = store.getHeadCommitId();
if (head == null) {
- String rootNodeId = store.put(NODE, new MutableNode(null).toBytes());
+ String rootNodeId = store.put(new MutableNode(null).toBytes());
MutableCommit initialCommit = new MutableCommit();
initialCommit.setCommitTS(System.currentTimeMillis());
initialCommit.setRootNodeId(rootNodeId);
- store.setHeadCommitId(store.put(COMMIT, initialCommit.toBytes()));
+ store.setHeadCommitId(store.put(initialCommit.toBytes()));
}
initialized = true;
@@ -67,7 +65,7 @@ public class ObjectStore implements Cons
throw new IllegalStateException("not initialized");
}
- byte[] data = store.get(id, NODE);
+ byte[] data = store.get(id);
return Node.fromBytes(id, data);
}
@@ -76,7 +74,7 @@ public class ObjectStore implements Cons
throw new IllegalStateException("not initialized");
}
- return store.put(NODE, node.toBytes());
+ return store.put(node.toBytes());
}
public Commit getCommit(String id) throws Exception {
@@ -84,7 +82,7 @@ public class ObjectStore implements Cons
throw new IllegalStateException("not initialized");
}
- byte[] data = store.get(id, COMMIT);
+ byte[] data = store.get(id);
return Commit.fromBytes(id, data);
}
@@ -93,7 +91,7 @@ public class ObjectStore implements Cons
throw new IllegalStateException("not initialized");
}
- return store.put(COMMIT, commit.toBytes());
+ return store.put(commit.toBytes());
}
public Commit getHeadCommit() throws Exception {
@@ -112,11 +110,11 @@ public class ObjectStore implements Cons
store.setHeadCommitId(commitId);
}
- public String computeId(int type, byte[] data) {
+ public String computeId(byte[] data) {
if (!initialized) {
throw new IllegalStateException("not initialized");
}
- return store.computeId(type, data);
+ return store.computeId(data);
}
}