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 2011/12/08 20:08:16 UTC

svn commit: r1212036 - /jackrabbit/sandbox/jackrabbit-mk/jackrabbit-spi2microkernel/src/main/java/org/apache/jackrabbit/spi2microkernel/json/JsonValue.java

Author: mduerig
Date: Thu Dec  8 19:08:15 2011
New Revision: 1212036

URL: http://svn.apache.org/viewvc?rev=1212036&view=rev
Log:
Microkernel based Jackrabbit prototype (WIP)
- add factory methods
- add remove method

Modified:
    jackrabbit/sandbox/jackrabbit-mk/jackrabbit-spi2microkernel/src/main/java/org/apache/jackrabbit/spi2microkernel/json/JsonValue.java

Modified: jackrabbit/sandbox/jackrabbit-mk/jackrabbit-spi2microkernel/src/main/java/org/apache/jackrabbit/spi2microkernel/json/JsonValue.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/jackrabbit-mk/jackrabbit-spi2microkernel/src/main/java/org/apache/jackrabbit/spi2microkernel/json/JsonValue.java?rev=1212036&r1=1212035&r2=1212036&view=diff
==============================================================================
--- jackrabbit/sandbox/jackrabbit-mk/jackrabbit-spi2microkernel/src/main/java/org/apache/jackrabbit/spi2microkernel/json/JsonValue.java (original)
+++ jackrabbit/sandbox/jackrabbit-mk/jackrabbit-spi2microkernel/src/main/java/org/apache/jackrabbit/spi2microkernel/json/JsonValue.java Thu Dec  8 19:08:15 2011
@@ -19,7 +19,10 @@
 
 package org.apache.jackrabbit.spi2microkernel.json;
 
+import java.math.BigDecimal;
+import java.util.ArrayList;
 import java.util.Collections;
+import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.Map.Entry;
@@ -27,7 +30,7 @@ import java.util.Map.Entry;
 /**
  * A {@code JsonValue} represents either an {@link JsonArray array}, an
  * {@link JsonObject object} or a {@link JsonAtom primitive value} (atom)
- * of a JSON document. 
+ * of a JSON document.
  */
 public abstract class JsonValue {
     public enum Type {
@@ -274,6 +277,25 @@ public abstract class JsonValue {
             this.type = type;
         }
 
+        public static JsonAtom string(String value) {
+            return new JsonAtom(value, Type.STRING);
+        }
+        
+        public static JsonAtom number(double value) {
+            if (Double.isNaN(value) || Double.isInfinite(value)) {
+                throw new IllegalArgumentException(Double.toString(value));
+            }
+            return new JsonAtom(Double.toString(value), Type.NUMBER);
+        }
+        
+        public static JsonAtom number(long value) {
+            return new JsonAtom(Long.toString(value), Type.NUMBER);
+        }
+        
+        public static JsonAtom number(BigDecimal value) {
+            return new JsonAtom(value.toString(), Type.NUMBER);
+        }
+
         /**
          * Create a new {@code JsonAtom} from {@code token}.
          * @param token
@@ -325,7 +347,7 @@ public abstract class JsonValue {
             }
         }
 
-        //------------------------------------------< private >--- 
+        //------------------------------------------< private >---
 
         private static JsonValue.Type valueType(Token.Type type) {
             switch (type) {
@@ -349,13 +371,17 @@ public abstract class JsonValue {
      */
     public static class JsonArray extends JsonValue {
         public static JsonArray EMPTY = new JsonArray(Collections.<JsonValue>emptyList());
-
+        
         private final List<JsonValue> values;
 
         public JsonArray(List<JsonValue> values) {
             this.values = values;
         }
 
+        public JsonArray() {
+            this(new ArrayList<JsonValue>());
+        }
+
         /**
          * Append {@code value} to the end of this array.
          * @param value
@@ -428,7 +454,7 @@ public abstract class JsonValue {
      * This class represents JSON objects.
      */
     public static class JsonObject extends JsonValue {
-        public static JsonObject EMPTY = new JsonObject(Collections.<String, JsonValue>emptyMap());
+        public static final JsonObject EMPTY = new JsonObject(Collections.<String, JsonValue>emptyMap());
 
         private final Map<String, JsonValue> values;
 
@@ -436,6 +462,10 @@ public abstract class JsonValue {
             this.values = values;
         }
 
+        public JsonObject() {
+            this(new HashMap<String, JsonValue>());
+        }
+
         /**
          * Put {@code value} into this object
          * @param key
@@ -454,6 +484,16 @@ public abstract class JsonValue {
             return values.get(key);
         }
 
+        /**
+         * Remove {@code key} from this object
+         * @param key
+         * @return  the {@code JsonValue} identified by {@code key} or {@code null}
+         * if no value exists for {@code key}.
+         */
+        public JsonValue remove(String key) {
+            return values.remove(key);
+        }
+
         public boolean isEmpty() {
             return values.isEmpty();
         }