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 md...@apache.org on 2012/04/24 19:15:47 UTC

svn commit: r1329867 - in /jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak: core/KernelContentSession.java kernel/KernelNodeStore.java kernel/KernelRoot.java

Author: mduerig
Date: Tue Apr 24 17:15:46 2012
New Revision: 1329867

URL: http://svn.apache.org/viewvc?rev=1329867&view=rev
Log:
OAK-18: Define Oak API 
- tentative means for saving to node store

Modified:
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/core/KernelContentSession.java
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/kernel/KernelNodeStore.java
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/kernel/KernelRoot.java

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/core/KernelContentSession.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/core/KernelContentSession.java?rev=1329867&r1=1329866&r2=1329867&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/core/KernelContentSession.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/core/KernelContentSession.java Tue Apr 24 17:15:46 2012
@@ -18,12 +18,12 @@ package org.apache.jackrabbit.oak.core;
 
 import org.apache.jackrabbit.mk.api.MicroKernel;
 import org.apache.jackrabbit.oak.api.AuthInfo;
-import org.apache.jackrabbit.oak.api.Root;
 import org.apache.jackrabbit.oak.api.ContentSession;
 import org.apache.jackrabbit.oak.api.CoreValueFactory;
 import org.apache.jackrabbit.oak.api.QueryEngine;
+import org.apache.jackrabbit.oak.api.Root;
+import org.apache.jackrabbit.oak.kernel.KernelNodeStore;
 import org.apache.jackrabbit.oak.kernel.KernelRoot;
-import org.apache.jackrabbit.oak.kernel.NodeStore;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -41,12 +41,12 @@ class KernelContentSession implements Co
 
     private final SimpleCredentials credentials;
     private final String workspaceName;
-    private final NodeStore store;
+    private final KernelNodeStore store;
     private final QueryEngine queryEngine;
     private final CoreValueFactory valueFactory;
 
     public KernelContentSession(SimpleCredentials credentials, String workspaceName,
-            NodeStore store, QueryEngine queryEngine, CoreValueFactory valueFactory) {
+            KernelNodeStore store, QueryEngine queryEngine, CoreValueFactory valueFactory) {
 
         this.credentials = credentials;
         this.workspaceName = workspaceName;

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/kernel/KernelNodeStore.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/kernel/KernelNodeStore.java?rev=1329867&r1=1329866&r2=1329867&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/kernel/KernelNodeStore.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/kernel/KernelNodeStore.java Tue Apr 24 17:15:46 2012
@@ -44,4 +44,16 @@ public class KernelNodeStore implements 
         throw new UnsupportedOperationException(); // TODO
     }
 
+    // TODO clarify write access to store. Expose through interface
+    void save(KernelRoot root, NodeState base) {
+        if (!(base instanceof KernelNodeState)) {
+            throw new IllegalArgumentException("Base state is not from this store");
+        }
+
+        KernelNodeState baseState = (KernelNodeState) base;
+        String targetPath = baseState.getPath();
+        String targetRevision = baseState.getRevision();
+        String jsop = root.getChanges();
+        kernel.commit(targetPath, jsop, targetRevision, null);
+    }
 }

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/kernel/KernelRoot.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/kernel/KernelRoot.java?rev=1329867&r1=1329866&r2=1329867&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/kernel/KernelRoot.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/kernel/KernelRoot.java Tue Apr 24 17:15:46 2012
@@ -18,12 +18,11 @@
  */
 package org.apache.jackrabbit.oak.kernel;
 
-import org.apache.jackrabbit.mk.api.MicroKernel;
 import org.apache.jackrabbit.mk.api.MicroKernelException;
 import org.apache.jackrabbit.mk.json.JsonBuilder;
+import org.apache.jackrabbit.oak.api.CommitFailedException;
 import org.apache.jackrabbit.oak.api.CoreValue;
 import org.apache.jackrabbit.oak.api.Root;
-import org.apache.jackrabbit.oak.api.CommitFailedException;
 import org.apache.jackrabbit.oak.api.Tree;
 import org.apache.jackrabbit.oak.kernel.KernelTree.Listener;
 
@@ -48,11 +47,11 @@ import static org.apache.jackrabbit.mk.u
  */
 public class KernelRoot implements Root {
 
-    private final NodeStore store;
+    private final KernelNodeStore store;
     private final String workspaceName;
 
     /** Base node state of this tree */
-    private KernelNodeState base;
+    private NodeState base;
 
     /** Root state of this tree */
     private KernelTree root;
@@ -60,10 +59,10 @@ public class KernelRoot implements Root 
     /** Log of changes to this tree */
     private ChangeLog changeLog = new ChangeLog();
 
-    public KernelRoot(NodeStore store, String workspaceName) {
+    public KernelRoot(KernelNodeStore store, String workspaceName) {
         this.store = store;
         this.workspaceName = workspaceName;
-        this.base = (KernelNodeState) store.getRoot().getChildNode(workspaceName);  // FIXME don't cast to implementation
+        this.base = store.getRoot().getChildNode(workspaceName);
         this.root = new KernelTree(base, changeLog);
     }
 
@@ -100,19 +99,15 @@ public class KernelRoot implements Root 
 
     @Override
     public void refresh() {
-        base = (KernelNodeState) store.getRoot().getChildNode(workspaceName);  // FIXME don't cast to implementation
+        base = store.getRoot().getChildNode(workspaceName);
     }
 
     @Override
     public void commit() throws CommitFailedException {
-        MicroKernel kernel = ((KernelNodeStore) store).kernel;  // FIXME don't cast to implementation
         try {
-            String targetPath = base.getPath();
-            String targetRevision = base.getRevision();
-            kernel.commit(targetPath, changeLog.toJsop(), targetRevision, null);
-
+            store.save(this, base);
             changeLog = new ChangeLog();
-            base = (KernelNodeState) store.getRoot().getChildNode(workspaceName);  // FIXME don't cast to implementation
+            base = store.getRoot().getChildNode(workspaceName);
             root = new KernelTree(base, changeLog);
         } catch (MicroKernelException e) {
             throw new CommitFailedException(e);
@@ -121,14 +116,17 @@ public class KernelRoot implements Root 
 
 
     //------------------------------------------------------------< internal >---
+
     /**
-     * Return the base node state of this tree
-     * @return base node state
+     * JSOP representation of the changes done to this tree
+     * @return  changes in JSOP representation
      */
-    NodeState getBaseNodeState() {
-        return base;
+    String getChanges() {
+        return changeLog.toJsop();
     }
 
+    //------------------------------------------------------------< private >---
+
     /**
      * Get a transient node state for the node identified by
      * {@code path}