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/06/22 17:41:57 UTC

svn commit: r1138510 - in /jackrabbit/sandbox/microkernel/src: main/java/org/apache/jackrabbit/mk/ main/java/org/apache/jackrabbit/mk/api/ main/java/org/apache/jackrabbit/mk/mem/ main/java/org/apache/jackrabbit/mk/store/ test/java/org/apache/jackrabbit...

Author: stefan
Date: Wed Jun 22 15:41:57 2011
New Revision: 1138510

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

added commit-msg support

Modified:
    jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/MicroKernelImpl.java
    jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/Repository.java
    jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/api/MicroKernel.java
    jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/mem/MemoryKernelImpl.java
    jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/mem/Revision.java
    jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/store/Commit.java
    jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/store/CommitBuilder.java
    jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/store/MutableCommit.java
    jackrabbit/sandbox/microkernel/src/test/java/org/apache/jackrabbit/mk/ConcurrentWriteTest.java
    jackrabbit/sandbox/microkernel/src/test/java/org/apache/jackrabbit/mk/HelloWorld.java

Modified: jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/MicroKernelImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/MicroKernelImpl.java?rev=1138510&r1=1138509&r2=1138510&view=diff
==============================================================================
--- jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/MicroKernelImpl.java (original)
+++ jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/MicroKernelImpl.java Wed Jun 22 15:41:57 2011
@@ -143,7 +143,8 @@ public class MicroKernelImpl implements 
             }
             commitBuff.object().
                 key("id").value(commit.getId()).
-                key("ts").value(commit.getCommitTS());
+                key("ts").value(commit.getCommitTS()).
+                key("msg").value(commit.getMsg());
             final JsopBuilder buff = new JsopBuilder();
             try {
                 String path = "/";
@@ -244,13 +245,13 @@ public class MicroKernelImpl implements 
         }
     }
 
