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