You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jackrabbit.apache.org by th...@apache.org on 2011/06/09 11:25:00 UTC

svn commit: r1133738 - in /jackrabbit/sandbox/microkernel/src: main/java/org/apache/jackrabbit/mk/ main/java/org/apache/jackrabbit/mk/json/ main/java/org/apache/jackrabbit/mk/mem/ test/java/org/apache/jackrabbit/mk/

Author: thomasm
Date: Thu Jun  9 09:24:59 2011
New Revision: 1133738

URL: http://svn.apache.org/viewvc?rev=1133738&view=rev
Log:
Support arrays.

Modified:
    jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/MicroKernelImpl.java
    jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/json/DiffParser.java
    jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/mem/JsopBuilder.java
    jackrabbit/sandbox/microkernel/src/test/java/org/apache/jackrabbit/mk/HelloWorld.java

Modified: jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/MicroKernelImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/MicroKernelImpl.java?rev=1133738&r1=1133737&r2=1133738&view=diff
==============================================================================
--- jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/MicroKernelImpl.java (original)
+++ jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/MicroKernelImpl.java Thu Jun  9 09:24:59 2011
@@ -20,6 +20,8 @@ import org.apache.jackrabbit.mk.api.Micr
 import org.apache.jackrabbit.mk.api.MicroKernelException;
 import org.apache.jackrabbit.mk.json.DiffHandler;
 import org.apache.jackrabbit.mk.json.DiffParser;
+import org.apache.jackrabbit.mk.mem.JsopBuilder;
+import org.apache.jackrabbit.mk.mem.JsopTokenizer;
 import org.apache.jackrabbit.mk.store.Commit;
 import org.apache.jackrabbit.mk.store.CommitBuilder;
 import org.apache.jackrabbit.mk.store.Node;
@@ -403,9 +405,9 @@ public class MicroKernelImpl implements 
         for (Map.Entry prop : node.getProperties().entrySet()) {
             buf.append('"');
             buf.append(prop.getKey());
-            buf.append("\":\"");
+            buf.append("\":");
             buf.append(prop.getValue());
-            buf.append("\",");
+            buf.append(",");
         }
 
         long childCount = node.getChildNodeCount();
@@ -443,7 +445,11 @@ public class MicroKernelImpl implements 
         for (Iterator it = jsonNode.entrySet().iterator(); it.hasNext(); ) {
             Map.Entry entry = (Map.Entry) it.next();
             if (! (entry.getValue() instanceof JSONObject)) {
-                props.put((String) entry.getKey(), entry.getValue().toString());
+                Object o = entry.getValue();
+                if (o instanceof String) {
+                    o = JsopTokenizer.encode(o.toString());
+                }
+                props.put((String) entry.getKey(), o.toString());
             }
         }
         cb.addNode(path, name, props);
@@ -458,5 +464,15 @@ public class MicroKernelImpl implements 
 
     //--------------------------------------------------------< inner classes >
     static class JSONObject extends LinkedHashMap<String, Object>{};
-    static class JSONArray extends LinkedList{};
+    static class JSONArray extends LinkedList {
+        public String toString() {
+            JsopBuilder buff = new JsopBuilder();
+            buff.beginArray();
+            for (Object o : this) {
+                buff.addValue(JsopTokenizer.encode(o.toString()));
+            }
+            buff.endArray();
+            return buff.toString();
+        }
+    }
 }

Modified: jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/json/DiffParser.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/json/DiffParser.java?rev=1133738&r1=1133737&r2=1133738&view=diff
==============================================================================
--- jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/json/DiffParser.java (original)
+++ jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/json/DiffParser.java Thu Jun  9 09:24:59 2011
@@ -22,6 +22,7 @@ import java.io.Reader;
 import java.io.StringReader;
 import java.io.InputStream;
 import java.io.InputStreamReader;
+import org.apache.jackrabbit.mk.mem.JsopTokenizer;
 
 /** <code>DiffParser</code>...
  *
@@ -230,8 +231,8 @@ public class DiffParser {
                 handler.addNode(path, value);
                 break;
             case SYMBOL_SET_PROPERTY:
-                // handler.setProperty(path, JsopTokenizer.encode(value));
-                handler.setProperty(path, value);
+                handler.setProperty(path, JsopTokenizer.encode(value));
+                // handler.setProperty(path, value);
                 break;
             case SYMBOL_MOVE:
                 handler.move(path, value);

Modified: jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/mem/JsopBuilder.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/mem/JsopBuilder.java?rev=1133738&r1=1133737&r2=1133738&view=diff
==============================================================================
--- jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/mem/JsopBuilder.java (original)
+++ jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/mem/JsopBuilder.java Thu Jun  9 09:24:59 2011
@@ -24,17 +24,36 @@ public class JsopBuilder {
     private BitSet commas = new BitSet();
     private int level;
 
-    void beginObject() {
+    public void beginObject() {
         buff.append('{');
         commas.clear(level++);
     }
 
-    void endObject() {
+    public void endObject() {
         buff.append("\n}");
         commas.clear(level--);
     }
 
-    void addProperty(String propertyName, String encodedValue) {
+    public void beginArray() {
+        buff.append('[');
+        commas.clear(level++);
+    }
+
+    public void endArray() {
+        buff.append("]");
+        commas.clear(level--);
+    }
+
+    public void addValue(String encodedValue) {
+        if (commas.get(level)) {
+            buff.append(',');
+        } else {
+            commas.set(level);
+        }
+        buff.append(encodedValue);
+    }
+
+    public void addProperty(String propertyName, String encodedValue) {
         if (commas.get(level)) {
             buff.append(',');
         } else {

Modified: jackrabbit/sandbox/microkernel/src/test/java/org/apache/jackrabbit/mk/HelloWorld.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/microkernel/src/test/java/org/apache/jackrabbit/mk/HelloWorld.java?rev=1133738&r1=1133737&r2=1133738&view=diff
==============================================================================
--- jackrabbit/sandbox/microkernel/src/test/java/org/apache/jackrabbit/mk/HelloWorld.java (original)
+++ jackrabbit/sandbox/microkernel/src/test/java/org/apache/jackrabbit/mk/HelloWorld.java Thu Jun  9 09:24:59 2011
@@ -25,7 +25,7 @@ public class HelloWorld {
 
     public static void main(String... args) {
         test("mem:");
-        // test("fs:{homeDir};clean");
+        test("fs:{homeDir};clean");
     }
 
     private static void test(String url) {
@@ -42,7 +42,7 @@ public class HelloWorld {
             head = mk.commit("/", "-\"test\"", head);
         }
         // head = mk.commit(null, "+\"/test\" : {\"name\":\"hello\"}", head);
-        head = mk.commit("/", "+\"test\" : {\"name\":\"hello\"}", head);
+        head = mk.commit("/", "+\"test\" : {\"text\":[\"hello\", \"world\"]}", head);
 
         // head = mk.getHeadRevision();
         String s = mk.getNodes("/test", 0, head);
@@ -50,10 +50,11 @@ public class HelloWorld {
 
         System.out.println(s);
 
-        head = mk.commit("/", "- \"test\"", head);
+        head = mk.commit("/", "-\"test\"", head);
         s = mk.getNodes("/", 0, head);
         System.out.println(s);
 
         mk.dispose();
     }
+
 }