Repository: johnzon
Updated Branches:
  refs/heads/master 297654206 -> b2d205738


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/b2d20573
Tree: http://git-wip-us.apache.org/repos/asf/johnzon/tree/b2d20573
Diff: http://git-wip-us.apache.org/repos/asf/johnzon/diff/b2d20573

Branch: refs/heads/master
Commit: b2d205738c65fb53e768fca445fa611515417c19
Parents: 2976542
Author: Romain Manni-Bucau <[email protected]>
Authored: Thu Oct 25 12:40:58 2018 +0200
Committer: Romain Manni-Bucau <[email protected]>
Committed: Thu Oct 25 12:40:58 2018 +0200

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


http://git-wip-us.apache.org/repos/asf/johnzon/blob/b2d20573/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 b0d276f..b89a671 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
@@ -171,7 +171,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/b2d20573/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..a260e25 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<>(backingMap);
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/johnzon/blob/b2d20573/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..2e418e6 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
@@ -24,7 +24,10 @@ import static org.junit.Assert.assertNull;
 import static org.junit.Assert.assertTrue;
 import static org.junit.Assert.fail;
 
+import java.util.stream.IntStream;
+
 import javax.json.Json;
+import javax.json.JsonArrayBuilder;
 import javax.json.JsonObject;
 import javax.json.JsonObjectBuilder;
 import javax.json.JsonValue;
@@ -33,6 +36,23 @@ import org.junit.Test;
 
 public class JsonObjectImplTest {
     @Test
+    public void reuseObjectBuilder() {
+        final JsonObjectBuilder jsonObjectBuilder = Json.createObjectBuilder();
+        final JsonArrayBuilder jsonArrayBuilder = Json.createArrayBuilder();
+        IntStream.range(1, 10).forEach(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();

Reply via email to