You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tinkerpop.apache.org by va...@apache.org on 2024/04/01 20:41:10 UTC

(tinkerpop) 01/01: cleanup

This is an automated email from the ASF dual-hosted git repository.

valentyn pushed a commit to branch valentyn/streaming-untyped-graphson
in repository https://gitbox.apache.org/repos/asf/tinkerpop.git

commit be0b142f8f2ea8f5038cb8a3e856ba9120af8f6f
Author: Valentyn Kahamlyk <Va...@improving.com>
AuthorDate: Mon Apr 1 13:40:57 2024 -0700

    cleanup
---
 .../server/GremlinServerHttpIntegrateTest.java     | 86 ++++++++++----------
 .../util/ser/GraphBinaryMessageSerializerV4.java   | 20 ++---
 .../util/ser/GraphSONMessageSerializerV4.java      | 95 +++++++++++++++-------
 .../gremlin/util/ser/MessageChunkSerializer.java   | 12 +++
 .../util/ser/GraphSONMessageSerializerV3Test.java  | 13 +--
 .../util/ser/GraphSONMessageSerializerV4Test.java  | 36 +++++---
 6 files changed, 164 insertions(+), 98 deletions(-)

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 5f03e5ad68..97267e794b 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
@@ -360,7 +360,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(1, node.get("result").get("data").get(GraphSONTokens.VALUEPROP).get(0).get(GraphSONTokens.VALUEPROP).intValue());
+            assertEquals(1, node.get("result").get(GraphSONTokens.VALUEPROP).get(0).get(GraphSONTokens.VALUEPROP).intValue());
         }
     }
 
@@ -377,7 +377,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(1, node.get("result").get("data").get(GraphSONTokens.VALUEPROP).get(0).get(GraphSONTokens.VALUEPROP).intValue());
+            assertEquals(1, node.get("result").get(GraphSONTokens.VALUEPROP).get(0).get(GraphSONTokens.VALUEPROP).intValue());
         }
     }
 
@@ -392,7 +392,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(20, node.get("result").get("data").get(GraphSONTokens.VALUEPROP).get(0).get(GraphSONTokens.VALUEPROP).intValue());
+            assertEquals(20, node.get("result").get(GraphSONTokens.VALUEPROP).get(0).get(GraphSONTokens.VALUEPROP).intValue());
         }
     }
 
@@ -407,7 +407,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(111, node.get("result").get("data").get(GraphSONTokens.VALUEPROP).get(0).get(GraphSONTokens.VALUEPROP).intValue());
+            assertEquals(111, node.get("result").get(GraphSONTokens.VALUEPROP).get(0).get(GraphSONTokens.VALUEPROP).intValue());
         }
     }
 
@@ -422,7 +422,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(6, node.get("result").get("data").get(GraphSONTokens.VALUEPROP).size());
+            assertEquals(6, node.get("result").get(GraphSONTokens.VALUEPROP).size());
         }
     }
 
@@ -481,7 +481,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(1, node.get("result").get("data").get(GraphSONTokens.VALUEPROP).get(0).get(GraphSONTokens.VALUEPROP).intValue());
+            assertEquals(1, node.get("result").get(GraphSONTokens.VALUEPROP).get(0).get(GraphSONTokens.VALUEPROP).intValue());
         }
     }
 
@@ -499,7 +499,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(Instant.MAX, Instant.parse(node.get("result").get("data").get(GraphSONTokens.VALUEPROP).get(0).get(GraphSONTokens.VALUEPROP).asText()));
+            assertEquals(Instant.MAX, Instant.parse(node.get("result").get(GraphSONTokens.VALUEPROP).get(0).get(GraphSONTokens.VALUEPROP).asText()));
         }
     }
 
@@ -515,7 +515,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(1, node.get("result").get("data").get(GraphSONTokens.VALUEPROP).get(0).get(GraphSONTokens.VALUEPROP).intValue());
+            assertEquals(1, node.get("result").get(GraphSONTokens.VALUEPROP).get(0).get(GraphSONTokens.VALUEPROP).intValue());
         }
 
         final HttpGet httpget = new HttpGet(TestClientFactory.createURLString("?gremlin=g.V().count()"));
@@ -529,7 +529,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(1, node.get("result").get("data").get(GraphSONTokens.VALUEPROP).get(0).get(GraphSONTokens.VALUEPROP).intValue());
+                assertEquals(1, node.get("result").get(GraphSONTokens.VALUEPROP).get(0).get(GraphSONTokens.VALUEPROP).intValue());
             }
         }
     } */
@@ -547,7 +547,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(1, node.get("result").get("data").get(GraphSONTokens.VALUEPROP).size());
+            assertEquals(1, node.get("result").get(GraphSONTokens.VALUEPROP).size());
         }
     }
 
@@ -563,7 +563,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(6, node.get("result").get("data").get(GraphSONTokens.VALUEPROP).size());
+            assertEquals(6, node.get("result").get(GraphSONTokens.VALUEPROP).size());
         }
     }
 
@@ -599,9 +599,9 @@ 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(6, node.get("result").get("data").get(GraphSONTokens.VALUEPROP).size());
+            assertEquals(6, node.get("result").get(GraphSONTokens.VALUEPROP).size());
             assertEquals(GraphSONTokens.VERTEX,
-                    node.get("result").get("data").get(GraphSONTokens.VALUEPROP).get(0).get(GraphSONTokens.VALUEPROP).get(GraphSONTokens.LABEL).asText());
+                    node.get("result").get(GraphSONTokens.VALUEPROP).get(0).get(GraphSONTokens.VALUEPROP).get(GraphSONTokens.LABEL).asText());
         }
     }
 
