You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tinkerpop.apache.org by sp...@apache.org on 2015/05/16 17:54:47 UTC

[1/2] incubator-tinkerpop git commit: fix for TINKERPOP3-686 WebSocket serialization fails for JSON

Repository: incubator-tinkerpop
Updated Branches:
  refs/heads/master 4c104cebf -> 76c42bff2


fix for TINKERPOP3-686 WebSocket serialization fails for JSON


Project: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/commit/b3a943c5
Tree: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/tree/b3a943c5
Diff: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/diff/b3a943c5

Branch: refs/heads/master
Commit: b3a943c515583dfe2ae8d2b50f4109049a87568a
Parents: 4c104ce
Author: Jason Plurad <pl...@users.noreply.github.com>
Authored: Sat May 16 11:35:19 2015 -0400
Committer: Jason Plurad <pl...@users.noreply.github.com>
Committed: Sat May 16 11:35:19 2015 -0400

----------------------------------------------------------------------
 .../server/channel/WebSocketChannelizer.java    |  2 +-
 .../handler/WsGremlinTextRequestDecoder.java    | 29 ++++++++++++++++----
 2 files changed, 25 insertions(+), 6 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/b3a943c5/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/channel/WebSocketChannelizer.java
----------------------------------------------------------------------
diff --git a/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/channel/WebSocketChannelizer.java b/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/channel/WebSocketChannelizer.java
index 992fa55..86076f0 100644
--- a/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/channel/WebSocketChannelizer.java
+++ b/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/channel/WebSocketChannelizer.java
@@ -58,7 +58,7 @@ public class WebSocketChannelizer extends AbstractChannelizer {
         super.init(settings, gremlinExecutor, gremlinExecutorService, graphs, scheduledExecutorService);
 
         wsGremlinResponseEncoder = new WsGremlinResponseEncoder();
-        wsGremlinTextRequestDecoder = new WsGremlinTextRequestDecoder();
+        wsGremlinTextRequestDecoder = new WsGremlinTextRequestDecoder(serializers);
         wsGremlinBinaryRequestDecoder = new WsGremlinBinaryRequestDecoder(serializers);
     }
 

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/b3a943c5/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/handler/WsGremlinTextRequestDecoder.java
----------------------------------------------------------------------
diff --git a/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/handler/WsGremlinTextRequestDecoder.java b/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/handler/WsGremlinTextRequestDecoder.java
index 37b0dd1..1b54f2b 100644
--- a/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/handler/WsGremlinTextRequestDecoder.java
+++ b/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/handler/WsGremlinTextRequestDecoder.java
@@ -18,6 +18,7 @@
  */
 package org.apache.tinkerpop.gremlin.server.handler;
 
+import org.apache.tinkerpop.gremlin.driver.MessageSerializer;
 import org.apache.tinkerpop.gremlin.driver.message.RequestMessage;
 import org.apache.tinkerpop.gremlin.driver.ser.MessageTextSerializer;
 import org.apache.tinkerpop.gremlin.driver.ser.SerializationException;
@@ -26,8 +27,11 @@ import io.netty.channel.ChannelHandler;
 import io.netty.channel.ChannelHandlerContext;
 import io.netty.handler.codec.MessageToMessageDecoder;
 import io.netty.handler.codec.http.websocketx.TextWebSocketFrame;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 import java.util.List;
