Author: violetagg Date: Wed Sep 24 20:06:01 2014 New Revision: 1627409 URL: http://svn.apache.org/r1627409 Log: Merged revision 1626765 from tomcat/trunk: Update WebSocket implementation to version 1.1 of the spec
Modified: tomcat/tc7.0.x/trunk/ (props changed) tomcat/tc7.0.x/trunk/java/javax/websocket/Session.java 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/res/META-INF/websocket-api.jar.manifest tomcat/tc7.0.x/trunk/webapps/docs/changelog.xml Propchange: tomcat/tc7.0.x/trunk/ ------------------------------------------------------------------------------ Merged /tomcat/trunk:r1626765 Modified: tomcat/tc7.0.x/trunk/java/javax/websocket/Session.java URL: http://svn.apache.org/viewvc/tomcat/tc7.0.x/trunk/java/javax/websocket/Session.java?rev=1627409&r1=1627408&r2=1627409&view=diff ============================================================================== --- tomcat/tc7.0.x/trunk/java/javax/websocket/Session.java (original) +++ tomcat/tc7.0.x/trunk/java/javax/websocket/Session.java Wed Sep 24 20:06:01 2014 @@ -31,8 +31,22 @@ public interface Session extends Closeab */ WebSocketContainer getContainer(); - void addMessageHandler(MessageHandler listener) - throws IllegalStateException; + /** + * Registers a {@link MessageHandler} for incoming messages. Only one + * {@link MessageHandler} may be registered for each message type (text, + * binary, pong). The message type will be derived at runtime from the + * provided {@link MessageHandler} instance. It is not always possible to do + * this so it is better to use + * {@link #addMessageHandler(Class, javax.websocket.MessageHandler.Partial)} + * or + * {@link #addMessageHandler(Class, javax.websocket.MessageHandler.Whole)}. + * + * @param listener The message handler for a incoming message + * + * @throws IllegalStateException If a message handler has already been + * registered for the associated message type + */ + void addMessageHandler(MessageHandler listener) throws IllegalStateException; Set<MessageHandler> getMessageHandlers(); @@ -126,4 +140,34 @@ public interface Session extends Closeab * this session is associated with. */ Set<Session> getOpenSessions(); + + /** + * Registers a {@link MessageHandler} for partial incoming messages. Only + * one {@link MessageHandler} may be registered for each message type (text + * or binary, pong messages are never presented as partial messages). + * + * @param clazz The type of message that the given handler is intended + * for + * @param listener The message handler for a incoming message + * + * @throws IllegalStateException If a message handler has already been + * registered for the associated message type + */ + <T> void addMessageHandler(Class<T> clazz, MessageHandler.Partial<T> handler) + throws IllegalStateException; + + /** + * Registers a {@link MessageHandler} for whole incoming messages. Only + * one {@link MessageHandler} may be registered for each message type (text, + * binary, pong). + * + * @param clazz The type of message that the given handler is intended + * for + * @param listener The message handler for a incoming message + * + * @throws IllegalStateException If a message handler has already been + * registered for the associated message type + */ + <T> void addMessageHandler(Class<T> clazz, MessageHandler.Whole<T> handler) + throws IllegalStateException; } 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=1627409&r1=1627408&r2=1627409&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 Wed Sep 24 20:06:01 2014 @@ -358,12 +358,10 @@ public class Util { } - static Set<MessageHandlerResult> getMessageHandlers( + static Set<MessageHandlerResult> getMessageHandlers(Class<?> target, MessageHandler listener, EndpointConfig endpointConfig, Session session) { - Class<?> target = Util.getMessageType(listener); - // Will never be more than 2 types Set<MessageHandlerResult> results = new HashSet<MessageHandlerResult>(2); 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=1627409&r1=1627408&r2=1627409&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 Wed Sep 24 20:06:01 2014 @@ -37,6 +37,8 @@ import javax.websocket.Endpoint; import javax.websocket.EndpointConfig; import javax.websocket.Extension; import javax.websocket.MessageHandler; +import javax.websocket.MessageHandler.Partial; +import javax.websocket.MessageHandler.Whole; import javax.websocket.PongMessage; import javax.websocket.RemoteEndpoint; import javax.websocket.SendResult; @@ -164,10 +166,29 @@ public class WsSession implements Sessio } - @SuppressWarnings("unchecked") @Override public void addMessageHandler(MessageHandler listener) { + Class<?> target = Util.getMessageType(listener); + doAddMessageHandler(target, listener); + } + + + @Override + public <T> void addMessageHandler(Class<T> clazz, Partial<T> handler) + throws IllegalStateException { + doAddMessageHandler(clazz, handler); + } + + @Override + public <T> void addMessageHandler(Class<T> clazz, Whole<T> handler) + throws IllegalStateException { + doAddMessageHandler(clazz, handler); + } + + + @SuppressWarnings("unchecked") + private void doAddMessageHandler(Class<?> target, MessageHandler listener) { checkState(); // Message handlers that require decoders may map to text messages, @@ -181,7 +202,7 @@ public class WsSession implements Sessio // just as easily. Set<MessageHandlerResult> mhResults = - Util.getMessageHandlers(listener, endpointConfig, this); + Util.getMessageHandlers(target, listener, endpointConfig, this); for (MessageHandlerResult mhResult : mhResults) { switch (mhResult.getType()) { Modified: tomcat/tc7.0.x/trunk/res/META-INF/websocket-api.jar.manifest URL: http://svn.apache.org/viewvc/tomcat/tc7.0.x/trunk/res/META-INF/websocket-api.jar.manifest?rev=1627409&r1=1627408&r2=1627409&view=diff ============================================================================== --- tomcat/tc7.0.x/trunk/res/META-INF/websocket-api.jar.manifest (original) +++ tomcat/tc7.0.x/trunk/res/META-INF/websocket-api.jar.manifest Wed Sep 24 20:06:01 2014 @@ -4,8 +4,8 @@ X-Compile-Target-JDK: @target.jdk@ Name: javax/el/ Specification-Title: WebSocket -Specification-Version: 1.0 +Specification-Version: 1.1 Specification-Vendor: Oracle, Inc. Implementation-Title: javax.net.websocket -Implementation-Version: 1.0.@websocket.revision@ +Implementation-Version: 1.1.@websocket.revision@ Implementation-Vendor: Apache Software Foundation 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=1627409&r1=1627408&r2=1627409&view=diff ============================================================================== --- tomcat/tc7.0.x/trunk/webapps/docs/changelog.xml (original) +++ tomcat/tc7.0.x/trunk/webapps/docs/changelog.xml Wed Sep 24 20:06:01 2014 @@ -276,6 +276,10 @@ <bug>56982</bug>: Return the actual negotiated extensions rather than an empty list for <code>Session.getNegotiatedExtensions()</code>. (markt) </fix> + <update> + Update the WebSocket implementation to support the Java WebSocket + specification version 1.1. (markt) + </update> </changelog> </subsection> <subsection name="Web applications"> --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org