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/09 12:33:28 UTC
[1/4] tinkerpop git commit: Add ResponseMessageDeserializer for
GraphSON2.
Repository: tinkerpop
Updated Branches:
refs/heads/master e248da06e -> 0819a686a
Add ResponseMessageDeserializer for GraphSON2.
Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/5ba605bf
Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/5ba605bf
Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/5ba605bf
Branch: refs/heads/master
Commit: 5ba605bf67fe6c46cdb874b63703cf65aa25fa6a
Parents: 3064b93
Author: Kevin Gallardo <ke...@datastax.com>
Authored: Thu Jan 5 11:57:32 2017 -0500
Committer: Kevin Gallardo <ke...@datastax.com>
Committed: Thu Jan 5 11:57:32 2017 -0500
----------------------------------------------------------------------
.../AbstractGraphSONMessageSerializerV2d0.java | 36 ++++++++++----
.../ser/GraphSONMessageSerializerV2d0.java | 11 +----
.../ser/GraphSONMessageSerializerV2d0Test.java | 49 ++++++++++++++++++++
3 files changed, 76 insertions(+), 20 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/5ba605bf/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/ser/AbstractGraphSONMessageSerializerV2d0.java
----------------------------------------------------------------------
diff --git a/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/ser/AbstractGraphSONMessageSerializerV2d0.java b/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/ser/AbstractGraphSONMessageSerializerV2d0.java
index 52cbda2..5cd5198 100644
--- a/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/ser/AbstractGraphSONMessageSerializerV2d0.java
+++ b/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/ser/AbstractGraphSONMessageSerializerV2d0.java
@@ -26,6 +26,7 @@ import org.apache.tinkerpop.gremlin.driver.message.RequestMessage;
import org.apache.tinkerpop.gremlin.driver.message.ResponseMessage;
import org.apache.tinkerpop.gremlin.driver.message.ResponseStatusCode;
import org.apache.tinkerpop.gremlin.structure.Graph;
+import org.apache.tinkerpop.gremlin.structure.io.graphson.AbstractObjectDeserializer;
import org.apache.tinkerpop.gremlin.structure.io.graphson.GraphSONIo;
import org.apache.tinkerpop.gremlin.structure.io.graphson.GraphSONMapper;
import org.apache.tinkerpop.gremlin.structure.io.graphson.GraphSONUtil;
@@ -154,16 +155,7 @@ public abstract class AbstractGraphSONMessageSerializerV2d0 extends AbstractMess
try {
final byte[] payload = new byte[msg.readableBytes()];
msg.readBytes(payload);
- final Map<String, Object> responseData = mapper.readValue(payload, mapTypeReference);
- final Map<String, Object> status = (Map<String, Object>) responseData.get(SerTokens.TOKEN_STATUS);
- final Map<String, Object> result = (Map<String, Object>) responseData.get(SerTokens.TOKEN_RESULT);
- return ResponseMessage.build(UUID.fromString(responseData.get(SerTokens.TOKEN_REQUEST).toString()))
- .code(ResponseStatusCode.getFromValue((Integer) status.get(SerTokens.TOKEN_CODE)))
- .statusMessage(status.get(SerTokens.TOKEN_MESSAGE).toString())
- .statusAttributes((Map<String, Object>) status.get(SerTokens.TOKEN_ATTRIBUTES))
- .result(result.get(SerTokens.TOKEN_DATA))
- .responseMetaData((Map<String, Object>) result.get(SerTokens.TOKEN_META))
- .create();
+ return mapper.readValue(payload, ResponseMessage.class);
} catch (Exception ex) {
logger.warn("Response [{}] could not be deserialized by {}.", msg, AbstractGraphSONMessageSerializerV2d0.class.getName());
throw new SerializationException(ex);
@@ -180,8 +172,13 @@ public abstract class AbstractGraphSONMessageSerializerV2d0 extends AbstractMess
public final static class GremlinServerModule extends SimpleModule {
public GremlinServerModule() {
super("graphson-gremlin-server");
+
+ // SERIALIZERS
addSerializer(JsonBuilder.class, new JsonBuilderJacksonSerializer());
addSerializer(ResponseMessage.class, new ResponseMessageSerializer());
+
+ //DESERIALIZERS
+ addDeserializer(ResponseMessage.class, new ResponseMessageDeserializer());
}
}
@@ -251,4 +248,23 @@ public abstract class AbstractGraphSONMessageSerializerV2d0 extends AbstractMess
GraphSONUtil.writeEndObject(responseMessage, jsonGenerator, typeSerializer);
}
}
+
+ public final static class ResponseMessageDeserializer extends AbstractObjectDeserializer<ResponseMessage> {
+ protected ResponseMessageDeserializer() {
+ super(ResponseMessage.class);
+ }
+
+ @Override
+ public ResponseMessage createObject(Map<String, Object> data) {
+ final Map<String, Object> status = (Map<String, Object>) data.get(SerTokens.TOKEN_STATUS);
+ final Map<String, Object> result = (Map<String, Object>) data.get(SerTokens.TOKEN_RESULT);
+ return ResponseMessage.build(UUID.fromString(data.get(SerTokens.TOKEN_REQUEST).toString()))
+ .code(ResponseStatusCode.getFromValue((Integer) status.get(SerTokens.TOKEN_CODE)))
+ .statusMessage(status.get(SerTokens.TOKEN_MESSAGE).toString())
+ .statusAttributes((Map<String, Object>) status.get(SerTokens.TOKEN_ATTRIBUTES))
+ .result(result.get(SerTokens.TOKEN_DATA))
+ .responseMetaData((Map<String, Object>) result.get(SerTokens.TOKEN_META))
+ .create();
+ }
+ }
}
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/5ba605bf/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 89432d9..251b5c1 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
@@ -77,16 +77,7 @@ public final class GraphSONMessageSerializerV2d0 extends AbstractGraphSONMessage
@Override
public ResponseMessage deserializeResponse(final String msg) throws SerializationException {
try {
- final Map<String, Object> responseData = mapper.readValue(msg, mapTypeReference);
- final Map<String, Object> status = (Map<String, Object>) responseData.get(SerTokens.TOKEN_STATUS);
- final Map<String, Object> result = (Map<String, Object>) responseData.get(SerTokens.TOKEN_RESULT);
- return ResponseMessage.build(UUID.fromString(responseData.get(SerTokens.TOKEN_REQUEST).toString()))
- .code(ResponseStatusCode.getFromValue((Integer) status.get(SerTokens.TOKEN_CODE)))
- .statusMessage(status.get(SerTokens.TOKEN_MESSAGE).toString())
- .statusAttributes((Map<String, Object>) status.get(SerTokens.TOKEN_ATTRIBUTES))
- .result(result.get(SerTokens.TOKEN_DATA))
- .responseMetaData((Map<String, Object>) result.get(SerTokens.TOKEN_META))
- .create();
+ return mapper.readValue(msg, ResponseMessage.class);
} catch (Exception ex) {
logger.warn("Response [{}] could not be deserialized by {}.", msg, AbstractGraphSONMessageSerializerV2d0.class.getName());
throw new SerializationException(ex);
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/5ba605bf/gremlin-driver/src/test/java/org/apache/tinkerpop/gremlin/driver/ser/GraphSONMessageSerializerV2d0Test.java
----------------------------------------------------------------------
diff --git a/gremlin-driver/src/test/java/org/apache/tinkerpop/gremlin/driver/ser/GraphSONMessageSerializerV2d0Test.java b/gremlin-driver/src/test/java/org/apache/tinkerpop/gremlin/driver/ser/GraphSONMessageSerializerV2d0Test.java
index d3dbecc..460e935 100644
--- a/gremlin-driver/src/test/java/org/apache/tinkerpop/gremlin/driver/ser/GraphSONMessageSerializerV2d0Test.java
+++ b/gremlin-driver/src/test/java/org/apache/tinkerpop/gremlin/driver/ser/GraphSONMessageSerializerV2d0Test.java
@@ -54,6 +54,7 @@ import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Arrays;
+import java.util.Collections;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
@@ -491,6 +492,54 @@ public class GraphSONMessageSerializerV2d0Test {
}
}
+ @Test
+ public void shouldSerializeAndDeserializeResponseAndRequestFromObjectMapper() throws IOException {
+ ObjectMapper om = GraphSONMapper.build().version(GraphSONVersion.V2_0)
+ .addCustomModule(new GraphSONMessageSerializerGremlinV2d0.GremlinServerModule())
+ .create().createMapper();
+
+ final Map<String, Object> requestBindings = new HashMap<>();
+ requestBindings.put("x", 1);
+
+ final Map<String, Object> requestAliases = new HashMap<>();
+ requestAliases.put("g", "social");
+
+ RequestMessage requestMessage = RequestMessage.build("eval").processor("session").
+ overrideRequestId(UUID.fromString("cb682578-9d92-4499-9ebc-5c6aa73c5397")).
+ add("gremlin", "social.V(x)", "bindings", requestBindings, "language", "gremlin-groovy", "aliases", requestAliases, "session", UUID.fromString("41d2e28a-20a4-4ab0-b379-d810dede3786")).create();
+
+ String json = om.writeValueAsString(requestMessage);
+ RequestMessage readRequestMessage = om.readValue(json, RequestMessage.class);
+
+ assertEquals(requestMessage.getOp(), readRequestMessage.getOp());
+ assertEquals(requestMessage.getProcessor(), readRequestMessage.getProcessor());
+ assertEquals(requestMessage.getRequestId(), readRequestMessage.getRequestId());
+ assertEquals(requestMessage.getArgs(), readRequestMessage.getArgs());
+ }
+
+ @Test
+ public void shouldSerializeAndDeserializeResponseFromObjectMapper() throws IOException {
+ ObjectMapper om = GraphSONMapper.build().version(GraphSONVersion.V2_0)
+ .addCustomModule(new GraphSONMessageSerializerGremlinV2d0.GremlinServerModule())
+ .create().createMapper();
+ Graph graph = TinkerFactory.createModern();
+
+ ResponseMessage responseMessage = ResponseMessage.build(UUID.fromString("41d2e28a-20a4-4ab0-b379-d810dede3786")).
+ code(org.apache.tinkerpop.gremlin.driver.message.ResponseStatusCode.SUCCESS).
+ result(Collections.singletonList(graph.vertices().next())).create();
+
+ String respJson = om.writeValueAsString(responseMessage);
+ ResponseMessage responseMessageRead = om.readValue(respJson, ResponseMessage.class);
+
+ assertEquals(responseMessage.getRequestId(), responseMessageRead.getRequestId());
+ assertEquals(responseMessage.getResult().getMeta(), responseMessageRead.getResult().getMeta());
+ assertEquals(responseMessage.getResult().getData(), responseMessageRead.getResult().getData());
+ assertEquals(responseMessage.getStatus().getAttributes(), responseMessageRead.getStatus().getAttributes());
+ assertEquals(responseMessage.getStatus().getCode().getValue(), responseMessageRead.getStatus().getCode().getValue());
+ assertEquals(responseMessage.getStatus().getCode().isSuccess(), responseMessageRead.getStatus().getCode().isSuccess());
+ assertEquals(responseMessage.getStatus().getMessage(), responseMessageRead.getStatus().getMessage());
+ }
+
private class FunObject {
private String val;
[2/4] tinkerpop git commit: Merge branch 'pr-523' into tp32
Posted by sp...@apache.org.
Merge branch 'pr-523' into tp32
Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/63fb5eca
Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/63fb5eca
Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/63fb5eca
Branch: refs/heads/master
Commit: 63fb5eca95cf89bcb2c449343f5321f9985fc768
Parents: 9c44f0d 5ba605b
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Mon Jan 9 07:03:53 2017 -0500
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Mon Jan 9 07:03:53 2017 -0500
----------------------------------------------------------------------
.../AbstractGraphSONMessageSerializerV2d0.java | 36 ++++++++++----
.../ser/GraphSONMessageSerializerV2d0.java | 11 +----
.../ser/GraphSONMessageSerializerV2d0Test.java | 49 ++++++++++++++++++++
3 files changed, 76 insertions(+), 20 deletions(-)
----------------------------------------------------------------------
[3/4] tinkerpop git commit: Merge branch 'tp32'
Posted by sp...@apache.org.
Merge branch 'tp32'
Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/18f074ab
Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/18f074ab
Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/18f074ab
Branch: refs/heads/master
Commit: 18f074ab25f0980adcc6baa41122fd2f822e3126
Parents: e248da0 63fb5ec
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Mon Jan 9 07:04:02 2017 -0500
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Mon Jan 9 07:04:02 2017 -0500
----------------------------------------------------------------------
.../AbstractGraphSONMessageSerializerV2d0.java | 36 ++++++++++----
.../ser/GraphSONMessageSerializerV2d0.java | 11 +----
.../ser/GraphSONMessageSerializerV2d0Test.java | 49 ++++++++++++++++++++
3 files changed, 76 insertions(+), 20 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/18f074ab/gremlin-driver/src/test/java/org/apache/tinkerpop/gremlin/driver/ser/GraphSONMessageSerializerV2d0Test.java
----------------------------------------------------------------------
[4/4] tinkerpop git commit: Enabled testing of ResponseMessage in io
test framework
Posted by sp...@apache.org.
Enabled testing of ResponseMessage in io test framework
A fix in tp32 allowed this to start working on PR 523 CTR
Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/0819a686
Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/0819a686
Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/0819a686
Branch: refs/heads/master
Commit: 0819a686a62e2f9ca413d7339460b3b267ea067d
Parents: 18f074a
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Mon Jan 9 07:32:33 2017 -0500
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Mon Jan 9 07:32:33 2017 -0500
----------------------------------------------------------------------
.../java/org/apache/tinkerpop/gremlin/structure/io/Model.java | 5 +----
1 file changed, 1 insertion(+), 4 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/0819a686/gremlin-tools/gremlin-io-test/src/main/java/org/apache/tinkerpop/gremlin/structure/io/Model.java
----------------------------------------------------------------------
diff --git a/gremlin-tools/gremlin-io-test/src/main/java/org/apache/tinkerpop/gremlin/structure/io/Model.java b/gremlin-tools/gremlin-io-test/src/main/java/org/apache/tinkerpop/gremlin/structure/io/Model.java
index 0d80b8e..341e62b 100644
--- a/gremlin-tools/gremlin-io-test/src/main/java/org/apache/tinkerpop/gremlin/structure/io/Model.java
+++ b/gremlin-tools/gremlin-io-test/src/main/java/org/apache/tinkerpop/gremlin/structure/io/Model.java
@@ -308,7 +308,7 @@ public class Model {
.before("3.0")
.match();
- // TODO: need to get Request/ResponseMessages to be included - logic is held in GraphSONMessageSerializer
+ // TODO: need to get RequestMessage to be included - logic is held in GraphSONMessageSerializer
incompatibilityList.addAll(Compatibilities.with(GraphSONCompatibility.class).configuredAs(".*partial.*").match());
final Compatibility[] incompatibilities = new Compatibility[incompatibilityList.size()];
@@ -321,9 +321,6 @@ public class Model {
.before("3.0")
.match();
- // TODO: need to get Request/ResponseMessages to be included - logic is held in GraphSONMessageSerializer
- incompatibilityList.addAll(Compatibilities.with(GraphSONCompatibility.class).configuredAs(".*partial.*").match());
-
// TODO: temporary problem? seems to be something breaking in vertex serialization
if (title.equals("Standard Result"))
incompatibilityList.addAll(Compatibilities.with(GraphSONCompatibility.class).configuredAs(".*no-types").match());