You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jackrabbit.apache.org by md...@apache.org on 2012/03/09 16:42:23 UTC

svn commit: r1298885 - /jackrabbit/sandbox/jackrabbit-microkernel/src/main/java/org/apache/jackrabbit/state/TransientSpace.java

Author: mduerig
Date: Fri Mar  9 15:42:23 2012
New Revision: 1298885

URL: http://svn.apache.org/viewvc?rev=1298885&view=rev
Log:
Microkernel based prototype of JCR implementation (WIP)
- simplify/refactor transient space implementation

Modified:
    jackrabbit/sandbox/jackrabbit-microkernel/src/main/java/org/apache/jackrabbit/state/TransientSpace.java

Modified: jackrabbit/sandbox/jackrabbit-microkernel/src/main/java/org/apache/jackrabbit/state/TransientSpace.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/jackrabbit-microkernel/src/main/java/org/apache/jackrabbit/state/TransientSpace.java?rev=1298885&r1=1298884&r2=1298885&view=diff
==============================================================================
--- jackrabbit/sandbox/jackrabbit-microkernel/src/main/java/org/apache/jackrabbit/state/TransientSpace.java (original)
+++ jackrabbit/sandbox/jackrabbit-microkernel/src/main/java/org/apache/jackrabbit/state/TransientSpace.java Fri Mar  9 15:42:23 2012
@@ -26,7 +26,6 @@ import org.apache.jackrabbit.mk.api.Micr
 import org.apache.jackrabbit.spi.commons.iterator.Predicate;
 import org.apache.jackrabbit.state.ChangeTree.Listener;
 import org.apache.jackrabbit.state.ChangeTree.NodeDelta;
-import org.apache.jackrabbit.utils.Provider;
 
 import javax.jcr.RepositoryException;
 
@@ -38,8 +37,29 @@ import javax.jcr.RepositoryException;
  */
 public class TransientSpace {
     private final MicroKernel microkernel;
+    private final String workspace;
     private final ChangeLog changeLog = new ChangeLog();
-    private final Provider<ChangeTree> changeTreeProvider;
+    private final Listener changeTreeListener = new Listener() {
+        @Override
+        public void added(NodeDelta nodeDelta) {
+            changeLog.addNode(nodeDelta.getPath());
+        }
+
+        @Override
+        public void removed(NodeDelta nodeDelta) {
+            changeLog.removeNode(nodeDelta.getPath());
+        }
+
+        @Override
+        public void moved(Path source, NodeDelta nodeDelta) {
+            changeLog.moveNode(source, nodeDelta.getPath());
+        }
+
+        @Override
+        public void setValue(NodeDelta parent, String name, JsonValue value) {
+            changeLog.setProperty(parent.getPath(), name, value);
+        }
+    };
 
     private ChangeTree changeTree;
     private String revision;
@@ -53,45 +73,10 @@ public class TransientSpace {
      */
     public TransientSpace(final String workspace, final MicroKernel microkernel, final String revision) {
         this.microkernel = microkernel;
+        this.workspace = workspace;
         this.revision = revision;
 
-        final Listener changeTreeListener = new Listener() {
-            @Override
-            public void added(NodeDelta nodeDelta) {
-                changeLog.addNode(nodeDelta.getPath());
-            }
-
-            @Override
-            public void removed(NodeDelta nodeDelta) {
-                changeLog.removeNode(nodeDelta.getPath());
-            }
-
-            @Override
-            public void moved(Path source, NodeDelta nodeDelta) {
-                changeLog.moveNode(source, nodeDelta.getPath());
-            }
-
-            @Override
-            public void setValue(NodeDelta parent, String name, JsonValue value) {
-                changeLog.setProperty(parent.getPath(), name, value);
-            }
-        };
-
-        final Predicate<Path> nodeExists = new Predicate<Path>() {
-            @Override
-            public boolean evaluate(Path path) {
-                return microkernel.nodeExists(path.toMkPath(), getRevision());
-            }
-        };
-
-        changeTreeProvider = new Provider<ChangeTree>() {
-            @Override
-            public ChangeTree get() {
-                return new ChangeTree(Path.create(workspace), changeTreeListener, nodeExists);
-            }
-        };
-
-        changeTree = changeTreeProvider.get();
+        changeTree = createChangeTree(workspace, changeTreeListener);
     }
 
     /**
@@ -113,7 +98,7 @@ public class TransientSpace {
         try {
             revision = microkernel.commit("", changeLog.toJsop(), revision, "");
             changeLog.clear();
-            changeTree = changeTreeProvider.get();
+            changeTree = createChangeTree(workspace, changeTreeListener);
             return revision;
         }
         catch (MicroKernelException e) {
@@ -129,12 +114,13 @@ public class TransientSpace {
      * @return the new revision
      */
     public String refresh(boolean keepChanges) {
+        revision = microkernel.getHeadRevision();
         if (!keepChanges) {
             changeLog.clear();
-            changeTree = changeTreeProvider.get();
+            changeTree = createChangeTree(workspace, changeTreeListener);
         }
 
-        return revision = microkernel.getHeadRevision();
+        return revision;
     }
 
     /**
@@ -146,7 +132,13 @@ public class TransientSpace {
 
     //------------------------------------------< private >---
 
-    private String getRevision() {
-        return revision;
+    private ChangeTree createChangeTree(final String workspace, Listener listener) {
+        return new ChangeTree(Path.create(workspace), listener, new Predicate<Path>() {
+            @Override
+            public boolean evaluate(Path path) {
+                return microkernel.nodeExists(path.toMkPath(), revision);
+            }
+        });
     }
+
 }