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 18:23:41 UTC

svn commit: r1298931 - in /jackrabbit/sandbox/jackrabbit-microkernel/src/main/java/org/apache/jackrabbit: state/TransientNodeState.java utils/Provider.java

Author: mduerig
Date: Fri Mar  9 17:23:41 2012
New Revision: 1298931

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

Removed:
    jackrabbit/sandbox/jackrabbit-microkernel/src/main/java/org/apache/jackrabbit/utils/Provider.java
Modified:
    jackrabbit/sandbox/jackrabbit-microkernel/src/main/java/org/apache/jackrabbit/state/TransientNodeState.java

Modified: jackrabbit/sandbox/jackrabbit-microkernel/src/main/java/org/apache/jackrabbit/state/TransientNodeState.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/jackrabbit-microkernel/src/main/java/org/apache/jackrabbit/state/TransientNodeState.java?rev=1298931&r1=1298930&r2=1298931&view=diff
==============================================================================
--- jackrabbit/sandbox/jackrabbit-microkernel/src/main/java/org/apache/jackrabbit/state/TransientNodeState.java (original)
+++ jackrabbit/sandbox/jackrabbit-microkernel/src/main/java/org/apache/jackrabbit/state/TransientNodeState.java Fri Mar  9 17:23:41 2012
@@ -31,7 +31,6 @@ import org.apache.jackrabbit.spi.commons
 import org.apache.jackrabbit.spi.commons.iterator.Predicate;
 import org.apache.jackrabbit.spi.commons.iterator.Transformer;
 import org.apache.jackrabbit.state.ChangeTree.NodeDelta;
-import org.apache.jackrabbit.utils.Provider;
 
 import javax.jcr.ItemExistsException;
 import javax.jcr.ItemNotFoundException;
