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 2015/04/21 12:43:31 UTC

[04/39] incubator-tinkerpop git commit: Extracted method in json message serialization for better reuse.

Extracted method in json message serialization for better reuse.


Project: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/commit/1f05d3cb
Tree: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/tree/1f05d3cb
Diff: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/diff/1f05d3cb

Branch: refs/heads/refactor-io
Commit: 1f05d3cb65a031995049e36b49ea52c6e220dd1c
Parents: 5763895
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Fri Apr 17 15:57:10 2015 -0400
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Fri Apr 17 15:57:10 2015 -0400

----------------------------------------------------------------------
 .../ser/AbstractJsonMessageSerializerV1d0.java  | 37 ++++++++++++--------
 .../driver/ser/JsonMessageSerializerV1d0.java   | 16 +--------
 2 files changed, 23 insertions(+), 30 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/1f05d3cb/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/ser/AbstractJsonMessageSerializerV1d0.java
----------------------------------------------------------------------
diff --git a/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/ser/AbstractJsonMessageSerializerV1d0.java b/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/ser/AbstractJsonMessageSerializerV1d0.java
index 518f242..7737a7f 100644
--- a/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/ser/AbstractJsonMessageSerializerV1d0.java
+++ b/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/ser/AbstractJsonMessageSerializerV1d0.java
@@ -99,21 +99,7 @@ public abstract class AbstractJsonMessageSerializerV1d0 implements MessageSerial
     public ByteBuf serializeResponseAsBinary(final ResponseMessage responseMessage, final ByteBufAllocator allocator) throws SerializationException {
         ByteBuf encodedMessage = null;
         try {
-            final Map<String, Object> result = new HashMap<>();
-            result.put(SerTokens.TOKEN_DATA, responseMessage.getResult().getData());
-            result.put(SerTokens.TOKEN_META, responseMessage.getResult().getMeta());
-
-            final Map<String, Object> status = new HashMap<>();
-            status.put(SerTokens.TOKEN_MESSAGE, responseMessage.getStatus().getMessage());
-            status.put(SerTokens.TOKEN_CODE, responseMessage.getStatus().getCode().getValue());
-            status.put(SerTokens.TOKEN_ATTRIBUTES, responseMessage.getStatus().getAttributes());
-
-            final Map<String, Object> message = new HashMap<>();
-            message.put(SerTokens.TOKEN_STATUS, status);
-            message.put(SerTokens.TOKEN_RESULT, result);
-            message.put(SerTokens.TOKEN_REQUEST, responseMessage.getRequestId() != null ? responseMessage.getRequestId() : null);
-
-            final byte[] payload = mapper.writeValueAsBytes(message);
+            final byte[] payload = mapper.writeValueAsBytes(createResponseMessageMap(responseMessage));
             encodedMessage = allocator.buffer(payload.length);
             encodedMessage.writeBytes(payload);
 
@@ -179,6 +165,27 @@ public abstract class AbstractJsonMessageSerializerV1d0 implements MessageSerial
         }
     }
 
+    /**
+     * Construct a {@link Map} from the {@link ResponseMessage} for serialization purposes.  By doing it this way,
+     * type embedding does not become overly verbose in the core structure of the message.
+     */
+    protected static Map<String, Object> createResponseMessageMap(final ResponseMessage responseMessage) {
+        final Map<String, Object> result = new HashMap<>();
+        result.put(SerTokens.TOKEN_DATA, responseMessage.getResult().getData());
+        result.put(SerTokens.TOKEN_META, responseMessage.getResult().getMeta());
+
+        final Map<String, Object> status = new HashMap<>();
+        status.put(SerTokens.TOKEN_MESSAGE, responseMessage.getStatus().getMessage());
+        status.put(SerTokens.TOKEN_CODE, responseMessage.getStatus().getCode().getValue());
+        status.put(SerTokens.TOKEN_ATTRIBUTES, responseMessage.getStatus().getAttributes());
+
+        final Map<String, Object> message = new HashMap<>();
+        message.put(SerTokens.TOKEN_STATUS, status);
+        message.put(SerTokens.TOKEN_RESULT, result);
+        message.put(SerTokens.TOKEN_REQUEST, responseMessage.getRequestId() != null ? responseMessage.getRequestId() : null);
+        return message;
+    }
+
     public static class GremlinServerModule extends SimpleModule {
         public GremlinServerModule() {
             super("graphson-gremlin-server");

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/1f05d3cb/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/ser/JsonMessageSerializerV1d0.java
----------------------------------------------------------------------
diff --git a/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/ser/JsonMessageSerializerV1d0.java b/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/ser/JsonMessageSerializerV1d0.java
index 91063a7..21ef3cd 100644
--- a/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/ser/JsonMessageSerializerV1d0.java
+++ b/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/ser/JsonMessageSerializerV1d0.java
@@ -94,21 +94,7 @@ public class JsonMessageSerializerV1d0 extends AbstractJsonMessageSerializerV1d0
     @Override
     public String serializeResponseAsString(final ResponseMessage responseMessage) throws SerializationException {
         try {
-            final Map<String, Object> result = new HashMap<>();
-            result.put(SerTokens.TOKEN_DATA, responseMessage.getResult().getData());
-            result.put(SerTokens.TOKEN_META, responseMessage.getResult().getMeta());
-
-            final Map<String, Object> status = new HashMap<>();
-            status.put(SerTokens.TOKEN_MESSAGE, responseMessage.getStatus().getMessage());
-            status.put(SerTokens.TOKEN_CODE, responseMessage.getStatus().getCode().getValue());
-            status.put(SerTokens.TOKEN_ATTRIBUTES, responseMessage.getStatus().getAttributes());
-
-            final Map<String, Object> message = new HashMap<>();
-            message.put(SerTokens.TOKEN_STATUS, status);
-            message.put(SerTokens.TOKEN_RESULT, result);
-            message.put(SerTokens.TOKEN_REQUEST, responseMessage.getRequestId() != null ? responseMessage.getRequestId() : null);
-
-            return mapper.writeValueAsString(message);
+            return mapper.writeValueAsString(createResponseMessageMap(responseMessage));
         } catch (Exception ex) {
             logger.warn("Response [{}] could not be serialized by {}.", responseMessage.toString(), AbstractJsonMessageSerializerV1d0.class.getName());
             throw new RuntimeException("Error during serialization.", ex);