@@ -617,7 +617,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(20, node.get("result").get("data").get(GraphSONTokens.VALUEPROP).get(0).get(GraphSONTokens.VALUEPROP).intValue());
+            assertEquals(20, node.get("result").get(GraphSONTokens.VALUEPROP).get(0).get(GraphSONTokens.VALUEPROP).intValue());
         }
     }
 
@@ -633,7 +633,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(10, node.get("result").get("data").get(GraphSONTokens.VALUEPROP).get(0).get(GraphSONTokens.VALUEPROP).intValue());
+            assertEquals(10, node.get("result").get(GraphSONTokens.VALUEPROP).get(0).get(GraphSONTokens.VALUEPROP).intValue());
         }
     }
 
@@ -649,7 +649,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(10.5d, node.get("result").get("data").get(GraphSONTokens.VALUEPROP).get(0).get(GraphSONTokens.VALUEPROP).doubleValue(), 0.0001);
+            assertEquals(10.5d, node.get("result").get(GraphSONTokens.VALUEPROP).get(0).get(GraphSONTokens.VALUEPROP).doubleValue(), 0.0001);
         }
     }
 
@@ -665,7 +665,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("10", node.get("result").get("data").get(GraphSONTokens.VALUEPROP).get(0).textValue());
+            assertEquals("10", node.get("result").get(GraphSONTokens.VALUEPROP).get(0).textValue());
         }
     }
 
@@ -681,7 +681,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);
-            assertThat(node.get("result").get("data").get(GraphSONTokens.VALUEPROP).get(0).booleanValue(), is(true));
+            assertThat(node.get("result").get(GraphSONTokens.VALUEPROP).get(0).booleanValue(), is(true));
         }
     }
 
@@ -697,7 +697,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);
-            assertThat(node.get("result").get("data").get(GraphSONTokens.VALUEPROP).get(0).isNull(), is(true));
+            assertThat(node.get("result").get(GraphSONTokens.VALUEPROP).get(0).isNull(), is(true));
         }
     }
 
@@ -713,10 +713,10 @@ 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);
-            assertThat(node.get("result").get("data").get(GraphSONTokens.VALUEPROP).isArray(), is(true));
-            assertEquals(1, node.get("result").get("data").get(GraphSONTokens.VALUEPROP).get(0).get(GraphSONTokens.VALUEPROP).intValue());
-            assertEquals(2, node.get("result").get("data").get(GraphSONTokens.VALUEPROP).get(1).get(GraphSONTokens.VALUEPROP).intValue());
-            assertEquals(3, node.get("result").get("data").get(GraphSONTokens.VALUEPROP).get(2).get(GraphSONTokens.VALUEPROP).intValue());
+            assertThat(node.get("result").get(GraphSONTokens.VALUEPROP).isArray(), is(true));
+            assertEquals(1, node.get("result").get(GraphSONTokens.VALUEPROP).get(0).get(GraphSONTokens.VALUEPROP).intValue());
+            assertEquals(2, node.get("result").get(GraphSONTokens.VALUEPROP).get(1).get(GraphSONTokens.VALUEPROP).intValue());
+            assertEquals(3, node.get("result").get(GraphSONTokens.VALUEPROP).get(2).get(GraphSONTokens.VALUEPROP).intValue());
         }
     }
 
@@ -732,8 +732,8 @@ 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("g:Map", node.get("result").get("data").get(GraphSONTokens.VALUEPROP).get(0).get("@type").asText());
-            assertEquals(1, node.get("result").get("data").get(GraphSONTokens.VALUEPROP).get(0).get(GraphSONTokens.VALUEPROP).get(1).get(GraphSONTokens.VALUEPROP).asInt());
+            assertEquals("g:Map", node.get("result").get(GraphSONTokens.VALUEPROP).get(0).get("@type").asText());
+            assertEquals(1, node.get("result").get(GraphSONTokens.VALUEPROP).get(0).get(GraphSONTokens.VALUEPROP).get(1).get(GraphSONTokens.VALUEPROP).asInt());
         }
     }
 
@@ -787,7 +787,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(0, node.get("result").get("data").get(GraphSONTokens.VALUEPROP).get(0).get(GraphSONTokens.VALUEPROP).asInt());
+            assertEquals(0, node.get("result").get(GraphSONTokens.VALUEPROP).get(0).get(GraphSONTokens.VALUEPROP).asInt());
         }
     }
 
@@ -804,7 +804,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(0, node.get("result").get("data").get(GraphSONTokens.VALUEPROP).get(0).get(GraphSONTokens.VALUEPROP).asInt());
+            assertEquals(0, node.get("result").get(GraphSONTokens.VALUEPROP).get(0).get(GraphSONTokens.VALUEPROP).asInt());
         }
     }
 
@@ -834,7 +834,7 @@ public class GremlinServerHttpIntegrateTest extends AbstractGremlinServerIntegra
             assertEquals(SerTokens.MIME_JSON, response.getEntity().getContentType().getValue());
             final String json = EntityUtils.toString(response.getEntity());
             final JsonNode node = mapper.readTree(json);
-            assertEquals(0, node.get("result").get("data").get(0).asInt());
+            assertEquals(0, node.get("result").get(0).asInt());
         }
     }
 