@@ -42,24 +41,14 @@ import java.util.Map.Entry;
 
 public class TransientNodeState {
     private final Context sessionContext;
-    private final Provider<NodeDelta> nodeDelta;
 
     private String revision;
     private JsonObject jsonObject;
+    private NodeDelta nodeDelta;
 
-    private TransientNodeState(Context sessionContext, final NodeDelta nodeDelta) {
+    private TransientNodeState(Context sessionContext, NodeDelta nodeDelta) {
         this.sessionContext = sessionContext;
-
-        this.nodeDelta = new Provider<NodeDelta>() {
-            private NodeDelta nd = nodeDelta;
-
-            @Override
-            public NodeDelta get() {
-                // todo: return cached value as long as no refresh(false) has occurred.
-                nd = getTransientSpace().getNodeDelta(nd.getPath());
-                return nd;
-            }
-        };
+        this.nodeDelta = nodeDelta;
     }
 
     public boolean isRoot() {
@@ -67,7 +56,7 @@ public class TransientNodeState {
     }
 
     public Path getPath() {
-        return nodeDelta.get().getPath();
+        return getNodeDelta().getPath();
     }
 
     public String getName() {
@@ -75,32 +64,32 @@ public class TransientNodeState {
     }
 
     public boolean isNew() {
-        NodeDelta nd = nodeDelta.get();
-        return nd.isTransient() && !nd.isRemoved();
+        NodeDelta delta = getNodeDelta();
+        return delta.isTransient() && !delta.isRemoved();
     }
 
     public boolean isModified() {
-        return nodeDelta.get().isTransient();
+        return getNodeDelta().isTransient();
     }
 
     public TransientNodeState addNode(String name) throws ItemExistsException {
-        NodeDelta child = nodeDelta.get().addNode(name);
+        NodeDelta child = getNodeDelta().addNode(name);
         return getNodeState(sessionContext, child);
     }
 
     public void remove() throws ItemNotFoundException {
-        nodeDelta.get().getParent().removeNode(getName());
+        getNodeDelta().getParent().removeNode(getName());
     }
 
     public void move(String name, Path destination) throws ItemExistsException, PathNotFoundException,
             ItemNotFoundException {
 
-        nodeDelta.get().moveNode(name, destination);
+        getNodeDelta().moveNode(name, destination);
         nodeStateCache().remove(getPath().concat(name));
     }
 
     public void setProperty(String name, JsonValue value) {
-        nodeDelta.get().setValue(name, value);
+        getNodeDelta().setValue(name, value);
     }
 
     public boolean hasChildNodeStates() {
@@ -115,7 +104,7 @@ public class TransientNodeState {
                     new Predicate<Entry<String, JsonValue>>() {
                         @Override
                         public boolean evaluate(Entry<String, JsonValue> entry) {
-                            return isNode(entry.getValue()) && !nodeDelta.get().isNodeModified(entry.getKey());
+                            return isNode(entry.getValue()) && !getNodeDelta().isNodeModified(entry.getKey());
                         }
                     });
 
@@ -123,11 +112,11 @@ public class TransientNodeState {
             new Transformer<Entry<String, JsonValue>, TransientNodeState>() {
                 @Override
                 public TransientNodeState transform(Entry<String, JsonValue> entry) {
-                    return getNodeState(sessionContext, nodeDelta.get().getNode(entry.getKey()));
+                    return getNodeState(sessionContext, getNodeDelta().getNode(entry.getKey()));
                 }
         });
 
-        Iterator<TransientNodeState> modifiedNodeStates = Iterators.transformIterator(nodeDelta.get().getNodes(),
+        Iterator<TransientNodeState> modifiedNodeStates = Iterators.transformIterator(getNodeDelta().getNodes(),
             new Transformer<NodeDelta, TransientNodeState>() {
                 @Override
                 public TransientNodeState transform(NodeDelta delta) {
@@ -155,11 +144,11 @@ public class TransientNodeState {
                         @Override
                         public boolean evaluate(Entry<String, JsonValue> entry) {
                             return !entry.getKey().startsWith(":") && !isNode(entry.getValue())
-                                    && !nodeDelta.get().hasProperty(entry.getKey());
+                                    && !getNodeDelta().hasProperty(entry.getKey());
                         }
                     });
 
-        return Iterators.iteratorChain(propertyEntries, nodeDelta.get().getProperties());
+        return Iterators.iteratorChain(propertyEntries, getNodeDelta().getProperties());
     }
 
     public Iterator<Entry<String, JsonValue>> getProperties(Predicate<Entry<String, JsonValue>> condition) {
@@ -180,16 +169,16 @@ public class TransientNodeState {
     }
 
     public boolean isPropertyNew(String name) {
-        JsonValue value = nodeDelta.get().getProperty(name);
+        JsonValue value = getNodeDelta().getProperty(name);
         return value != null && !value.isNull() && getPersistedPropertyValue(name) == null;
     }
 
     public boolean isPropertyModified(String name) {
-        return nodeDelta.get().hasProperty(name);
+        return getNodeDelta().hasProperty(name);
     }
 
     public void removeProperty(String name) {
-        nodeDelta.get().setValue(name, null);
+        getNodeDelta().setValue(name, null);
     }
 
     public static TransientNodeState getNodeState(Context sessionContext, Path path) {
@@ -241,7 +230,7 @@ public class TransientNodeState {
     }
 
     private JsonValue getPropertyValueOrNull(String name) {
-        JsonValue value = nodeDelta.get().getProperty(name);
+        JsonValue value = getNodeDelta().getProperty(name);
         if (value == null) {
             return getPersistedPropertyValue(name);
         }
@@ -261,7 +250,7 @@ public class TransientNodeState {
     }
 
     private synchronized JsonObject getJsonObject() {
-        Path path = nodeDelta.get().getPersistentPath();
+        Path path = getNodeDelta().getPersistentPath();
         String baseRevision = getBaseRevision();
         if (jsonObject == null || !revision.equals(baseRevision)) {
             revision =  baseRevision;
@@ -277,4 +266,8 @@ public class TransientNodeState {
         return jsonObject;
     }
 
+    private NodeDelta getNodeDelta() {
+        return nodeDelta = getTransientSpace().getNodeDelta(nodeDelta.getPath());
+    }
+
 }