Add Tomcat WebSocket integration tests
This commit is contained in:
@@ -17,7 +17,6 @@
|
||||
package org.springframework.web.socket.server.support;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.lang.reflect.Method;
|
||||
import java.util.Arrays;
|
||||
import java.util.Collections;
|
||||
import java.util.Map;
|
||||
@@ -27,17 +26,13 @@ import javax.servlet.ServletException;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import javax.websocket.Endpoint;
|
||||
import javax.websocket.server.ServerEndpointConfig;
|
||||
|
||||
import org.apache.tomcat.websocket.server.WsHandshakeRequest;
|
||||
import org.apache.tomcat.websocket.server.WsHttpUpgradeHandler;
|
||||
import org.apache.tomcat.websocket.server.WsServerContainer;
|
||||
import org.springframework.http.server.ServerHttpRequest;
|
||||
import org.springframework.http.server.ServerHttpResponse;
|
||||
import org.springframework.http.server.ServletServerHttpRequest;
|
||||
import org.springframework.http.server.ServletServerHttpResponse;
|
||||
import org.springframework.util.Assert;
|
||||
import org.springframework.util.ReflectionUtils;
|
||||
import org.springframework.web.socket.server.HandshakeFailureException;
|
||||
import org.springframework.web.socket.server.endpoint.ServerEndpointRegistration;
|
||||
import org.springframework.web.socket.server.endpoint.ServletServerContainerFactoryBean;
|
||||
@@ -71,17 +66,6 @@ public class TomcatRequestUpgradeStrategy extends AbstractStandardUpgradeStrateg
|
||||
Assert.isTrue(response instanceof ServletServerHttpResponse);
|
||||
HttpServletResponse servletResponse = ((ServletServerHttpResponse) response).getServletResponse();
|
||||
|
||||
if (hasDoUpgrade) {
|
||||
doUpgrade(servletRequest, servletResponse, acceptedProtocol, endpoint);
|
||||
}
|
||||
else {
|
||||
upgradeTomcat80RC1(servletRequest, acceptedProtocol, endpoint);
|
||||
}
|
||||
}
|
||||
|
||||
private void doUpgrade(HttpServletRequest servletRequest, HttpServletResponse servletResponse,
|
||||
String acceptedProtocol, Endpoint endpoint) {
|
||||
|
||||
StringBuffer requestUrl = servletRequest.getRequestURL();
|
||||
String path = servletRequest.getRequestURI(); // shouldn't matter
|
||||
Map<String, String> pathParams = Collections.<String, String> emptyMap();
|
||||
@@ -108,36 +92,4 @@ public class TomcatRequestUpgradeStrategy extends AbstractStandardUpgradeStrateg
|
||||
return (WsServerContainer) servletContext.getAttribute(attribute);
|
||||
}
|
||||
|
||||
// FIXME: Remove this after RC2 is out
|
||||
|
||||
private void upgradeTomcat80RC1(HttpServletRequest request, String protocol, Endpoint endpoint) {
|
||||
|
||||
WsHttpUpgradeHandler upgradeHandler;
|
||||
try {
|
||||
upgradeHandler = request.upgrade(WsHttpUpgradeHandler.class);
|
||||
}
|
||||
catch (Exception e) {
|
||||
throw new HandshakeFailureException("Unable to create UpgardeHandler", e);
|
||||
}
|
||||
|
||||
WsHandshakeRequest webSocketRequest = new WsHandshakeRequest(request);
|
||||
try {
|
||||
Method method = ReflectionUtils.findMethod(WsHandshakeRequest.class, "finished");
|
||||
ReflectionUtils.makeAccessible(method);
|
||||
method.invoke(webSocketRequest);
|
||||
}
|
||||
catch (Exception ex) {
|
||||
throw new HandshakeFailureException("Failed to upgrade HttpServletRequest", ex);
|
||||
}
|
||||
|
||||
ServerEndpointConfig endpointConfig = new ServerEndpointRegistration("/shouldntmatter", endpoint);
|
||||
|
||||
upgradeHandler.preInit(endpoint, endpointConfig, getContainer(request), webSocketRequest,
|
||||
protocol, Collections.<String, String> emptyMap(), request.isSecure());
|
||||
}
|
||||
|
||||
private static boolean hasDoUpgrade = (ReflectionUtils.findMethod(WsServerContainer.class,
|
||||
"doUpgrade", HttpServletRequest.class, HttpServletResponse.class,
|
||||
ServerEndpointConfig.class, Map.class) != null);
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user