@@ -849,7 +849,7 @@ public class GremlinServerHttpIntegrateTest extends AbstractGremlinServerIntegra
             assertEquals(SerTokens.MIME_JSON, response.getEntity().getContentType().getValue());
             final String json = EntityUtils.toString(response.getEntity());
             final JsonNode node = mapper.readTree(json);
-            assertEquals(0, node.get("result").get("data").get(0).asInt());
+            assertEquals(0, node.get("result").get(0).asInt());
         }
     }
 
@@ -864,7 +864,7 @@ public class GremlinServerHttpIntegrateTest extends AbstractGremlinServerIntegra
             assertEquals(SerTokens.MIME_JSON, response.getEntity().getContentType().getValue());
             final String json = EntityUtils.toString(response.getEntity());
             final JsonNode node = mapper.readTree(json);
-            assertEquals(0, node.get("result").get("data").get(GraphSONTokens.VALUEPROP).get(0).get(GraphSONTokens.VALUEPROP).asInt());
+            assertEquals(0, node.get("result").get(GraphSONTokens.VALUEPROP).get(0).get(GraphSONTokens.VALUEPROP).asInt());
         }
     }
 
@@ -881,7 +881,7 @@ public class GremlinServerHttpIntegrateTest extends AbstractGremlinServerIntegra
             assertEquals(SerTokens.MIME_JSON, response.getEntity().getContentType().getValue());
             final String json = EntityUtils.toString(response.getEntity());
             final JsonNode node = mapper.readTree(json);
-            assertEquals(0, node.get("result").get("data").get(0).asInt());
+            assertEquals(0, node.get("result").get(0).asInt());
         }
 
         final HttpPost httppost1Untyped = new HttpPost(TestClientFactory.createURLString());
@@ -894,7 +894,7 @@ public class GremlinServerHttpIntegrateTest extends AbstractGremlinServerIntegra
             assertEquals(SerTokens.MIME_GRAPHSON_V1_UNTYPED, response.getEntity().getContentType().getValue());
             final String json = EntityUtils.toString(response.getEntity());
             final JsonNode node = mapper.readTree(json);
-            assertEquals(0, node.get("result").get("data").get(0).asInt());
+            assertEquals(0, node.get("result").get(0).asInt());
         }
 
         final HttpPost httppost2 = new HttpPost(TestClientFactory.createURLString());
@@ -907,7 +907,7 @@ public class GremlinServerHttpIntegrateTest extends AbstractGremlinServerIntegra
             assertEquals(SerTokens.MIME_GRAPHSON_V2, response.getEntity().getContentType().getValue());
             final String json = EntityUtils.toString(response.getEntity());
             final JsonNode node = mapper.readTree(json);
-            assertEquals(0, node.get("result").get("data").get(0).get(GraphSONTokens.VALUEPROP).asInt());
+            assertEquals(0, node.get("result").get(0).get(GraphSONTokens.VALUEPROP).asInt());
         }
 
         final HttpPost httppost2Untyped = new HttpPost(TestClientFactory.createURLString());
@@ -920,7 +920,7 @@ public class GremlinServerHttpIntegrateTest extends AbstractGremlinServerIntegra
             assertEquals(SerTokens.MIME_GRAPHSON_V2_UNTYPED, response.getEntity().getContentType().getValue());
             final String json = EntityUtils.toString(response.getEntity());
             final JsonNode node = mapper.readTree(json);
-            assertEquals(0, node.get("result").get("data").get(0).asInt());
+            assertEquals(0, node.get("result").get(0).asInt());
         }
 
         final HttpPost httppost3 = new HttpPost(TestClientFactory.createURLString());
@@ -933,7 +933,7 @@ public class GremlinServerHttpIntegrateTest extends AbstractGremlinServerIntegra
             assertEquals(SerTokens.MIME_GRAPHSON_V3, response.getEntity().getContentType().getValue());
             final String json = EntityUtils.toString(response.getEntity());
             final JsonNode node = mapper.readTree(json);
-            assertEquals(0, node.get("result").get("data").get(GraphSONTokens.VALUEPROP).get(0).get(GraphSONTokens.VALUEPROP).asInt());
+            assertEquals(0, node.get("result").get(GraphSONTokens.VALUEPROP).get(0).get(GraphSONTokens.VALUEPROP).asInt());
         }
 
         final HttpPost httppost3Untyped = new HttpPost(TestClientFactory.createURLString());
@@ -946,7 +946,7 @@ public class GremlinServerHttpIntegrateTest extends AbstractGremlinServerIntegra
             assertEquals(SerTokens.MIME_GRAPHSON_V3_UNTYPED, response.getEntity().getContentType().getValue());
             final String json = EntityUtils.toString(response.getEntity());
             final JsonNode node = mapper.readTree(json);
-            assertEquals(0, node.get("result").get("data").get(0).asInt());
+            assertEquals(0, node.get("result").get(0).asInt());
         }
     }
 
@@ -976,7 +976,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(1521621344741L, node.get("result").get("data").get(GraphSONTokens.VALUEPROP).get(0).get(GraphSONTokens.VALUEPROP).longValue());
+            assertEquals(1521621344741L, node.get("result").get(GraphSONTokens.VALUEPROP).get(0).get(GraphSONTokens.VALUEPROP).longValue());
         }
     }
 
