TINKERPOP-1427 Migrate GraphSON v2 performance enhancement to v3 This was for TinkerGraph whole graph serialization.
Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/98a6c595 Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/98a6c595 Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/98a6c595 Branch: refs/heads/TINKERPOP-1427 Commit: 98a6c5958e8655588bf06ed9a80c0abb90bd6882 Parents: bef05a8 Author: Stephen Mallette <sp...@genoprime.com> Authored: Sat Jul 1 15:08:53 2017 -0400 Committer: Stephen Mallette <sp...@genoprime.com> Committed: Mon Jul 10 16:23:52 2017 -0400 ---------------------------------------------------------------------- .../structure/TinkerIoRegistryV3d0.java | 38 +++++++++----------- 1 file changed, 17 insertions(+), 21 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/98a6c595/tinkergraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/tinkergraph/structure/TinkerIoRegistryV3d0.java ---------------------------------------------------------------------- diff --git a/tinkergraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/tinkergraph/structure/TinkerIoRegistryV3d0.java b/tinkergraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/tinkergraph/structure/TinkerIoRegistryV3d0.java index c2eebf9..c6ff44f 100644 --- a/tinkergraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/tinkergraph/structure/TinkerIoRegistryV3d0.java +++ b/tinkergraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/tinkergraph/structure/TinkerIoRegistryV3d0.java @@ -36,6 +36,7 @@ import org.apache.tinkerpop.gremlin.structure.util.detached.DetachedVertex; import org.apache.tinkerpop.shaded.jackson.core.JsonGenerator; import org.apache.tinkerpop.shaded.jackson.core.JsonParser; import org.apache.tinkerpop.shaded.jackson.core.JsonProcessingException; +import org.apache.tinkerpop.shaded.jackson.core.JsonToken; import org.apache.tinkerpop.shaded.jackson.databind.DeserializationContext; import org.apache.tinkerpop.shaded.jackson.databind.SerializerProvider; import org.apache.tinkerpop.shaded.jackson.databind.deser.std.StdDeserializer; @@ -50,8 +51,6 @@ import java.io.ByteArrayOutputStream; import java.io.IOException; import java.util.HashMap; import java.util.Iterator; -import java.util.LinkedHashMap; -import java.util.List; import java.util.Map; /** @@ -191,26 +190,23 @@ public final class TinkerIoRegistryV3d0 extends AbstractIoRegistry { conf.setProperty("gremlin.tinkergraph.defaultVertexPropertyCardinality", "list"); final TinkerGraph graph = TinkerGraph.open(conf); - final List<? extends Edge> edges; - final List<? extends Vertex> vertices; - - jsonParser.nextToken(); - final Map<String, Object> graphData = deserializationContext.readValue(jsonParser, LinkedHashMap.class); - vertices = (List<DetachedVertex>) graphData.get(GraphSONTokens.VERTICES); - edges = (List<DetachedEdge>) graphData.get(GraphSONTokens.EDGES); - - - vertices.forEach(e -> { - if (e instanceof DetachedVertex) { - ((DetachedVertex)e).attach(Attachable.Method.getOrCreate(graph)); + while (jsonParser.nextToken() != JsonToken.END_OBJECT) { + if (jsonParser.getCurrentName().equals("vertices")) { + while (jsonParser.nextToken() != JsonToken.END_ARRAY) { + if (jsonParser.currentToken() == JsonToken.START_OBJECT) { + final DetachedVertex v = (DetachedVertex) deserializationContext.readValue(jsonParser, Vertex.class); + v.attach(Attachable.Method.getOrCreate(graph)); + } + } + } else if (jsonParser.getCurrentName().equals("edges")) { + while (jsonParser.nextToken() != JsonToken.END_ARRAY) { + if (jsonParser.currentToken() == JsonToken.START_OBJECT) { + final DetachedEdge e = (DetachedEdge) deserializationContext.readValue(jsonParser, Edge.class); + e.attach(Attachable.Method.getOrCreate(graph)); + } + } } - }); - - edges.forEach(e -> { - if (e instanceof DetachedEdge) { - ((DetachedEdge) e).attach(Attachable.Method.getOrCreate(graph)); - } - }); + } return graph; }