You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tinkerpop.apache.org by sp...@apache.org on 2017/01/18 18:57:56 UTC
[10/15] tinkerpop git commit: TINKERPOP-1565 GraphSON 3.0 defaulted
in drivers
TINKERPOP-1565 GraphSON 3.0 defaulted in drivers
Set this up for both python and java. Altered the sasl auth to use Base64 encoded strings in the drivers because GraphSON didn't have a byte array established as a type.
Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/dc5bd8ac
Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/dc5bd8ac
Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/dc5bd8ac
Branch: refs/heads/TINKERPOP-1565
Commit: dc5bd8ac52d7d3754846b323e59d3b3be39983d2
Parents: d3ff6f8
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Fri Jan 13 13:50:01 2017 -0500
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Wed Jan 18 13:23:43 2017 -0500
----------------------------------------------------------------------
.../ser/GraphSONMessageSerializerV3d0.java | 4 ++--
.../tinkerpop/gremlin/driver/ser/SerTokens.java | 1 +
.../gremlin/driver/ser/Serializers.java | 8 ++++++-
.../driver/driver_remote_connection.py | 4 ++--
.../jsr223/PythonGraphSONJavaTranslator.java | 4 ++--
.../handler/SaslAuthenticationHandler.java | 1 +
.../server/GremlinServerAuthIntegrateTest.java | 25 ++++++++++----------
.../GremlinServerAuthOldIntegrateTest.java | 17 ++++++-------
.../server/GremlinServerHttpIntegrateTest.java | 2 +-
.../remote/gremlin-server-integration.yaml | 1 +
.../server/gremlin-server-integration.yaml | 1 +
11 files changed, 40 insertions(+), 28 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/dc5bd8ac/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/ser/GraphSONMessageSerializerV3d0.java
----------------------------------------------------------------------
diff --git a/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/ser/GraphSONMessageSerializerV3d0.java b/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/ser/GraphSONMessageSerializerV3d0.java
index f6f2fc8..d1c9e46 100644
--- a/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/ser/GraphSONMessageSerializerV3d0.java
+++ b/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/ser/GraphSONMessageSerializerV3d0.java
@@ -38,7 +38,7 @@ import java.util.UUID;
*/
public final class GraphSONMessageSerializerV3d0 extends AbstractGraphSONMessageSerializerV2d0 implements MessageTextSerializer {
private static final Logger logger = LoggerFactory.getLogger(GraphSONMessageSerializerV3d0.class);
- private static final String MIME_TYPE = SerTokens.MIME_JSON;
+ private static final String MIME_TYPE = SerTokens.MIME_GRAPHSON_V3D0;
private static byte[] header;
@@ -65,7 +65,7 @@ public final class GraphSONMessageSerializerV3d0 extends AbstractGraphSONMessage
@Override
GraphSONMapper.Builder configureBuilder(final GraphSONMapper.Builder builder) {
// override the 2.0 in AbstractGraphSONMessageSerializerV2d0
- return builder.typeInfo(TypeInfo.PARTIAL_TYPES).version(GraphSONVersion.V3_0);
+ return builder.version(GraphSONVersion.V3_0);
}
@Override
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/dc5bd8ac/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/ser/SerTokens.java
----------------------------------------------------------------------
diff --git a/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/ser/SerTokens.java b/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/ser/SerTokens.java
index ecda014..f342a57 100644
--- a/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/ser/SerTokens.java
+++ b/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/ser/SerTokens.java
@@ -39,6 +39,7 @@ public final class SerTokens {
public static final String MIME_JSON = "application/json";
public static final String MIME_GRAPHSON_V1D0 = "application/vnd.gremlin-v1.0+json";
public static final String MIME_GRAPHSON_V2D0 = "application/vnd.gremlin-v2.0+json";
+ public static final String MIME_GRAPHSON_V3D0 = "application/vnd.gremlin-v3.0+json";
public static final String MIME_GRYO_V1D0 = "application/vnd.gremlin-v1.0+gryo";
public static final String MIME_GRYO_LITE_V1D0 = "application/vnd.gremlin-v1.0+gryo-lite";
}
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/dc5bd8ac/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/ser/Serializers.java
----------------------------------------------------------------------
diff --git a/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/ser/Serializers.java b/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/ser/Serializers.java
index bb0d377..69e8287 100644
--- a/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/ser/Serializers.java
+++ b/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/ser/Serializers.java
@@ -26,9 +26,13 @@ import org.apache.tinkerpop.gremlin.driver.MessageSerializer;
* @author Stephen Mallette (http://stephen.genoprime.com)
*/
public enum Serializers {
+ /**
+ * GraphSON 3.0.
+ */
GRAPHSON(SerTokens.MIME_JSON),
GRAPHSON_V1D0(SerTokens.MIME_GRAPHSON_V1D0),
GRAPHSON_V2D0(SerTokens.MIME_GRAPHSON_V2D0),
+ GRAPHSON_V3D0(SerTokens.MIME_GRAPHSON_V3D0),
GRYO_V1D0(SerTokens.MIME_GRYO_V1D0),
GRYO_LITE_V1D0(SerTokens.MIME_GRYO_LITE_V1D0);
@@ -59,11 +63,13 @@ public enum Serializers {
public MessageSerializer simpleInstance() {
switch (value) {
case SerTokens.MIME_JSON:
- return new GraphSONMessageSerializerV1d0();
+ return new GraphSONMessageSerializerV3d0();
case SerTokens.MIME_GRAPHSON_V1D0:
return new GraphSONMessageSerializerGremlinV1d0();
case SerTokens.MIME_GRAPHSON_V2D0:
return new GraphSONMessageSerializerGremlinV2d0();
+ case SerTokens.MIME_GRAPHSON_V3D0:
+ return new GraphSONMessageSerializerV3d0();
case SerTokens.MIME_GRYO_V1D0:
return new GryoMessageSerializerV1d0();
case SerTokens.MIME_GRYO_LITE_V1D0:
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/dc5bd8ac/gremlin-python/src/main/jython/gremlin_python/driver/driver_remote_connection.py
----------------------------------------------------------------------
diff --git a/gremlin-python/src/main/jython/gremlin_python/driver/driver_remote_connection.py b/gremlin-python/src/main/jython/gremlin_python/driver/driver_remote_connection.py
index 2cbe0e7..7bc792f 100644
--- a/gremlin-python/src/main/jython/gremlin_python/driver/driver_remote_connection.py
+++ b/gremlin-python/src/main/jython/gremlin_python/driver/driver_remote_connection.py
@@ -153,7 +153,7 @@ class DriverRemoteConnection(RemoteConnection):
@gen.coroutine
def _execute_message(self, send_message):
send_message = b"".join([b"\x21",
- b"application/vnd.gremlin-v2.0+json",
+ b"application/vnd.gremlin-v3.0+json",
json.dumps(send_message, separators=(',', ':')).encode("utf-8")])
if self._websocket.protocol is None:
self._websocket = yield websocket.websocket_connect(self.url)
@@ -219,7 +219,7 @@ class Response:
if status_code == 407:
self._websocket.write_message(
b"".join([b"\x21",
- b"application/vnd.gremlin-v2.0+json",
+ b"application/vnd.gremlin-v3.0+json",
json.dumps({
"requestId": {
"@type": "g:UUID",
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/dc5bd8ac/gremlin-python/src/test/java/org/apache/tinkerpop/gremlin/python/jsr223/PythonGraphSONJavaTranslator.java
----------------------------------------------------------------------
diff --git a/gremlin-python/src/test/java/org/apache/tinkerpop/gremlin/python/jsr223/PythonGraphSONJavaTranslator.java b/gremlin-python/src/test/java/org/apache/tinkerpop/gremlin/python/jsr223/PythonGraphSONJavaTranslator.java
index 09a457c..df3bb9d 100644
--- a/gremlin-python/src/test/java/org/apache/tinkerpop/gremlin/python/jsr223/PythonGraphSONJavaTranslator.java
+++ b/gremlin-python/src/test/java/org/apache/tinkerpop/gremlin/python/jsr223/PythonGraphSONJavaTranslator.java
@@ -53,10 +53,10 @@ final class PythonGraphSONJavaTranslator<S extends TraversalSource, T extends Tr
private final JavaTranslator<S, T> javaTranslator;
private final GraphSONReader reader = GraphSONReader.build().mapper(
GraphSONMapper.build().addCustomModule(GraphSONXModuleV2d0.build().create(false))
- .version(GraphSONVersion.V2_0).create()).create();
+ .version(GraphSONVersion.V3_0).create()).create();
private final GraphSONWriter writer = GraphSONWriter.build().mapper(
GraphSONMapper.build().addCustomModule(GraphSONXModuleV2d0.build().create(false))
- .version(GraphSONVersion.V2_0).create()).create();
+ .version(GraphSONVersion.V3_0).create()).create();
public PythonGraphSONJavaTranslator(final PythonTranslator pythonTranslator, final JavaTranslator<S, T> javaTranslator) {
this.pythonTranslator = pythonTranslator;
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/dc5bd8ac/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/handler/SaslAuthenticationHandler.java
----------------------------------------------------------------------
diff --git a/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/handler/SaslAuthenticationHandler.java b/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/handler/SaslAuthenticationHandler.java
index 6cb0ddb..31171b5 100644
--- a/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/handler/SaslAuthenticationHandler.java
+++ b/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/handler/SaslAuthenticationHandler.java
@@ -22,6 +22,7 @@ import io.netty.channel.Channel;
import io.netty.channel.ChannelHandler;
import io.netty.channel.ChannelHandlerContext;
import io.netty.channel.ChannelInboundHandlerAdapter;
+import io.netty.handler.codec.base64.Base64Decoder;
import io.netty.util.Attribute;
import java.net.InetAddress;
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/dc5bd8ac/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/GremlinServerAuthIntegrateTest.java
----------------------------------------------------------------------
diff --git a/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/GremlinServerAuthIntegrateTest.java b/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/GremlinServerAuthIntegrateTest.java
index 5d0f82e..8488f28 100644
--- a/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/GremlinServerAuthIntegrateTest.java
+++ b/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/GremlinServerAuthIntegrateTest.java
@@ -23,6 +23,8 @@ import org.apache.tinkerpop.gremlin.driver.Client;
import org.apache.tinkerpop.gremlin.driver.Cluster;
import org.apache.tinkerpop.gremlin.driver.exception.ResponseException;
import org.apache.tinkerpop.gremlin.server.auth.SimpleAuthenticator;
+import org.apache.tinkerpop.gremlin.structure.Property;
+import org.apache.tinkerpop.gremlin.structure.Vertex;
import org.junit.Test;
import java.util.HashMap;
@@ -167,22 +169,22 @@ public class GremlinServerAuthIntegrateTest extends AbstractGremlinServerIntegra
}
@Test
- public void shouldAuthenticateWithPlainTextOverJSONSerialization() throws Exception {
+ public void shouldAuthenticateWithPlainTextOverDefaultJSONSerialization() throws Exception {
final Cluster cluster = TestClientFactory.build().serializer(Serializers.GRAPHSON)
.credentials("stephen", "password").create();
final Client client = cluster.connect();
try {
- assertEquals(3, client.submit("1+2").all().get().get(0).get(Map.class).get("@value"));
- assertEquals(2, client.submit("1+1").all().get().get(0).get(Map.class).get("@value"));
- assertEquals(4, client.submit("1+3").all().get().get(0).get(Map.class).get("@value"));
+ assertEquals(3, client.submit("1+2").all().get().get(0).getInt());
+ assertEquals(2, client.submit("1+1").all().get().get(0).getInt());
+ assertEquals(4, client.submit("1+3").all().get().get(0).getInt());
} finally {
cluster.close();
}
}
@Test
- public void shouldAuthenticateWithPlainTextOverGraphSONSerialization() throws Exception {
+ public void shouldAuthenticateWithPlainTextOverGraphSONV1Serialization() throws Exception {
final Cluster cluster = TestClientFactory.build().serializer(Serializers.GRAPHSON_V1D0)
.credentials("stephen", "password").create();
final Client client = cluster.connect();
@@ -197,25 +199,24 @@ public class GremlinServerAuthIntegrateTest extends AbstractGremlinServerIntegra
}
@Test
- public void shouldAuthenticateAndWorkWithVariablesOverJsonSerialization() throws Exception {
+ public void shouldAuthenticateAndWorkWithVariablesOverDefaultJsonSerialization() throws Exception {
final Cluster cluster = TestClientFactory.build().serializer(Serializers.GRAPHSON)
.credentials("stephen", "password").create();
final Client client = cluster.connect(name.getMethodName());
try {
- final Map vertex = (Map) client.submit("v=graph.addVertex(\"name\", \"stephen\")").all().get().get(0).getObject();
- final Map<String, List<Map>> properties = (Map) ((Map) vertex.get("@value")).get("properties");
- assertEquals("stephen", properties.get("name").get(0).get("value"));
+ final Vertex vertex = (Vertex) client.submit("v=graph.addVertex(\"name\", \"stephen\")").all().get().get(0).getObject();
+ assertEquals("stephen", vertex.value("name"));
- final Map vpName = (Map)client.submit("v.property('name')").all().get().get(0).getObject();
- assertEquals("stephen", ((Map) vpName.get("@value")).get("value"));
+ final Property vpName = (Property)client.submit("v.property('name')").all().get().get(0).getObject();
+ assertEquals("stephen", vpName.value());
} finally {
cluster.close();
}
}
@Test
- public void shouldAuthenticateAndWorkWithVariablesOverGraphSONSerialization() throws Exception {
+ public void shouldAuthenticateAndWorkWithVariablesOverGraphSONV1Serialization() throws Exception {
final Cluster cluster = TestClientFactory.build().serializer(Serializers.GRAPHSON_V1D0)
.credentials("stephen", "password").create();
final Client client = cluster.connect(name.getMethodName());
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/dc5bd8ac/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/GremlinServerAuthOldIntegrateTest.java
----------------------------------------------------------------------
diff --git a/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/GremlinServerAuthOldIntegrateTest.java b/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/GremlinServerAuthOldIntegrateTest.java
index c8312ae..7fd3c61 100644
--- a/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/GremlinServerAuthOldIntegrateTest.java
+++ b/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/GremlinServerAuthOldIntegrateTest.java
@@ -24,6 +24,8 @@ import org.apache.tinkerpop.gremlin.driver.Cluster;
import org.apache.tinkerpop.gremlin.driver.exception.ResponseException;
import org.apache.tinkerpop.gremlin.driver.ser.Serializers;
import org.apache.tinkerpop.gremlin.server.auth.SimpleAuthenticator;
+import org.apache.tinkerpop.gremlin.structure.Property;
+import org.apache.tinkerpop.gremlin.structure.Vertex;
import org.junit.Test;
import java.util.HashMap;
@@ -179,9 +181,9 @@ public class GremlinServerAuthOldIntegrateTest extends AbstractGremlinServerInte
final Client client = cluster.connect();
try {
- assertEquals(3, client.submit("1+2").all().get().get(0).get(Map.class).get("@value"));
- assertEquals(2, client.submit("1+1").all().get().get(0).get(Map.class).get("@value"));
- assertEquals(4, client.submit("1+3").all().get().get(0).get(Map.class).get("@value"));
+ assertEquals(3, client.submit("1+2").all().get().get(0).getInt());
+ assertEquals(2, client.submit("1+1").all().get().get(0).getInt());
+ assertEquals(4, client.submit("1+3").all().get().get(0).getInt());
} finally {
cluster.close();
}
@@ -209,12 +211,11 @@ public class GremlinServerAuthOldIntegrateTest extends AbstractGremlinServerInte
final Client client = cluster.connect(name.getMethodName());
try {
- final Map vertex = (Map) client.submit("v=graph.addVertex(\"name\", \"stephen\")").all().get().get(0).getObject();
- final Map<String, List<Map>> properties = (Map) ((Map) vertex.get("@value")).get("properties");
- assertEquals("stephen", properties.get("name").get(0).get("value"));
+ final Vertex vertex = (Vertex) client.submit("v=graph.addVertex(\"name\", \"stephen\")").all().get().get(0).getObject();
+ assertEquals("stephen", vertex.value("name"));
- final Map vpName = (Map)client.submit("v.property('name')").all().get().get(0).getObject();
- assertEquals("stephen", ((Map) vpName.get("@value")).get("value"));
+ final Property vpName = (Property)client.submit("v.property('name')").all().get().get(0).getObject();
+ assertEquals("stephen", vpName.value());
} finally {
cluster.close();
}
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/dc5bd8ac/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/GremlinServerHttpIntegrateTest.java
----------------------------------------------------------------------
diff --git a/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/GremlinServerHttpIntegrateTest.java b/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/GremlinServerHttpIntegrateTest.java
index b2a1568..e46871b 100644
--- a/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/GremlinServerHttpIntegrateTest.java
+++ b/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/GremlinServerHttpIntegrateTest.java
@@ -366,7 +366,7 @@ public class GremlinServerHttpIntegrateTest extends AbstractGremlinServerIntegra
assertEquals("application/json", response.getEntity().getContentType().getValue());
final String json = EntityUtils.toString(response.getEntity());
final JsonNode node = mapper.readTree(json);
- assertEquals("stephen", node.get("result").get("data").get(0).get("@value").get("properties").get("name").get(0).get(GraphSONTokens.VALUE).asText());
+ assertEquals("stephen", node.get("result").get("data").get(0).get(GraphSONTokens.VALUEPROP).get("properties").get("name").get(0).get(GraphSONTokens.VALUEPROP).get(GraphSONTokens.VALUE).asText());
}
}
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/dc5bd8ac/gremlin-server/src/test/resources/org/apache/tinkerpop/gremlin/driver/remote/gremlin-server-integration.yaml
----------------------------------------------------------------------
diff --git a/gremlin-server/src/test/resources/org/apache/tinkerpop/gremlin/driver/remote/gremlin-server-integration.yaml b/gremlin-server/src/test/resources/org/apache/tinkerpop/gremlin/driver/remote/gremlin-server-integration.yaml
index 7d23fb9..98cdef0 100644
--- a/gremlin-server/src/test/resources/org/apache/tinkerpop/gremlin/driver/remote/gremlin-server-integration.yaml
+++ b/gremlin-server/src/test/resources/org/apache/tinkerpop/gremlin/driver/remote/gremlin-server-integration.yaml
@@ -38,6 +38,7 @@ serializers:
- { className: org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerGremlinV1d0, config: { ioRegistries: [org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerIoRegistry] }}
- { className: org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerGremlinV2d0, config: { useMapperFromGraph: graph }}
- { className: org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerV2d0, config: { useMapperFromGraph: graph }}
+ - { className: org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerV3d0, config: { useMapperFromGraph: graph }}
processors:
- { className: org.apache.tinkerpop.gremlin.server.op.session.SessionOpProcessor, config: { sessionTimeout: 28800000 }}
metrics: {
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/dc5bd8ac/gremlin-server/src/test/resources/org/apache/tinkerpop/gremlin/server/gremlin-server-integration.yaml
----------------------------------------------------------------------
diff --git a/gremlin-server/src/test/resources/org/apache/tinkerpop/gremlin/server/gremlin-server-integration.yaml b/gremlin-server/src/test/resources/org/apache/tinkerpop/gremlin/server/gremlin-server-integration.yaml
index a467111..1c1ef8d 100644
--- a/gremlin-server/src/test/resources/org/apache/tinkerpop/gremlin/server/gremlin-server-integration.yaml
+++ b/gremlin-server/src/test/resources/org/apache/tinkerpop/gremlin/server/gremlin-server-integration.yaml
@@ -34,6 +34,7 @@ serializers:
- { className: org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerGremlinV1d0, config: { ioRegistries: [org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerIoRegistry] }}
- { className: org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerGremlinV2d0, config: { useMapperFromGraph: graph }}
- { className: org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerV2d0, config: { useMapperFromGraph: graph }}
+ - { className: org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerV3d0, config: { useMapperFromGraph: graph }}
processors:
- { className: org.apache.tinkerpop.gremlin.server.op.session.SessionOpProcessor, config: { sessionTimeout: 28800000 }}
metrics: {