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 <[email protected]> Authored: Thu Oct 25 12:40:58 2018 +0200 Committer: Daniel Cunha (soro) <[email protected]> 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();
