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/10 15:46:33 UTC

svn commit: r1134325 - 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/json/

Author: thomasm
Date: Fri Jun 10 13:46:33 2011
New Revision: 1134325

URL: http://svn.apache.org/viewvc?rev=1134325&view=rev
Log:
JsopBuilder: use the same method names as JSONWriter / JSONStringer.

Modified:
    jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/MicroKernelImpl.java
    jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/json/JsopBuilder.java
    jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/mem/NodeImpl.java
    jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/mem/Val.java
    jackrabbit/sandbox/microkernel/src/test/java/org/apache/jackrabbit/mk/json/JsopTest.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=1134325&r1=1134324&r2=1134325&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 Fri Jun 10 13:46:33 2011
@@ -457,16 +457,14 @@ public class MicroKernelImpl implements 
     static class JSONObject extends LinkedHashMap<String, Object>{};
     static class JSONArray extends LinkedList {
         public String toString() {
-            JsopBuilder buff = new JsopBuilder();
-            buff.arrayBegin();
+            JsopBuilder buff = new JsopBuilder().array();
             for (Object o : this) {
                 if (o instanceof String) {
                     o = JsopBuilder.encode(o.toString());
                 }
                 buff.value(o.toString());
             }
-            buff.arrayEnd();
-            return buff.toString();
+            return buff.endArray().toString();
         }
     }
 }

