You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by ma...@apache.org on 2013/07/23 14:50:17 UTC
svn commit: r1506017 - in /tomcat/trunk:
java/org/apache/tomcat/websocket/server/ test/org/apache/catalina/filters/
test/org/apache/tomcat/websocket/server/
Author: markt
Date: Tue Jul 23 12:50:17 2013
New Revision: 1506017
URL: http://svn.apache.org/r1506017
Log:
Simplify WebSocket initialisation. Remove some features from earlier versions of the specification.
Modified:
tomcat/trunk/java/org/apache/tomcat/websocket/server/WsFilter.java
tomcat/trunk/java/org/apache/tomcat/websocket/server/WsSci.java
tomcat/trunk/java/org/apache/tomcat/websocket/server/WsServerContainer.java
tomcat/trunk/test/org/apache/catalina/filters/TesterServletContext.java
tomcat/trunk/test/org/apache/tomcat/websocket/server/TestWsServerContainer.java
Modified: tomcat/trunk/java/org/apache/tomcat/websocket/server/WsFilter.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/websocket/server/WsFilter.java?rev=1506017&r1=1506016&r2=1506017&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/tomcat/websocket/server/WsFilter.java (original)
+++ tomcat/trunk/java/org/apache/tomcat/websocket/server/WsFilter.java Tue Jul 23 12:50:17 2013
@@ -60,6 +60,12 @@ public class WsFilter implements Filter
"258EAFA5-E914-47DA-95CA-C5AB0DC85B11".getBytes(ISO_8859_1);
private final Queue<MessageDigest> sha1Helpers =
new ConcurrentLinkedQueue<>();
+ private final WsServerContainer sc;
+
+
+ WsFilter(WsServerContainer sc) {
+ this.sc = sc;
+ }
@Override
@@ -94,7 +100,6 @@ public class WsFilter implements Filter
HttpServletResponse resp = (HttpServletResponse) response;
// Check to see if this WebSocket implementation has a matching mapping
- WsServerContainer sc = WsServerContainer.getServerContainer();
String path;
String pathInfo = req.getPathInfo();
if (pathInfo == null) {
Modified: tomcat/trunk/java/org/apache/tomcat/websocket/server/WsSci.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/websocket/server/WsSci.java?rev=1506017&r1=1506016&r2=1506017&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/tomcat/websocket/server/WsSci.java (original)
+++ tomcat/trunk/java/org/apache/tomcat/websocket/server/WsSci.java Tue Jul 23 12:50:17 2013
@@ -127,8 +127,7 @@ public class WsSci implements ServletCon
static WsServerContainer init(ServletContext servletContext) {
- WsServerContainer sc = WsServerContainer.getServerContainer();
- sc.setServletContext(servletContext);
+ WsServerContainer sc = new WsServerContainer(servletContext);
servletContext.setAttribute(
Constants.SERVER_CONTAINER_SERVLET_CONTEXT_ATTRIBUTE, sc);
Modified: tomcat/trunk/java/org/apache/tomcat/websocket/server/WsServerContainer.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/websocket/server/WsServerContainer.java?rev=1506017&r1=1506016&r2=1506017&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/tomcat/websocket/server/WsServerContainer.java (original)
+++ tomcat/trunk/java/org/apache/tomcat/websocket/server/WsServerContainer.java Tue Jul 23 12:50:17 2013
@@ -25,7 +25,6 @@ import java.util.Map;
import java.util.Set;
import java.util.SortedSet;
import java.util.TreeSet;
-import java.util.WeakHashMap;
import java.util.concurrent.ConcurrentHashMap;
import javax.servlet.DispatcherType;
@@ -60,11 +59,6 @@ import org.apache.tomcat.websocket.pojo.
public class WsServerContainer extends WsWebSocketContainer
implements ServerContainer {
- // Needs to be a WeakHashMap to prevent memory leaks when a context is
- // stopped
- private static final Map<ClassLoader,WsServerContainer>
- classLoaderContainerMap = new WeakHashMap<>();
- private static final Object classLoaderContainerMapLock = new Object();
private static final StringManager sm =
StringManager.getManager(Constants.PACKAGE_NAME);
private static final CloseReason AUTHENTICATED_HTTP_SESSION_CLOSED =
@@ -72,29 +66,9 @@ public class WsServerContainer extends W
"This connection was established under an authenticated " +
"HTTP session that has ended.");
- public static WsServerContainer getServerContainer() {
- ClassLoader tccl = Thread.currentThread().getContextClassLoader();
- WsServerContainer result = null;
- synchronized (classLoaderContainerMapLock) {
- result = classLoaderContainerMap.get(tccl);
- if (result == null) {
- result = new WsServerContainer();
- classLoaderContainerMap.put(tccl, result);
- }
- }
- return result;
- }
-
- // For unit testing
- protected static void recycle() {
- synchronized (classLoaderContainerMapLock) {
- classLoaderContainerMap.clear();
- }
- }
-
private final WsWriteTimeout wsWriteTimeout = new WsWriteTimeout();
- private volatile ServletContext servletContext = null;
+ private final ServletContext servletContext;
private final Map<String,ServerEndpointConfig> configExactMatchMap =
new ConcurrentHashMap<>();
private final ConcurrentHashMap<Integer,SortedSet<TemplatePathMatch>>
@@ -103,16 +77,7 @@ public class WsServerContainer extends W
private final ConcurrentHashMap<String,Set<WsSession>> authenticatedSessions =
new ConcurrentHashMap<>();
- private WsServerContainer() {
- // Hide default constructor
- }
-
-
- public void setServletContext(ServletContext servletContext) {
-
- if (this.servletContext == servletContext) {
- return;
- }
+ WsServerContainer(ServletContext servletContext) {
this.servletContext = servletContext;
@@ -130,7 +95,7 @@ public class WsServerContainer extends W
}
FilterRegistration fr = servletContext.addFilter(
- WsFilter.class.getName(), WsFilter.class);
+ WsFilter.class.getName(), new WsFilter(this));
EnumSet<DispatcherType> types = EnumSet.of(DispatcherType.REQUEST,
DispatcherType.FORWARD);
Modified: tomcat/trunk/test/org/apache/catalina/filters/TesterServletContext.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/test/org/apache/catalina/filters/TesterServletContext.java?rev=1506017&r1=1506016&r2=1506017&view=diff
==============================================================================
--- tomcat/trunk/test/org/apache/catalina/filters/TesterServletContext.java (original)
+++ tomcat/trunk/test/org/apache/catalina/filters/TesterServletContext.java Tue Jul 23 12:50:17 2013
@@ -233,7 +233,8 @@ public class TesterServletContext implem
@Override
public javax.servlet.FilterRegistration.Dynamic addFilter(
String filterName, Filter filter) {
- throw new RuntimeException("Not implemented");
+ return new ApplicationFilterRegistration(
+ new FilterDef(), new TesterContext());
}
@Override
Modified: tomcat/trunk/test/org/apache/tomcat/websocket/server/TestWsServerContainer.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/test/org/apache/tomcat/websocket/server/TestWsServerContainer.java?rev=1506017&r1=1506016&r2=1506017&view=diff
==============================================================================
--- tomcat/trunk/test/org/apache/tomcat/websocket/server/TestWsServerContainer.java (original)
+++ tomcat/trunk/test/org/apache/tomcat/websocket/server/TestWsServerContainer.java Tue Jul 23 12:50:17 2013
@@ -77,9 +77,8 @@ public class TestWsServerContainer exten
@Test
public void testSpecExample3() throws Exception {
- WsServerContainer.recycle();
- WsServerContainer sc = WsServerContainer.getServerContainer();
- sc.setServletContext(new TesterServletContext());
+ WsServerContainer sc =
+ new WsServerContainer(new TesterServletContext());
ServerEndpointConfig configA = ServerEndpointConfig.Builder.create(
Object.class, "/a/{var}/c").build();
@@ -100,9 +99,8 @@ public class TestWsServerContainer exten
@Test
public void testSpecExample4() throws Exception {
- WsServerContainer.recycle();
- WsServerContainer sc = WsServerContainer.getServerContainer();
- sc.setServletContext(new TesterServletContext());
+ WsServerContainer sc =
+ new WsServerContainer(new TesterServletContext());
ServerEndpointConfig configA = ServerEndpointConfig.Builder.create(
Object.class, "/{var1}/d").build();
@@ -118,9 +116,8 @@ public class TestWsServerContainer exten
@Test(expected = javax.websocket.DeploymentException.class)
public void testDuplicatePaths_01() throws Exception {
- WsServerContainer.recycle();
- WsServerContainer sc = WsServerContainer.getServerContainer();
- sc.setServletContext(new TesterServletContext());
+ WsServerContainer sc =
+ new WsServerContainer(new TesterServletContext());
ServerEndpointConfig configA = ServerEndpointConfig.Builder.create(
Object.class, "/a/b/c").build();
@@ -134,9 +131,8 @@ public class TestWsServerContainer exten
@Test(expected = javax.websocket.DeploymentException.class)
public void testDuplicatePaths_02() throws Exception {
- WsServerContainer.recycle();
- WsServerContainer sc = WsServerContainer.getServerContainer();
- sc.setServletContext(new TesterServletContext());
+ WsServerContainer sc =
+ new WsServerContainer(new TesterServletContext());
ServerEndpointConfig configA = ServerEndpointConfig.Builder.create(
Object.class, "/a/b/{var}").build();
@@ -150,9 +146,8 @@ public class TestWsServerContainer exten
@Test(expected = javax.websocket.DeploymentException.class)
public void testDuplicatePaths_03() throws Exception {
- WsServerContainer.recycle();
- WsServerContainer sc = WsServerContainer.getServerContainer();
- sc.setServletContext(new TesterServletContext());
+ WsServerContainer sc =
+ new WsServerContainer(new TesterServletContext());
ServerEndpointConfig configA = ServerEndpointConfig.Builder.create(
Object.class, "/a/b/{var1}").build();
@@ -166,9 +161,8 @@ public class TestWsServerContainer exten
@Test
public void testDuplicatePaths_04() throws Exception {
- WsServerContainer.recycle();
- WsServerContainer sc = WsServerContainer.getServerContainer();
- sc.setServletContext(new TesterServletContext());
+ WsServerContainer sc =
+ new WsServerContainer(new TesterServletContext());
ServerEndpointConfig configA = ServerEndpointConfig.Builder.create(
Object.class, "/a/{var1}/{var2}").build();
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org