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/04 14:19:59 UTC

svn commit: r1309356 - in /jackrabbit/oak/trunk: oak-core/src/main/java/org/apache/jackrabbit/oak/kernel/KernelNodeStateEditor.java oak-mk/src/main/java/org/apache/jackrabbit/mk/model/NodeStateEditor.java

Author: mduerig
Date: Wed Apr  4 12:19:58 2012
New Revision: 1309356

URL: http://svn.apache.org/viewvc?rev=1309356&view=rev
Log:
OAK-9: Internal tree builder
Javadoc, minor refector

Modified:
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/kernel/KernelNodeStateEditor.java
    jackrabbit/oak/trunk/oak-mk/src/main/java/org/apache/jackrabbit/mk/model/NodeStateEditor.java

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/kernel/KernelNodeStateEditor.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/kernel/KernelNodeStateEditor.java?rev=1309356&r1=1309355&r2=1309356&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/kernel/KernelNodeStateEditor.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/kernel/KernelNodeStateEditor.java Wed Apr  4 12:19:58 2012
@@ -22,7 +22,10 @@ import org.apache.jackrabbit.mk.api.Micr
 import org.apache.jackrabbit.mk.model.NodeState;
 import org.apache.jackrabbit.mk.model.NodeStateEditor;
 import org.apache.jackrabbit.mk.model.PropertyState;