-    public String commit(String path, String jsonDiff, String revisionId) throws MicroKernelException {
+    public String commit(String path, String jsonDiff, String revisionId, String message) throws MicroKernelException {
         if (rep == null) {
             throw new IllegalStateException("this instance has already been disposed");
         }
         try {
             JsopTokenizer t = new JsopTokenizer(jsonDiff);
-            CommitBuilder cb = rep.getCommitBuilder(revisionId);
+            CommitBuilder cb = rep.getCommitBuilder(revisionId, message);
             while (true) {
                 int r = t.read();
                 if (r == JsopTokenizer.END) {

Modified: jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/Repository.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/Repository.java?rev=1138510&r1=1138509&r2=1138510&view=diff
==============================================================================
--- jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/Repository.java (original)
+++ jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/Repository.java Wed Jun 22 15:41:57 2011
@@ -98,8 +98,8 @@ public class Repository {
         return store.getNode(ids[ids.length - 1]);
     }
 
-    public CommitBuilder getCommitBuilder(String revId) throws Exception {
-        return new CommitBuilder(revId, this);
+    public CommitBuilder getCommitBuilder(String revId, String msg) throws Exception {
+        return new CommitBuilder(revId, msg, this);
 
     }
 

Modified: jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/api/MicroKernel.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/api/MicroKernel.java?rev=1138510&r1=1138509&r2=1138510&view=diff
==============================================================================
--- jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/api/MicroKernel.java (original)
+++ jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/api/MicroKernel.java Wed Jun 22 15:41:57 2011
@@ -128,7 +128,7 @@ public interface MicroKernel {
      * <p/>
      * Format:
      * <pre>
-     * [ { "id" : "<revisionId>", "ts" : <revisionTimestamp>, "changes" : "<JSON diff>" }, ... ]
+     * [ { "id" : "<revisionId>", "ts" : <revisionTimestamp>, "msg" : <commitMessage>, "changes" : "<JSON diff>" }, ... ]
      * </pre>
      *
      * @param fromRevisionId first revision to be returned in journal
@@ -235,10 +235,11 @@ public interface MicroKernel {
      * @param path path denoting target node
      * @param jsonDiff changes to be applied in JSON diff format.
      * @param revisionId revision the changes are based on
+     * @param message commit message
      * @return id of newly created revision
      * @throws MicroKernelException if an error occurs
      */
-    String /* revisionId */ commit(String path, String jsonDiff, String revisionId)
+    String /* revisionId */ commit(String path, String jsonDiff, String revisionId, String message)
             throws MicroKernelException;
 
 

Modified: jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/mem/MemoryKernelImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/mem/MemoryKernelImpl.java?rev=1138510&r1=1138509&r2=1138510&view=diff
==============================================================================
--- jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/mem/MemoryKernelImpl.java (original)
+++ jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/mem/MemoryKernelImpl.java Wed Jun 22 15:41:57 2011
@@ -62,16 +62,16 @@ public class MemoryKernelImpl implements
         revisions = new TreeMap<Long, Revision>();
         revisionList = new ArrayList<Revision>();
         headRoot = new NodeImpl(headRevId);
-        commit("+\"/\" {}");
+        commit("+\"/\" {}", "create root node");
     }
 
-    private void commit(String jsonDiff) {
-        Revision r = new Revision(headRevId, clock.time(), headRoot, jsonDiff);
+    private void commit(String jsonDiff, String msg) {
+        Revision r = new Revision(headRevId, clock.time(), headRoot, jsonDiff, msg);
         revisions.put(headRevId, r);
         revisionList.add(r);
     }
 
-    public synchronized String commit(String path, String jsonDiff, String revisionId) {
+    public synchronized String commit(String path, String jsonDiff, String revisionId, String message) {
         // TODO do we really need 'path'? store the path is in the diff instead
         // TODO what is the exact meaning of 'revisionId'? is it allowed to commit
         // using an old revision, if yes when is it allowed, or how is it different from using head?
@@ -83,7 +83,7 @@ public class MemoryKernelImpl implements
 
         headRevId++;
         apply(path, jsonDiff);
-        commit(jsonDiff);
+        commit(jsonDiff, message);
         return getHeadRevision();
     }
 
@@ -135,7 +135,7 @@ public class MemoryKernelImpl implements
     }
 
     public String getRevisions(long since, int maxEntries) {
-        Revision find = new Revision(0, since, null, null);
+        Revision find = new Revision(0, since, null, null, null);
         int index = Collections.binarySearch(revisionList, find, new Comparator<Revision>() {
             public int compare(Revision o1, Revision o2) {
                 long t1 = o1.getTime(), t2 = o2.getTime();
@@ -165,6 +165,7 @@ public class MemoryKernelImpl implements
             buff.object().
                 key("id").value(Long.toString(rev.getId())).
                 key("ts").value(rev.getTime()).
+                key("msg").value(rev.getMsg()).
                 key("changes").value(rev.getDiff()).
             endObject();
         }

Modified: jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/mem/Revision.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/mem/Revision.java?rev=1138510&r1=1138509&r2=1138510&view=diff
==============================================================================
--- jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/mem/Revision.java (original)
+++ jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/mem/Revision.java Wed Jun 22 15:41:57 2011
@@ -22,12 +22,14 @@ public class Revision {
     private final long time;
     private final NodeImpl root;
     private final String diff;
+    private final String msg;
 
-    public Revision(long id, long time, NodeImpl root, String diff) {
+    public Revision(long id, long time, NodeImpl root, String diff, String msg) {
         this.id = id;
         this.time = time;
         this.root = root;
         this.diff = diff;
+        this.msg = msg;
     }
 
     public NodeImpl getRootNode() {
@@ -46,4 +48,8 @@ public class Revision {
         return diff;
     }
 
+    public String getMsg() {
+        return msg;
+    }
+
 }

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=1138510&r1=1138509&r2=1138510&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 Wed Jun 22 15:41:57 2011
@@ -33,12 +33,16 @@ public class Commit extends StoredObject
     // commit timestamp
     final long commitTS;
 
-    protected Commit(String id, String rootNodeId, long commitTS, String parentId) {
+    // commit msg
+    final String msg;
+
+    protected Commit(String id, String rootNodeId, long commitTS, String msg, String parentId) {
         super(id);
 
         this.rootNodeId = rootNodeId;
         this.parentId = parentId;
         this.commitTS = commitTS;
+        this.msg = msg;
     }
 
     public String getRootNodeId() {
@@ -53,6 +57,10 @@ public class Commit extends StoredObject
         return commitTS;
     }
 
+    public String getMsg() {
+        return msg;
+    }
+
     //--------------------------------------------------------< serialization >
 
     public static Commit fromBytes(String id, InputStream is) throws Exception {
@@ -63,8 +71,9 @@ public class Commit extends StoredObject
             }
             String rootNodeId = in.readUTF();
             long commitTS = in.readLong();
+            String msg = in.readUTF();
             String parentId = in.readUTF();
-            return new Commit(id, rootNodeId, commitTS, "".equals(parentId) ? null : parentId);
+            return new Commit(id, rootNodeId, commitTS, "".equals(msg) ? null : msg, "".equals(parentId) ? null : parentId);
         } finally {
             in.close();
         }

Modified: jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/store/CommitBuilder.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/store/CommitBuilder.java?rev=1138510&r1=1138509&r2=1138510&view=diff
==============================================================================
--- jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/store/CommitBuilder.java (original)
+++ jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/store/CommitBuilder.java Wed Jun 22 15:41:57 2011
@@ -33,6 +33,8 @@ public class CommitBuilder {
 
     String baseRevId;
 
+    final String msg;
+
     final Repository rep;
     final ObjectStore store;
 
@@ -40,8 +42,9 @@ public class CommitBuilder {
     // change log
     final List<Change> changeLog;
 
-    public CommitBuilder(String baseRevId, Repository rep) throws Exception {
+    public CommitBuilder(String baseRevId, String msg, Repository rep) throws Exception {
         this.baseRevId = baseRevId;
+        this.msg = msg;
         this.rep = rep;
         store = rep.getStore();
         staged = new HashMap<String, MutableNode>();
@@ -197,6 +200,7 @@ public class CommitBuilder {
             MutableCommit newCommit = new MutableCommit();
             newCommit.setParentId(baseRevId);
             newCommit.setCommitTS(System.currentTimeMillis());
+            newCommit.setMsg(msg);
             newCommit.setRootNodeId(rootNodeId);
             newRevId = store.putCommit(newCommit);
 

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=1138510&r1=1138509&r2=1138510&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 Wed Jun 22 15:41:57 2011
@@ -33,6 +33,9 @@ public class MutableCommit {
     // commit timestamp
     long commitTS;
 
+    // commit message
+    String msg;
+
     // id of parent commit
     String parentId;
 
@@ -63,6 +66,14 @@ public class MutableCommit {
         this.commitTS = commitTS;
     }
 
+    public String getMsg() {
+        return msg;
+    }
+
+    public void setMsg(String msg) {
+        this.msg = msg;
+    }
+
     //--------------------------------------------------------< serialization >
 
     public InputStream toBytes() {
@@ -72,6 +83,7 @@ public class MutableCommit {
             out.write(Constants.COMMIT);
             out.writeUTF(rootNodeId);
             out.writeLong(commitTS);
+            out.writeUTF(msg == null ? "" : msg);
             out.writeUTF(parentId == null ? "" : parentId);
             out.close();
         } catch (IOException e) {

Modified: jackrabbit/sandbox/microkernel/src/test/java/org/apache/jackrabbit/mk/ConcurrentWriteTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/microkernel/src/test/java/org/apache/jackrabbit/mk/ConcurrentWriteTest.java?rev=1138510&r1=1138509&r2=1138510&view=diff
==============================================================================
--- jackrabbit/sandbox/microkernel/src/test/java/org/apache/jackrabbit/mk/ConcurrentWriteTest.java (original)
+++ jackrabbit/sandbox/microkernel/src/test/java/org/apache/jackrabbit/mk/ConcurrentWriteTest.java Wed Jun 22 15:41:57 2011
@@ -50,9 +50,9 @@ public class ConcurrentWriteTest extends
 
         String head = mk.getHeadRevision();
         if (mk.nodeExists("/test", head)) {
-            head = mk.commit("/", "-\"test\"", head);
+            head = mk.commit("/", "-\"test\"", head, null);
         }
-        head = mk.commit("/", "+\"test\" : {\"jcr:primaryType\":\"nt:unstructured\"}", head);
+        head = mk.commit("/", "+\"test\" : {\"jcr:primaryType\":\"nt:unstructured\"}", head, null);
 
         String oldHead = head;
         System.out.println("new HEAD: " + oldHead);
@@ -120,7 +120,7 @@ public class ConcurrentWriteTest extends
                 }
             }
             sb.append('}');
-            revId = mk.commit("/test", sb.toString(), revId);
+            revId = mk.commit("/test", sb.toString(), revId, null);
         }
     }
 }

Modified: jackrabbit/sandbox/microkernel/src/test/java/org/apache/jackrabbit/mk/HelloWorld.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/microkernel/src/test/java/org/apache/jackrabbit/mk/HelloWorld.java?rev=1138510&r1=1138509&r2=1138510&view=diff
==============================================================================
--- jackrabbit/sandbox/microkernel/src/test/java/org/apache/jackrabbit/mk/HelloWorld.java (original)
+++ jackrabbit/sandbox/microkernel/src/test/java/org/apache/jackrabbit/mk/HelloWorld.java Wed Jun 22 15:41:57 2011
@@ -39,19 +39,19 @@ public class HelloWorld {
 
         if (mk.nodeExists("/test", head)) {
             // head = mk.commit(null, "- \"/test\"", head);
-            head = mk.commit("/", "-\"test\"", head);
+            head = mk.commit("/", "-\"test\"", head, null);
         }
 
-        head = mk.commit("/", "+\"foo\" : {\"bar\":{\"x\":\"100\"}}", head);
+        head = mk.commit("/", "+\"foo\" : {\"bar\":{\"x\":\"100\"}}", head, null);
         String s = mk.getNodes("/foo/bar", head);
         System.out.println(s);
 
         // head = mk.commit(null, "+\"/test\" : {\"name\":\"hello\"}", head);
-        head = mk.commit("/", "+\"test\" : {\"y\":\"true\", \"text\":[\"hello\", \"world\", true]}", head);
+        head = mk.commit("/", "+\"test\" : {\"y\":\"true\", \"text\":[\"hello\", \"world\", true]}", head, null);
 
         // head = mk.commit(null, "+\"/test\" : {\"name\":\"hello\"}", head);
-        head = mk.commit("/", "^\"test/x\" : false", head);
-        head = mk.commit("/", "^\"test/x\" : null", head);
+        head = mk.commit("/", "^\"test/x\" : false", head, null);
+        head = mk.commit("/", "^\"test/x\" : null", head, null);
 
         // head = mk.getHeadRevision();
         s = mk.getNodes("/test", head);
@@ -59,7 +59,7 @@ public class HelloWorld {
 
         System.out.println(s);
 
-        head = mk.commit("/", "-\"test\"", head);
+        head = mk.commit("/", "-\"test\"", head, null);
         s = mk.getNodes("/", head);
         System.out.println(s);