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

spmallette pushed a commit to branch TINKERPOP-2250
in repository https://gitbox.apache.org/repos/asf/tinkerpop.git

commit 41f26b4336af9b4cc5850b63cd0718e2afbda766
Author: Stephen Mallette <[email protected]>
AuthorDate: Mon Jun 24 10:53:04 2019 -0400

    TINKERPOP-2250 Setup GraphBinary toString serializer
    
    Configure default and test Gremlin Server configs to include the new 
serializer.
---
 .../gremlin-server-integration-secure.yaml         |  1 +
 .../gremlin-server/gremlin-server-integration.yaml |  1 +
 gremlin-console/conf/remote-objects.yaml           |  9 ++---
 gremlin-console/conf/remote-secure.yaml            |  2 +-
 gremlin-console/conf/remote.yaml                   |  4 ++-
 .../console/jsr223/DriverGremlinPlugin.java        |  2 ++
 .../console/jsr223/gremlin-server-integration.yaml |  2 +-
 .../tinkerpop/gremlin/console/jsr223/remote.yaml   |  2 +-
 .../handler/WebSocketGremlinRequestEncoder.java    |  3 --
 .../driver/ser/GraphBinaryMessageSerializerV1.java | 39 +++++++++++++++++++---
 .../binary/GraphBinaryMessageSerializerV1Test.java | 17 ++++++++++
 gremlin-server/conf/gremlin-server-classic.yaml    |  1 +
 gremlin-server/conf/gremlin-server-modern-py.yaml  |  9 ++---
 .../conf/gremlin-server-modern-readonly.yaml       |  9 ++---
 gremlin-server/conf/gremlin-server-modern.yaml     |  9 ++---
 gremlin-server/conf/gremlin-server-neo4j.yaml      |  1 +
 gremlin-server/conf/gremlin-server-secure.yaml     |  1 +
 gremlin-server/conf/gremlin-server-spark.yaml      |  1 +
 gremlin-server/conf/gremlin-server.yaml            |  9 ++---
 .../gremlin/server/AbstractChannelizer.java        |  5 ++-
 .../server/GremlinServerAuthKrb5IntegrateTest.java | 26 ++++++++-------
 .../gremlin/server/gremlin-server-integration.yaml |  1 +
 22 files changed, 110 insertions(+), 44 deletions(-)

diff --git a/docker/gremlin-server/gremlin-server-integration-secure.yaml 
b/docker/gremlin-server/gremlin-server-integration-secure.yaml
index ff30233..2274852 100644
--- a/docker/gremlin-server/gremlin-server-integration-secure.yaml
+++ b/docker/gremlin-server/gremlin-server-integration-secure.yaml
@@ -44,6 +44,7 @@ serializers:
   - { className: 
org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerV2d0, config: 
{ ioRegistries: 
[org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerIoRegistryV2d0] }}
   - { className: 
org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerGremlinV1d0, 
config: { ioRegistries: 
[org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerIoRegistryV1d0] }}
   - { className: 
org.apache.tinkerpop.gremlin.driver.ser.GraphBinaryMessageSerializerV1 }
+  - { className: 
org.apache.tinkerpop.gremlin.driver.ser.GraphBinaryMessageSerializerV1, config: 
{ serializeResultToString: true }}
 processors:
   - { className: 
org.apache.tinkerpop.gremlin.server.op.session.SessionOpProcessor, config: { 
sessionTimeout: 28800000 }}
   - { className: 
org.apache.tinkerpop.gremlin.server.op.standard.StandardOpProcessor, config: {}}
diff --git a/docker/gremlin-server/gremlin-server-integration.yaml 
b/docker/gremlin-server/gremlin-server-integration.yaml
index 51a9290..4ccaf32 100644
--- a/docker/gremlin-server/gremlin-server-integration.yaml
+++ b/docker/gremlin-server/gremlin-server-integration.yaml
@@ -44,6 +44,7 @@ serializers:
   - { className: 
org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerV2d0, config: 
{ ioRegistries: 
[org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerIoRegistryV2d0] }}
   - { className: 
org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerGremlinV1d0, 
config: { ioRegistries: 
[org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerIoRegistryV1d0] }}
   - { className: 
org.apache.tinkerpop.gremlin.driver.ser.GraphBinaryMessageSerializerV1 }
+  - { className: 
org.apache.tinkerpop.gremlin.driver.ser.GraphBinaryMessageSerializerV1, config: 
{ serializeResultToString: true }}
 processors:
   - { className: 
org.apache.tinkerpop.gremlin.server.op.session.SessionOpProcessor, config: { 
sessionTimeout: 28800000 }}
   - { className: 
org.apache.tinkerpop.gremlin.server.op.standard.StandardOpProcessor, config: {}}
diff --git a/gremlin-console/conf/remote-objects.yaml 
b/gremlin-console/conf/remote-objects.yaml
index ba9bd69..70eb0fb 100644
--- a/gremlin-console/conf/remote-objects.yaml
+++ b/gremlin-console/conf/remote-objects.yaml
@@ -17,7 +17,7 @@
 
 ##############################################################
 # This configuration is meant to have Gremlin Server return
-# Gryo serialized objects. The TinkerGraph IoRegistry is
+# GraphBinary serialized objects. The TinkerGraph IoRegistry is
 # assigned as this is the configuration defined in the
 # pre-packaged Gremlin Server configuration files.  The
 # client configuration for serializers should match server.
