You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@johnzon.apache.org by st...@apache.org on 2016/11/22 18:58:12 UTC

johnzon git commit: JOHNZON-96 implement JSON-P 1.1 API

Repository: johnzon
Updated Branches:
  refs/heads/JSONP-1.1 [created] d396c5bc5


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/JSONP-1.1
Commit: d396c5bc5357f821fbb772022399bf356816de82
Parents: b0af96e
Author: Mark Struberg <st...@apache.org>
Authored: Tue Nov 22 19:46:32 2016 +0100
Committer: Mark Struberg <st...@apache.org>
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>