@@ -1046,9 +1046,9 @@ public class GremlinServerHttpIntegrateTest extends AbstractGremlinServerIntegra
 
             final String json = EntityUtils.toString(response.getEntity());
             final JsonNode node = mapper.readTree(json);
-            assertEquals(8, node.get("result").get("data").get(GraphSONTokens.VALUEPROP).get(8).get(GraphSONTokens.VALUEPROP).intValue());
-            assertEquals("ten", node.get("result").get("data").get(GraphSONTokens.VALUEPROP).get(10).textValue());
-            assertEquals("new chunk", node.get("result").get("data").get(GraphSONTokens.VALUEPROP).get(16).textValue());
+            assertEquals(8, node.get("result").get(GraphSONTokens.VALUEPROP).get(8).get(GraphSONTokens.VALUEPROP).intValue());
+            assertEquals("ten", node.get("result").get(GraphSONTokens.VALUEPROP).get(10).textValue());
+            assertEquals("new chunk", node.get("result").get(GraphSONTokens.VALUEPROP).get(16).textValue());
 
             final Header[] footers = getTrailingHeaders(response);
             assertEquals(2, footers.length);
@@ -1130,7 +1130,7 @@ public class GremlinServerHttpIntegrateTest extends AbstractGremlinServerIntegra
 
             final String json = EntityUtils.toString(response.getEntity());
             final JsonNode node = mapper.readTree(json);
-            assertEquals(0, node.get("result").get("data").get(GraphSONTokens.VALUEPROP).get(0).get(GraphSONTokens.VALUEPROP).intValue());
+            assertEquals(0, node.get("result").get(GraphSONTokens.VALUEPROP).get(0).get(GraphSONTokens.VALUEPROP).intValue());
             assertEquals("some error", node.get("status").get("message").textValue());
             assertEquals(500, node.get("status").get("code").intValue());
 
@@ -1170,7 +1170,7 @@ public class GremlinServerHttpIntegrateTest extends AbstractGremlinServerIntegra
             assertEquals(Serializers.GRAPHSON_V4.getValue(), response.getEntity().getContentType().getValue());
             final String json = EntityUtils.toString(response.getEntity());
             final JsonNode node = mapper.readTree(json);
-            final JsonNode dataArray = node.get("result").get("data").get(GraphSONTokens.VALUEPROP);
+            final JsonNode dataArray = node.get("result").get(GraphSONTokens.VALUEPROP);
             assertTrue(dataArray.isArray());
             assertEquals(6, dataArray.size());
         }
@@ -1223,7 +1223,7 @@ public class GremlinServerHttpIntegrateTest extends AbstractGremlinServerIntegra
             assertEquals(Serializers.GRAPHSON_V4.getValue(), response.getEntity().getContentType().getValue());
             final String json = EntityUtils.toString(response.getEntity());
             final JsonNode node = mapper.readTree(json);
-            assertEquals(10.5d, node.get("result").get("data").get(GraphSONTokens.VALUEPROP).get(0).get(GraphSONTokens.VALUEPROP).doubleValue(), 0.0001);
+            assertEquals(10.5d, node.get("result").get(GraphSONTokens.VALUEPROP).get(0).get(GraphSONTokens.VALUEPROP).doubleValue(), 0.0001);
         }
     }
 
diff --git a/gremlin-util/src/main/java/org/apache/tinkerpop/gremlin/util/ser/GraphBinaryMessageSerializerV4.java b/gremlin-util/src/main/java/org/apache/tinkerpop/gremlin/util/ser/GraphBinaryMessageSerializerV4.java
index 88b4197486..a4d2e2f6bf 100644
--- a/gremlin-util/src/main/java/org/apache/tinkerpop/gremlin/util/ser/GraphBinaryMessageSerializerV4.java
+++ b/gremlin-util/src/main/java/org/apache/tinkerpop/gremlin/util/ser/GraphBinaryMessageSerializerV4.java
@@ -86,6 +86,16 @@ public class GraphBinaryMessageSerializerV4 extends AbstractGraphBinaryMessageSe
         return requestSerializerV4.readValue(msg, reader);
     }
 
+    @Override
+    public ByteBuf serializeResponseAsBinary(final ResponseMessage responseMessage, final ByteBufAllocator allocator) throws SerializationException {
+        return writeHeader(responseMessage, allocator);
+    }
+
+    @Override
+    public String serializeResponseAsString(final ResponseMessage responseMessage, final ByteBufAllocator allocator) throws SerializationException {
+        throw new UnsupportedOperationException("Response serialization as String is not supported");
+    }
+
     // chunked write
     @Override
     public ByteBuf writeHeader(final ResponseMessage responseMessage, final ByteBufAllocator allocator) throws SerializationException {
@@ -212,14 +222,4 @@ public class GraphBinaryMessageSerializerV4 extends AbstractGraphBinaryMessageSe
             throw new SerializationException(ex);
         }
     }
-
-    private enum MessageParts {
-        HEADER, DATA, FOOTER;
-
-        public static final EnumSet<MessageParts> ALL = EnumSet.of(HEADER, DATA, FOOTER);
-        public static final EnumSet<MessageParts> START = EnumSet.of(HEADER, DATA);
-        public static final EnumSet<MessageParts> CHUNK = EnumSet.of(DATA);
-        public static final EnumSet<MessageParts> END = EnumSet.of(DATA, FOOTER);
-        public static final EnumSet<MessageParts> ERROR = EnumSet.of(FOOTER);
-    }
 }
