Repository: johnzon Updated Branches: refs/heads/master 17fdff13f -> 64812f4af
some jsonp 1.1 impl - to check more once Mark will have fixed the build Project: http://git-wip-us.apache.org/repos/asf/johnzon/repo Commit: http://git-wip-us.apache.org/repos/asf/johnzon/commit/64812f4a Tree: http://git-wip-us.apache.org/repos/asf/johnzon/tree/64812f4a Diff: http://git-wip-us.apache.org/repos/asf/johnzon/diff/64812f4a Branch: refs/heads/master Commit: 64812f4aff50d16173f7b0b58fa7516161ba2d9d Parents: 17fdff1 Author: rmannibucau <[email protected]> Authored: Tue Mar 28 12:57:56 2017 +0200 Committer: rmannibucau <[email protected]> Committed: Tue Mar 28 12:57:56 2017 +0200 ---------------------------------------------------------------------- .../johnzon/core/JsonArrayBuilderImpl.java | 190 ++++++++++++++++--- .../org/apache/johnzon/core/JsonDoubleImpl.java | 5 + .../org/apache/johnzon/core/JsonLongImpl.java | 5 + .../org/apache/johnzon/core/JsonNumberImpl.java | 5 + .../johnzon/core/JsonObjectBuilderImpl.java | 4 +- .../johnzon/core/JsonStreamParserImpl.java | 4 - .../org/apache/johnzon/core/JsonWriterImpl.java | 47 +++-- 7 files changed, 217 insertions(+), 43 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/johnzon/blob/64812f4a/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 69e2281..72caf57 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 @@ -48,6 +48,150 @@ class JsonArrayBuilderImpl implements JsonArrayBuilder, Serializable { } } + @Override + public JsonArrayBuilder addAll(final JsonArrayBuilder builder) { + builder.build().forEach(this::add); + return this; + } + + @Override + public JsonArrayBuilder add(final int index, final JsonValue value) { + addValue(index, value); + return this; + } + + @Override + public JsonArrayBuilder add(final int index, final String value) { + addValue(index, new JsonStringImpl(value)); + return this; + } + + @Override + public JsonArrayBuilder add(final int index, final BigDecimal value) { + addValue(index, new JsonNumberImpl(value)); + return this; + } + + @Override + public JsonArrayBuilder add(final int index, final BigInteger value) { + addValue(index, new JsonNumberImpl(new BigDecimal(value))); + return this; + } + + @Override + public JsonArrayBuilder add(final int index, final int value) { + addValue(index, new JsonLongImpl(value)); + return this; + } + + @Override + public JsonArrayBuilder add(final int index, final long value) { + addValue(index, new JsonLongImpl(value)); + return this; + } + + @Override + public JsonArrayBuilder add(final int index, final double value) { + addValue(index, new JsonDoubleImpl(value)); + return this; + } + + @Override + public JsonArrayBuilder add(final int index, final boolean value) { + addValue(index, value ? JsonValue.TRUE : JsonValue.FALSE); + return this; + } + + @Override + public JsonArrayBuilder addNull(final int index) { + addValue(index, JsonValue.NULL); + return this; + } + + @Override + public JsonArrayBuilder add(final int index, final JsonObjectBuilder builder) { + addValue(index, builder.build()); + return this; + } + + @Override + public JsonArrayBuilder add(final int index, final JsonArrayBuilder builder) { + addValue(index, builder.build()); + return this; + } + + @Override + public JsonArrayBuilder set(final int index, final JsonValue value) { + setValue(index, value); + return this; + } + + @Override + public JsonArrayBuilder set(final int index, final String value) { + setValue(index, new JsonStringImpl(value)); + return this; + } + + @Override + public JsonArrayBuilder set(final int index, final BigDecimal value) { + setValue(index, new JsonNumberImpl(value)); + return this; + } + + @Override + public JsonArrayBuilder set(final int index, final BigInteger value) { + setValue(index, new JsonNumberImpl(new BigDecimal(value))); + return this; + } + + @Override + public JsonArrayBuilder set(final int index, final int value) { + setValue(index, new JsonLongImpl(value)); + return this; + } + + @Override + public JsonArrayBuilder set(final int index, final long value) { + setValue(index, new JsonLongImpl(value)); + return this; + } + + @Override + public JsonArrayBuilder set(final int index, final double value) { + setValue(index, new JsonDoubleImpl(value)); + return this; + } + + @Override + public JsonArrayBuilder set(final int index, final boolean value) { + setValue(index, value ? JsonValue.TRUE : JsonValue.FALSE); + return this; + } + + @Override + public JsonArrayBuilder setNull(final int index) { + setValue(index, JsonValue.NULL); + return this; + } + + @Override + public JsonArrayBuilder set(final int index, final JsonObjectBuilder builder) { + setValue(index, builder.build()); + return this; + } + + @Override + public JsonArrayBuilder set(final int index, final JsonArrayBuilder builder) { + setValue(index, builder.build()); + return this; + } + + @Override + public JsonArrayBuilder remove(final int index) { + tmpList.remove(index); + return this; + } + public JsonArrayBuilder add(final Object value) { if (value instanceof JsonValue) { add((JsonValue) value); @@ -74,93 +218,95 @@ class JsonArrayBuilderImpl implements JsonArrayBuilder, Serializable { @Override public JsonArrayBuilder add(final JsonValue value) { - addValue(value); + addValue(tmpList.size(), value); return this; } @Override public JsonArrayBuilder add(final String value) { - addValue(new JsonStringImpl(value)); + addValue(tmpList.size(), new JsonStringImpl(value)); return this; } @Override public JsonArrayBuilder add(final BigDecimal value) { - addValue(new JsonNumberImpl(value)); + addValue(tmpList.size(), new JsonNumberImpl(value)); return this; } @Override public JsonArrayBuilder add(final BigInteger value) { - addValue(new JsonNumberImpl(new BigDecimal(value))); + addValue(tmpList.size(), new JsonNumberImpl(new BigDecimal(value))); return this; } @Override public JsonArrayBuilder add(final int value) { - addValue(new JsonLongImpl(value)); + addValue(tmpList.size(), new JsonLongImpl(value)); return this; } @Override public JsonArrayBuilder add(final long value) { - addValue(new JsonLongImpl(value)); + addValue(tmpList.size(), new JsonLongImpl(value)); return this; } @Override public JsonArrayBuilder add(final double value) { - addValue(new JsonDoubleImpl(value)); + addValue(tmpList.size(), new JsonDoubleImpl(value)); return this; } @Override public JsonArrayBuilder add(final boolean value) { - addValue(value ? JsonValue.TRUE : JsonValue.FALSE); + addValue(tmpList.size(), value ? JsonValue.TRUE : JsonValue.FALSE); return this; } @Override public JsonArrayBuilder addNull() { - addValue(JsonValue.NULL); + addValue(tmpList.size(), JsonValue.NULL); return this; } @Override public JsonArrayBuilder add(final JsonObjectBuilder builder) { - addValue(builder.build()); + addValue(tmpList.size(), builder.build()); return this; } @Override public JsonArrayBuilder add(final JsonArrayBuilder builder) { - addValue(builder.build()); + addValue(tmpList.size(), builder.build()); return this; } - private void addValue(JsonValue value){ + private void setValue(int idx, JsonValue value){ + if (value == null || tmpList == null) { + throw npe(); + } + tmpList.set(idx, value); + } + + private void addValue(int idx, JsonValue value){ if (value == null) { throw npe(); } - + if(tmpList==null){ tmpList=new ArrayList<>(); } - - tmpList.add(value); + + tmpList.add(idx, value); } @Override public JsonArray build() { - if(tmpList == null) { - return new JsonArrayImpl(Collections.EMPTY_LIST); - } else { - List<JsonValue> dump = (Collections.unmodifiableList(tmpList)); - tmpList=null; - return new JsonArrayImpl(dump); + return new JsonArrayImpl(Collections.emptyList()); } - + return new JsonArrayImpl(Collections.unmodifiableList(tmpList)); } private static NullPointerException npe() { http://git-wip-us.apache.org/repos/asf/johnzon/blob/64812f4a/johnzon-core/src/main/java/org/apache/johnzon/core/JsonDoubleImpl.java ---------------------------------------------------------------------- diff --git a/johnzon-core/src/main/java/org/apache/johnzon/core/JsonDoubleImpl.java b/johnzon-core/src/main/java/org/apache/johnzon/core/JsonDoubleImpl.java index cff63c0..4238791 100644 --- a/johnzon-core/src/main/java/org/apache/johnzon/core/JsonDoubleImpl.java +++ b/johnzon-core/src/main/java/org/apache/johnzon/core/JsonDoubleImpl.java @@ -36,6 +36,11 @@ final class JsonDoubleImpl implements JsonNumber, Serializable { } @Override + public Number numberValue() { + return value; + } + + @Override public boolean isIntegral() { return false; } http://git-wip-us.apache.org/repos/asf/johnzon/blob/64812f4a/johnzon-core/src/main/java/org/apache/johnzon/core/JsonLongImpl.java ---------------------------------------------------------------------- diff --git a/johnzon-core/src/main/java/org/apache/johnzon/core/JsonLongImpl.java b/johnzon-core/src/main/java/org/apache/johnzon/core/JsonLongImpl.java index 4068d9b..883bde5 100644 --- a/johnzon-core/src/main/java/org/apache/johnzon/core/JsonLongImpl.java +++ b/johnzon-core/src/main/java/org/apache/johnzon/core/JsonLongImpl.java @@ -31,6 +31,11 @@ public final class JsonLongImpl implements JsonNumber, Serializable { } @Override + public Number numberValue() { + return value; + } + + @Override public boolean isIntegral() { return true; } http://git-wip-us.apache.org/repos/asf/johnzon/blob/64812f4a/johnzon-core/src/main/java/org/apache/johnzon/core/JsonNumberImpl.java ---------------------------------------------------------------------- diff --git a/johnzon-core/src/main/java/org/apache/johnzon/core/JsonNumberImpl.java b/johnzon-core/src/main/java/org/apache/johnzon/core/JsonNumberImpl.java index 9ad7752..13e518e 100644 --- a/johnzon-core/src/main/java/org/apache/johnzon/core/JsonNumberImpl.java +++ b/johnzon-core/src/main/java/org/apache/johnzon/core/JsonNumberImpl.java @@ -36,6 +36,11 @@ final class JsonNumberImpl implements JsonNumber, Serializable { } @Override + public Number numberValue() { + return value; + } + + @Override public boolean isIntegral() { return value.scale() == 0; } http://git-wip-us.apache.org/repos/asf/johnzon/blob/64812f4a/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 1b727bd..69a2adb 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 @@ -143,9 +143,7 @@ class JsonObjectBuilderImpl implements JsonObjectBuilder, Serializable { @Override public JsonObjectBuilder addAll(JsonObjectBuilder builder) { - if (builder instanceof JsonObjectBuilderImpl) { - attributeMap.putAll(builder.build()); - } + attributeMap.putAll(builder.build()); return this; } http://git-wip-us.apache.org/repos/asf/johnzon/blob/64812f4a/johnzon-core/src/main/java/org/apache/johnzon/core/JsonStreamParserImpl.java ---------------------------------------------------------------------- diff --git a/johnzon-core/src/main/java/org/apache/johnzon/core/JsonStreamParserImpl.java b/johnzon-core/src/main/java/org/apache/johnzon/core/JsonStreamParserImpl.java index 6f34368..876ec78 100644 --- a/johnzon-core/src/main/java/org/apache/johnzon/core/JsonStreamParserImpl.java +++ b/johnzon-core/src/main/java/org/apache/johnzon/core/JsonStreamParserImpl.java @@ -838,10 +838,6 @@ public class JsonStreamParserImpl implements JsonChars, JsonParser{ } } - boolean isNotTooLong() { - return (endOfValueInBuffer - startOfValueInBuffer) < 19; - } - @Override public int getInt() { if (previousEvent != VALUE_NUMBER) { http://git-wip-us.apache.org/repos/asf/johnzon/blob/64812f4a/johnzon-core/src/main/java/org/apache/johnzon/core/JsonWriterImpl.java ---------------------------------------------------------------------- diff --git a/johnzon-core/src/main/java/org/apache/johnzon/core/JsonWriterImpl.java b/johnzon-core/src/main/java/org/apache/johnzon/core/JsonWriterImpl.java index e012ae1..2577f1f 100644 --- a/johnzon-core/src/main/java/org/apache/johnzon/core/JsonWriterImpl.java +++ b/johnzon-core/src/main/java/org/apache/johnzon/core/JsonWriterImpl.java @@ -18,15 +18,15 @@ */ package org.apache.johnzon.core; -import java.io.Serializable; - import javax.json.JsonArray; import javax.json.JsonObject; import javax.json.JsonStructure; +import javax.json.JsonValue; import javax.json.JsonWriter; import javax.json.stream.JsonGenerator; +import java.io.Serializable; -class JsonWriterImpl implements JsonWriter, Serializable{ +class JsonWriterImpl implements JsonWriter, Serializable { private final JsonGenerator generator; private boolean closed = false; @@ -37,37 +37,56 @@ class JsonWriterImpl implements JsonWriter, Serializable{ @Override public void writeArray(final JsonArray array) { checkClosed(); - generator.write(array); - close(); + try { + generator.write(array); + } finally { + close(); + } } @Override public void writeObject(final JsonObject object) { checkClosed(); - generator.write(object); - close(); + try { + generator.write(object); + } finally { + close(); + } + } + + @Override + public void write(final JsonValue value) { + checkClosed(); + try { + generator.write(value); + } finally { + close(); + } } @Override public void write(final JsonStructure value) { checkClosed(); - generator.write(value); - close(); + try { + generator.write(value); + } finally { + close(); + } } @Override public void close() { - - if(!closed) { + + if (!closed) { closed = true; generator.close(); } } - + private void checkClosed() { - if(closed) { + if (closed) { throw new IllegalStateException("writeArray(), writeObject(), write() or close() method was already called"); } - + } }
