Made sure the GraphSON message serializers use extended graphson This should have made it into 3.2.2, but didn't - bad oversight. CTR
Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/0e4e8a1b Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/0e4e8a1b Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/0e4e8a1b Branch: refs/heads/TINKERPOP-1280 Commit: 0e4e8a1b20bae7354ec74c4145d9d3550be8fafd Parents: 2c57331 Author: Stephen Mallette <sp...@genoprime.com> Authored: Mon Sep 12 14:41:10 2016 -0400 Committer: Stephen Mallette <sp...@genoprime.com> Committed: Mon Sep 12 14:41:10 2016 -0400 ---------------------------------------------------------------------- .../GraphSONMessageSerializerGremlinV2d0.java | 4 +- .../ser/GraphSONMessageSerializerV2d0.java | 4 +- .../server/GremlinDriverIntegrateTest.java | 39 +++++++++++++++++++- 3 files changed, 44 insertions(+), 3 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/0e4e8a1b/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/ser/GraphSONMessageSerializerGremlinV2d0.java ---------------------------------------------------------------------- diff --git a/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/ser/GraphSONMessageSerializerGremlinV2d0.java b/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/ser/GraphSONMessageSerializerGremlinV2d0.java index a2d29fc..be1a26f 100644 --- a/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/ser/GraphSONMessageSerializerGremlinV2d0.java +++ b/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/ser/GraphSONMessageSerializerGremlinV2d0.java @@ -20,12 +20,13 @@ package org.apache.tinkerpop.gremlin.driver.ser; import org.apache.tinkerpop.gremlin.structure.io.graphson.GraphSONMapper; import org.apache.tinkerpop.gremlin.structure.io.graphson.GraphSONVersion; +import org.apache.tinkerpop.gremlin.structure.io.graphson.GraphSONXModuleV2d0; import org.apache.tinkerpop.gremlin.structure.io.graphson.TypeInfo; import java.nio.ByteBuffer; /** - * Serialize results to JSON with version 2.0.x schema. + * Serialize results to JSON with version 2.0.x schema and the extended module. * * @author Stephen Mallette (http://stephen.genoprime.com) */ @@ -63,6 +64,7 @@ public final class GraphSONMessageSerializerGremlinV2d0 extends AbstractGraphSON @Override GraphSONMapper.Builder configureBuilder(final GraphSONMapper.Builder builder) { return builder.version(GraphSONVersion.V2_0) + .addCustomModule(GraphSONXModuleV2d0.build().create(false)) .addCustomModule(new GremlinServerModule()) .typeInfo(TypeInfo.PARTIAL_TYPES); } http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/0e4e8a1b/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/ser/GraphSONMessageSerializerV2d0.java ---------------------------------------------------------------------- diff --git a/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/ser/GraphSONMessageSerializerV2d0.java b/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/ser/GraphSONMessageSerializerV2d0.java index 2e8c96e..4386b5a 100644 --- a/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/ser/GraphSONMessageSerializerV2d0.java +++ b/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/ser/GraphSONMessageSerializerV2d0.java @@ -23,6 +23,7 @@ import org.apache.tinkerpop.gremlin.driver.message.ResponseMessage; import org.apache.tinkerpop.gremlin.driver.message.ResponseStatusCode; import org.apache.tinkerpop.gremlin.structure.io.graphson.GraphSONMapper; import org.apache.tinkerpop.gremlin.structure.io.graphson.GraphSONVersion; +import org.apache.tinkerpop.gremlin.structure.io.graphson.GraphSONXModuleV2d0; import org.apache.tinkerpop.gremlin.structure.io.graphson.TypeInfo; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -32,7 +33,7 @@ import java.util.Map; import java.util.UUID; /** - * Serialize results to JSON with version 2.0.x schema. + * Serialize results to JSON with version 2.0.x schema and the extended module. * * @author Stephen Mallette (http://stephen.genoprime.com) */ @@ -65,6 +66,7 @@ public final class GraphSONMessageSerializerV2d0 extends AbstractGraphSONMessage @Override GraphSONMapper.Builder configureBuilder(final GraphSONMapper.Builder builder) { return builder.version(GraphSONVersion.V2_0) + .addCustomModule(GraphSONXModuleV2d0.build().create(false)) .addCustomModule(new GremlinServerModule()) .typeInfo(TypeInfo.PARTIAL_TYPES); } http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/0e4e8a1b/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/GremlinDriverIntegrateTest.java ---------------------------------------------------------------------- diff --git a/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/GremlinDriverIntegrateTest.java b/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/GremlinDriverIntegrateTest.java index 4f255b9..d7f7896 100644 --- a/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/GremlinDriverIntegrateTest.java +++ b/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/GremlinDriverIntegrateTest.java @@ -33,16 +33,19 @@ import org.apache.tinkerpop.gremlin.driver.ser.GryoMessageSerializerV1d0; import org.apache.tinkerpop.gremlin.driver.ser.Serializers; import org.apache.tinkerpop.gremlin.server.channel.NioChannelizer; import org.apache.tinkerpop.gremlin.structure.Vertex; +import org.apache.tinkerpop.gremlin.structure.util.detached.DetachedVertex; import org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerFactory; import org.apache.tinkerpop.gremlin.util.TimeUtil; import groovy.json.JsonBuilder; import org.apache.tinkerpop.gremlin.util.function.FunctionUtils; +import org.apache.tinkerpop.gremlin.util.iterator.IteratorUtils; import org.hamcrest.core.IsInstanceOf; import org.junit.Test; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.io.File; +import java.time.Instant; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; @@ -607,7 +610,7 @@ public class GremlinDriverIntegrateTest extends AbstractGremlinServerIntegration } @Test - public void shouldWorkWithGraphSONSerialization() throws Exception { + public void shouldWorkWithGraphSONV1Serialization() throws Exception { final Cluster cluster = Cluster.build("localhost").serializer(Serializers.GRAPHSON_V1D0).create(); final Client client = cluster.connect(); @@ -643,6 +646,40 @@ public class GremlinDriverIntegrateTest extends AbstractGremlinServerIntegration } @Test + public void shouldWorkWithGraphSONV2Serialization() throws Exception { + final Cluster cluster = Cluster.build("localhost").serializer(Serializers.GRAPHSON_V2D0).create(); + final Client client = cluster.connect(); + + final List<Result> r = client.submit("TinkerFactory.createModern().traversal().V(1)").all().join(); + assertEquals(1, r.size()); + + final Vertex v = r.get(0).get(DetachedVertex.class); + assertEquals(1, v.id()); + assertEquals("person", v.label()); + + assertEquals(2, IteratorUtils.count(v.properties())); + assertEquals("marko", v.value("name")); + assertEquals(29, Integer.parseInt(v.value("age").toString())); + + cluster.close(); + } + + @Test + public void shouldWorkWithGraphSONExtendedV2Serialization() throws Exception { + final Cluster cluster = Cluster.build("localhost").serializer(Serializers.GRAPHSON_V2D0).create(); + final Client client = cluster.connect(); + + final Instant now = Instant.now(); + final List<Result> r = client.submit("java.time.Instant.ofEpochMilli(" + now.toEpochMilli() + ")").all().join(); + assertEquals(1, r.size()); + + final Instant then = r.get(0).get(Instant.class); + assertEquals(now, then); + + cluster.close(); + } + + @Test @org.junit.Ignore("Can't seem to make this test pass consistently") public void shouldHandleRequestSentThatNeverReturns() throws Exception { final Cluster cluster = Cluster.open();