Author: markt Date: Wed Jun 27 12:50:37 2012 New Revision: 1354477 URL: http://svn.apache.org/viewvc?rev=1354477&view=rev Log: Make the request available when the WebSocket connection is being created
Added: tomcat/tc7.0.x/trunk/java/org/apache/catalina/websocket/WsHttpServletRequestWrapper.java - copied, changed from r1354469, tomcat/trunk/java/org/apache/catalina/websocket/WsHttpServletRequestWrapper.java Modified: tomcat/tc7.0.x/trunk/ (props changed) tomcat/tc7.0.x/trunk/java/org/apache/catalina/websocket/LocalStrings.properties tomcat/tc7.0.x/trunk/java/org/apache/catalina/websocket/WebSocketServlet.java tomcat/tc7.0.x/trunk/test/org/apache/catalina/websocket/TestWebSocket.java tomcat/tc7.0.x/trunk/webapps/docs/changelog.xml tomcat/tc7.0.x/trunk/webapps/examples/WEB-INF/classes/websocket/chat/ChatWebSocketServlet.java tomcat/tc7.0.x/trunk/webapps/examples/WEB-INF/classes/websocket/echo/EchoMessage.java tomcat/tc7.0.x/trunk/webapps/examples/WEB-INF/classes/websocket/echo/EchoStream.java tomcat/tc7.0.x/trunk/webapps/examples/WEB-INF/classes/websocket/snake/SnakeWebSocketServlet.java Propchange: tomcat/tc7.0.x/trunk/ ------------------------------------------------------------------------------ Merged /tomcat/trunk:r1354469 Modified: tomcat/tc7.0.x/trunk/java/org/apache/catalina/websocket/LocalStrings.properties URL: http://svn.apache.org/viewvc/tomcat/tc7.0.x/trunk/java/org/apache/catalina/websocket/LocalStrings.properties?rev=1354477&r1=1354476&r2=1354477&view=diff ============================================================================== --- tomcat/tc7.0.x/trunk/java/org/apache/catalina/websocket/LocalStrings.properties (original) +++ tomcat/tc7.0.x/trunk/java/org/apache/catalina/websocket/LocalStrings.properties Wed Jun 27 12:50:37 2012 @@ -26,4 +26,6 @@ message.bufferTooSmall=The buffer is not servlet.reqUpgradeFail=Unable to cast to the Tomcat internal request class in order to complete HTTP upgrade -outbound.closed=The WebSocket connection has been closed \ No newline at end of file +outbound.closed=The WebSocket connection has been closed + +wrapper.invalid=An attempt was made to access the request object passed to WebSocketServlet.createWebSocketInbound() outside of that method \ No newline at end of file Modified: tomcat/tc7.0.x/trunk/java/org/apache/catalina/websocket/WebSocketServlet.java URL: http://svn.apache.org/viewvc/tomcat/tc7.0.x/trunk/java/org/apache/catalina/websocket/WebSocketServlet.java?rev=1354477&r1=1354476&r2=1354477&view=diff ============================================================================== --- tomcat/tc7.0.x/trunk/java/org/apache/catalina/websocket/WebSocketServlet.java (original) +++ tomcat/tc7.0.x/trunk/java/org/apache/catalina/websocket/WebSocketServlet.java Wed Jun 27 12:50:37 2012 @@ -117,7 +117,9 @@ public abstract class WebSocketServlet e // TODO } - StreamInbound inbound = createWebSocketInbound(subProtocol); + WsHttpServletRequestWrapper wrapper = new WsHttpServletRequestWrapper(req); + StreamInbound inbound = createWebSocketInbound(subProtocol, wrapper); + wrapper.invalidate(); // Small hack until the Servlet API provides a way to do this. ServletRequest inner = req; @@ -234,6 +236,13 @@ public abstract class WebSocketServlet e * * @param subProtocol The sub-protocol agreed between the client and * server or <code>null</code> if none was agreed + * @param request The HTTP request that initiated this WebSocket + * connection. Note that this object is <b>only</b> + * valid inside this method. You must not retain a + * reference to it outside the execution of this + * method. If Tomcat detects such access, it will throw + * an IllegalStateException */ - protected abstract StreamInbound createWebSocketInbound(String subProtocol); + protected abstract StreamInbound createWebSocketInbound(String subProtocol, + HttpServletRequest request); } Copied: tomcat/tc7.0.x/trunk/java/org/apache/catalina/websocket/WsHttpServletRequestWrapper.java (from r1354469, tomcat/trunk/java/org/apache/catalina/websocket/WsHttpServletRequestWrapper.java) URL: http://svn.apache.org/viewvc/tomcat/tc7.0.x/trunk/java/org/apache/catalina/websocket/WsHttpServletRequestWrapper.java?p2=tomcat/tc7.0.x/trunk/java/org/apache/catalina/websocket/WsHttpServletRequestWrapper.java&p1=tomcat/trunk/java/org/apache/catalina/websocket/WsHttpServletRequestWrapper.java&r1=1354469&r2=1354477&rev=1354477&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/catalina/websocket/WsHttpServletRequestWrapper.java (original) +++ tomcat/tc7.0.x/trunk/java/org/apache/catalina/websocket/WsHttpServletRequestWrapper.java Wed Jun 27 12:50:37 2012 @@ -38,7 +38,6 @@ import javax.servlet.http.HttpServletReq import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import javax.servlet.http.Part; -import javax.servlet.http.ProtocolHandler; import org.apache.tomcat.util.res.StringManager; @@ -95,11 +94,6 @@ public class WsHttpServletRequestWrapper } @Override - public long getContentLengthLong() { - return getRequest().getContentLengthLong(); - } - - @Override public String getContentType() { return getRequest().getContentType(); } @@ -407,9 +401,4 @@ public class WsHttpServletRequestWrapper public Part getPart(String name) throws IOException, ServletException { return getRequest().getPart(name); } - - @Override - public void upgrade(ProtocolHandler handler) throws IOException { - getRequest().upgrade(handler); - } } Modified: tomcat/tc7.0.x/trunk/test/org/apache/catalina/websocket/TestWebSocket.java URL: http://svn.apache.org/viewvc/tomcat/tc7.0.x/trunk/test/org/apache/catalina/websocket/TestWebSocket.java?rev=1354477&r1=1354476&r2=1354477&view=diff ============================================================================== --- tomcat/tc7.0.x/trunk/test/org/apache/catalina/websocket/TestWebSocket.java (original) +++ tomcat/tc7.0.x/trunk/test/org/apache/catalina/websocket/TestWebSocket.java Wed Jun 27 12:50:37 2012 @@ -36,6 +36,7 @@ import java.util.List; import javax.naming.InitialContext; import javax.naming.NamingException; +import javax.servlet.http.HttpServletRequest; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; @@ -296,7 +297,8 @@ public class TestWebSocket extends Tomca private static final long serialVersionUID = 1L; @Override - protected StreamInbound createWebSocketInbound(String subProtocol) { + protected StreamInbound createWebSocketInbound(String subProtocol, + HttpServletRequest request) { return new Bug53339WsInbound(); } } 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=1354477&r1=1354476&r2=1354477&view=diff ============================================================================== --- tomcat/tc7.0.x/trunk/webapps/docs/changelog.xml (original) +++ tomcat/tc7.0.x/trunk/webapps/docs/changelog.xml Wed Jun 27 12:50:37 2012 @@ -86,6 +86,10 @@ <bug>53465</bug>: Populate mapped-name property for resources defined in web.xml. Based on a patch by Violeta Georgieva. (markt) </add> + <add> + Make the request available when establishing a WebSocket connection. + (markt) + </add> </changelog> </subsection> <subsection name="Coyote"> Modified: tomcat/tc7.0.x/trunk/webapps/examples/WEB-INF/classes/websocket/chat/ChatWebSocketServlet.java URL: http://svn.apache.org/viewvc/tomcat/tc7.0.x/trunk/webapps/examples/WEB-INF/classes/websocket/chat/ChatWebSocketServlet.java?rev=1354477&r1=1354476&r2=1354477&view=diff ============================================================================== --- tomcat/tc7.0.x/trunk/webapps/examples/WEB-INF/classes/websocket/chat/ChatWebSocketServlet.java (original) +++ tomcat/tc7.0.x/trunk/webapps/examples/WEB-INF/classes/websocket/chat/ChatWebSocketServlet.java Wed Jun 27 12:50:37 2012 @@ -23,6 +23,8 @@ import java.util.Set; import java.util.concurrent.CopyOnWriteArraySet; import java.util.concurrent.atomic.AtomicInteger; +import javax.servlet.http.HttpServletRequest; + import org.apache.catalina.websocket.MessageInbound; import org.apache.catalina.websocket.StreamInbound; import org.apache.catalina.websocket.WebSocketServlet; @@ -44,7 +46,8 @@ public class ChatWebSocketServlet extend new CopyOnWriteArraySet<ChatMessageInbound>(); @Override - protected StreamInbound createWebSocketInbound(String subProtocol) { + protected StreamInbound createWebSocketInbound(String subProtocol, + HttpServletRequest request) { return new ChatMessageInbound(connectionIds.incrementAndGet()); } Modified: tomcat/tc7.0.x/trunk/webapps/examples/WEB-INF/classes/websocket/echo/EchoMessage.java URL: http://svn.apache.org/viewvc/tomcat/tc7.0.x/trunk/webapps/examples/WEB-INF/classes/websocket/echo/EchoMessage.java?rev=1354477&r1=1354476&r2=1354477&view=diff ============================================================================== --- tomcat/tc7.0.x/trunk/webapps/examples/WEB-INF/classes/websocket/echo/EchoMessage.java (original) +++ tomcat/tc7.0.x/trunk/webapps/examples/WEB-INF/classes/websocket/echo/EchoMessage.java Wed Jun 27 12:50:37 2012 @@ -21,6 +21,7 @@ import java.nio.ByteBuffer; import java.nio.CharBuffer; import javax.servlet.ServletException; +import javax.servlet.http.HttpServletRequest; import org.apache.catalina.websocket.MessageInbound; import org.apache.catalina.websocket.StreamInbound; @@ -59,7 +60,8 @@ public class EchoMessage extends WebSock @Override - protected StreamInbound createWebSocketInbound(String subProtocol) { + protected StreamInbound createWebSocketInbound(String subProtocol, + HttpServletRequest request) { return new EchoMessageInbound(byteBufSize,charBufSize); } Modified: tomcat/tc7.0.x/trunk/webapps/examples/WEB-INF/classes/websocket/echo/EchoStream.java URL: http://svn.apache.org/viewvc/tomcat/tc7.0.x/trunk/webapps/examples/WEB-INF/classes/websocket/echo/EchoStream.java?rev=1354477&r1=1354476&r2=1354477&view=diff ============================================================================== --- tomcat/tc7.0.x/trunk/webapps/examples/WEB-INF/classes/websocket/echo/EchoStream.java (original) +++ tomcat/tc7.0.x/trunk/webapps/examples/WEB-INF/classes/websocket/echo/EchoStream.java Wed Jun 27 12:50:37 2012 @@ -20,6 +20,8 @@ import java.io.IOException; import java.io.InputStream; import java.io.Reader; +import javax.servlet.http.HttpServletRequest; + import org.apache.catalina.websocket.StreamInbound; import org.apache.catalina.websocket.WebSocketServlet; import org.apache.catalina.websocket.WsOutbound; @@ -30,7 +32,8 @@ public class EchoStream extends WebSocke private static final long serialVersionUID = 1L; @Override - protected StreamInbound createWebSocketInbound(String subProtocol) { + protected StreamInbound createWebSocketInbound(String subProtocol, + HttpServletRequest request) { return new EchoStreamInbound(); } Modified: tomcat/tc7.0.x/trunk/webapps/examples/WEB-INF/classes/websocket/snake/SnakeWebSocketServlet.java URL: http://svn.apache.org/viewvc/tomcat/tc7.0.x/trunk/webapps/examples/WEB-INF/classes/websocket/snake/SnakeWebSocketServlet.java?rev=1354477&r1=1354476&r2=1354477&view=diff ============================================================================== --- tomcat/tc7.0.x/trunk/webapps/examples/WEB-INF/classes/websocket/snake/SnakeWebSocketServlet.java (original) +++ tomcat/tc7.0.x/trunk/webapps/examples/WEB-INF/classes/websocket/snake/SnakeWebSocketServlet.java Wed Jun 27 12:50:37 2012 @@ -30,6 +30,7 @@ import java.util.concurrent.ConcurrentHa import java.util.concurrent.atomic.AtomicInteger; import javax.servlet.ServletException; +import javax.servlet.http.HttpServletRequest; import org.apache.catalina.websocket.MessageInbound; import org.apache.catalina.websocket.StreamInbound; @@ -148,7 +149,8 @@ public class SnakeWebSocketServlet exten } @Override - protected StreamInbound createWebSocketInbound(String subProtocol) { + protected StreamInbound createWebSocketInbound(String subProtocol, + HttpServletRequest request) { return new SnakeMessageInbound(connectionIds.incrementAndGet()); } --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org