-import org.apache.jackrabbit.mk.util.PathUtils;
+
+import static org.apache.jackrabbit.mk.util.PathUtils.elements;
+import static org.apache.jackrabbit.mk.util.PathUtils.getName;
+import static org.apache.jackrabbit.mk.util.PathUtils.getParentPath;
 
 /**
  * This {@code NodeStateEditor} implementation accumulates all changes into a json diff
@@ -38,16 +41,32 @@ import org.apache.jackrabbit.mk.util.Pat
  * - spool write operations through to the private working copy on a background thread
  */
 public class KernelNodeStateEditor implements NodeStateEditor {
+
+    /** Base node state of this private branch */
     private final NodeState base;
+
+    /** Transient state this editor is acting upon */
     private final TransientNodeState transientState;
+
+    /** Json diff of this private branch */
     private final StringBuilder jsop;
 
+    /**
+     * Create a new node state editor representing the root of a fresh
+     * private branch.
+     * @param base  base node state of the private branch
+     */
     KernelNodeStateEditor(NodeState base) {
         this.base = base;
         transientState = new TransientNodeState(base, this, null, "");
         jsop = new StringBuilder();
     }
 
+    /**
+     * Create a new node state editor for a given transient node state.
+     * @param parentEditor  editor of the parent of {@code state}
+     * @param state  transient node state for which to create the node state editor
+     */
     KernelNodeStateEditor(KernelNodeStateEditor parentEditor, TransientNodeState state) {
         base = parentEditor.base;
         transientState = state;
@@ -85,14 +104,14 @@ public class KernelNodeStateEditor imple
 
     @Override
     public void move(String sourcePath, String destPath) {
-        TransientNodeState sourceParent = getTransientState(PathUtils.getAncestorPath(sourcePath, 1));
-        String sourceName = PathUtils.getName(sourcePath);
+        TransientNodeState sourceParent = getTransientState(getParentPath(sourcePath));
+        String sourceName = getName(sourcePath);
         if (sourceParent == null || !sourceParent.hasNode(sourceName)) {
             return;
         }
         
-        TransientNodeState destParent = getTransientState(PathUtils.getAncestorPath(destPath, 1));
-        String destName = PathUtils.getName(destPath);
+        TransientNodeState destParent = getTransientState(getParentPath(sourcePath));
+        String destName = getName(destPath);
         if (destParent == null || destParent.hasNode(destName)) {
             return;
         }
@@ -104,14 +123,14 @@ public class KernelNodeStateEditor imple
 
     @Override
     public void copy(String sourcePath, String destPath) {
-        TransientNodeState sourceParent = getTransientState(PathUtils.getAncestorPath(sourcePath, 1));
-        String sourceName = PathUtils.getName(sourcePath);
+        TransientNodeState sourceParent = getTransientState(getParentPath(sourcePath));
+        String sourceName = getName(sourcePath);
         if (sourceParent == null || !sourceParent.hasNode(sourceName)) {
             return;
         }
 
-        TransientNodeState destParent = getTransientState(PathUtils.getAncestorPath(destPath, 1));
-        String destName = PathUtils.getName(destPath);
+        TransientNodeState destParent = getTransientState(getParentPath(sourcePath));
+        String destName = getName(destPath);
         if (destParent == null || destParent.hasNode(destName)) {
             return;
         }
@@ -136,6 +155,14 @@ public class KernelNodeStateEditor imple
 
     //------------------------------------------------------------< internal >---
 
+    /**
+     * Atomically merges the changes from this branch back into the
+     * {@code target}.
+     *
+     * @param microkernel Microkernel instance for applying the changes
+     * @param target target of the merge operation
+     * @return node state resulting from merging
+     */
     NodeState mergeInto(MicroKernel microkernel, KernelNodeState target) {
         String targetPath = target.getRevision();
         String targetRevision = target.getPath();
@@ -143,13 +170,24 @@ public class KernelNodeStateEditor imple
         return new KernelNodeState(microkernel, targetPath, rev);
     }
 
+    /**
+     * @return the {@link TransientNodeState} instance this editor is
+     *         acting upon.
+     */
     TransientNodeState getTransientState() {
         return transientState;
     }
 
+    /**
+     * Get a transient node state for the node identified by
+     * {@code path}
+     * @param path  the path to the node state
+     * @return  a {@link TransientNodeState} instance for the item
+     *          at {@code path} or {@code null} if no such item exits.
+     */
     private TransientNodeState getTransientState(String path) {
         TransientNodeState state = transientState;
-        for (String name : PathUtils.elements(path)) {
+        for (String name : elements(path)) {
             state = state.getChildNode(name);
             if (state == null) {
                 return null;
@@ -158,6 +196,11 @@ public class KernelNodeStateEditor imple
         return state;
     }
 
+    /**
+     * Path of the item {@code name}
+     * @param name
+     * @return relative path of the item {@code name}
+     */
     private String path(String name) {
         String path = transientState.getPath();
         return path.isEmpty() ? name : path + '/' + name;

Modified: jackrabbit/oak/trunk/oak-mk/src/main/java/org/apache/jackrabbit/mk/model/NodeStateEditor.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-mk/src/main/java/org/apache/jackrabbit/mk/model/NodeStateEditor.java?rev=1309356&r1=1309355&r2=1309356&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-mk/src/main/java/org/apache/jackrabbit/mk/model/NodeStateEditor.java (original)
+++ jackrabbit/oak/trunk/oak-mk/src/main/java/org/apache/jackrabbit/mk/model/NodeStateEditor.java Wed Apr  4 12:19:58 2012
@@ -52,7 +52,10 @@ public interface NodeStateEditor {
 
     /**
      * Move the node state located at {@code sourcePath} to a node
-     * state at {@code destPath}.
+     * state at {@code destPath}. Do noting if either the source
+     * does not exist, the parent of the destination does not exist
+     * of the destination exists already.
+     *
      * @param sourcePath source path relative to this node state
      * @param destPath destination path relative to this node state
      */
@@ -60,7 +63,10 @@ public interface NodeStateEditor {
 
     /**
      * Copy the node state located at {@code sourcePath} to a node
-     * state at {@code destPath}.
+     * state at {@code destPath}. Do noting if either the source
+     * does not exist, the parent of the destination does not exist
+     * of the destination exists already.
+     *
      * @param sourcePath source path relative to this node state
      * @param destPath destination path relative to this node state
      */