Repository: tinkerpop Updated Branches: refs/heads/TINKERPOP-1738-wip [created] 30005fdb2
TINKERPOP-1738 Bump to jackson 2.9.4 Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/30005fdb Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/30005fdb Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/30005fdb Branch: refs/heads/TINKERPOP-1738-wip Commit: 30005fdb276a574d6fa43a6a96394363da13985b Parents: 8e0470a Author: Stephen Mallette <sp...@genoprime.com> Authored: Tue Feb 13 10:16:46 2018 -0500 Committer: Stephen Mallette <sp...@genoprime.com> Committed: Tue Feb 13 10:16:46 2018 -0500 ---------------------------------------------------------------------- .../io/graphson/GraphSONTypeSerializer.java | 94 ++++++-------------- gremlin-shaded/pom.xml | 2 +- 2 files changed, 28 insertions(+), 68 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/30005fdb/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/GraphSONTypeSerializer.java ---------------------------------------------------------------------- diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/GraphSONTypeSerializer.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/GraphSONTypeSerializer.java index 78c670a..8b1ba25 100644 --- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/GraphSONTypeSerializer.java +++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/GraphSONTypeSerializer.java @@ -39,6 +39,8 @@ import org.apache.tinkerpop.gremlin.util.function.HashMapSupplier; import org.apache.tinkerpop.gremlin.util.function.Lambda; import org.apache.tinkerpop.shaded.jackson.annotation.JsonTypeInfo; import org.apache.tinkerpop.shaded.jackson.core.JsonGenerator; +import org.apache.tinkerpop.shaded.jackson.core.JsonToken; +import org.apache.tinkerpop.shaded.jackson.core.type.WritableTypeId; import org.apache.tinkerpop.shaded.jackson.databind.BeanProperty; import org.apache.tinkerpop.shaded.jackson.databind.jsontype.TypeIdResolver; import org.apache.tinkerpop.shaded.jackson.databind.jsontype.TypeSerializer; @@ -79,7 +81,7 @@ public class GraphSONTypeSerializer extends TypeSerializer { @Override public JsonTypeInfo.As getTypeInclusion() { - return null; + return JsonTypeInfo.As.WRAPPER_OBJECT; } @Override @@ -93,79 +95,37 @@ public class GraphSONTypeSerializer extends TypeSerializer { } @Override - public void writeTypePrefixForScalar(final Object o, final JsonGenerator jsonGenerator) throws IOException { - if (canWriteTypeId()) { - writeTypePrefix(jsonGenerator, getTypeIdResolver().idFromValueAndType(o, getClassFromObject(o))); + public WritableTypeId writeTypePrefix(final JsonGenerator jsonGenerator, final WritableTypeId writableTypeId) throws IOException { + if (writableTypeId.valueShape == JsonToken.VALUE_STRING) { + if (canWriteTypeId()) { + writeTypePrefix(jsonGenerator, getTypeIdResolver().idFromValueAndType(writableTypeId.forValue, getClassFromObject(writableTypeId.forValue))); + } + } else if (writableTypeId.valueShape == JsonToken.START_OBJECT) { + jsonGenerator.writeStartObject(); + } else if (writableTypeId.valueShape == JsonToken.START_ARRAY) { + jsonGenerator.writeStartArray(); + } else { + throw new IllegalStateException("Could not write prefix"); } - } - - @Override - public void writeTypePrefixForObject(final Object o, final JsonGenerator jsonGenerator) throws IOException { - jsonGenerator.writeStartObject(); - // TODO: FULL_TYPES should be implemented here as : if (fullTypesModeEnabled()) writeTypePrefix(Map); - } - - @Override - public void writeTypePrefixForArray(final Object o, final JsonGenerator jsonGenerator) throws IOException { - jsonGenerator.writeStartArray(); - // TODO: FULL_TYPES should be implemented here as : if (fullTypesModeEnabled()) writeTypePrefix(List); - } - - @Override - public void writeTypeSuffixForScalar(final Object o, final JsonGenerator jsonGenerator) throws IOException { - if (canWriteTypeId()) { - writeTypeSuffix(jsonGenerator); - } - } - - @Override - public void writeTypeSuffixForObject(final Object o, final JsonGenerator jsonGenerator) throws IOException { - jsonGenerator.writeEndObject(); - // TODO: FULL_TYPES should be implemented here as : if (fullTypesModeEnabled()) writeTypeSuffix(Map); - } - - @Override - public void writeTypeSuffixForArray(final Object o, final JsonGenerator jsonGenerator) throws IOException { - jsonGenerator.writeEndArray(); - // TODO: FULL_TYPES should be implemented here as : if (fullTypesModeEnabled()) writeTypeSuffix(List); - } - @Override - public void writeCustomTypePrefixForScalar(final Object o, final JsonGenerator jsonGenerator, final String s) throws IOException { - if (canWriteTypeId()) { - writeTypePrefix(jsonGenerator, s); - } + return writableTypeId; } @Override - public void writeCustomTypePrefixForObject(final Object o, final JsonGenerator jsonGenerator, final String s) throws IOException { - jsonGenerator.writeStartObject(); - // TODO: FULL_TYPES should be implemented here as : if (fullTypesModeEnabled()) writeTypePrefix(s); - } - - @Override - public void writeCustomTypePrefixForArray(final Object o, final JsonGenerator jsonGenerator, final String s) throws IOException { - jsonGenerator.writeStartArray(); - // TODO: FULL_TYPES should be implemented here as : if (fullTypesModeEnabled()) writeTypePrefix(s); - } - - @Override - public void writeCustomTypeSuffixForScalar(final Object o, final JsonGenerator jsonGenerator, final String s) throws IOException { - if (canWriteTypeId()) { - writeTypeSuffix(jsonGenerator); + public WritableTypeId writeTypeSuffix(final JsonGenerator jsonGenerator, final WritableTypeId writableTypeId) throws IOException { + if (writableTypeId.valueShape == JsonToken.VALUE_STRING) { + if (canWriteTypeId()) { + writeTypeSuffix(jsonGenerator); + } + } else if (writableTypeId.valueShape == JsonToken.START_OBJECT) { + jsonGenerator.writeEndObject(); + } else if (writableTypeId.valueShape == JsonToken.START_ARRAY) { + jsonGenerator.writeEndArray(); + } else { + throw new IllegalStateException("Could not write suffix"); } - } - - @Override - public void writeCustomTypeSuffixForObject(final Object o, final JsonGenerator jsonGenerator, final String s) throws IOException { - jsonGenerator.writeEndObject(); - // TODO: FULL_TYPES should be implemented here as : if (fullTypesModeEnabled()) writeTypeSuffix(s); - } - @Override - public void writeCustomTypeSuffixForArray(final Object o, final JsonGenerator jsonGenerator,final String s) throws IOException { - jsonGenerator.writeEndArray(); - // TODO: FULL_TYPES should be implemented here as : if (fullTypesModeEnabled()) writeTypeSuffix(s); + return writableTypeId; } private boolean canWriteTypeId() { http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/30005fdb/gremlin-shaded/pom.xml ---------------------------------------------------------------------- diff --git a/gremlin-shaded/pom.xml b/gremlin-shaded/pom.xml index 2219a4e..aeda3d4 100644 --- a/gremlin-shaded/pom.xml +++ b/gremlin-shaded/pom.xml @@ -50,7 +50,7 @@ limitations under the License. <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <!-- Update the shade plugin config whenever you change this version --> - <version>2.8.10</version> + <version>2.9.4</version> <optional>true</optional> </dependency> </dependencies>