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());