JOHNZON-96 upgrade to last version of the JSON-P-1.1 spec WIP. Make it compile again. Tests still broken. Some methods still missing.
Project: http://git-wip-us.apache.org/repos/asf/johnzon/repo Commit: http://git-wip-us.apache.org/repos/asf/johnzon/commit/184e477c Tree: http://git-wip-us.apache.org/repos/asf/johnzon/tree/184e477c Diff: http://git-wip-us.apache.org/repos/asf/johnzon/diff/184e477c Branch: refs/heads/master Commit: 184e477c571604b0ff94454706ba6425b7808927 Parents: 6aea7ac Author: Mark Struberg <[email protected]> Authored: Mon Feb 20 22:05:11 2017 +0100 Committer: Mark Struberg <[email protected]> Committed: Mon Feb 20 22:05:11 2017 +0100 ---------------------------------------------------------------------- .../johnzon/core/JsonPatchBuilderImpl.java | 19 ---- .../org/apache/johnzon/core/JsonPatchImpl.java | 3 +- .../apache/johnzon/core/JsonPointerImpl.java | 10 ++ .../apache/johnzon/core/JsonProviderImpl.java | 105 +++++++++++++------ .../apache/johnzon/core/JsonPointerTest.java | 6 +- 5 files changed, 90 insertions(+), 53 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/johnzon/blob/184e477c/johnzon-core/src/main/java/org/apache/johnzon/core/JsonPatchBuilderImpl.java ---------------------------------------------------------------------- diff --git a/johnzon-core/src/main/java/org/apache/johnzon/core/JsonPatchBuilderImpl.java b/johnzon-core/src/main/java/org/apache/johnzon/core/JsonPatchBuilderImpl.java index 1dc5ae4..0d8fe55 100644 --- a/johnzon-core/src/main/java/org/apache/johnzon/core/JsonPatchBuilderImpl.java +++ b/johnzon-core/src/main/java/org/apache/johnzon/core/JsonPatchBuilderImpl.java @@ -20,7 +20,6 @@ import javax.json.JsonArray; import javax.json.JsonObject; import javax.json.JsonPatch; import javax.json.JsonPatchBuilder; -import javax.json.JsonStructure; import javax.json.JsonValue; import java.util.ArrayList; import java.util.List; @@ -54,24 +53,6 @@ class JsonPatchBuilderImpl implements JsonPatchBuilder { } - - //X TODO this should get simplified to only one method like JsonPatch - @Override - public JsonStructure apply(JsonStructure target) { - return build().apply(target); - } - - @Override - public JsonObject apply(JsonObject target) { - return build().apply(target); - } - - @Override - public JsonArray apply(JsonArray target) { - return build().apply(target); - } - - @Override public JsonPatchBuilder add(String path, JsonValue value) { return addOperation(new JsonPatchImpl.PatchValue(JsonPatchOperation.ADD, http://git-wip-us.apache.org/repos/asf/johnzon/blob/184e477c/johnzon-core/src/main/java/org/apache/johnzon/core/JsonPatchImpl.java ---------------------------------------------------------------------- diff --git a/johnzon-core/src/main/java/org/apache/johnzon/core/JsonPatchImpl.java b/johnzon-core/src/main/java/org/apache/johnzon/core/JsonPatchImpl.java index 813dba0..ae45792 100644 --- a/johnzon-core/src/main/java/org/apache/johnzon/core/JsonPatchImpl.java +++ b/johnzon-core/src/main/java/org/apache/johnzon/core/JsonPatchImpl.java @@ -114,7 +114,8 @@ class JsonPatchImpl implements JsonPatch { } - JsonArray toJsonArray() { + @Override + public JsonArray toJsonArray() { JsonArrayBuilder builder = Json.createArrayBuilder(); for (PatchValue patch : patches) { http://git-wip-us.apache.org/repos/asf/johnzon/blob/184e477c/johnzon-core/src/main/java/org/apache/johnzon/core/JsonPointerImpl.java ---------------------------------------------------------------------- diff --git a/johnzon-core/src/main/java/org/apache/johnzon/core/JsonPointerImpl.java b/johnzon-core/src/main/java/org/apache/johnzon/core/JsonPointerImpl.java index 0b01c3d..b674ad9 100644 --- a/johnzon-core/src/main/java/org/apache/johnzon/core/JsonPointerImpl.java +++ b/johnzon-core/src/main/java/org/apache/johnzon/core/JsonPointerImpl.java @@ -116,6 +116,16 @@ public class JsonPointerImpl implements JsonPointer { return jsonValue; } + @Override + public boolean containsValue(JsonStructure target) { + try { + getValue(target); + return true; + } catch (JsonException je) { + return false; + } + } + /** * Adds or replaces a value at the referenced location in the specified * {@code target} with the specified {@code value}. http://git-wip-us.apache.org/repos/asf/johnzon/blob/184e477c/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 4b011a7..9d105fa 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 @@ -23,17 +23,24 @@ import java.io.OutputStream; import java.io.Reader; import java.io.Serializable; import java.io.Writer; +import java.math.BigDecimal; +import java.math.BigInteger; +import java.util.Collection; import java.util.Map; import javax.json.JsonArray; import javax.json.JsonArrayBuilder; import javax.json.JsonBuilderFactory; +import javax.json.JsonMergePatch; +import javax.json.JsonNumber; +import javax.json.JsonObject; 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.JsonString; import javax.json.JsonStructure; import javax.json.JsonValue; import javax.json.JsonWriter; @@ -121,35 +128,90 @@ public class JsonProviderImpl extends JsonProvider implements Serializable { public JsonBuilderFactory createBuilderFactory(final Map<String, ?> stringMap) { return DELEGATE.createBuilderFactory(stringMap); } + + @Override + public JsonPatchBuilder createPatchBuilder() { + return DELEGATE.createPatchBuilder(); + } @Override - public JsonPointer createJsonPointer(String path) { - return DELEGATE.createJsonPointer(path); + public JsonPatchBuilder createPatchBuilder(JsonArray initialData) { + return DELEGATE.createPatchBuilder(initialData); } @Override - public JsonPatch createPatch(JsonStructure source, JsonStructure target) { - return DELEGATE.createPatch(source, target); + public JsonObjectBuilder createObjectBuilder(JsonObject jsonObject) { + return DELEGATE.createObjectBuilder(jsonObject); } @Override - public JsonPatchBuilder createPatchBuilder() { - return DELEGATE.createPatchBuilder(); + public JsonObjectBuilder createObjectBuilder(Map<String, Object> map) { + return DELEGATE.createObjectBuilder(map); } @Override - public JsonPatchBuilder createPatchBuilder(JsonArray initialData) { - return DELEGATE.createPatchBuilder(initialData); + public JsonArrayBuilder createArrayBuilder(JsonArray initialData) { + return DELEGATE.createArrayBuilder(initialData); + } + + @Override + public JsonArrayBuilder createArrayBuilder(Collection<Object> initialData) { + return DELEGATE.createArrayBuilder(initialData); + } + + @Override + public JsonPointer createPointer(String path) { + return DELEGATE.createPointer(path); + } + + @Override + public JsonString createValue(String value) { + return DELEGATE.createValue(value); + } + + @Override + public JsonNumber createValue(int value) { + return DELEGATE.createValue(value); + } + + @Override + public JsonNumber createValue(long value) { + return DELEGATE.createValue(value); } @Override - public JsonValue createMergePatch(JsonValue source, JsonValue target) { - return DELEGATE.createMergePatch(source, target); + public JsonNumber createValue(double value) { + return DELEGATE.createValue(value); } @Override - public JsonValue mergePatch(JsonValue source, JsonValue patch) { - return DELEGATE.mergePatch(source, patch); + public JsonNumber createValue(BigDecimal value) { + return DELEGATE.createValue(value); + } + + @Override + public JsonNumber createValue(BigInteger value) { + return DELEGATE.createValue(value); + } + + @Override + public JsonPatch createPatch(JsonArray array) { + return DELEGATE.createPatch(array); + } + + @Override + public JsonPatch createDiff(JsonStructure source, JsonStructure target) { + return DELEGATE.createDiff(source, target); + } + + @Override + public JsonMergePatch createMergePatch(JsonValue patch) { + return DELEGATE.createMergePatch(patch); + } + + @Override + public JsonMergePatch createMergeDiff(JsonValue source, JsonValue target) { + return DELEGATE.createMergeDiff(source, target); } static class JsonProviderDelegate extends JsonProvider { @@ -235,16 +297,6 @@ public class JsonProviderImpl extends JsonProvider implements Serializable { } @Override - public JsonPointer createJsonPointer(String path) { - return new JsonPointerImpl(path); - } - - @Override - public JsonPatch createPatch(JsonStructure source, JsonStructure target) { - throw new UnsupportedOperationException("TODO JSON-P 1.1"); - } - - @Override public JsonPatchBuilder createPatchBuilder() { return new JsonPatchBuilderImpl(); } @@ -254,14 +306,7 @@ public class JsonProviderImpl extends JsonProvider implements Serializable { return new JsonPatchBuilderImpl(initialData); } - @Override - public JsonValue createMergePatch(JsonValue source, JsonValue target) { - throw new UnsupportedOperationException("TODO JSON-P 1.1"); - } + //X TODO add missing methods - @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/184e477c/johnzon-core/src/test/java/org/apache/johnzon/core/JsonPointerTest.java ---------------------------------------------------------------------- diff --git a/johnzon-core/src/test/java/org/apache/johnzon/core/JsonPointerTest.java b/johnzon-core/src/test/java/org/apache/johnzon/core/JsonPointerTest.java index 5c345e8..acab1c9 100644 --- a/johnzon-core/src/test/java/org/apache/johnzon/core/JsonPointerTest.java +++ b/johnzon-core/src/test/java/org/apache/johnzon/core/JsonPointerTest.java @@ -83,7 +83,7 @@ public class JsonPointerTest { assertEquals("1", result.toString()); } { - JsonPointer jsonPointer = Json.createJsonPointer("/a~1b"); + JsonPointer jsonPointer = Json.createPointer("/a~1b"); JsonValue result = jsonPointer.getValue(jsonDocument); assertEquals("1", result.toString()); } @@ -108,7 +108,7 @@ public class JsonPointerTest { assertEquals("3", result.toString()); } { - JsonPointer jsonPointer = Json.createJsonPointer("/e^f"); + JsonPointer jsonPointer = Json.createPointer("/e^f"); JsonValue result = jsonPointer.getValue(jsonDocument); assertEquals("3", result.toString()); } @@ -124,7 +124,7 @@ public class JsonPointerTest { assertEquals("4", result.toString()); } { - JsonPointer jsonPointer = Json.createJsonPointer("/g|h"); + JsonPointer jsonPointer = Json.createPointer("/g|h"); JsonValue result = jsonPointer.getValue(jsonDocument); assertEquals("4", result.toString()); }