@@ -26,11 +26,12 @@
 # - gremlin-server.yaml
 # - gremlin-server-classic.yaml
 # - gremlin-server-modern.yaml
+# - gremlin-server-modern-py.yaml
 # - gremlin-server-modern-readonly.yaml
-# - gremlin-server-secure.yaml
+# - gremlin-server-neo4j.yaml
+# - gremlin-server-spark.yaml
 ##############################################################
 
 hosts: [localhost]
 port: 8182
-serializer: { className: 
org.apache.tinkerpop.gremlin.driver.ser.GryoMessageSerializerV3d0,
-              config: { ioRegistries: 
[org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerIoRegistryV3d0] }}
\ No newline at end of file
+serializer: { className: 
org.apache.tinkerpop.gremlin.driver.ser.GraphBinaryMessageSerializerV1 }
\ No newline at end of file
diff --git a/gremlin-console/conf/remote-secure.yaml 
b/gremlin-console/conf/remote-secure.yaml
index 97b756b..a29d99a 100644
--- a/gremlin-console/conf/remote-secure.yaml
+++ b/gremlin-console/conf/remote-secure.yaml
@@ -31,4 +31,4 @@ password: password
 connectionPool: {
   enableSsl: true,
   sslEnabledProtocols: [TLSv1.2] }
-serializer: { className: 
org.apache.tinkerpop.gremlin.driver.ser.GryoMessageSerializerV3d0, config: { 
serializeResultToString: true }}
\ No newline at end of file
+serializer: { className: 
org.apache.tinkerpop.gremlin.driver.ser.GraphBinaryMessageSerializerV1, config: 
{ serializeResultToString: true }}
\ No newline at end of file
diff --git a/gremlin-console/conf/remote.yaml b/gremlin-console/conf/remote.yaml
index 76da387..1a43250 100644
--- a/gremlin-console/conf/remote.yaml
+++ b/gremlin-console/conf/remote.yaml
@@ -24,9 +24,11 @@
 # - gremlin-server.yaml
 # - gremlin-server-classic.yaml
 # - gremlin-server-modern.yaml
+# - gremlin-server-modern-py.yaml
 # - gremlin-server-modern-readonly.yaml
+# - gremlin-server-spark.yaml
 ##############################################################
 
 hosts: [localhost]
 port: 8182
-serializer: { className: 
org.apache.tinkerpop.gremlin.driver.ser.GryoMessageSerializerV3d0, config: { 
serializeResultToString: true }}
\ No newline at end of file
+serializer: { className: 
org.apache.tinkerpop.gremlin.driver.ser.GraphBinaryMessageSerializerV1, config: 
{ serializeResultToString: true }}
diff --git 
a/gremlin-console/src/main/java/org/apache/tinkerpop/gremlin/console/jsr223/DriverGremlinPlugin.java
 
b/gremlin-console/src/main/java/org/apache/tinkerpop/gremlin/console/jsr223/DriverGremlinPlugin.java
index d6e67a6..80a78ab 100644
--- 
a/gremlin-console/src/main/java/org/apache/tinkerpop/gremlin/console/jsr223/DriverGremlinPlugin.java
+++ 
b/gremlin-console/src/main/java/org/apache/tinkerpop/gremlin/console/jsr223/DriverGremlinPlugin.java
@@ -36,6 +36,7 @@ import 
org.apache.tinkerpop.gremlin.driver.message.ResponseStatusCode;
 import org.apache.tinkerpop.gremlin.driver.remote.DriverRemoteConnection;
 import org.apache.tinkerpop.gremlin.driver.remote.DriverRemoteTraversal;
 import 
org.apache.tinkerpop.gremlin.driver.remote.DriverRemoteTraversalSideEffects;
+import org.apache.tinkerpop.gremlin.driver.ser.GraphBinaryMessageSerializerV1;
 import 
org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerGremlinV1d0;
 import 
org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerGremlinV2d0;
 import org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerV1d0;
