Author: markt
Date: Sun Oct 20 21:05:23 2013
New Revision: 1533981

URL: http://svn.apache.org/r1533981
Log:
Fix https://issues.apache.org/bugzilla/show_bug.cgi?id=55681
Pass the session to the Pojo MessageHandler wrappers so it is passed in to the 
MessageHandler method calls.

Modified:
    tomcat/tc7.0.x/trunk/   (props changed)
    tomcat/tc7.0.x/trunk/java/org/apache/tomcat/websocket/Util.java
    tomcat/tc7.0.x/trunk/java/org/apache/tomcat/websocket/WsSession.java
    tomcat/tc7.0.x/trunk/webapps/docs/changelog.xml

Propchange: tomcat/tc7.0.x/trunk/
------------------------------------------------------------------------------
  Merged /tomcat/trunk:r1533980

Modified: tomcat/tc7.0.x/trunk/java/org/apache/tomcat/websocket/Util.java
URL: 
http://svn.apache.org/viewvc/tomcat/tc7.0.x/trunk/java/org/apache/tomcat/websocket/Util.java?rev=1533981&r1=1533980&r2=1533981&view=diff
==============================================================================
--- tomcat/tc7.0.x/trunk/java/org/apache/tomcat/websocket/Util.java (original)
+++ tomcat/tc7.0.x/trunk/java/org/apache/tomcat/websocket/Util.java Sun Oct 20 
21:05:23 2013
@@ -45,6 +45,7 @@ import javax.websocket.Encoder;
 import javax.websocket.EndpointConfig;
 import javax.websocket.MessageHandler;
 import javax.websocket.PongMessage;
+import javax.websocket.Session;
 
 import org.apache.tomcat.util.res.StringManager;
 import org.apache.tomcat.websocket.pojo.PojoMessageHandlerWholeBinary;
@@ -353,7 +354,8 @@ public class Util {
 
 
     public static Set<MessageHandlerResult> getMessageHandlers(
-            MessageHandler listener, EndpointConfig endpointConfig) {
+            MessageHandler listener, EndpointConfig endpointConfig,
+            Session session) {
 
         Class<?> target = Util.getMessageType(listener);
 
@@ -382,7 +384,7 @@ public class Util {
         } else if (byte[].class.isAssignableFrom(target)) {
             MessageHandlerResult result = new MessageHandlerResult(
                     new PojoMessageHandlerWholeBinary(listener,
-                            getOnMessageMethod(listener), null,
+                            getOnMessageMethod(listener), session,
                             endpointConfig, null, new Object[1], 0, true, -1,
                             false, -1),
                     MessageHandlerResultType.BINARY);
@@ -390,7 +392,7 @@ public class Util {
         } else if (InputStream.class.isAssignableFrom(target)) {
             MessageHandlerResult result = new MessageHandlerResult(
                     new PojoMessageHandlerWholeBinary(listener,
-                            getOnMessageMethod(listener), null,
+                            getOnMessageMethod(listener), session,
                             endpointConfig, null, new Object[1], 0, true, -1,
                             true, -1),
                     MessageHandlerResultType.BINARY);
@@ -398,7 +400,7 @@ public class Util {
         } else if (Reader.class.isAssignableFrom(target)) {
             MessageHandlerResult result = new MessageHandlerResult(
                     new PojoMessageHandlerWholeText(listener,
-                            getOnMessageMethod(listener), null,
+                            getOnMessageMethod(listener), session,
                             endpointConfig, null, new Object[1], 0, true, -1,
                             -1),
                     MessageHandlerResultType.TEXT);
@@ -419,7 +421,7 @@ public class Util {
             Method m = getOnMessageMethod(listener);
             if (decoderMatch.getBinaryDecoders().size() > 0) {
                 MessageHandlerResult result = new MessageHandlerResult(
-                        new PojoMessageHandlerWholeBinary(listener, m, null,
+                        new PojoMessageHandlerWholeBinary(listener, m, session,
                                 endpointConfig,
                                 decoderMatch.getBinaryDecoders(), new 
Object[1],
                                 0, false, -1, false, -1),
@@ -428,7 +430,7 @@ public class Util {
             }
             if (decoderMatch.getTextDecoders().size() > 0) {
                 MessageHandlerResult result = new MessageHandlerResult(
-                        new PojoMessageHandlerWholeText(listener, m, null,
+                        new PojoMessageHandlerWholeText(listener, m, session,
                                 endpointConfig,
                                 decoderMatch.getTextDecoders(), new Object[1],
                                 0, false, -1, -1),

Modified: tomcat/tc7.0.x/trunk/java/org/apache/tomcat/websocket/WsSession.java
URL: 
http://svn.apache.org/viewvc/tomcat/tc7.0.x/trunk/java/org/apache/tomcat/websocket/WsSession.java?rev=1533981&r1=1533980&r2=1533981&view=diff
==============================================================================
--- tomcat/tc7.0.x/trunk/java/org/apache/tomcat/websocket/WsSession.java 
(original)
+++ tomcat/tc7.0.x/trunk/java/org/apache/tomcat/websocket/WsSession.java Sun 
Oct 20 21:05:23 2013
@@ -178,7 +178,7 @@ public class WsSession implements Sessio
         // just as easily.
 
         Set<MessageHandlerResult> mhResults =
-                Util.getMessageHandlers(listener, endpointConfig);
+                Util.getMessageHandlers(listener, endpointConfig, this);
 
         for (MessageHandlerResult mhResult : mhResults) {
             switch (mhResult.getType()) {

Modified: tomcat/tc7.0.x/trunk/webapps/docs/changelog.xml
URL: 
http://svn.apache.org/viewvc/tomcat/tc7.0.x/trunk/webapps/docs/changelog.xml?rev=1533981&r1=1533980&r2=1533981&view=diff
==============================================================================
--- tomcat/tc7.0.x/trunk/webapps/docs/changelog.xml (original)
+++ tomcat/tc7.0.x/trunk/webapps/docs/changelog.xml Sun Oct 20 21:05:23 2013
@@ -74,6 +74,10 @@
         and <code>MessageHandler</code>s that use arrays of generic types.
         (markt)
       </fix>
+      <fix>
+        <bug>55681</bug>: Ensure that the WebSocket session is made available
+        to <code>MessageHandler</code> method calls. (markt)
+      </fix>
     </changelog>
   </subsection>
 </section>



---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org
For additional commands, e-mail: dev-h...@tomcat.apache.org

Reply via email to