diff --git a/gremlin-util/src/main/java/org/apache/tinkerpop/gremlin/util/ser/GraphSONMessageSerializerV4.java b/gremlin-util/src/main/java/org/apache/tinkerpop/gremlin/util/ser/GraphSONMessageSerializerV4.java
index 09a4247070..aa9d7a6db7 100644
--- a/gremlin-util/src/main/java/org/apache/tinkerpop/gremlin/util/ser/GraphSONMessageSerializerV4.java
+++ b/gremlin-util/src/main/java/org/apache/tinkerpop/gremlin/util/ser/GraphSONMessageSerializerV4.java
@@ -21,6 +21,9 @@ package org.apache.tinkerpop.gremlin.util.ser;
 import io.netty.buffer.ByteBuf;
 import io.netty.buffer.ByteBufAllocator;
 import io.netty.util.ReferenceCountUtil;
+import org.apache.tinkerpop.gremlin.structure.io.Buffer;
+import org.apache.tinkerpop.gremlin.structure.io.binary.GraphBinaryWriter;
+import org.apache.tinkerpop.gremlin.structure.io.binary.Marker;
 import org.apache.tinkerpop.gremlin.structure.io.graphson.AbstractObjectDeserializer;
 import org.apache.tinkerpop.gremlin.structure.io.graphson.GraphSONMapper;
 import org.apache.tinkerpop.gremlin.structure.io.graphson.GraphSONUtil;
@@ -29,6 +32,8 @@ import org.apache.tinkerpop.gremlin.structure.io.graphson.GraphSONXModuleV3;
 import org.apache.tinkerpop.gremlin.util.message.RequestMessage;
 import org.apache.tinkerpop.gremlin.util.message.RequestMessageV4;
 import org.apache.tinkerpop.gremlin.util.message.ResponseMessage;
+import org.apache.tinkerpop.gremlin.util.message.ResponseStatus;
+import org.apache.tinkerpop.gremlin.util.message.ResponseStatusCode;
 import org.apache.tinkerpop.shaded.jackson.core.JsonGenerator;
 import org.apache.tinkerpop.shaded.jackson.core.JsonProcessingException;
 import org.apache.tinkerpop.shaded.jackson.databind.ObjectMapper;
@@ -42,6 +47,7 @@ import org.slf4j.LoggerFactory;
 import java.io.IOException;
 import java.nio.ByteBuffer;
 import java.util.Collections;
+import java.util.EnumSet;
 import java.util.List;
 import java.util.Map;
 import java.util.UUID;
@@ -63,7 +69,7 @@ public final class GraphSONMessageSerializerV4 extends AbstractGraphSONMessageSe
             addSerializer(RequestMessageV4.class, new GraphSONMessageSerializerV4.RequestMessageV4Serializer());
 
             // DESERIALIZERS
-            addDeserializer(ResponseMessage.class, new ResponseMessageDeserializer());
+            addDeserializer(ResponseMessage.class, new ResponseMessageV4Deserializer());
             addDeserializer(RequestMessageV4.class, new GraphSONMessageSerializerV4.RequestMessageV4Deserializer());
         }
     }
@@ -126,7 +132,7 @@ public final class GraphSONMessageSerializerV4 extends AbstractGraphSONMessageSe
         }
     }
 
-    private static final Logger logger = LoggerFactory.getLogger(GraphSONMessageSerializerV3.class);
+    private static final Logger logger = LoggerFactory.getLogger(GraphSONMessageSerializerV4.class);
     private static final String MIME_TYPE = SerTokens.MIME_GRAPHSON_V4;
 
     private static byte[] header;
@@ -196,16 +202,6 @@ public final class GraphSONMessageSerializerV4 extends AbstractGraphSONMessageSe
         }
     }
 
-    @Override
-    public String serializeResponseAsString(final ResponseMessage responseMessage, final ByteBufAllocator allocator) throws SerializationException {
-        try {
-            return mapper.writeValueAsString(responseMessage);
-        } catch (Exception ex) {
-            logger.warn(String.format("Response [%s] could not be serialized by %s.", responseMessage.toString(), GraphSONMessageSerializerV4.class.getName()), ex);
-            throw new SerializationException(ex);
-        }
-    }
-
     @Override
     public RequestMessage deserializeRequest(final String msg) throws SerializationException {
         try {
@@ -226,17 +222,39 @@ public final class GraphSONMessageSerializerV4 extends AbstractGraphSONMessageSe
         }
     }
 