+import java.util.Map;
 
 /**
  * Decodes the contents of a {@link TextWebSocketFrame}.  Text-based frames are always assumed to be
@@ -37,18 +41,33 @@ import java.util.List;
  */
 @ChannelHandler.Sharable
 public class WsGremlinTextRequestDecoder extends MessageToMessageDecoder<TextWebSocketFrame> {
+    private static final Logger logger = LoggerFactory.getLogger(WsGremlinTextRequestDecoder.class);
+
+    private final Map<String, MessageSerializer> serializers;
+
+    public WsGremlinTextRequestDecoder(final Map<String, MessageSerializer> serializers) {
+        this.serializers = serializers;
+    }
 
     @Override
     protected void decode(final ChannelHandlerContext channelHandlerContext, final TextWebSocketFrame frame, final List<Object> objects) throws Exception {
-        // the default serializer must be a MessageTextSerializer instance to be compatible with this decoder
-        final MessageTextSerializer serializer = (MessageTextSerializer) Serializers.DEFAULT_REQUEST_SERIALIZER;
-        channelHandlerContext.channel().attr(StateKey.SERIALIZER).set(serializer);
-        channelHandlerContext.channel().attr(StateKey.USE_BINARY).set(false);
-
         try {
+            // the default serializer must be a MessageTextSerializer instance to be compatible with this decoder
+            final MessageTextSerializer serializer = (MessageTextSerializer) select("application/json", Serializers.DEFAULT_REQUEST_SERIALIZER);
+
+            channelHandlerContext.channel().attr(StateKey.SERIALIZER).set(serializer);
+            channelHandlerContext.channel().attr(StateKey.USE_BINARY).set(false);
             objects.add(serializer.deserializeRequest(frame.text()));
         } catch (SerializationException se) {
             objects.add(RequestMessage.INVALID);
         }
     }
+
+    public MessageSerializer select(final String mimeType, final MessageSerializer defaultSerializer) {
+        if (logger.isWarnEnabled() && !serializers.containsKey(mimeType))
+            logger.warn("Gremlin Server is not configured with a serializer for the requested mime type [{}] - using {} by default",
+                    mimeType, defaultSerializer.getClass().getName());
+
+        return serializers.getOrDefault(mimeType, defaultSerializer);
+    }
 }


[2/2] incubator-tinkerpop git commit: Change method scope to private in ws request decoders

Posted by sp...@apache.org.
Change method scope to private in ws request decoders


Project: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/commit/76c42bff
Tree: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/tree/76c42bff
Diff: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/diff/76c42bff

Branch: refs/heads/master
Commit: 76c42bff287b03d89f6ff57947fa2749a1585378
Parents: b3a943c
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Sat May 16 11:54:15 2015 -0400
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Sat May 16 11:54:15 2015 -0400

----------------------------------------------------------------------
 .../gremlin/server/handler/WsGremlinBinaryRequestDecoder.java      | 2 +-
 .../gremlin/server/handler/WsGremlinTextRequestDecoder.java        | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/76c42bff/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/handler/WsGremlinBinaryRequestDecoder.java
----------------------------------------------------------------------
diff --git a/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/handler/WsGremlinBinaryRequestDecoder.java b/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/handler/WsGremlinBinaryRequestDecoder.java
index 8fe8cc4..071eb18 100644
--- a/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/handler/WsGremlinBinaryRequestDecoder.java
+++ b/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/handler/WsGremlinBinaryRequestDecoder.java
@@ -79,7 +79,7 @@ public class WsGremlinBinaryRequestDecoder extends MessageToMessageDecoder<Binar
         }
     }
 
-    public MessageSerializer select(final String mimeType, final MessageSerializer defaultSerializer) {
+    private MessageSerializer select(final String mimeType, final MessageSerializer defaultSerializer) {
         if (logger.isWarnEnabled() && !serializers.containsKey(mimeType))
             logger.warn("Gremlin Server is not configured with a serializer for the requested mime type [{}] - using {} by default",
                     mimeType, defaultSerializer.getClass().getName());

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/76c42bff/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/handler/WsGremlinTextRequestDecoder.java
----------------------------------------------------------------------
diff --git a/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/handler/WsGremlinTextRequestDecoder.java b/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/handler/WsGremlinTextRequestDecoder.java
index 1b54f2b..9316c1b 100644
--- a/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/handler/WsGremlinTextRequestDecoder.java
+++ b/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/handler/WsGremlinTextRequestDecoder.java
@@ -63,7 +63,7 @@ public class WsGremlinTextRequestDecoder extends MessageToMessageDecoder<TextWeb
         }
     }
 
-    public MessageSerializer select(final String mimeType, final MessageSerializer defaultSerializer) {
+    private MessageSerializer select(final String mimeType, final MessageSerializer defaultSerializer) {
         if (logger.isWarnEnabled() && !serializers.containsKey(mimeType))
             logger.warn("Gremlin Server is not configured with a serializer for the requested mime type [{}] - using {} by default",
                     mimeType, defaultSerializer.getClass().getName());