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/17 01:10:37 UTC
(tinkerpop) branch valentyn/update-response-format created (now 6f8d3a1c96)
This is an automated email from the ASF dual-hosted git repository.
valentyn pushed a change to branch valentyn/update-response-format
in repository https://gitbox.apache.org/repos/asf/tinkerpop.git
at 6f8d3a1c96 initial implementation
This branch includes the following new commits:
new 6f8d3a1c96 initial implementation
The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails. The revisions
listed as "add" were already present in the repository and have only
been added to this reference.
(tinkerpop) 01/01: initial implementation
Posted by va...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
valentyn pushed a commit to branch valentyn/update-response-format
in repository https://gitbox.apache.org/repos/asf/tinkerpop.git
commit 6f8d3a1c96e959c6ee0b77e7e9310e44d46b5dd5
Author: Valentyn Kahamlyk <Va...@improving.com>
AuthorDate: Tue Apr 16 18:10:27 2024 -0700
initial implementation
---
.../gremlin/util/message/ResponseMessage.java | 31 +++++++++------
.../gremlin/util/message/ResponseStatus.java | 19 +++++++++-
.../ser/AbstractGraphSONMessageSerializerV4.java | 7 ++--
.../util/ser/GraphBinaryMessageSerializerV4.java | 33 +++++++---------
.../tinkerpop/gremlin/util/ser/SerTokens.java | 1 +
.../util/ser/GraphSONMessageSerializerV4Test.java | 44 ++++++++--------------
.../GraphSONUntypedMessageSerializerV4Test.java | 37 ++++++------------
.../binary/GraphBinaryMessageSerializerV4Test.java | 27 +++++++------
8 files changed, 99 insertions(+), 100 deletions(-)
diff --git a/gremlin-util/src/main/java/org/apache/tinkerpop/gremlin/util/message/ResponseMessage.java b/gremlin-util/src/main/java/org/apache/tinkerpop/gremlin/util/message/ResponseMessage.java
index 0a92190f6f..6dc2780dd5 100644
--- a/gremlin-util/src/main/java/org/apache/tinkerpop/gremlin/util/message/ResponseMessage.java
+++ b/gremlin-util/src/main/java/org/apache/tinkerpop/gremlin/util/message/ResponseMessage.java
@@ -103,6 +103,10 @@ public final class ResponseMessage {
}
}
+ public static Builder build() {
+ return new Builder();
+ }
+
public static Builder build(final RequestMessage requestMessage) {
return new Builder(requestMessage);
}
@@ -115,19 +119,24 @@ public final class ResponseMessage {
return new Builder(requestId);
}
- public static Builder buildV4(final UUID requestId) {
- return new Builder(requestId, true);
+ public static Builder buildV4() {
+ return new Builder();
}
public final static class Builder {
private final UUID requestId;
- private ResponseStatusCode code = ResponseStatusCode.SUCCESS;
+ private ResponseStatusCode code = null;
private Object result = null;
- private String statusMessage = "";
+ private String statusMessage = null;
+ private String exception = null;
private Map<String, Object> attributes = Collections.emptyMap();
private Map<String, Object> metaData = Collections.emptyMap();
+ private Builder() {
+ requestId = null;
+ }
+
private Builder(final RequestMessage requestMessage) {
this.requestId = requestMessage.getRequestId();
}
@@ -140,13 +149,6 @@ public final class ResponseMessage {
this.requestId = requestId;
}
- // builder for TP4
- private Builder(final UUID requestId, final boolean v4) {
- this.requestId = requestId;
- this.code = null;
- this.statusMessage = null;
- }
-
public Builder code(final ResponseStatusCode code) {
this.code = code;
return this;
@@ -157,6 +159,11 @@ public final class ResponseMessage {
return this;
}
+ public Builder exception(final String exception) {
+ this.exception = exception;
+ return this;
+ }
+
public Builder statusAttributes(final Map<String, Object> attributes) {
this.attributes = attributes;
return this;
@@ -192,7 +199,7 @@ public final class ResponseMessage {
if (code == null && statusMessage == null) {
return new ResponseMessage(requestId, null, responseResult);
}
- final ResponseStatus responseStatus = new ResponseStatus(code, statusMessage, attributes);
+ final ResponseStatus responseStatus = new ResponseStatus(code, statusMessage, exception);
return new ResponseMessage(requestId, responseStatus, responseResult);
}
}
diff --git a/gremlin-util/src/main/java/org/apache/tinkerpop/gremlin/util/message/ResponseStatus.java b/gremlin-util/src/main/java/org/apache/tinkerpop/gremlin/util/message/ResponseStatus.java
index dbc2995085..4bc2ca6ecb 100644
--- a/gremlin-util/src/main/java/org/apache/tinkerpop/gremlin/util/message/ResponseStatus.java
+++ b/gremlin-util/src/main/java/org/apache/tinkerpop/gremlin/util/message/ResponseStatus.java
@@ -18,6 +18,7 @@
*/
package org.apache.tinkerpop.gremlin.util.message;
+import java.util.Collections;
import java.util.Map;
/**
@@ -26,12 +27,21 @@ import java.util.Map;
public final class ResponseStatus {
private final ResponseStatusCode code;
private final String message;
+ private final String exception;
private final Map<String, Object> attributes;
public ResponseStatus(final ResponseStatusCode code, final String message, final Map<String, Object> attributes) {
this.code = code;
this.message = message;
this.attributes = attributes;
+ this.exception = null;
+ }
+
+ public ResponseStatus(final ResponseStatusCode code, final String message, final String exception) {
+ this.code = code;
+ this.message = message;
+ this.exception = exception;
+ this.attributes = Collections.emptyMap();
}
/**
@@ -48,6 +58,13 @@ public final class ResponseStatus {
return message;
}
+ /**
+ * Gets the exception in case of error.
+ */
+ public String getException() {
+ return exception;
+ }
+
/**
* Gets the meta-data related to the response. If meta-data is returned it is to be considered specific to the
* "op" that is executed. Not all "op" implementations will return meta-data.
@@ -61,7 +78,7 @@ public final class ResponseStatus {
return "ResponseStatus{" +
"code=" + code +
", message='" + message + '\'' +
- ", attributes=" + attributes +
+ ", exception=" + exception +
'}';
}
}
diff --git a/gremlin-util/src/main/java/org/apache/tinkerpop/gremlin/util/ser/AbstractGraphSONMessageSerializerV4.java b/gremlin-util/src/main/java/org/apache/tinkerpop/gremlin/util/ser/AbstractGraphSONMessageSerializerV4.java
index dec9fb5b0f..513d8cca80 100644
--- a/gremlin-util/src/main/java/org/apache/tinkerpop/gremlin/util/ser/AbstractGraphSONMessageSerializerV4.java
+++ b/gremlin-util/src/main/java/org/apache/tinkerpop/gremlin/util/ser/AbstractGraphSONMessageSerializerV4.java
@@ -328,9 +328,6 @@ public abstract class AbstractGraphSONMessageSerializerV4 extends AbstractGraphS
GraphSONUtil.writeStartObject(responseMessage, jsonGenerator, typeSerializer);
- jsonGenerator.writeStringField(SerTokens.TOKEN_REQUEST, responseMessage.getRequestId() != null ? responseMessage.getRequestId().toString() : null);
- // todo: write tx id
-
jsonGenerator.writeFieldName(SerTokens.TOKEN_RESULT);
jsonGenerator.writeObject(Collections.emptyList());
@@ -372,6 +369,7 @@ public abstract class AbstractGraphSONMessageSerializerV4 extends AbstractGraphS
GraphSONUtil.writeStartObject(responseMessage, jsonGenerator, typeSerializer);
jsonGenerator.writeStringField(SerTokens.TOKEN_MESSAGE, responseMessage.getStatus().getMessage());
jsonGenerator.writeNumberField(SerTokens.TOKEN_CODE, responseMessage.getStatus().getCode().getValue());
+ jsonGenerator.writeStringField(SerTokens.TOKEN_EXCEPTION, responseMessage.getStatus().getException());
GraphSONUtil.writeEndObject(responseMessage, jsonGenerator, typeSerializer);
GraphSONUtil.writeEndObject(responseMessage, jsonGenerator, typeSerializer);
@@ -386,9 +384,10 @@ public abstract class AbstractGraphSONMessageSerializerV4 extends AbstractGraphS
@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()))
+ return ResponseMessage.build()
.code(ResponseStatusCode.getFromValue((Integer) status.get(SerTokens.TOKEN_CODE)))
.statusMessage(String.valueOf(status.get(SerTokens.TOKEN_MESSAGE)))
+ .exception(String.valueOf(status.get(SerTokens.TOKEN_EXCEPTION)))
.result(data.get(SerTokens.TOKEN_RESULT))
.create();
}
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 fc1df1b00e..7a9feb7b87 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
@@ -30,7 +30,7 @@ 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.gremlin.util.ser.binary.RequestMessageSerializerV4;
-import org.javatuples.Pair;
+import org.javatuples.Triplet;
import java.io.IOException;
import java.util.ArrayList;
@@ -129,11 +129,6 @@ public class GraphBinaryMessageSerializerV4 extends AbstractGraphBinaryMessageSe
if (parts.contains(MessageParts.HEADER)) {
// Version
buffer.writeByte(GraphBinaryWriter.VERSION_BYTE);
-
- // Nullable request id
- writer.writeValue(responseMessage.getRequestId(), buffer, true);
- // Nullable tx id, todo: add real value when ready
- writer.writeValue((UUID)null, buffer, true);
}
if (parts.contains(MessageParts.DATA)) {
@@ -156,6 +151,8 @@ public class GraphBinaryMessageSerializerV4 extends AbstractGraphBinaryMessageSe
writer.writeValue(status.getCode().getValue(), buffer, false);
// Nullable status message
writer.writeValue(status.getMessage(), buffer, true);
+ // Nullable exception
+ writer.writeValue(status.getException(), buffer, true);
}
} catch (IOException e) {
throw new SerializationException(e);
@@ -182,9 +179,12 @@ public class GraphBinaryMessageSerializerV4 extends AbstractGraphBinaryMessageSe
return result;
}
- private Pair<ResponseStatusCode, String> readFooter(final Buffer buffer) throws IOException {
- return Pair.with(ResponseStatusCode.getFromValue(reader.readValue(buffer, Integer.class, false)),
- reader.readValue(buffer, String.class, true));
+ private Triplet<ResponseStatusCode, String, String> readFooter(final Buffer buffer) throws IOException {
+ final ResponseStatusCode statusCode = ResponseStatusCode.getFromValue(reader.readValue(buffer, Integer.class, false));
+ final String message = reader.readValue(buffer, String.class, true);
+ final String exception = reader.readValue(buffer, String.class, true);
+
+ return Triplet.with(statusCode, message, exception);
}
@Override
@@ -194,12 +194,10 @@ public class GraphBinaryMessageSerializerV4 extends AbstractGraphBinaryMessageSe
try {
// empty input buffer
if (buffer.readableBytes() == 0) {
- return ResponseMessage.buildV4(null).
+ return ResponseMessage.buildV4().
code(ResponseStatusCode.NO_CONTENT).result(Collections.emptyList()).create();
}
- UUID requestId = null;
-
if (isFirstChunk) {
final int version = buffer.readByte() & 0xff;
@@ -208,26 +206,23 @@ public class GraphBinaryMessageSerializerV4 extends AbstractGraphBinaryMessageSe
// Or the buffer offsets are wrong
throw new SerializationException("The most significant bit should be set according to the format");
}
-
- requestId = reader.readValue(buffer, UUID.class, true);
- // todo: handle tx id
- reader.readValue(buffer, UUID.class, true);
}
final List<Object> result = readPayload(buffer);
// no footer
if (buffer.readableBytes() == 0) {
- return ResponseMessage.buildV4(requestId)
+ return ResponseMessage.buildV4()
.result(result)
.create();
}
- final Pair<ResponseStatusCode, String> footer = readFooter(buffer);
- return ResponseMessage.buildV4(requestId)
+ final Triplet<ResponseStatusCode, String, String> footer = readFooter(buffer);
+ return ResponseMessage.buildV4()
.result(result)
.code(footer.getValue0())
.statusMessage(footer.getValue1())
+ .exception(footer.getValue2())
.create();
} catch (IOException ex) {
diff --git a/gremlin-util/src/main/java/org/apache/tinkerpop/gremlin/util/ser/SerTokens.java b/gremlin-util/src/main/java/org/apache/tinkerpop/gremlin/util/ser/SerTokens.java
index 1d3fb13c9e..34b98a9a8f 100644
--- a/gremlin-util/src/main/java/org/apache/tinkerpop/gremlin/util/ser/SerTokens.java
+++ b/gremlin-util/src/main/java/org/apache/tinkerpop/gremlin/util/ser/SerTokens.java
@@ -30,6 +30,7 @@ public final class SerTokens {
public static final String TOKEN_DATA = "data";
public static final String TOKEN_META = "meta";
public static final String TOKEN_CODE = "code";
+ public static final String TOKEN_EXCEPTION = "exception";
public static final String TOKEN_REQUEST = "requestId";
public static final String TOKEN_MESSAGE = "message";
public static final String TOKEN_PROCESSOR = "processor";
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 954fbd0ab0..dadcf91da9 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
@@ -19,8 +19,9 @@
package org.apache.tinkerpop.gremlin.util.ser;
import io.netty.buffer.ByteBuf;
+import io.netty.buffer.ByteBufAllocator;
+import io.netty.buffer.UnpooledByteBufAllocator;
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;
@@ -31,25 +32,26 @@ import org.junit.Test;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
-import java.util.UUID;
import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNull;
@SuppressWarnings("unchecked")
-public class GraphSONMessageSerializerV4Test extends GraphSONMessageSerializerV3Test {
+public class GraphSONMessageSerializerV4Test {
+ private final static ByteBufAllocator allocator = UnpooledByteBufAllocator.DEFAULT;
+ private final ResponseMessage.Builder responseMessageBuilder = ResponseMessage.build();
private final GraphSONMessageSerializerV4 serializer = new GraphSONMessageSerializerV4();
private final ObjectMapper mapper = new ObjectMapper();
@Test
public void shouldSerializeChunkedResponseMessage() throws SerializationException, JsonProcessingException {
- final UUID id = UUID.randomUUID();
- final ResponseMessage header = ResponseMessage.buildV4(id)
+ final ResponseMessage header = ResponseMessage.buildV4()
.result(Arrays.asList("header", 0))
.create();
- final ResponseMessage footer = ResponseMessage.buildV4(id)
+ final ResponseMessage footer = ResponseMessage.buildV4()
.result(Arrays.asList("footer", 3))
.code(ResponseStatusCode.SUCCESS)
.statusMessage("OK")
@@ -75,7 +77,7 @@ public class GraphSONMessageSerializerV4Test extends GraphSONMessageSerializerV3
// a message composed of all chunks must be deserialized
bbCombined.resetReaderIndex();
final ResponseMessage deserialized = serializer.deserializeResponse(bbCombined);
- assertEquals(id, deserialized.getRequestId());
+ assertNull(deserialized.getRequestId());
assertEquals(200, deserialized.getStatus().getCode().getValue());
assertEquals("OK", deserialized.getStatus().getMessage());
assertEquals(8, ((List)deserialized.getResult().getData()).size());
@@ -83,8 +85,7 @@ public class GraphSONMessageSerializerV4Test extends GraphSONMessageSerializerV3
@Test
public void shouldSerializeResponseMessageWithoutData() throws SerializationException, JsonProcessingException {
- final UUID id = UUID.randomUUID();
- final ResponseMessage header = ResponseMessage.buildV4(id)
+ final ResponseMessage header = ResponseMessage.buildV4()
.code(ResponseStatusCode.SUCCESS)
.statusMessage("OK")
.create();
@@ -101,7 +102,7 @@ public class GraphSONMessageSerializerV4Test extends GraphSONMessageSerializerV3
bb0.resetReaderIndex();
final ResponseMessage deserialized = serializer.deserializeResponse(bb0);
- assertEquals(id, deserialized.getRequestId());
+ assertNull(deserialized.getRequestId());
assertEquals(200, deserialized.getStatus().getCode().getValue());
assertEquals("OK", deserialized.getStatus().getMessage());
assertEquals(0, ((List)deserialized.getResult().getData()).size());
@@ -109,8 +110,7 @@ public class GraphSONMessageSerializerV4Test extends GraphSONMessageSerializerV3
@Test
public void shouldSerializeChunkedResponseMessageWithEmptyData() throws SerializationException, JsonProcessingException {
- final UUID id = UUID.randomUUID();
- final ResponseMessage header = ResponseMessage.buildV4(id)
+ final ResponseMessage header = ResponseMessage.buildV4()
.result(new ArrayList<>())
.code(ResponseStatusCode.SUCCESS)
.statusMessage("OK")
@@ -128,7 +128,7 @@ public class GraphSONMessageSerializerV4Test extends GraphSONMessageSerializerV3
bb0.resetReaderIndex();
final ResponseMessage deserialized = serializer.deserializeResponse(bb0);
- assertEquals(id, deserialized.getRequestId());
+ assertNull(deserialized.getRequestId());
assertEquals(200, deserialized.getStatus().getCode().getValue());
assertEquals("OK", deserialized.getStatus().getMessage());
assertEquals(0, ((List)deserialized.getResult().getData()).size());
@@ -136,12 +136,11 @@ public class GraphSONMessageSerializerV4Test extends GraphSONMessageSerializerV3
@Test
public void shouldSerializeChunkedResponseMessageWithError() throws SerializationException, JsonProcessingException {
- final UUID id = UUID.randomUUID();
- final ResponseMessage header = ResponseMessage.buildV4(id)
+ final ResponseMessage header = ResponseMessage.buildV4()
.result(Arrays.asList("header", 0))
.create();
- final ResponseMessage footer = ResponseMessage.buildV4(id)
+ final ResponseMessage footer = ResponseMessage.buildV4()
.result(Arrays.asList("footer", 3))
.code(ResponseStatusCode.SERVER_ERROR)
.statusMessage("SERVER_ERROR")
@@ -166,20 +165,9 @@ public class GraphSONMessageSerializerV4Test extends GraphSONMessageSerializerV3
bbCombined.resetReaderIndex();
final ResponseMessage deserialized = serializer.deserializeResponse(bbCombined);
- assertEquals(id, deserialized.getRequestId());
+ assertNull(deserialized.getRequestId());
assertEquals(500, deserialized.getStatus().getCode().getValue());
assertEquals("SERVER_ERROR", deserialized.getStatus().getMessage());
assertEquals(6, ((List)deserialized.getResult().getData()).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);
- }
}
diff --git a/gremlin-util/src/test/java/org/apache/tinkerpop/gremlin/util/ser/GraphSONUntypedMessageSerializerV4Test.java b/gremlin-util/src/test/java/org/apache/tinkerpop/gremlin/util/ser/GraphSONUntypedMessageSerializerV4Test.java
index 9314d849ec..4a48ca6f12 100644
--- a/gremlin-util/src/test/java/org/apache/tinkerpop/gremlin/util/ser/GraphSONUntypedMessageSerializerV4Test.java
+++ b/gremlin-util/src/test/java/org/apache/tinkerpop/gremlin/util/ser/GraphSONUntypedMessageSerializerV4Test.java
@@ -36,23 +36,22 @@ import java.util.List;
import java.util.UUID;
import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNull;
public class GraphSONUntypedMessageSerializerV4Test {
- private final UUID requestId = UUID.fromString("6457272A-4018-4538-B9AE-08DD5DDC0AA1");
- private final ResponseMessage.Builder responseMessageBuilder = ResponseMessage.build(requestId);
+ private final ResponseMessage.Builder responseMessageBuilder = ResponseMessage.build();
private final GraphSONUntypedMessageSerializerV4 serializer = new GraphSONUntypedMessageSerializerV4();
private final static ByteBufAllocator allocator = UnpooledByteBufAllocator.DEFAULT;
private final ObjectMapper mapper = new ObjectMapper();
@Test
public void shouldSerializeChunkedResponseMessage() throws SerializationException, JsonProcessingException {
- final UUID id = UUID.randomUUID();
- final ResponseMessage header = ResponseMessage.buildV4(id)
+ final ResponseMessage header = ResponseMessage.buildV4()
.result(Arrays.asList("header", 0))
.create();
- final ResponseMessage footer = ResponseMessage.buildV4(id)
+ final ResponseMessage footer = ResponseMessage.buildV4()
.result(Arrays.asList("footer", 3))
.code(ResponseStatusCode.SUCCESS)
.statusMessage("OK")
@@ -78,7 +77,7 @@ public class GraphSONUntypedMessageSerializerV4Test {
// a message composed of all chunks must be deserialized
bbCombined.resetReaderIndex();
final ResponseMessage deserialized = serializer.deserializeResponse(bbCombined);
- assertEquals(id, deserialized.getRequestId());
+ assertNull(deserialized.getRequestId());
assertEquals(200, deserialized.getStatus().getCode().getValue());
assertEquals("OK", deserialized.getStatus().getMessage());
assertEquals(8, ((List)deserialized.getResult().getData()).size());
@@ -86,8 +85,7 @@ public class GraphSONUntypedMessageSerializerV4Test {
@Test
public void shouldSerializeResponseMessageWithoutData() throws SerializationException, JsonProcessingException {
- final UUID id = UUID.randomUUID();
- final ResponseMessage header = ResponseMessage.buildV4(id)
+ final ResponseMessage header = ResponseMessage.buildV4()
.code(ResponseStatusCode.SUCCESS)
.statusMessage("OK")
.create();
@@ -104,7 +102,7 @@ public class GraphSONUntypedMessageSerializerV4Test {
bb0.resetReaderIndex();
final ResponseMessage deserialized = serializer.deserializeResponse(bb0);
- assertEquals(id, deserialized.getRequestId());
+ assertNull(deserialized.getRequestId());
assertEquals(200, deserialized.getStatus().getCode().getValue());
assertEquals("OK", deserialized.getStatus().getMessage());
assertEquals(0, ((List)deserialized.getResult().getData()).size());
@@ -112,8 +110,7 @@ public class GraphSONUntypedMessageSerializerV4Test {
@Test
public void shouldSerializeChunkedResponseMessageWithEmptyData() throws SerializationException, JsonProcessingException {
- final UUID id = UUID.randomUUID();
- final ResponseMessage header = ResponseMessage.buildV4(id)
+ final ResponseMessage header = ResponseMessage.buildV4()
.result(new ArrayList<>())
.code(ResponseStatusCode.SUCCESS)
.statusMessage("OK")
@@ -131,7 +128,7 @@ public class GraphSONUntypedMessageSerializerV4Test {
bb0.resetReaderIndex();
final ResponseMessage deserialized = serializer.deserializeResponse(bb0);
- assertEquals(id, deserialized.getRequestId());
+ assertNull(deserialized.getRequestId());
assertEquals(200, deserialized.getStatus().getCode().getValue());
assertEquals("OK", deserialized.getStatus().getMessage());
assertEquals(0, ((List)deserialized.getResult().getData()).size());
@@ -139,12 +136,11 @@ public class GraphSONUntypedMessageSerializerV4Test {
@Test
public void shouldSerializeChunkedResponseMessageWithError() throws SerializationException, JsonProcessingException {
- final UUID id = UUID.randomUUID();
- final ResponseMessage header = ResponseMessage.buildV4(id)
+ final ResponseMessage header = ResponseMessage.buildV4()
.result(Arrays.asList("header", 0))
.create();
- final ResponseMessage footer = ResponseMessage.buildV4(id)
+ final ResponseMessage footer = ResponseMessage.buildV4()
.result(Arrays.asList("footer", 3))
.code(ResponseStatusCode.SERVER_ERROR)
.statusMessage("SERVER_ERROR")
@@ -169,18 +165,9 @@ public class GraphSONUntypedMessageSerializerV4Test {
bbCombined.resetReaderIndex();
final ResponseMessage deserialized = serializer.deserializeResponse(bbCombined);
- assertEquals(id, deserialized.getRequestId());
+ assertNull(deserialized.getRequestId());
assertEquals(500, deserialized.getStatus().getCode().getValue());
assertEquals("SERVER_ERROR", deserialized.getStatus().getMessage());
assertEquals(6, ((List)deserialized.getResult().getData()).size());
}
-
- private ResponseMessage convert(final Object toSerialize, MessageSerializer<?> serializer) throws SerializationException {
- final ByteBuf bb = serializer.serializeResponseAsBinary(responseMessageBuilder.result(toSerialize).create(), allocator);
- return serializer.deserializeResponse(bb);
- }
-
- private ResponseMessage convert(final Object toSerialize) throws SerializationException {
- return convert(toSerialize, this.serializer);
- }
}
diff --git a/gremlin-util/src/test/java/org/apache/tinkerpop/gremlin/util/ser/binary/GraphBinaryMessageSerializerV4Test.java b/gremlin-util/src/test/java/org/apache/tinkerpop/gremlin/util/ser/binary/GraphBinaryMessageSerializerV4Test.java
index e4e956271f..f73a1d825f 100644
--- a/gremlin-util/src/test/java/org/apache/tinkerpop/gremlin/util/ser/binary/GraphBinaryMessageSerializerV4Test.java
+++ b/gremlin-util/src/test/java/org/apache/tinkerpop/gremlin/util/ser/binary/GraphBinaryMessageSerializerV4Test.java
@@ -33,6 +33,7 @@ import java.util.UUID;
import java.util.stream.Stream;
import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNull;
public class GraphBinaryMessageSerializerV4Test {
@@ -74,7 +75,7 @@ public class GraphBinaryMessageSerializerV4Test {
@Test
public void shouldSerializeAndDeserializeResponseInFooterChunk() throws SerializationException {
- final ResponseMessage response = ResponseMessage.build((UUID)null)
+ final ResponseMessage response = ResponseMessage.build()
.result(Arrays.asList(1, "test"))
.code(ResponseStatusCode.SUCCESS)
.statusMessage("OK")
@@ -100,7 +101,7 @@ public class GraphBinaryMessageSerializerV4Test {
@Test
public void shouldSerializeAndDeserializeCompositeResponse() throws SerializationException {
final List headerData = Arrays.asList(0, "header");
- final ResponseMessage header = ResponseMessage.buildV4(UUID.randomUUID())
+ final ResponseMessage header = ResponseMessage.buildV4()
.result(headerData)
.create();
@@ -108,7 +109,7 @@ public class GraphBinaryMessageSerializerV4Test {
final List chunkData2 = Arrays.asList(2, "data2");
final List footerData = Arrays.asList(0xFF, "footer");
- final ResponseMessage footer = ResponseMessage.build((UUID)null)
+ final ResponseMessage footer = ResponseMessage.build()
.result(footerData)
.code(ResponseStatusCode.SUCCESS)
.statusMessage("OK")
@@ -123,7 +124,7 @@ public class GraphBinaryMessageSerializerV4Test {
final ResponseMessage deserialized = serializer.readChunk(bbCombined, true);
- assertEquals(header.getRequestId(), deserialized.getRequestId());
+ assertNull(deserialized.getRequestId());
// Status
assertEquals(footer.getStatus().getCode(), deserialized.getStatus().getCode());
assertEquals(footer.getStatus().getMessage(), deserialized.getStatus().getMessage());
@@ -136,7 +137,7 @@ public class GraphBinaryMessageSerializerV4Test {
@Test
public void shouldSerializeAndDeserializeCompositeResponseWithError() throws SerializationException {
final List headerData = Arrays.asList(0, "header");
- final ResponseMessage header = ResponseMessage.buildV4(UUID.randomUUID())
+ final ResponseMessage header = ResponseMessage.buildV4()
.result(headerData)
.create();
@@ -144,10 +145,11 @@ public class GraphBinaryMessageSerializerV4Test {
final List chunkData2 = Arrays.asList(2, "data2");
final List footerData = Arrays.asList(0xFF, "footer");
- final ResponseMessage footer = ResponseMessage.build((UUID)null)
+ final ResponseMessage footer = ResponseMessage.build()
.result(footerData)
.code(ResponseStatusCode.SERVER_ERROR)
.statusMessage("SERVER_ERROR")
+ .exception("fire in data center")
.create();
final ByteBuf bb0 = serializer.writeHeader(header, allocator);
@@ -159,10 +161,11 @@ public class GraphBinaryMessageSerializerV4Test {
final ResponseMessage deserialized = serializer.readChunk(bbCombined, true);
- assertEquals(header.getRequestId(), deserialized.getRequestId());
+ assertNull(deserialized.getRequestId());
// Status
assertEquals(footer.getStatus().getCode(), deserialized.getStatus().getCode());
assertEquals(footer.getStatus().getMessage(), deserialized.getStatus().getMessage());
+ assertEquals(footer.getStatus().getException(), footer.getStatus().getException());
// Result
List<Integer> combinedData = new ArrayList<>();
Stream.of(headerData, chunkData1, chunkData2).forEach(combinedData::addAll);
@@ -172,11 +175,13 @@ public class GraphBinaryMessageSerializerV4Test {
// copy-paste because response format will be different
private static void assertResponseEquals(final ResponseMessage expected, final ResponseMessage actual) {
- assertEquals(expected.getRequestId(), actual.getRequestId());
+ assertNull(actual.getRequestId());
// Status
- assertEquals(expected.getStatus().getCode(), actual.getStatus().getCode());
- assertEquals(expected.getStatus().getMessage(), actual.getStatus().getMessage());
- assertEquals(expected.getStatus().getAttributes(), actual.getStatus().getAttributes());
+ if (expected.getStatus() != null && actual.getStatus() != null) {
+ assertEquals(expected.getStatus().getCode(), actual.getStatus().getCode());
+ assertEquals(expected.getStatus().getMessage(), actual.getStatus().getMessage());
+ assertEquals(expected.getStatus().getAttributes(), actual.getStatus().getAttributes());
+ }
// Result
// null == empty List
if (!isEmptyData(expected) && !isEmptyData(actual)) {