Modified: jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/json/JsopBuilder.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/json/JsopBuilder.java?rev=1134325&r1=1134324&r2=1134325&view=diff
==============================================================================
--- jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/json/JsopBuilder.java (original)
+++ jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/json/JsopBuilder.java Fri Jun 10 13:46:33 2011
@@ -20,27 +20,45 @@ import org.apache.jackrabbit.mk.mem.Cons
 
 /**
  * A builder for Json and Jsop strings. It encodes string values, and knows when
- * a comma is needed.
+ * a comma is needed. A comma is appended before '{', '[', a value, or a key;
+ * but only if the last appended token was '}', ']', or a value. There is no
+ * limit to the number of nesting levels.
  */
 public class JsopBuilder {
 
     private StringBuilder buff = new StringBuilder();
     private boolean needComma;
 
-    public JsopBuilder append(String token) {
-        buff.append(token);
+    /**
+     * Append an already formatted string, comment, or whitespace.
+     *
+     * @param string the string to append
+     * @return this
+     */
+    public JsopBuilder append(String string) {
+        buff.append(string);
         needComma = false;
         return this;
     }
 
-    public JsopBuilder objectBegin() {
+    /**
+     * Append '{'. A comma is appended first if needed.
+     *
+     * @return this
+     */
+    public JsopBuilder object() {
         optionalComma();
         buff.append('{');
         needComma = false;
         return this;
     }
 
-    public JsopBuilder objectEnd() {
+    /**
+     * Append '}'.
+     *
+     * @return this
+     */
+    public JsopBuilder endObject() {
         if (Constants.JSON_NEWLINES) {
             buff.append("\n}");
         } else {
@@ -50,44 +68,86 @@ public class JsopBuilder {
         return this;
     }
 
-    public JsopBuilder arrayBegin() {
+    /**
+     * Append '['. A comma is appended first if needed.
+     *
+     * @return this
+     */
+    public JsopBuilder array() {
         optionalComma();
         buff.append('[');
         needComma = false;
         return this;
     }
 
-    public JsopBuilder arrayEnd() {
+    /**
+     * Append ']'.
+     *
+     * @return this
+     */
+    public JsopBuilder endArray() {
         buff.append("]");
         needComma = true;
         return this;
     }
 
-    public JsopBuilder key(String propertyName) {
+    /**
+     * Append the key (in quotes) plus a colon. A comma is appended first if
+     * needed.
+     *
+     * @param name the key
+     * @return this
+     */
+    public JsopBuilder key(String name) {
         optionalComma();
         if (Constants.JSON_NEWLINES) {
             buff.append('\n');
         }
-        buff.append(encode(propertyName)).append(':');
+        buff.append(encode(name)).append(':');
         needComma = false;
         return this;
     }
 
+    /**
+     * Append a number. A comma is appended first if needed.
+     *
+     * @param value the value
+     * @return this
+     */
     public JsopBuilder value(long value) {
         return encodedValue(Long.toString(value));
     }
 
+    /**
+     * Append the boolean value 'true' or 'false'. A comma is appended first if
+     * needed.
+     *
+     * @param value the value
+     * @return this
+     */
     public JsopBuilder value(boolean value) {
         return encodedValue(Boolean.toString(value));
     }
 
+    /**
+     * Append a string or null. A comma is appended first if needed.
+     *
+     * @param value the value
+     * @return this
+     */
     public JsopBuilder value(String value) {
         return encodedValue(encode(value));
     }
 
-    public JsopBuilder encodedValue(String encodedValue) {
+    /**
+     * Append an already encoded value. A comma is appended first if needed.
+     *
+     * @param value the value
+     * @return this
+     */
+    public JsopBuilder encodedValue(String value) {
         optionalComma();
-        buff.append(encodedValue);
+        buff.append(value);
         needComma = true;
         return this;
     }
@@ -98,6 +158,9 @@ public class JsopBuilder {
         }
     }
 
+    /**
+     * Get the generated string.
+     */
     public String toString() {
         return buff.toString();
     }

Modified: jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/mem/NodeImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/mem/NodeImpl.java?rev=1134325&r1=1134324&r2=1134325&view=diff
==============================================================================
--- jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/mem/NodeImpl.java (original)
+++ jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/mem/NodeImpl.java Fri Jun 10 13:46:33 2011
@@ -147,7 +147,7 @@ public class NodeImpl {
     public String toString(boolean includeProperties, int depth, int childOffset, int childCount) {
         JsopBuilder json = new JsopBuilder();
         if (includeProperties) {
-            json.objectBegin();
+            json.object();
             if (properties != null) {
                 for (Entry<String, Val> e : properties.entrySet()) {
                     json.key(e.getKey()).encodedValue(e.getValue().toString());
@@ -167,7 +167,7 @@ public class NodeImpl {
             }
         }
         if (includeProperties) {
-            json.objectEnd();
+            json.endObject();
         }
         return json.toString();
     }

Modified: jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/mem/Val.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/mem/Val.java?rev=1134325&r1=1134324&r2=1134325&view=diff
==============================================================================
--- jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/mem/Val.java (original)
+++ jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/mem/Val.java Fri Jun 10 13:46:33 2011
@@ -294,14 +294,14 @@ public class Val implements Comparable<V
         switch (type) {
         case TYPE_MULTI_VALUE: {
             JsopBuilder buff = new JsopBuilder();
-            buff.arrayBegin();
+            buff.array();
             for (Val v : (Val[]) value) {
                 // should in theory never be null (unless there is a bug)
                 if (v != null) {
                     buff.encodedValue(v.toString());
                 }
             }
-            return buff.arrayEnd().toString();
+            return buff.endArray().toString();
         }
         case PropertyType.BOOLEAN:
         case PropertyType.LONG:

Modified: jackrabbit/sandbox/microkernel/src/test/java/org/apache/jackrabbit/mk/json/JsopTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/microkernel/src/test/java/org/apache/jackrabbit/mk/json/JsopTest.java?rev=1134325&r1=1134324&r2=1134325&view=diff
==============================================================================
--- jackrabbit/sandbox/microkernel/src/test/java/org/apache/jackrabbit/mk/json/JsopTest.java (original)
+++ jackrabbit/sandbox/microkernel/src/test/java/org/apache/jackrabbit/mk/json/JsopTest.java Fri Jun 10 13:46:33 2011
@@ -191,20 +191,20 @@ public class JsopTest extends TestCase {
     public void testBuilder() throws IOException {
 
         JsopBuilder buff = new JsopBuilder();
-        buff.append("+ ").objectBegin().
+        buff.append("+ ").object().
             key("foo").value("bar").
             key("int").value(3).
             key("decimal").encodedValue("3.0").
-            key("obj").objectBegin().
+            key("obj").object().
                 key("boolean").value(true).
                 key("null").value(null).
-                key("arr").arrayBegin().
+                key("arr").array().
                     value(1).
                     value("42").
-                arrayEnd().
-            objectEnd().
+                endArray().
+            endObject().
             key("some").value("more").
-        objectEnd();
+        endObject();
 
         String json = buff.toString();
         assertEquals("+ {\"foo\":\"bar\",\"int\":3,\"decimal\":3.0," +