You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@johnzon.apache.org by st...@apache.org on 2017/02/24 12:07:31 UTC

[25/26] johnzon git commit: JOHNZON-96 add test + logic for ArrayBuilder ft of JSONP-1.1

JOHNZON-96 add test + logic for ArrayBuilder ft of JSONP-1.1


Project: http://git-wip-us.apache.org/repos/asf/johnzon/repo
Commit: http://git-wip-us.apache.org/repos/asf/johnzon/commit/a2a1a047
Tree: http://git-wip-us.apache.org/repos/asf/johnzon/tree/a2a1a047
Diff: http://git-wip-us.apache.org/repos/asf/johnzon/diff/a2a1a047

Branch: refs/heads/master
Commit: a2a1a047bd16b5976027ba2400ee0b925a1a0bb4
Parents: 525da3d
Author: Mark Struberg <st...@apache.org>
Authored: Fri Feb 24 00:21:06 2017 +0100
Committer: Mark Struberg <st...@apache.org>
Committed: Fri Feb 24 00:21:06 2017 +0100

----------------------------------------------------------------------
 .../johnzon/core/JsonArrayBuilderImpl.java      | 35 +++++++++++++++++++-
 .../johnzon/core/JsonBuilderFactoryImpl.java    |  6 ++++
 .../apache/johnzon/core/JsonProviderImpl.java   |  9 +++++
 .../johnzon/core/JsonArrayBuilderImplTest.java  | 35 ++++++++++++++++++++
 4 files changed, 84 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/johnzon/blob/a2a1a047/johnzon-core/src/main/java/org/apache/johnzon/core/JsonArrayBuilderImpl.java
----------------------------------------------------------------------
diff --git a/johnzon-core/src/main/java/org/apache/johnzon/core/JsonArrayBuilderImpl.java b/johnzon-core/src/main/java/org/apache/johnzon/core/JsonArrayBuilderImpl.java
index b8ff582..0936e22 100644
--- a/johnzon-core/src/main/java/org/apache/johnzon/core/JsonArrayBuilderImpl.java
+++ b/johnzon-core/src/main/java/org/apache/johnzon/core/JsonArrayBuilderImpl.java
@@ -20,12 +20,14 @@ package org.apache.johnzon.core;
 
 import javax.json.JsonArray;
 import javax.json.JsonArrayBuilder;
+import javax.json.JsonException;
 import javax.json.JsonObjectBuilder;
 import javax.json.JsonValue;
 import java.io.Serializable;
 import java.math.BigDecimal;
 import java.math.BigInteger;
 import java.util.ArrayList;
+import java.util.Collection;
 import java.util.Collections;
 import java.util.List;
 
@@ -39,7 +41,38 @@ class JsonArrayBuilderImpl implements JsonArrayBuilder, Serializable {
         tmpList = new ArrayList<>(initialData);
     }
 
