This is an automated email from the ASF dual-hosted git repository.
kenhuuu pushed a commit to branch master-http
in repository https://gitbox.apache.org/repos/asf/tinkerpop.git
The following commit(s) were added to refs/heads/master-http by this push:
new 5343b685d5 update response format (#2564)
5343b685d5 is described below
commit 5343b685d5aaec03a359f69b6693865d5170d7a8
Author: Valentyn Kahamlyk <[email protected]>
AuthorDate: Wed Apr 17 16:42:03 2024 -0700
update response format (#2564)
---------
Co-authored-by: Valentyn Kahamlyk <[email protected]>
---
.../server/handler/HttpGremlinEndpointHandler.java | 4 +-
.../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 +++++++------
9 files changed, 101 insertions(+), 102 deletions(-)
diff --git
a/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/handler/HttpGremlinEndpointHandler.java
b/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/handler/HttpGremlinEndpointHandler.java
index 2fc63afcc2..a6909e908a 100644
---
a/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/handler/HttpGremlinEndpointHandler.java
+++
b/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/handler/HttpGremlinEndpointHandler.java
@@ -617,7 +617,7 @@ public class HttpGremlinEndpointHandler extends
SimpleChannelInboundHandler<Requ
// for this state no need to build full ResponseMessage
if (ctx.getRequestState() != STREAMING) {
- final ResponseMessage.Builder builder =
ResponseMessage.buildV4(msg.getRequestId()).result(aggregate);
+ final ResponseMessage.Builder builder =
ResponseMessage.buildV4().result(aggregate);
// need to put status in last message
if (ctx.getRequestState() == FINISHING ||
ctx.getRequestState() == CHUNKING_NOT_SUPPORTED) {
@@ -639,7 +639,7 @@ public class HttpGremlinEndpointHandler extends
SimpleChannelInboundHandler<Requ
}
ctx.setRequestState(FINISHED);
- return
serializer.serializeResponseAsBinary(ResponseMessage.buildV4(msg.getRequestId())
+ return
serializer.serializeResponseAsBinary(ResponseMessage.buildV4()
.result(aggregate)
.code(ResponseStatusCode.SUCCESS)
.statusMessage("OK")
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)) {