Repository: johnzon Updated Branches: refs/heads/master d344cbcb8 -> 02993157e
JOHNZON-96 implement JSON-P 1.1 API Project: http://git-wip-us.apache.org/repos/asf/johnzon/repo Commit: http://git-wip-us.apache.org/repos/asf/johnzon/commit/d396c5bc Tree: http://git-wip-us.apache.org/repos/asf/johnzon/tree/d396c5bc Diff: http://git-wip-us.apache.org/repos/asf/johnzon/diff/d396c5bc Branch: refs/heads/master Commit: d396c5bc5357f821fbb772022399bf356816de82 Parents: b0af96e Author: Mark Struberg <[email protected]> Authored: Tue Nov 22 19:46:32 2016 +0100 Committer: Mark Struberg <[email protected]> Committed: Tue Nov 22 19:46:32 2016 +0100 ---------------------------------------------------------------------- .../johnzon/core/JsonArrayBuilderImpl.java | 9 ++- .../johnzon/core/JsonBuilderFactoryImpl.java | 13 ++++ .../apache/johnzon/core/JsonGeneratorImpl.java | 36 ++++++----- .../johnzon/core/JsonObjectBuilderImpl.java | 24 ++++++- .../apache/johnzon/core/JsonProviderImpl.java | 66 ++++++++++++++++++++ .../johnzon/mapper/MappingParserImpl.java | 2 +- .../org/apache/johnzon/mapper/MapperTest.java | 5 +- pom.xml | 6 +- 8 files changed, 136 insertions(+), 25 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/johnzon/blob/d396c5bc/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 913c22a..b8ff582 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 @@ -32,6 +32,13 @@ import java.util.List; class JsonArrayBuilderImpl implements JsonArrayBuilder, Serializable { private List<JsonValue> tmpList; + public JsonArrayBuilderImpl() { + } + + public JsonArrayBuilderImpl(JsonArray initialData) { + tmpList = new ArrayList<>(initialData); + } + @Override public JsonArrayBuilder add(final JsonValue value) { addValue(value); @@ -104,7 +111,7 @@ class JsonArrayBuilderImpl implements JsonArrayBuilder, Serializable { } if(tmpList==null){ - tmpList=new ArrayList<JsonValue>(); + tmpList=new ArrayList<>(); } tmpList.add(value); http://git-wip-us.apache.org/repos/asf/johnzon/blob/d396c5bc/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 121f18f..c91014d 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 @@ -25,8 +25,10 @@ import java.util.List; import java.util.Map; import java.util.logging.Logger; +import javax.json.JsonArray; import javax.json.JsonArrayBuilder; import javax.json.JsonBuilderFactory; +import javax.json.JsonObject; import javax.json.JsonObjectBuilder; class JsonBuilderFactoryImpl implements JsonBuilderFactory { @@ -56,10 +58,21 @@ class JsonBuilderFactoryImpl implements JsonBuilderFactory { } @Override + public JsonObjectBuilder createObjectBuilder(JsonObject initialData) { + return new JsonObjectBuilderImpl(initialData); + } + + @Override public JsonArrayBuilder createArrayBuilder() { return new JsonArrayBuilderImpl(); } + + @Override + public JsonArrayBuilder createArrayBuilder(JsonArray initialData) { + return new JsonArrayBuilderImpl(initialData); + } + @Override public Map<String, ?> getConfigInUse() { return Collections.unmodifiableMap(internalConfig); http://git-wip-us.apache.org/repos/asf/johnzon/blob/d396c5bc/johnzon-core/src/main/java/org/apache/johnzon/core/JsonGeneratorImpl.java ---------------------------------------------------------------------- diff --git a/johnzon-core/src/main/java/org/apache/johnzon/core/JsonGeneratorImpl.java b/johnzon-core/src/main/java/org/apache/johnzon/core/JsonGeneratorImpl.java index e1371e5..1b8b573 100644 --- a/johnzon-core/src/main/java/org/apache/johnzon/core/JsonGeneratorImpl.java +++ b/johnzon-core/src/main/java/org/apache/johnzon/core/JsonGeneratorImpl.java @@ -431,6 +431,26 @@ class JsonGeneratorImpl implements JsonGenerator, JsonChars, Serializable { } @Override + public JsonGenerator writeKey(final String key) { + final GeneratorState currentState = currentState(); + if (!currentState.acceptsKey) { + throw new JsonGenerationException("state " + currentState + " does not accept a key"); + } + if (currentState == GeneratorState.IN_OBJECT) { + justWrite(COMMA_CHAR); + writeEol(); + } + + writeIndent(); + + writeCachedKey(key); + state.push(GeneratorState.AFTER_KEY); + return this; + } + + + + @Override public void close() { try { if (currentState() != GeneratorState.END) { @@ -650,22 +670,6 @@ class JsonGeneratorImpl implements JsonGenerator, JsonChars, Serializable { return state.peek(); } - private void writeKey(final String key) { - final GeneratorState currentState = currentState(); - if (!currentState.acceptsKey) { - throw new IllegalStateException("state " + currentState + " does not accept a key"); - } - if (currentState == GeneratorState.IN_OBJECT) { - justWrite(COMMA_CHAR); - writeEol(); - } - - writeIndent(); - - writeCachedKey(key); - state.push(GeneratorState.AFTER_KEY); - } - private void writeValueAsJsonString(final String value) { prepareValue(); final GeneratorState peek = state.peek(); http://git-wip-us.apache.org/repos/asf/johnzon/blob/d396c5bc/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 d625383..17cfe17 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 @@ -32,6 +32,14 @@ import java.util.Map; class JsonObjectBuilderImpl implements JsonObjectBuilder, Serializable { private Map<String, JsonValue> tmpMap; + public JsonObjectBuilderImpl() { + } + + public JsonObjectBuilderImpl(JsonObject initialData) { + tmpMap = new LinkedHashMap<>(initialData); + } + + @Override public JsonObjectBuilder add(final String name, final JsonValue value) { putValue(name, value); @@ -97,14 +105,26 @@ class JsonObjectBuilderImpl implements JsonObjectBuilder, Serializable { putValue(name, builder.build()); return this; } - + + @Override + public JsonObjectBuilder addAll(JsonObjectBuilder builder) { + tmpMap.putAll(builder.build()); + return this; + } + + @Override + public JsonObjectBuilder remove(String name) { + tmpMap.remove(name); + return this; + } + private void putValue(String name, JsonValue value){ if(name == null || value == null) { throw npe(); } if(tmpMap==null){ - tmpMap=new LinkedHashMap<String, JsonValue>(); + tmpMap = new LinkedHashMap<>(); } tmpMap.put(name, value); http://git-wip-us.apache.org/repos/asf/johnzon/blob/d396c5bc/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 d1bbec6..99fd6fc 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 @@ -25,11 +25,17 @@ import java.io.Serializable; import java.io.Writer; import java.util.Map; +import javax.json.JsonArray; import javax.json.JsonArrayBuilder; import javax.json.JsonBuilderFactory; import javax.json.JsonObjectBuilder; +import javax.json.JsonPatch; +import javax.json.JsonPatchBuilder; +import javax.json.JsonPointer; import javax.json.JsonReader; import javax.json.JsonReaderFactory; +import javax.json.JsonStructure; +import javax.json.JsonValue; import javax.json.JsonWriter; import javax.json.JsonWriterFactory; import javax.json.spi.JsonProvider; @@ -116,6 +122,36 @@ public class JsonProviderImpl extends JsonProvider implements Serializable { return DELEGATE.createBuilderFactory(stringMap); } + @Override + public JsonPointer createJsonPointer(String path) { + return DELEGATE.createJsonPointer(path); + } + + @Override + public JsonPatch createPatch(JsonStructure source, JsonStructure target) { + return DELEGATE.createPatch(source, target); + } + + @Override + public JsonPatchBuilder createPatchBuilder() { + return DELEGATE.createPatchBuilder(); + } + + @Override + public JsonPatchBuilder createPatchBuilder(JsonArray initialData) { + return DELEGATE.createPatchBuilder(initialData); + } + + @Override + public JsonValue createMergePatch(JsonValue source, JsonValue target) { + return DELEGATE.createMergePatch(source, target); + } + + @Override + public JsonValue mergePatch(JsonValue source, JsonValue patch) { + return DELEGATE.mergePatch(source, patch); + } + static class JsonProviderDelegate extends JsonProvider { private final JsonReaderFactory readerFactory = new JsonReaderFactoryImpl(null); private final JsonParserFactory parserFactory = new JsonParserFactoryImpl(null); @@ -197,5 +233,35 @@ public class JsonProviderImpl extends JsonProvider implements Serializable { public JsonBuilderFactory createBuilderFactory(final Map<String, ?> config) { return (config == null || config.isEmpty()) ? builderFactory : new JsonBuilderFactoryImpl(config); } + + @Override + public JsonPointer createJsonPointer(String path) { + throw new UnsupportedOperationException("TODO JSON-P 1.1"); + } + + @Override + public JsonPatch createPatch(JsonStructure source, JsonStructure target) { + throw new UnsupportedOperationException("TODO JSON-P 1.1"); + } + + @Override + public JsonPatchBuilder createPatchBuilder() { + throw new UnsupportedOperationException("TODO JSON-P 1.1"); + } + + @Override + public JsonPatchBuilder createPatchBuilder(JsonArray initialData) { + throw new UnsupportedOperationException("TODO JSON-P 1.1"); + } + + @Override + public JsonValue createMergePatch(JsonValue source, JsonValue target) { + throw new UnsupportedOperationException("TODO JSON-P 1.1"); + } + + @Override + public JsonValue mergePatch(JsonValue source, JsonValue patch) { + throw new UnsupportedOperationException("TODO JSON-P 1.1"); + } } } http://git-wip-us.apache.org/repos/asf/johnzon/blob/d396c5bc/johnzon-mapper/src/main/java/org/apache/johnzon/mapper/MappingParserImpl.java ---------------------------------------------------------------------- diff --git a/johnzon-mapper/src/main/java/org/apache/johnzon/mapper/MappingParserImpl.java b/johnzon-mapper/src/main/java/org/apache/johnzon/mapper/MappingParserImpl.java index e731b8f..9164f7a 100644 --- a/johnzon-mapper/src/main/java/org/apache/johnzon/mapper/MappingParserImpl.java +++ b/johnzon-mapper/src/main/java/org/apache/johnzon/mapper/MappingParserImpl.java @@ -593,7 +593,7 @@ public class MappingParserImpl implements MappingParser { } else if (collection.size() == 1) { return Collection.class.cast(EnumSet.of(Enum.class.cast(collection.iterator().next()))); } else { - final List<Enum<?>> list = List.class.cast(collection); + final List<Enum> list = List.class.cast(collection); return Collection.class.cast(EnumSet.of(list.get(0), list.subList(1, list.size()).toArray(new Enum[list.size() - 1]))); } } http://git-wip-us.apache.org/repos/asf/johnzon/blob/d396c5bc/johnzon-mapper/src/test/java/org/apache/johnzon/mapper/MapperTest.java ---------------------------------------------------------------------- diff --git a/johnzon-mapper/src/test/java/org/apache/johnzon/mapper/MapperTest.java b/johnzon-mapper/src/test/java/org/apache/johnzon/mapper/MapperTest.java index 594315a..e0330f4 100644 --- a/johnzon-mapper/src/test/java/org/apache/johnzon/mapper/MapperTest.java +++ b/johnzon-mapper/src/test/java/org/apache/johnzon/mapper/MapperTest.java @@ -184,8 +184,9 @@ public class MapperTest { // read assertEquals(Boolean.TRUE, simpleMapper.readObject(new ByteArrayInputStream("true".getBytes()), Object.class)); assertEquals(Boolean.FALSE, simpleMapper.readObject(new ByteArrayInputStream("false".getBytes()), Object.class)); - assertEquals(1., encodingAwareMapper - .readObject(new ByteArrayInputStream("1".getBytes()), Object.class)); + assertEquals(1., + encodingAwareMapper.readObject(new ByteArrayInputStream("1".getBytes()), Object.class), + 0.1); assertEquals("val", simpleMapper.readObject(new ByteArrayInputStream("\"val\"".getBytes()), Object.class)); assertEquals(asList("val1", "val2"), simpleMapper.readObject(new ByteArrayInputStream("[\"val1\", \"val2\"]".getBytes()), Object.class)); assertEquals(new HashMap<String, Object>() {{ http://git-wip-us.apache.org/repos/asf/johnzon/blob/d396c5bc/pom.xml ---------------------------------------------------------------------- diff --git a/pom.xml b/pom.xml index e507cc7..f8ca1f8 100644 --- a/pom.xml +++ b/pom.xml @@ -40,14 +40,14 @@ <url>http://johnzon.apache.org</url> <properties> - <jsonspecversion>1.0-alpha-1</jsonspecversion> + <jsonspecversion>1.0-SNAPSHOT</jsonspecversion> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <johnzon.site.url>https://svn.apache.org/repos/asf/johnzon/site/publish/</johnzon.site.url> <pubsub.url>scm:svn:${johnzon.site.url}</pubsub.url> <staging.directory>${project.build.directory}/site</staging.directory> <felix.plugin.version>2.5.3</felix.plugin.version> <bnd.version.policy>[$(version;==;$(@)),$(version;+;$(@)))</bnd.version.policy> - <java-compile.version>1.6</java-compile.version> + <java-compile.version>1.8</java-compile.version> <cxf.version>3.0.0</cxf.version> <javadoc.params /> <!-- for java 8 set disable doclint (by profile) --> <checkstyle.version>2.15</checkstyle.version> <!-- checkstyle > 2.15 version do not support java 6 --> @@ -66,7 +66,7 @@ <dependencies> <dependency> <groupId>org.apache.geronimo.specs</groupId> - <artifactId>geronimo-json_1.0_spec</artifactId> + <artifactId>geronimo-json_1.1_spec</artifactId> <version>${jsonspecversion}</version> <scope>provided</scope> </dependency>