@@ -85,6 +86,7 @@ public class DriverGremlinPlugin extends 
AbstractGremlinPlugin {
                     GryoLiteMessageSerializerV1d0.class,
                     GryoMessageSerializerV1d0.class,
                     GryoMessageSerializerV3d0.class,
+                    GraphBinaryMessageSerializerV1.class,
                     JsonBuilderGryoSerializer.class,
                     MessageTextSerializer.class,
                     SerializationException.class,
diff --git 
a/gremlin-console/src/test/resources/org/apache/tinkerpop/gremlin/console/jsr223/gremlin-server-integration.yaml
 
b/gremlin-console/src/test/resources/org/apache/tinkerpop/gremlin/console/jsr223/gremlin-server-integration.yaml
index 23b7bae..3b1d570 100644
--- 
a/gremlin-console/src/test/resources/org/apache/tinkerpop/gremlin/console/jsr223/gremlin-server-integration.yaml
+++ 
b/gremlin-console/src/test/resources/org/apache/tinkerpop/gremlin/console/jsr223/gremlin-server-integration.yaml
@@ -25,7 +25,7 @@ scriptEngines: {
                
org.apache.tinkerpop.gremlin.tinkergraph.jsr223.TinkerGraphGremlinPlugin: {},
                org.apache.tinkerpop.gremlin.jsr223.ImportGremlinPlugin: 
{classImports: [java.lang.Math], methodImports: [java.lang.Math#*]}}}}
 serializers:
-  - { className: 
org.apache.tinkerpop.gremlin.driver.ser.GryoMessageSerializerV3d0, config: { 
serializeResultToString: true }}                                                
                       # application/vnd.gremlin-v3.0+gryo-stringd
+  - { className: 
org.apache.tinkerpop.gremlin.driver.ser.GraphBinaryMessageSerializerV1, config: 
{ serializeResultToString: true }}                                              
                         # application/vnd.gremlin-v3.0+gryo-stringd
   - { className: 
org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerGremlinV1d0, 
config: { ioRegistries: 
[org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerIoRegistryV1d0] }}  # 
application/vnd.gremlin-v1.0+json
   - { className: 
org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerV3d0, config: 
{ ioRegistries: 
[org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerIoRegistryV3d0] }}    
     # application/json,application/vnd.gremlin-v3.0+json
   - { className: 
org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerV2d0, config: 
{ ioRegistries: 
[org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerIoRegistryV2d0] }}    
     # application/vnd.gremlin-v2.0+json
diff --git 
a/gremlin-console/src/test/resources/org/apache/tinkerpop/gremlin/console/jsr223/remote.yaml
 
b/gremlin-console/src/test/resources/org/apache/tinkerpop/gremlin/console/jsr223/remote.yaml
index 9bb27c7..68e482f 100644
--- 
a/gremlin-console/src/test/resources/org/apache/tinkerpop/gremlin/console/jsr223/remote.yaml
+++ 
b/gremlin-console/src/test/resources/org/apache/tinkerpop/gremlin/console/jsr223/remote.yaml
@@ -17,4 +17,4 @@
 
 hosts: [localhost]
 port: 45940
-serializer: { className: 
org.apache.tinkerpop.gremlin.driver.ser.GryoMessageSerializerV3d0, config: { 
serializeResultToString: true }}
\ No newline at end of file
+serializer: { className: 
org.apache.tinkerpop.gremlin.driver.ser.GraphBinaryMessageSerializerV1, config: 
{ serializeResultToString: true }}
\ No newline at end of file
diff --git 
a/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/handler/WebSocketGremlinRequestEncoder.java
 
b/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/handler/WebSocketGremlinRequestEncoder.java
index 626b1ee..9ffbc60 100644
--- 
a/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/handler/WebSocketGremlinRequestEncoder.java
+++ 
b/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/handler/WebSocketGremlinRequestEncoder.java
@@ -29,8 +29,6 @@ import io.netty.channel.ChannelHandlerContext;
 import io.netty.handler.codec.MessageToMessageEncoder;
 import io.netty.handler.codec.http.websocketx.BinaryWebSocketFrame;
 import io.netty.handler.codec.http.websocketx.TextWebSocketFrame;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 
 import java.util.List;
 
@@ -39,7 +37,6 @@ import java.util.List;
  */
 @ChannelHandler.Sharable
 public final class WebSocketGremlinRequestEncoder extends 
MessageToMessageEncoder<RequestMessage> {
-    private static final Logger logger = 
LoggerFactory.getLogger(WebSocketGremlinRequestEncoder.class);
     private final boolean binaryEncoding;
 
     private final MessageSerializer serializer;
diff --git 
a/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/ser/GraphBinaryMessageSerializerV1.java
 
b/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/ser/GraphBinaryMessageSerializerV1.java
index c368562..b555bff 100644
--- 
a/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/ser/GraphBinaryMessageSerializerV1.java
+++ 
b/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/ser/GraphBinaryMessageSerializerV1.java
@@ -35,17 +35,24 @@ import org.javatuples.Pair;
 
 import java.lang.reflect.Constructor;
 import java.lang.reflect.Method;
+import java.util.Collection;
 import java.util.List;
 import java.util.Map;
+import java.util.stream.Collectors;
 
 import static java.nio.charset.StandardCharsets.UTF_8;
 
 public class GraphBinaryMessageSerializerV1 extends AbstractMessageSerializer {
+
     public static final String TOKEN_CUSTOM = "custom";
     public static final String TOKEN_BUILDER = "builder";
+    public static final String TOKEN_SERIALIZE_RESULT_TO_STRING = 
"serializeResultToString";
+
     private static final String MIME_TYPE = SerTokens.MIME_GRAPHBINARY_V1D0;
-    private static final byte[] HEADER = MIME_TYPE.getBytes(UTF_8);
+    private static final String MIME_TYPE_STRINGD = 
SerTokens.MIME_GRAPHBINARY_V1D0 + "-stringd";
 
+    private byte[] header = MIME_TYPE.getBytes(UTF_8);
+    private boolean serializeToString = false;
     private GraphBinaryReader reader;
     private GraphBinaryWriter writer;
     private RequestMessageSerializer requestSerializer;
@@ -109,6 +116,9 @@ public class GraphBinaryMessageSerializerV1 extends 
AbstractMessageSerializer {
 
         addCustomClasses(config, builder);
 
+        this.serializeToString = 
Boolean.parseBoolean(config.getOrDefault(TOKEN_SERIALIZE_RESULT_TO_STRING, 
"false").toString());
+        this.header = this.serializeToString ? 
MIME_TYPE_STRINGD.getBytes(UTF_8) : MIME_TYPE.getBytes(UTF_8);
+
         final TypeSerializerRegistry registry = builder.create();
         reader = new GraphBinaryReader(registry);
         writer = new GraphBinaryWriter(registry);
@@ -122,7 +132,15 @@ public class GraphBinaryMessageSerializerV1 extends 
AbstractMessageSerializer {
         final ByteBuf buffer = allocator.buffer();
 
         try {
-            responseSerializer.writeValue(responseMessage, buffer, writer);
+            final ResponseMessage msgToWrite = !serializeToString ? 
responseMessage :
+                    ResponseMessage.build(responseMessage.getRequestId())
+                            .code(responseMessage.getStatus().getCode())
+                            
.statusAttributes(responseMessage.getStatus().getAttributes())
+                            
.responseMetaData(responseMessage.getResult().getMeta())
+                            .result(serializeResultToString(responseMessage))
+                            
.statusMessage(responseMessage.getStatus().getMessage()).create();
+
+            responseSerializer.writeValue(msgToWrite, buffer, writer);
         } catch (Exception ex) {
             buffer.release();
             throw ex;
@@ -133,7 +151,7 @@ public class GraphBinaryMessageSerializerV1 extends 
AbstractMessageSerializer {
 
     @Override
     public ByteBuf serializeRequestAsBinary(final RequestMessage 
requestMessage, final ByteBufAllocator allocator) throws SerializationException 
{
-        final ByteBuf buffer = 
allocator.buffer().writeByte(HEADER.length).writeBytes(HEADER);
+        final ByteBuf buffer = 
allocator.buffer().writeByte(header.length).writeBytes(header);
 
         try {
             requestSerializer.writeValue(requestMessage, buffer, writer);
@@ -157,7 +175,7 @@ public class GraphBinaryMessageSerializerV1 extends 
AbstractMessageSerializer {
 
     @Override
     public String[] mimeTypesSupported() {
-        return new String[] { MIME_TYPE };
+        return new String[]{serializeToString ? MIME_TYPE_STRINGD : MIME_TYPE};
     }
 
     private void addCustomClasses(final Map<String, Object> config, final 
TypeSerializerRegistry.Builder builder) {
@@ -187,4 +205,17 @@ public class GraphBinaryMessageSerializerV1 extends 
AbstractMessageSerializer {
             }
         });
     }
+
+    private Object serializeResultToString(final ResponseMessage msg) {
+        if (msg.getResult() == null) return "null";
+        if (msg.getResult().getData() == null) return "null";
+
+        // the IteratorHandler should return a collection so keep it as such
+        final Object o = msg.getResult().getData();
+        if (o instanceof Collection) {
+            return ((Collection) o).stream().map(d -> null == d ? "null" : 
d.toString()).collect(Collectors.toList());
+        } else {
+            return o.toString();
+        }
+    }
 }
diff --git 
a/gremlin-driver/src/test/java/org/apache/tinkerpop/gremlin/driver/ser/binary/GraphBinaryMessageSerializerV1Test.java
 
b/gremlin-driver/src/test/java/org/apache/tinkerpop/gremlin/driver/ser/binary/GraphBinaryMessageSerializerV1Test.java
index 7321d1e..8a8d27f 100644
--- 
a/gremlin-driver/src/test/java/org/apache/tinkerpop/gremlin/driver/ser/binary/GraphBinaryMessageSerializerV1Test.java
+++ 
b/gremlin-driver/src/test/java/org/apache/tinkerpop/gremlin/driver/ser/binary/GraphBinaryMessageSerializerV1Test.java
@@ -28,6 +28,7 @@ import 
org.apache.tinkerpop.gremlin.driver.ser.SerializationException;
 import org.junit.Test;
 import org.mockito.internal.matchers.apachecommons.ReflectionEquals;
 
+import java.util.Collections;
 import java.util.HashMap;
 import java.util.Map;
 import java.util.UUID;
@@ -157,6 +158,22 @@ public class GraphBinaryMessageSerializerV1Test {
         serializer.configure(config, null);
     }
 
+    @Test
+    public void shouldToStringSerialize() throws SerializationException {
+        final GraphBinaryMessageSerializerV1 serializer = new 
GraphBinaryMessageSerializerV1();
+        final Map<String,Object> conf = new HashMap<String,Object>() {{
+            
put(GraphBinaryMessageSerializerV1.TOKEN_SERIALIZE_RESULT_TO_STRING, true);
+        }};
+        serializer.configure(conf, Collections.emptyMap());
+
+        final ResponseMessage messageWithUnexpectedType = 
ResponseMessage.build(UUID.randomUUID()).
+                result(java.awt.Color.RED).create();
+        final ByteBuf buffer = 
serializer.serializeResponseAsBinary(messageWithUnexpectedType, allocator);
+        final ResponseMessage deserialized = 
serializer.deserializeResponse(buffer);
+
+        assertEquals(java.awt.Color.RED.toString(), 
deserialized.getResult().getData());
+    }
+
     private static void assertResponseEquals(ResponseMessage expected, 
ResponseMessage actual) {
         assertEquals(expected.getRequestId(), actual.getRequestId());
         // Status
diff --git a/gremlin-server/conf/gremlin-server-classic.yaml 
b/gremlin-server/conf/gremlin-server-classic.yaml
index 8d53f1d..674c0f8 100644
--- a/gremlin-server/conf/gremlin-server-classic.yaml
+++ b/gremlin-server/conf/gremlin-server-classic.yaml
@@ -31,6 +31,7 @@ serializers:
   - { className: 
org.apache.tinkerpop.gremlin.driver.ser.GryoMessageSerializerV3d0, config: { 
serializeResultToString: true }}                                                
                      # application/vnd.gremlin-v3.0+gryo-stringd
   - { className: 
org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerV3d0, config: 
{ ioRegistries: 
[org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerIoRegistryV3d0] }}    
    # application/json
   - { className: 
org.apache.tinkerpop.gremlin.driver.ser.GraphBinaryMessageSerializerV1 }        
                                                                                
                   # application/vnd.graphbinary-v1.0
+    - { className: 
org.apache.tinkerpop.gremlin.driver.ser.GraphBinaryMessageSerializerV1, config: 
{ serializeResultToString: true }}                                              
                 # application/vnd.graphbinary-v1.0-stringd
 metrics: {
   slf4jReporter: {enabled: true, interval: 180000}}
 strictTransactionManagement: false
diff --git a/gremlin-server/conf/gremlin-server-modern-py.yaml 
b/gremlin-server/conf/gremlin-server-modern-py.yaml
index 2c369a6..94752c5 100644
--- a/gremlin-server/conf/gremlin-server-modern-py.yaml
+++ b/gremlin-server/conf/gremlin-server-modern-py.yaml
@@ -42,10 +42,11 @@ scriptEngines: {
   gremlin-python: {}
 }
 serializers:
-  - { className: 
org.apache.tinkerpop.gremlin.driver.ser.GryoMessageSerializerV3d0, config: { 
ioRegistries: 
[org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerIoRegistryV3d0] }}    
         # application/vnd.gremlin-v3.0+gryo
-  - { className: 
org.apache.tinkerpop.gremlin.driver.ser.GryoMessageSerializerV3d0, config: { 
serializeResultToString: true }}                                                
                       # application/vnd.gremlin-v3.0+gryo-stringd
-  - { className: 
org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerV3d0, config: 
{ ioRegistries: 
[org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerIoRegistryV3d0] }}    
     # application/json
-  - { className: 
org.apache.tinkerpop.gremlin.driver.ser.GraphBinaryMessageSerializerV1 }        
                                                                                
                    # application/vnd.graphbinary-v1.0
+  - { className: 
org.apache.tinkerpop.gremlin.driver.ser.GryoMessageSerializerV3d0, config: { 
ioRegistries: 
[org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerIoRegistryV3d0] }}    
        # application/vnd.gremlin-v3.0+gryo
+  - { className: 
org.apache.tinkerpop.gremlin.driver.ser.GryoMessageSerializerV3d0, config: { 
serializeResultToString: true }}                                                
                      # application/vnd.gremlin-v3.0+gryo-stringd
+  - { className: 
org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerV3d0, config: 
{ ioRegistries: 
[org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerIoRegistryV3d0] }}    
    # application/json
+  - { className: 
org.apache.tinkerpop.gremlin.driver.ser.GraphBinaryMessageSerializerV1 }        
                                                                                
                   # application/vnd.graphbinary-v1.0
+    - { className: 
org.apache.tinkerpop.gremlin.driver.ser.GraphBinaryMessageSerializerV1, config: 
{ serializeResultToString: true }}                                              
                 # application/vnd.graphbinary-v1.0-stringd
 metrics: {
   slf4jReporter: {enabled: true, interval: 180000}}
 strictTransactionManagement: false
diff --git a/gremlin-server/conf/gremlin-server-modern-readonly.yaml 
b/gremlin-server/conf/gremlin-server-modern-readonly.yaml
index 8fed279..9eec42f 100644
--- a/gremlin-server/conf/gremlin-server-modern-readonly.yaml
+++ b/gremlin-server/conf/gremlin-server-modern-readonly.yaml
@@ -27,10 +27,11 @@ scriptEngines: {
                org.apache.tinkerpop.gremlin.jsr223.ImportGremlinPlugin: 
{classImports: [java.lang.Math], methodImports: [java.lang.Math#*]},
                org.apache.tinkerpop.gremlin.jsr223.ScriptFileGremlinPlugin: 
{files: [scripts/generate-modern-readonly.groovy]}}}}
 serializers:
-  - { className: 
org.apache.tinkerpop.gremlin.driver.ser.GryoMessageSerializerV3d0, config: { 
ioRegistries: 
[org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerIoRegistryV3d0] }}    
         # application/vnd.gremlin-v3.0+gryo
-  - { className: 
org.apache.tinkerpop.gremlin.driver.ser.GryoMessageSerializerV3d0, config: { 
serializeResultToString: true }}                                                
                       # application/vnd.gremlin-v3.0+gryo-stringd
-  - { className: 
org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerV3d0, config: 
{ ioRegistries: 
[org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerIoRegistryV3d0] }}    
     # application/json
-  - { className: 
org.apache.tinkerpop.gremlin.driver.ser.GraphBinaryMessageSerializerV1 }        
                                                                                
                    # application/vnd.graphbinary-v1.0
+  - { className: 
org.apache.tinkerpop.gremlin.driver.ser.GryoMessageSerializerV3d0, config: { 
ioRegistries: 
[org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerIoRegistryV3d0] }}    
        # application/vnd.gremlin-v3.0+gryo
+  - { className: 
org.apache.tinkerpop.gremlin.driver.ser.GryoMessageSerializerV3d0, config: { 
serializeResultToString: true }}                                                
                      # application/vnd.gremlin-v3.0+gryo-stringd
+  - { className: 
org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerV3d0, config: 
{ ioRegistries: 
[org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerIoRegistryV3d0] }}    
    # application/json
+  - { className: 
org.apache.tinkerpop.gremlin.driver.ser.GraphBinaryMessageSerializerV1 }        
                                                                                
                   # application/vnd.graphbinary-v1.0
+    - { className: 
org.apache.tinkerpop.gremlin.driver.ser.GraphBinaryMessageSerializerV1, config: 
{ serializeResultToString: true }}                                              
                 # application/vnd.graphbinary-v1.0-stringd
 metrics: {
   slf4jReporter: {enabled: true, interval: 180000}}
 strictTransactionManagement: false
diff --git a/gremlin-server/conf/gremlin-server-modern.yaml 
b/gremlin-server/conf/gremlin-server-modern.yaml
index 2e19e47..3a7ef42 100644
--- a/gremlin-server/conf/gremlin-server-modern.yaml
+++ b/gremlin-server/conf/gremlin-server-modern.yaml
@@ -28,10 +28,11 @@ scriptEngines: {
                org.apache.tinkerpop.gremlin.jsr223.ImportGremlinPlugin: 
{classImports: [java.lang.Math], methodImports: [java.lang.Math#*]},
                org.apache.tinkerpop.gremlin.jsr223.ScriptFileGremlinPlugin: 
{files: [scripts/generate-modern.groovy]}}}}
 serializers:
-  - { className: 
org.apache.tinkerpop.gremlin.driver.ser.GryoMessageSerializerV3d0, config: { 
ioRegistries: 
[org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerIoRegistryV3d0] }}    
         # application/vnd.gremlin-v3.0+gryo
-  - { className: 
org.apache.tinkerpop.gremlin.driver.ser.GryoMessageSerializerV3d0, config: { 
serializeResultToString: true }}                                                
                       # application/vnd.gremlin-v3.0+gryo-stringd
-  - { className: 
org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerV3d0, config: 
{ ioRegistries: 
[org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerIoRegistryV3d0] }}    
     # application/json
-  - { className: 
org.apache.tinkerpop.gremlin.driver.ser.GraphBinaryMessageSerializerV1 }        
                                                                                
                    # application/vnd.graphbinary-v1.0
+  - { className: 
org.apache.tinkerpop.gremlin.driver.ser.GryoMessageSerializerV3d0, config: { 
ioRegistries: 
[org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerIoRegistryV3d0] }}    
        # application/vnd.gremlin-v3.0+gryo
+  - { className: 
org.apache.tinkerpop.gremlin.driver.ser.GryoMessageSerializerV3d0, config: { 
serializeResultToString: true }}                                                
                      # application/vnd.gremlin-v3.0+gryo-stringd
+  - { className: 
org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerV3d0, config: 
{ ioRegistries: 
[org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerIoRegistryV3d0] }}    
    # application/json
+  - { className: 
org.apache.tinkerpop.gremlin.driver.ser.GraphBinaryMessageSerializerV1 }        
                                                                                
                   # application/vnd.graphbinary-v1.0
+    - { className: 
org.apache.tinkerpop.gremlin.driver.ser.GraphBinaryMessageSerializerV1, config: 
{ serializeResultToString: true }}                                              
                 # application/vnd.graphbinary-v1.0-stringd
 metrics: {
   slf4jReporter: {enabled: true, interval: 180000}}
 strictTransactionManagement: false
diff --git a/gremlin-server/conf/gremlin-server-neo4j.yaml 
b/gremlin-server/conf/gremlin-server-neo4j.yaml
index 2fe5445..9e172e2 100644
--- a/gremlin-server/conf/gremlin-server-neo4j.yaml
+++ b/gremlin-server/conf/gremlin-server-neo4j.yaml
@@ -42,6 +42,7 @@ serializers:
   - { className: 
org.apache.tinkerpop.gremlin.driver.ser.GryoMessageSerializerV3d0, config: { 
serializeResultToString: true }}                                                
                      # application/vnd.gremlin-v3.0+gryo-stringd
   - { className: 
org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerV3d0, config: 
{ ioRegistries: 
[org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerIoRegistryV3d0] }}    
    # application/json
   - { className: 
org.apache.tinkerpop.gremlin.driver.ser.GraphBinaryMessageSerializerV1 }        
                                                                                
                   # application/vnd.graphbinary-v1.0
+    - { className: 
org.apache.tinkerpop.gremlin.driver.ser.GraphBinaryMessageSerializerV1, config: 
{ serializeResultToString: true }}                                              
                 # application/vnd.graphbinary-v1.0-stringd
 processors:
   - { className: 
org.apache.tinkerpop.gremlin.server.op.session.SessionOpProcessor, config: { 
sessionTimeout: 28800000 }}
   - { className: 
org.apache.tinkerpop.gremlin.server.op.traversal.TraversalOpProcessor, config: 
{ cacheExpirationTime: 600000, cacheMaxSize: 1000 }}
diff --git a/gremlin-server/conf/gremlin-server-secure.yaml 
b/gremlin-server/conf/gremlin-server-secure.yaml
index 8d6db69..f9ecf7f 100644
--- a/gremlin-server/conf/gremlin-server-secure.yaml
+++ b/gremlin-server/conf/gremlin-server-secure.yaml
@@ -41,6 +41,7 @@ serializers:
   - { className: 
org.apache.tinkerpop.gremlin.driver.ser.GryoMessageSerializerV3d0, config: { 
serializeResultToString: true }}                                                
                      # application/vnd.gremlin-v3.0+gryo-stringd
   - { className: 
org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerV3d0, config: 
{ ioRegistries: 
[org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerIoRegistryV3d0] }}    
    # application/json
   - { className: 
org.apache.tinkerpop.gremlin.driver.ser.GraphBinaryMessageSerializerV1 }        
                                                                                
                   # application/vnd.graphbinary-v1.0
+    - { className: 
org.apache.tinkerpop.gremlin.driver.ser.GraphBinaryMessageSerializerV1, config: 
{ serializeResultToString: true }}                                              
                 # application/vnd.graphbinary-v1.0-stringd
 processors:
   - { className: 
org.apache.tinkerpop.gremlin.server.op.session.SessionOpProcessor, config: { 
sessionTimeout: 28800000 }}
   - { className: 
org.apache.tinkerpop.gremlin.server.op.traversal.TraversalOpProcessor, config: 
{ cacheExpirationTime: 600000, cacheMaxSize: 1000 }}
diff --git a/gremlin-server/conf/gremlin-server-spark.yaml 
b/gremlin-server/conf/gremlin-server-spark.yaml
index ab7f1e1..e353957 100644
--- a/gremlin-server/conf/gremlin-server-spark.yaml
+++ b/gremlin-server/conf/gremlin-server-spark.yaml
@@ -55,6 +55,7 @@ serializers:
   - { className: 
org.apache.tinkerpop.gremlin.driver.ser.GryoMessageSerializerV3d0, config: { 
serializeResultToString: true }}                                                
                      # application/vnd.gremlin-v3.0+gryo-stringd
   - { className: 
org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerV3d0, config: 
{ ioRegistries: 
[org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerIoRegistryV3d0] }}    
    # application/json
   - { className: 
org.apache.tinkerpop.gremlin.driver.ser.GraphBinaryMessageSerializerV1 }        
                                                                                
                   # application/vnd.graphbinary-v1.0
+    - { className: 
org.apache.tinkerpop.gremlin.driver.ser.GraphBinaryMessageSerializerV1, config: 
{ serializeResultToString: true }}                                              
                 # application/vnd.graphbinary-v1.0-stringd
 processors:
   - { className: 
org.apache.tinkerpop.gremlin.server.op.session.SessionOpProcessor, config: { 
sessionTimeout: 28800000 }}
   - { className: 
org.apache.tinkerpop.gremlin.server.op.traversal.TraversalOpProcessor, config: 
{ cacheExpirationTime: 600000, cacheMaxSize: 1000 }}
diff --git a/gremlin-server/conf/gremlin-server.yaml 
b/gremlin-server/conf/gremlin-server.yaml
index b98622c..3d92907 100644
--- a/gremlin-server/conf/gremlin-server.yaml
+++ b/gremlin-server/conf/gremlin-server.yaml
@@ -28,10 +28,11 @@ scriptEngines: {
                org.apache.tinkerpop.gremlin.jsr223.ImportGremlinPlugin: 
{classImports: [java.lang.Math], methodImports: [java.lang.Math#*]},
                org.apache.tinkerpop.gremlin.jsr223.ScriptFileGremlinPlugin: 
{files: [scripts/empty-sample.groovy]}}}}
 serializers:
-  - { className: 
org.apache.tinkerpop.gremlin.driver.ser.GryoMessageSerializerV3d0, config: { 
ioRegistries: 
[org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerIoRegistryV3d0] }}    
         # application/vnd.gremlin-v3.0+gryo
-  - { className: 
org.apache.tinkerpop.gremlin.driver.ser.GryoMessageSerializerV3d0, config: { 
serializeResultToString: true }}                                                
                       # application/vnd.gremlin-v3.0+gryo-stringd
-  - { className: 
org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerV3d0, config: 
{ ioRegistries: 
[org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerIoRegistryV3d0] }}    
     # application/json
-  - { className: 
org.apache.tinkerpop.gremlin.driver.ser.GraphBinaryMessageSerializerV1 }        
                                                                                
                    # application/vnd.graphbinary-v1.0
+  - { className: 
org.apache.tinkerpop.gremlin.driver.ser.GryoMessageSerializerV3d0, config: { 
ioRegistries: 
[org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerIoRegistryV3d0] }}    
        # application/vnd.gremlin-v3.0+gryo
+  - { className: 
org.apache.tinkerpop.gremlin.driver.ser.GryoMessageSerializerV3d0, config: { 
serializeResultToString: true }}                                                
                      # application/vnd.gremlin-v3.0+gryo-stringd
+  - { className: 
org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerV3d0, config: 
{ ioRegistries: 
[org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerIoRegistryV3d0] }}    
    # application/json
+  - { className: 
org.apache.tinkerpop.gremlin.driver.ser.GraphBinaryMessageSerializerV1 }        
                                                                                
                   # application/vnd.graphbinary-v1.0
+    - { className: 
org.apache.tinkerpop.gremlin.driver.ser.GraphBinaryMessageSerializerV1, config: 
{ serializeResultToString: true }}                                              
                 # application/vnd.graphbinary-v1.0-stringd
 processors:
   - { className: 
org.apache.tinkerpop.gremlin.server.op.session.SessionOpProcessor, config: { 
sessionTimeout: 28800000 }}
   - { className: 
org.apache.tinkerpop.gremlin.server.op.traversal.TraversalOpProcessor, config: 
{ cacheExpirationTime: 600000, cacheMaxSize: 1000 }}
diff --git 
a/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/AbstractChannelizer.java
 
b/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/AbstractChannelizer.java
index bf4df88..c969297 100644
--- 
a/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/AbstractChannelizer.java
+++ 
b/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/AbstractChannelizer.java
@@ -84,7 +84,10 @@ public abstract class AbstractChannelizer extends 
ChannelInitializer<SocketChann
                 
put(AbstractGryoMessageSerializerV1d0.TOKEN_SERIALIZE_RESULT_TO_STRING, true);
             }}),
             new 
Settings.SerializerSettings(GraphSONMessageSerializerV2d0.class.getName(), 
Collections.emptyMap()),
-            new 
Settings.SerializerSettings(GraphBinaryMessageSerializerV1.class.getName(), 
Collections.emptyMap())
+            new 
Settings.SerializerSettings(GraphBinaryMessageSerializerV1.class.getName(), 
Collections.emptyMap()),
+            new 
Settings.SerializerSettings(GraphBinaryMessageSerializerV1.class.getName(), new 
HashMap<String,Object>(){{
+                
put(AbstractGryoMessageSerializerV1d0.TOKEN_SERIALIZE_RESULT_TO_STRING, true);
+            }})
     );
 
     protected Settings settings;
diff --git 
a/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/GremlinServerAuthKrb5IntegrateTest.java
 
b/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/GremlinServerAuthKrb5IntegrateTest.java
index 7d99671..029a408 100644
--- 
a/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/GremlinServerAuthKrb5IntegrateTest.java
+++ 
b/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/GremlinServerAuthKrb5IntegrateTest.java
@@ -24,6 +24,7 @@ import org.apache.tinkerpop.gremlin.driver.Cluster;
 import org.apache.tinkerpop.gremlin.driver.MessageSerializer;
 import org.apache.tinkerpop.gremlin.driver.exception.ResponseException;
 import org.apache.tinkerpop.gremlin.driver.message.ResponseStatusCode;
+import org.apache.tinkerpop.gremlin.driver.ser.GraphBinaryMessageSerializerV1;
 import org.apache.tinkerpop.gremlin.driver.ser.GryoMessageSerializerV1d0;
 import org.apache.tinkerpop.gremlin.driver.ser.GryoMessageSerializerV3d0;
 import org.apache.tinkerpop.gremlin.server.auth.Krb5Authenticator;
@@ -197,21 +198,22 @@ public class GremlinServerAuthKrb5IntegrateTest extends 
AbstractGremlinServerInt
     }
 
     @Test
-    public void shouldAuthenticateWithSerializeResultToStringV1() throws 
Exception {
-        final MessageSerializer serializer = new GryoMessageSerializerV1d0();
-        final Map<String,Object> config = new HashMap<>();
-        config.put("serializeResultToString", true);
-        serializer.configure(config, null);
-        final Cluster cluster = 
TestClientFactory.build().jaasEntry(TESTCONSOLE)
-                
.protocol(kdcServer.serverPrincipalName).addContactPoint(kdcServer.hostname).serializer(serializer).create();
-        final Client client = cluster.connect();
-        assertConnection(cluster, client);
+    public void shouldAuthenticateWithSerializeResultToStringGryoV1() throws 
Exception {
+        assertAuthViaToStringWithSpecifiedSerializer(new 
GryoMessageSerializerV1d0());
     }
 
     @Test
-    public void shouldAuthenticateWithSerializeResultToStringV3() throws 
Exception {
-        final MessageSerializer serializer = new GryoMessageSerializerV3d0();
-        final Map<String, Object> config = new HashMap<>();
+    public void shouldAuthenticateWithSerializeResultToStringGryoV3() throws 
Exception {
+        assertAuthViaToStringWithSpecifiedSerializer(new 
GryoMessageSerializerV3d0());
+    }
+
+    @Test
+    public void shouldAuthenticateWithSerializeResultToStringGraphBinaryV1() 
throws Exception {
+        assertAuthViaToStringWithSpecifiedSerializer(new 
GraphBinaryMessageSerializerV1());
+    }
+
+    public void assertAuthViaToStringWithSpecifiedSerializer(final 
MessageSerializer serializer) throws InterruptedException, ExecutionException {
+        final Map<String,Object> config = new HashMap<>();
         config.put("serializeResultToString", true);
         serializer.configure(config, null);
         final Cluster cluster = 
TestClientFactory.build().jaasEntry(TESTCONSOLE)
diff --git 
a/gremlin-server/src/test/resources/org/apache/tinkerpop/gremlin/server/gremlin-server-integration.yaml
 
b/gremlin-server/src/test/resources/org/apache/tinkerpop/gremlin/server/gremlin-server-integration.yaml
index 4b40095..5bcd81f 100644
--- 
a/gremlin-server/src/test/resources/org/apache/tinkerpop/gremlin/server/gremlin-server-integration.yaml
+++ 
b/gremlin-server/src/test/resources/org/apache/tinkerpop/gremlin/server/gremlin-server-integration.yaml
@@ -54,6 +54,7 @@ serializers:
   - { className: 
org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerV2d0, config: 
{ ioRegistries: 
[org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerIoRegistryV2d0] }}
   - { className: 
org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerGremlinV1d0, 
config: { ioRegistries: 
[org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerIoRegistryV1d0] }}
   - { className: 
org.apache.tinkerpop.gremlin.driver.ser.GraphBinaryMessageSerializerV1 }
+  - { className: 
org.apache.tinkerpop.gremlin.driver.ser.GraphBinaryMessageSerializerV1, config: 
{ serializeResultToString: true }}
 processors:
   - { className: 
org.apache.tinkerpop.gremlin.server.op.session.SessionOpProcessor, config: { 
sessionTimeout: 28800000 }}
   - { className: 
org.apache.tinkerpop.gremlin.server.op.standard.StandardOpProcessor, config: {}}

Reply via email to