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