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 19:58:37 UTC

svn commit: r1212033 - in /jackrabbit/sandbox/jackrabbit-microkernel/src/main/java/org/apache/jackrabbit: json/JsonValue.java utils/ValueConverter.java

Author: mduerig
Date: Thu Dec  8 18:58:36 2011
New Revision: 1212033

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

Modified:
    jackrabbit/sandbox/jackrabbit-microkernel/src/main/java/org/apache/jackrabbit/json/JsonValue.java
    jackrabbit/sandbox/jackrabbit-microkernel/src/main/java/org/apache/jackrabbit/utils/ValueConverter.java

Modified: jackrabbit/sandbox/jackrabbit-microkernel/src/main/java/org/apache/jackrabbit/json/JsonValue.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/jackrabbit-microkernel/src/main/java/org/apache/jackrabbit/json/JsonValue.java?rev=1212033&r1=1212032&r2=1212033&view=diff
==============================================================================
--- jackrabbit/sandbox/jackrabbit-microkernel/src/main/java/org/apache/jackrabbit/json/JsonValue.java (original)
+++ jackrabbit/sandbox/jackrabbit-microkernel/src/main/java/org/apache/jackrabbit/json/JsonValue.java Thu Dec  8 18:58:36 2011
@@ -19,7 +19,10 @@
 
 package org.apache.jackrabbit.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;
@@ -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
@@ -356,6 +378,10 @@ public abstract class JsonValue {
             this.values = values;
         }
 
+        public JsonArray() {
+            this(new ArrayList<JsonValue>());
+        }
+
         /**
          * Append {@code value} to the end of this array.
          * @param value
@@ -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();
         }

Modified: jackrabbit/sandbox/jackrabbit-microkernel/src/main/java/org/apache/jackrabbit/utils/ValueConverter.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/jackrabbit-microkernel/src/main/java/org/apache/jackrabbit/utils/ValueConverter.java?rev=1212033&r1=1212032&r2=1212033&view=diff
==============================================================================
--- jackrabbit/sandbox/jackrabbit-microkernel/src/main/java/org/apache/jackrabbit/utils/ValueConverter.java (original)
+++ jackrabbit/sandbox/jackrabbit-microkernel/src/main/java/org/apache/jackrabbit/utils/ValueConverter.java Thu Dec  8 18:58:36 2011
@@ -22,7 +22,6 @@ package org.apache.jackrabbit.utils;
 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.Type;
 
 import javax.jcr.PropertyType;
 import javax.jcr.RepositoryException;
@@ -39,15 +38,19 @@ public final class ValueConverter {
     public static JsonValue toJsonValue(Value value) throws RepositoryException {
         switch (value.getType()) {
             case PropertyType.STRING: {
-                return new JsonAtom(value.getString(), Type.STRING);
+                return JsonAtom.string(value.getString());
+            }
+            case PropertyType.DOUBLE: {
+                return JsonAtom.number(value.getDouble()); // todo mind NaN
+            }
+            case PropertyType.LONG: {
+                return JsonAtom.number(value.getLong());
             }
-            case PropertyType.LONG:
-            case PropertyType.DOUBLE:
             case PropertyType.DECIMAL: {
-                return new JsonAtom(value.getString(), Type.NUMBER);  // todo mind NaN
+                return JsonAtom.number(value.getDecimal());
             }
             case PropertyType.BOOLEAN: {
-                return new JsonAtom(value.getString(), Type.BOOLEAN);
+                return value.getBoolean() ? JsonAtom.TRUE : JsonAtom.FALSE;
             }
             case PropertyType.BINARY:
             case PropertyType.DATE: