You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@johnzon.apache.org by jg...@apache.org on 2018/11/02 10:45:04 UTC

johnzon git commit: JOHNZON-193 ensure objectbuilder is reusable (todo: check it is valid since the map is not accurate for that but it is what the spec designed)

Repository: johnzon
Updated Branches:
  refs/heads/maintenance_1.0.x ca1af26d4 -> acd8dd820


JOHNZON-193 ensure objectbuilder is reusable (todo: check it is valid since the map is not accurate for that but it is what the spec designed)


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

Branch: refs/heads/maintenance_1.0.x
Commit: acd8dd820b35f5db906200c0a55a5e8053677d0a
Parents: ca1af26
Author: Romain Manni-Bucau <rm...@gmail.com>
Authored: Thu Oct 25 12:40:58 2018 +0200
Committer: Daniel Cunha (soro) <da...@apache.org>
Committed: Wed Oct 31 11:18:07 2018 -0300

----------------------------------------------------------------------
 .../johnzon/core/JsonObjectBuilderImpl.java     |  2 --
 .../org/apache/johnzon/core/JsonObjectImpl.java |  3 +-
 .../apache/johnzon/core/JsonObjectImplTest.java | 30 ++++++++++++++++----
 3 files changed, 26 insertions(+), 9 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/johnzon/blob/acd8dd82/johnzon-core/src/main/java/org/apache/johnzon/core/JsonObjectBuilderImpl.java
----------------------------------------------------------------------
diff --git a/johnzon-core/src/main/java/org/apache/johnzon/core/JsonObjectBuilderImpl.java b/johnzon-core/src/main/java/org/apache/johnzon/core/JsonObjectBuilderImpl.java
index c75d827..22f74de 100644
--- a/johnzon-core/src/main/java/org/apache/johnzon/core/JsonObjectBuilderImpl.java
+++ b/johnzon-core/src/main/java/org/apache/johnzon/core/JsonObjectBuilderImpl.java
@@ -116,7 +116,5 @@ class JsonObjectBuilderImpl implements JsonObjectBuilder, Serializable {
             Map<String, JsonValue> dump = (Collections.unmodifiableMap(attributeMap));
             return new JsonObjectImpl(dump);
         }
-        
-        
     }
 }

http://git-wip-us.apache.org/repos/asf/johnzon/blob/acd8dd82/johnzon-core/src/main/java/org/apache/johnzon/core/JsonObjectImpl.java
----------------------------------------------------------------------
diff --git a/johnzon-core/src/main/java/org/apache/johnzon/core/JsonObjectImpl.java b/johnzon-core/src/main/java/org/apache/johnzon/core/JsonObjectImpl.java
index bb3a5ae..56aa2c0 100644
--- a/johnzon-core/src/main/java/org/apache/johnzon/core/JsonObjectImpl.java
+++ b/johnzon-core/src/main/java/org/apache/johnzon/core/JsonObjectImpl.java
@@ -27,6 +27,7 @@ import java.io.ObjectStreamException;
 import java.io.Serializable;
 import java.util.AbstractMap;
 import java.util.Iterator;
+import java.util.LinkedHashMap;
 import java.util.Map;
 import java.util.Set;
 
@@ -54,7 +55,7 @@ final class JsonObjectImpl extends AbstractMap<String, JsonValue> implements Jso
 
     JsonObjectImpl(final Map<String, JsonValue> backingMap) {
         super();
-        this.unmodifieableBackingMap = backingMap;
+        this.unmodifieableBackingMap = new LinkedHashMap<String, JsonValue>(backingMap);
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/johnzon/blob/acd8dd82/johnzon-core/src/test/java/org/apache/johnzon/core/JsonObjectImplTest.java
----------------------------------------------------------------------
diff --git a/johnzon-core/src/test/java/org/apache/johnzon/core/JsonObjectImplTest.java b/johnzon-core/src/test/java/org/apache/johnzon/core/JsonObjectImplTest.java
index 1557070..a9872e2 100644
--- a/johnzon-core/src/test/java/org/apache/johnzon/core/JsonObjectImplTest.java
+++ b/johnzon-core/src/test/java/org/apache/johnzon/core/JsonObjectImplTest.java
@@ -18,21 +18,39 @@
  */
 package org.apache.johnzon.core;
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNull;
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
+import org.junit.Test;
 
 import javax.json.Json;
+import javax.json.JsonArrayBuilder;
 import javax.json.JsonObject;
 import javax.json.JsonObjectBuilder;
 import javax.json.JsonValue;
 
-import org.junit.Test;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
 
 public class JsonObjectImplTest {
     @Test
+    public void reuseObjectBuilder() {
+        final JsonObjectBuilder jsonObjectBuilder = Json.createObjectBuilder();
+        final JsonArrayBuilder jsonArrayBuilder = Json.createArrayBuilder();
+        for (int numer = 1; numer < 10; numer++) {
+            jsonObjectBuilder.add("key", String.format("Key %d", numer));
+            jsonObjectBuilder.add("value", String.format("Value %d", numer));
+            jsonArrayBuilder.add(jsonObjectBuilder);
+        }
+        final String message = jsonArrayBuilder.build().toString();
+        assertEquals("[{\"key\":\"Key 1\",\"value\":\"Value 1\"},{\"key\":\"Key 2\",\"value\":\"Value 2\"}," +
+                "{\"key\":\"Key 3\",\"value\":\"Value 3\"},{\"key\":\"Key 4\",\"value\":\"Value 4\"},{\"key\":\"Key " +
+                "5\",\"value\":\"Value 5\"},{\"key\":\"Key 6\",\"value\":\"Value 6\"},{\"key\":\"Key 7\"," +
+                "\"value\":\"Value 7\"},{\"key\":\"Key 8\",\"value\":\"Value 8\"},{\"key\":\"Key 9\"," +
+                "\"value\":\"Value 9\"}]", message);
+    }
+
+    @Test
     public void boolErrors() {
         {
             final JsonObject val = Json.createObjectBuilder().add("a", true).build();