-    @Override
+    public JsonArrayBuilderImpl(Collection<Object> initialData) {
+        tmpList = new ArrayList<>();
+        for (Object initialValue : initialData) {
+            add(initialValue);
+        }
+    }
+
+    public JsonArrayBuilder add(final Object value) {
+        if (value instanceof JsonValue) {
+            add((JsonValue) value);
+        } else if (value instanceof BigDecimal) {
+            add((BigDecimal) value);
+        } else if (value instanceof BigInteger) {
+            add((BigInteger) value);
+        } else if (value instanceof Boolean) {
+            add((boolean) value);
+        } else if (value instanceof Double) {
+            add((double) value);
+        } else if (value instanceof Integer) {
+            add((int) value);
+        } else if (value instanceof Long) {
+            add((long) value);
+        } else if (value instanceof String) {
+            add((String) value);
+        } else {
+            throw new JsonException("Illegal JSON type! type=" + value.getClass());
+        }
+
+        return this;
+    }
+
+        @Override
     public JsonArrayBuilder add(final JsonValue value) {
         addValue(value);
         return this;

http://git-wip-us.apache.org/repos/asf/johnzon/blob/a2a1a047/johnzon-core/src/main/java/org/apache/johnzon/core/JsonBuilderFactoryImpl.java
----------------------------------------------------------------------
diff --git a/johnzon-core/src/main/java/org/apache/johnzon/core/JsonBuilderFactoryImpl.java b/johnzon-core/src/main/java/org/apache/johnzon/core/JsonBuilderFactoryImpl.java
index 6f1f9ba..c6062a7 100644
--- a/johnzon-core/src/main/java/org/apache/johnzon/core/JsonBuilderFactoryImpl.java
+++ b/johnzon-core/src/main/java/org/apache/johnzon/core/JsonBuilderFactoryImpl.java
@@ -19,6 +19,7 @@
 package org.apache.johnzon.core;
 
 import java.util.Arrays;
+import java.util.Collection;
 import java.util.Collections;
 import java.util.HashMap;
 import java.util.List;
@@ -73,6 +74,10 @@ class JsonBuilderFactoryImpl implements JsonBuilderFactory {
         return new JsonArrayBuilderImpl(initialData);
     }
 
+    public JsonArrayBuilder createArrayBuilder(Collection<Object> initialData) {
+        return new JsonArrayBuilderImpl(initialData);
+    }
+
     @Override
     public Map<String, ?> getConfigInUse() {
         return Collections.unmodifiableMap(internalConfig);
@@ -81,4 +86,5 @@ class JsonBuilderFactoryImpl implements JsonBuilderFactory {
     public JsonObjectBuilder createObjectBuilder(Map<String, Object> initialValues) {
         return new JsonObjectBuilderImpl(initialValues);
     }
+
 }

http://git-wip-us.apache.org/repos/asf/johnzon/blob/a2a1a047/johnzon-core/src/main/java/org/apache/johnzon/core/JsonProviderImpl.java
----------------------------------------------------------------------
diff --git a/johnzon-core/src/main/java/org/apache/johnzon/core/JsonProviderImpl.java b/johnzon-core/src/main/java/org/apache/johnzon/core/JsonProviderImpl.java
index de18839..5fd5074 100644
--- a/johnzon-core/src/main/java/org/apache/johnzon/core/JsonProviderImpl.java
+++ b/johnzon-core/src/main/java/org/apache/johnzon/core/JsonProviderImpl.java
@@ -302,6 +302,15 @@ public class JsonProviderImpl extends JsonProvider implements Serializable {
         }
 
         @Override
+        public JsonArrayBuilder createArrayBuilder(JsonArray initialData) {
+            return builderFactory.createArrayBuilder(initialData);
+        }
+
+        public JsonArrayBuilder createArrayBuilder(Collection<Object> initialData) {
+            return builderFactory.createArrayBuilder(initialData);
+        }
+
+        @Override
         public JsonBuilderFactory createBuilderFactory(final Map<String, ?> config) {
             return (config == null || config.isEmpty()) ? builderFactory : new JsonBuilderFactoryImpl(config);
         }

http://git-wip-us.apache.org/repos/asf/johnzon/blob/a2a1a047/johnzon-core/src/test/java/org/apache/johnzon/core/JsonArrayBuilderImplTest.java
----------------------------------------------------------------------
diff --git a/johnzon-core/src/test/java/org/apache/johnzon/core/JsonArrayBuilderImplTest.java b/johnzon-core/src/test/java/org/apache/johnzon/core/JsonArrayBuilderImplTest.java
index df7a1af..85d14eb 100644
--- a/johnzon-core/src/test/java/org/apache/johnzon/core/JsonArrayBuilderImplTest.java
+++ b/johnzon-core/src/test/java/org/apache/johnzon/core/JsonArrayBuilderImplTest.java
@@ -22,12 +22,16 @@ import static org.junit.Assert.assertEquals;
 
 import java.math.BigDecimal;
 import java.math.BigInteger;
+import java.util.ArrayList;
+import java.util.Collection;
 
 import javax.json.Json;
+import javax.json.JsonArray;
 import javax.json.JsonArrayBuilder;
 import javax.json.JsonObjectBuilder;
 import javax.json.JsonValue;
 
+import org.junit.Assert;
 import org.junit.Test;
 
 public class JsonArrayBuilderImplTest {
@@ -167,4 +171,35 @@ public class JsonArrayBuilderImplTest {
         final JsonArrayBuilder builder = Json.createArrayBuilder();
         builder.add((double) Double.NEGATIVE_INFINITY);
     }
+
+
+    @Test
+    public void testCreateArrayBuilderWithJsonArrayInitialData() {
+        final JsonArrayBuilder builder = Json.createArrayBuilder();
+        builder.add("a");
+        builder.add("b");
+        builder.add("c");
+        JsonArray jsonArray = builder.build();
+
+        JsonArrayBuilder otherBuilder = Json.createArrayBuilder(jsonArray);
+        otherBuilder.add("d");
+
+        JsonArray jsonArray2 = otherBuilder.build();
+        Assert.assertEquals("[\"a\",\"b\",\"c\",\"d\"]", jsonArray2.toString());
+    }
+
+    @Test
+    public void testCreateArrayBuilderWithCollectionInitialData() {
+        //X TODO should be Collection<String>, but the current Json API is not nice enough...
+        Collection<Object> initialData = new ArrayList<>();
+        initialData.add("a");
+        initialData.add("b");
+        initialData.add("c");
+
+        JsonArrayBuilder otherBuilder = Json.createArrayBuilder(initialData);
+        otherBuilder.add("d");
+
+        JsonArray jsonArray2 = otherBuilder.build();
+        Assert.assertEquals("[\"a\",\"b\",\"c\",\"d\"]", jsonArray2.toString());
+    }
 }