+    @Override
+    public ByteBuf serializeResponseAsBinary(final ResponseMessage responseMessage, final ByteBufAllocator allocator) throws SerializationException {
+        return writeHeader(responseMessage, allocator);
+    }
+
+    @Override
+    public String serializeResponseAsString(final ResponseMessage responseMessage, final ByteBufAllocator allocator) throws SerializationException {
+        throw new UnsupportedOperationException("Response serialization as String is not supported");
+    }
+
     // !!!
     @Override
     public ByteBuf writeHeader(final ResponseMessage responseMessage, final ByteBufAllocator allocator) throws SerializationException {
         ByteBuf encodedMessage = null;
         try {
+            boolean writeFullMessage = responseMessage.getStatus() != null;
+
             final byte[] header = mapper.writeValueAsBytes(new ResponseMessage.ResponseMessageHeader(responseMessage));
-            final byte[] result = getChunk(true, responseMessage.getResult().getData());
+            final byte[] data = getChunk(true, responseMessage.getResult().getData());
+
+            final byte[] footer = writeFullMessage
+                    ? mapper.writeValueAsBytes(new ResponseMessage.ResponseMessageFooter(responseMessage))
+                    : new byte[0];
             // skip closing }
-            encodedMessage = allocator.buffer(header.length - 4 + result.length);
-            encodedMessage.writeBytes(header, 0, header.length - 4);
-            encodedMessage.writeBytes(result);
+            final int bufSize = header.length - 3 + data.length +
+                    (writeFullMessage ? footer.length - 1:0);
+
+            encodedMessage = allocator.buffer(bufSize).
+                    writeBytes(header, 0, header.length - 3).writeBytes(data);
+
+            if (writeFullMessage) {
+                encodedMessage.writeBytes(footer, 1, footer.length - 1);
+            }
 
             return encodedMessage;
         } catch (Exception ex) {
@@ -248,9 +266,17 @@ public final class GraphSONMessageSerializerV4 extends AbstractGraphSONMessageSe
     }
 
     private byte[] getChunk(final boolean isFirst, final Object aggregate) throws JsonProcessingException {
+        if (aggregate == null) {
+            return new byte[0];
+        }
+
         // todo: cleanup
-        List asList = (List)aggregate;
-        Object[] array = new Object[asList.size()];
+        final List asList = (List) aggregate;
+        if (asList.isEmpty()) {
+            return new byte[0];
+        }
+
+        final Object[] array = new Object[asList.size()];
         asList.toArray(array);
         String str = mapper.writeValueAsString(array);
         str = str.substring(1, str.length() - 1);
@@ -265,8 +291,7 @@ public final class GraphSONMessageSerializerV4 extends AbstractGraphSONMessageSe
         ByteBuf encodedMessage = null;
         try {
             final byte[] payload = getChunk(false, aggregate);
-            encodedMessage = allocator.buffer(payload.length);
-            encodedMessage.writeBytes(payload);
+            encodedMessage = allocator.buffer(payload.length).writeBytes(payload);
 
             return encodedMessage;
         } catch (Exception ex) {
@@ -282,11 +307,10 @@ public final class GraphSONMessageSerializerV4 extends AbstractGraphSONMessageSe
         ByteBuf encodedMessage = null;
         try {
             final byte[] footer = mapper.writeValueAsBytes(new ResponseMessage.ResponseMessageFooter(responseMessage));
-            final byte[] result = getChunk(false, responseMessage.getResult().getData());
+            final byte[] data = getChunk(false, responseMessage.getResult().getData());
             // skip opening {
-            encodedMessage = allocator.buffer(footer.length - 1 + result.length);
-            encodedMessage.writeBytes(result);
-            encodedMessage.writeBytes(footer, 1, footer.length - 1);
+            encodedMessage = allocator.buffer(footer.length - 1 + data.length).
+                    writeBytes(data).writeBytes(footer, 1, footer.length - 1);
 
             return encodedMessage;
         } catch (Exception ex) {
@@ -317,7 +341,7 @@ public final class GraphSONMessageSerializerV4 extends AbstractGraphSONMessageSe
 
     @Override
     public ResponseMessage readChunk(final ByteBuf byteBuf, final boolean isFirstChunk) {
-        throw new IllegalStateException("Reading for streaming GraphSON is not supported");
+        throw new UnsupportedOperationException("Reading for streaming GraphSON is not supported");
     }
 
     @Override
@@ -381,10 +405,7 @@ public final class GraphSONMessageSerializerV4 extends AbstractGraphSONMessageSe
             // todo: write tx id
 
             jsonGenerator.writeFieldName(SerTokens.TOKEN_RESULT);
-            GraphSONUtil.writeStartObject(responseMessage, jsonGenerator, typeSerializer);
-            jsonGenerator.writeFieldName(SerTokens.TOKEN_DATA);
             jsonGenerator.writeObject(Collections.emptyList());
-//            jsonGenerator.writeRaw(":{\"@type\":\"g:List\",\"@value\":[");
 
             // jsonGenerator will add 2 closing }
             // jsonGenerator.configure(JsonGenerator.Feature.AUTO_CLOSE_JSON_CONTENT, false);
@@ -418,7 +439,7 @@ public final class GraphSONMessageSerializerV4 extends AbstractGraphSONMessageSe
             GraphSONUtil.writeStartObject(responseMessage, jsonGenerator, typeSerializer);
 
             // close result field
-            jsonGenerator.writeRaw("]}},");
+            jsonGenerator.writeRaw("]},");
 
             jsonGenerator.writeFieldName(SerTokens.TOKEN_STATUS);
             GraphSONUtil.writeStartObject(responseMessage, jsonGenerator, typeSerializer);
@@ -429,4 +450,20 @@ public final class GraphSONMessageSerializerV4 extends AbstractGraphSONMessageSe
             GraphSONUtil.writeEndObject(responseMessage, jsonGenerator, typeSerializer);
         }
     }
+
+    public final static class ResponseMessageV4Deserializer extends AbstractObjectDeserializer<ResponseMessage> {
+        public ResponseMessageV4Deserializer() {
+            super(ResponseMessage.class);
+        }
+
+        @Override
+        public ResponseMessage createObject(final Map<String, Object> data) {
+            final Map<String, Object> status = (Map<String, Object>) data.get(SerTokens.TOKEN_STATUS);
+            return ResponseMessage.build(UUID.fromString(data.get(SerTokens.TOKEN_REQUEST).toString()))
+                    .code(ResponseStatusCode.getFromValue((Integer) status.get(SerTokens.TOKEN_CODE)))
+                    .statusMessage(String.valueOf(status.get(SerTokens.TOKEN_MESSAGE)))
+                    .result(data.get(SerTokens.TOKEN_RESULT))
+                    .create();
+        }
+    }
 }
diff --git a/gremlin-util/src/main/java/org/apache/tinkerpop/gremlin/util/ser/MessageChunkSerializer.java b/gremlin-util/src/main/java/org/apache/tinkerpop/gremlin/util/ser/MessageChunkSerializer.java
index cabd9db75c..f90cbe3baf 100644
--- a/gremlin-util/src/main/java/org/apache/tinkerpop/gremlin/util/ser/MessageChunkSerializer.java
+++ b/gremlin-util/src/main/java/org/apache/tinkerpop/gremlin/util/ser/MessageChunkSerializer.java
@@ -23,6 +23,8 @@ import io.netty.buffer.ByteBufAllocator;
 import org.apache.tinkerpop.gremlin.util.MessageSerializer;
 import org.apache.tinkerpop.gremlin.util.message.ResponseMessage;
 
+import java.util.EnumSet;
+
 public interface MessageChunkSerializer<M> extends MessageSerializer<M> {
     public ByteBuf writeHeader(final ResponseMessage responseMessage, final ByteBufAllocator allocator) throws SerializationException;
 
@@ -33,4 +35,14 @@ public interface MessageChunkSerializer<M> extends MessageSerializer<M> {
     public ByteBuf writeErrorFooter(final ResponseMessage responseMessage, final ByteBufAllocator allocator) throws SerializationException;
 
     public ResponseMessage readChunk(final ByteBuf byteBuf, final boolean isFirstChunk) throws SerializationException;
+
+    public enum MessageParts {
+        HEADER, DATA, FOOTER;
+
+        public static final EnumSet<MessageParts> ALL = EnumSet.of(HEADER, DATA, FOOTER);
+        public static final EnumSet<MessageParts> START = EnumSet.of(HEADER, DATA);
+        public static final EnumSet<MessageParts> CHUNK = EnumSet.of(DATA);
+        public static final EnumSet<MessageParts> END = EnumSet.of(DATA, FOOTER);
+        public static final EnumSet<MessageParts> ERROR = EnumSet.of(FOOTER);
+    }
 }
diff --git a/gremlin-util/src/test/java/org/apache/tinkerpop/gremlin/util/ser/GraphSONMessageSerializerV3Test.java b/gremlin-util/src/test/java/org/apache/tinkerpop/gremlin/util/ser/GraphSONMessageSerializerV3Test.java
index 9398840036..ae8b5012ee 100644
--- a/gremlin-util/src/test/java/org/apache/tinkerpop/gremlin/util/ser/GraphSONMessageSerializerV3Test.java
+++ b/gremlin-util/src/test/java/org/apache/tinkerpop/gremlin/util/ser/GraphSONMessageSerializerV3Test.java
@@ -45,6 +45,7 @@ import org.junit.Test;
 
 import java.nio.charset.StandardCharsets;
 import java.util.ArrayList;
+import java.util.Collections;
 import java.util.Date;
 import java.util.HashMap;
 import java.util.Iterator;
@@ -118,10 +119,10 @@ public class GraphSONMessageSerializerV3Test {
         map.put("y", "some");
         map.put("z", innerMap);
 
-        final ResponseMessage response = convert(map);
+        final ResponseMessage response = convert(Collections.singletonList(map));
         assertCommon(response);
 
-        final Map<String, Object> deserializedMap = (Map<String, Object>) response.getResult().getData();
+        final Map<String, Object> deserializedMap = (Map<String, Object>) ((List)response.getResult().getData()).get(0);
         assertEquals(4, deserializedMap.size());
         assertEquals(true, deserializedMap.get("w"));
         assertEquals(1, deserializedMap.get("x"));
@@ -264,10 +265,10 @@ public class GraphSONMessageSerializerV3Test {
         final Vertex v1 = g.V().has("name", "marko").next();
         map.put(v1, 1000);
 
-        final ResponseMessage response = convert(map);
+        final ResponseMessage response = convert(Collections.singletonList(map));
         assertCommon(response);
 
-        final Map<Vertex, Integer> deserializedMap = (Map<Vertex, Integer>) response.getResult().getData();
+        final Map<Vertex, Integer> deserializedMap = (Map<Vertex, Integer>) ((List)response.getResult().getData()).get(0);
         assertEquals(1, deserializedMap.size());
         assertEquals(Integer.valueOf(1000), deserializedMap.get(v1));
     }
@@ -278,10 +279,10 @@ public class GraphSONMessageSerializerV3Test {
         final GraphTraversalSource g = graph.traversal();
         final Tree t = g.V(1).out().properties("name").tree().next();
 
-        final ResponseMessage response = convert(t);
+        final ResponseMessage response = convert(Collections.singletonList(t));
         assertCommon(response);
 
-        final Tree deserializedTree = (Tree)response.getResult().getData();
+        final Tree deserializedTree = (Tree)((List)response.getResult().getData()).get(0);
 
         //check the first object and its key's properties
         assertEquals(1, deserializedTree.size());
diff --git a/gremlin-util/src/test/java/org/apache/tinkerpop/gremlin/util/ser/GraphSONMessageSerializerV4Test.java b/gremlin-util/src/test/java/org/apache/tinkerpop/gremlin/util/ser/GraphSONMessageSerializerV4Test.java
index 6cce6a6cdb..6bccca0185 100644
--- a/gremlin-util/src/test/java/org/apache/tinkerpop/gremlin/util/ser/GraphSONMessageSerializerV4Test.java
+++ b/gremlin-util/src/test/java/org/apache/tinkerpop/gremlin/util/ser/GraphSONMessageSerializerV4Test.java
@@ -20,6 +20,7 @@ package org.apache.tinkerpop.gremlin.util.ser;
 
 import io.netty.buffer.ByteBuf;
 import io.netty.util.CharsetUtil;
+import org.apache.tinkerpop.gremlin.util.MessageSerializer;
 import org.apache.tinkerpop.gremlin.util.message.ResponseMessage;
 import org.apache.tinkerpop.gremlin.util.message.ResponseStatusCode;
 import org.apache.tinkerpop.shaded.jackson.core.JsonProcessingException;
@@ -49,16 +50,20 @@ public class GraphSONMessageSerializerV4Test extends GraphSONMessageSerializerV3
     @Test
     public void shouldDeserializeChunkedResponseMessage() throws SerializationException, JsonProcessingException {
         final UUID id = UUID.randomUUID();
-        final ResponseMessage response = ResponseMessage.buildV4(id)
+        final ResponseMessage header = ResponseMessage.buildV4(id)
+                .result(Arrays.asList("header", 0))
+                .create();
+
+        final ResponseMessage footer = ResponseMessage.buildV4(id)
+                .result(Arrays.asList("footer", 3))
                 .code(ResponseStatusCode.SUCCESS)
-                .result(Arrays.asList("start/end", 0))
                 .statusMessage("OK")
                 .create();
 
-        final ByteBuf bb0 = serializer.writeHeader(response, allocator);
+        final ByteBuf bb0 = serializer.writeHeader(header, allocator);
         final ByteBuf bb1 = serializer.writeChunk(Arrays.asList("chunk", 1), allocator);
         final ByteBuf bb2 = serializer.writeChunk(Arrays.asList("chunk", 2), allocator);
-        final ByteBuf bb3 = serializer.writeFooter(response, allocator);
+        final ByteBuf bb3 = serializer.writeFooter(footer, allocator);
 
         final ByteBuf bbCombined = allocator.buffer().writeBytes(bb0).writeBytes(bb1).writeBytes(bb2).writeBytes(bb3);
 
@@ -66,23 +71,28 @@ public class GraphSONMessageSerializerV4Test extends GraphSONMessageSerializerV3
 
         final JsonNode node = mapper.readTree(json);
 
-        assertEquals("start/end", node.get("result").get("@value").get(0).textValue());
+        assertEquals("header", node.get("result").get("@value").get(0).textValue());
+        assertEquals("footer", node.get("result").get("@value").get(6).textValue());
         assertEquals(8, node.get("result").get("@value").size());
     }
 
     @Test
     public void shouldDeserializeChunkedResponseMessageWithError() throws SerializationException, JsonProcessingException {
         final UUID id = UUID.randomUUID();
-        final ResponseMessage response = ResponseMessage.buildV4(id)
+        final ResponseMessage header = ResponseMessage.buildV4(id)
+                .result(Arrays.asList("header", 0))
+                .create();
+
+        final ResponseMessage footer = ResponseMessage.buildV4(id)
+                .result(Arrays.asList("footer", 3))
                 .code(ResponseStatusCode.SUCCESS)
-                .result(Arrays.asList("start/end", 0))
                 .statusMessage("OK")
                 .create();
 
-        final ByteBuf bb0 = serializer.writeHeader(response, allocator);
+        final ByteBuf bb0 = serializer.writeHeader(header, allocator);
         final ByteBuf bb1 = serializer.writeChunk(Arrays.asList("chunk", 1), allocator);
         final ByteBuf bb2 = serializer.writeChunk(Arrays.asList("chunk", 2), allocator);
-        final ByteBuf bb3 = serializer.writeErrorFooter(response, allocator);
+        final ByteBuf bb3 = serializer.writeErrorFooter(footer, allocator);
 
         final ByteBuf bbCombined = allocator.buffer().writeBytes(bb0).writeBytes(bb1).writeBytes(bb2).writeBytes(bb3);
 
@@ -90,11 +100,17 @@ public class GraphSONMessageSerializerV4Test extends GraphSONMessageSerializerV3
 
         final JsonNode node = mapper.readTree(json);
 
-        assertEquals("start/end", node.get("result").get("@value").get(0).textValue());
+        assertEquals("header", node.get("result").get("@value").get(0).textValue());
         // 6 items in first 3 chunks
         assertEquals(6, node.get("result").get("@value").size());
     }
 
+    @Override
+    protected ResponseMessage convert(final Object toSerialize, MessageSerializer<?> serializer) throws SerializationException {
+        final ByteBuf bb = serializer.serializeResponseAsBinary(responseMessageBuilder.result(toSerialize).create(), allocator);
+        return serializer.deserializeResponse(bb);
+    }
+
     @Override
     protected ResponseMessage convert(final Object toSerialize) throws SerializationException {
         return convert(toSerialize, this.serializer);