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/11 15:28:55 UTC

svn commit: r1299363 - /jackrabbit/sandbox/jackrabbit-microkernel/src/main/java/org/apache/jackrabbit/state/PersistentNodeState.java

Author: mduerig
Date: Sun Mar 11 14:28:55 2012
New Revision: 1299363

URL: http://svn.apache.org/viewvc?rev=1299363&view=rev
Log:
Microkernel based prototype of JCR implementation (WIP)
- improve parsing of child node entries 

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

Modified: jackrabbit/sandbox/jackrabbit-microkernel/src/main/java/org/apache/jackrabbit/state/PersistentNodeState.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/jackrabbit-microkernel/src/main/java/org/apache/jackrabbit/state/PersistentNodeState.java?rev=1299363&r1=1299362&r2=1299363&view=diff
==============================================================================
--- jackrabbit/sandbox/jackrabbit-microkernel/src/main/java/org/apache/jackrabbit/state/PersistentNodeState.java (original)
+++ jackrabbit/sandbox/jackrabbit-microkernel/src/main/java/org/apache/jackrabbit/state/PersistentNodeState.java Sun Mar 11 14:28:55 2012
@@ -7,7 +7,6 @@ import org.apache.jackrabbit.json.JsonTo
 import org.apache.jackrabbit.json.JsonValue;
 import org.apache.jackrabbit.json.JsonValue.JsonArray;
 import org.apache.jackrabbit.json.JsonValue.JsonAtom;
-import org.apache.jackrabbit.json.JsonValue.JsonObject;
 import org.apache.jackrabbit.json.Token;
 import org.apache.jackrabbit.json.UnescapingJsonTokenizer;
 import org.apache.jackrabbit.mk.api.MicroKernel;
@@ -16,17 +15,12 @@ import org.apache.jackrabbit.oak.model.A
 import org.apache.jackrabbit.oak.model.ChildNodeEntry;
 import org.apache.jackrabbit.oak.model.NodeState;
 import org.apache.jackrabbit.oak.model.PropertyState;
-import org.apache.jackrabbit.spi.commons.iterator.Iterators;
-import org.apache.jackrabbit.spi.commons.iterator.Predicate;
-import org.apache.jackrabbit.spi.commons.iterator.Transformer;
 import org.apache.jackrabbit.utils.Function0;
 
+import java.util.ArrayList;
 import java.util.HashMap;
-import java.util.Iterator;
+import java.util.List;
 import java.util.Map;
-import java.util.Map.Entry;
-
-import static org.apache.jackrabbit.json.FullJsonParser.parseObject;
 
 public class PersistentNodeState extends AbstractNodeState {
     private final MicroKernel microkernel;
@@ -88,33 +82,18 @@ public class PersistentNodeState extends
     @Override
     public Iterable<ChildNodeEntry> getChildNodeEntries(final long offset, final long length) {
         // fixme: microkernel should also use long for length
-        final String json = microkernel.getNodes(path.toMkPath(), revision, 1, offset, (int) length, null);
-        return new Iterable<ChildNodeEntry>() {
-            private final JsonObject jsonObject = parseObject(new UnescapingJsonTokenizer(json));
-
-            private final Iterator<Entry<String, JsonValue>> childObjects =
-                Iterators.filterIterator(jsonObject.value().entrySet().iterator(),
-                    new Predicate<Entry<String, JsonValue>>() {
-                        @Override
-                        public boolean evaluate(Entry<String, JsonValue> entry) {
-                            return entry.getValue().isObject();
-                        }
-                    });
-
-            private final Iterator<ChildNodeEntry> childNodeEntry =
-                Iterators.transformIterator(childObjects,
-                    new Transformer<Entry<String, JsonValue>, ChildNodeEntry>() {
-                        @Override
-                        public ChildNodeEntry transform(Entry<String, JsonValue> entry) {
-                            return createChildNodeEntry(entry.getKey());
-                        }
-                    });
+        String json = microkernel.getNodes(path.toMkPath(), revision, 1, offset, (int) length, null);
+        final List<ChildNodeEntry> childNodeEntries = new ArrayList<ChildNodeEntry>();
 
+        new JsonParser(new JsonHandler(){
             @Override
-            public Iterator<ChildNodeEntry> iterator() {
-                return childNodeEntry;
+            public void object(JsonParser parser, Token key, JsonTokenizer tokenizer) {
+                super.object(parser, key, tokenizer);
+                childNodeEntries.add(createChildNodeEntry(key.text()));
             }
-        };
+        }).parseObject(new UnescapingJsonTokenizer(json));
+
+        return childNodeEntries;
     }
 
     //------------------------------------------< private >---
@@ -130,6 +109,11 @@ public class PersistentNodeState extends
             public NodeState getNode() {
                 return new PersistentNodeState(microkernel, revision, path.concat(name));
             }
+
+            @Override
+            public String toString() {
+                return "ChildNodeEntry(" + name + ')';
+            }
         };
     }