Author: markt Date: Thu Jan 31 12:15:23 2013 New Revision: 1440926 URL: http://svn.apache.org/viewvc?rev=1440926&view=rev Log: Update WebSocket API to latest EG version (between v011 and v012)
Removed: tomcat/trunk/test/javax/websocket/ Modified: tomcat/trunk/java/javax/websocket/ClientEndpointConfiguration.java tomcat/trunk/java/javax/websocket/ContainerProvider.java tomcat/trunk/java/javax/websocket/DefaultClientConfiguration.java tomcat/trunk/java/javax/websocket/Extension.java tomcat/trunk/java/javax/websocket/RemoteEndpoint.java tomcat/trunk/java/javax/websocket/Session.java tomcat/trunk/java/org/apache/tomcat/websocket/WsSession.java tomcat/trunk/test/org/apache/tomcat/websocket/TestWsWebSocketContainer.java Modified: tomcat/trunk/java/javax/websocket/ClientEndpointConfiguration.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/javax/websocket/ClientEndpointConfiguration.java?rev=1440926&r1=1440925&r2=1440926&view=diff ============================================================================== --- tomcat/trunk/java/javax/websocket/ClientEndpointConfiguration.java (original) +++ tomcat/trunk/java/javax/websocket/ClientEndpointConfiguration.java Thu Jan 31 12:15:23 2013 @@ -23,7 +23,7 @@ public interface ClientEndpointConfigura List<String> getPreferredSubprotocols(); - List<String> getExtensions(); + List<Extension> getExtensions(); /** * Provides the client with a mechanism to inspect and/or modify the headers Modified: tomcat/trunk/java/javax/websocket/ContainerProvider.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/javax/websocket/ContainerProvider.java?rev=1440926&r1=1440925&r2=1440926&view=diff ============================================================================== --- tomcat/trunk/java/javax/websocket/ContainerProvider.java (original) +++ tomcat/trunk/java/javax/websocket/ContainerProvider.java Thu Jan 31 12:15:23 2013 @@ -16,21 +16,12 @@ */ package javax.websocket; -import java.util.Map; -import java.util.WeakHashMap; - /** * Provides access to the implementation. This version of the API is hard-coded * to use the Apache Tomcat WebSocket implementation. */ public class ContainerProvider { - // Needs to be a WeakHashMap to prevent memory leaks when a context is - // stopped - private static Map<ClassLoader,WebSocketContainer> classLoaderContainerMap = - new WeakHashMap<>(); - private static Object classLoaderContainerMapLock = new Object(); - private static final String DEFAULT_PROVIDER_CLASS_NAME = "org.apache.tomcat.websocket.WsWebSocketContainer"; @@ -46,22 +37,15 @@ public class ContainerProvider { } /** - * Obtain a reference to the per class loader ClientContainer used to create - * outgoing WebSocket connections. + * Create a new ClientContainer used to create outgoing WebSocket + * connections. */ - public static WebSocketContainer getClientContainer() { - ClassLoader tccl = Thread.currentThread().getContextClassLoader(); + public static WebSocketContainer createClientContainer() { WebSocketContainer result = null; - synchronized (classLoaderContainerMapLock) { - result = classLoaderContainerMap.get(tccl); - if (result == null) { - try { - result = clazz.newInstance(); - } catch (InstantiationException | IllegalAccessException e) { - throw new IllegalArgumentException(e); - } - classLoaderContainerMap.put(tccl, result); - } + try { + result = clazz.newInstance(); + } catch (InstantiationException | IllegalAccessException e) { + throw new IllegalArgumentException(e); } return result; } Modified: tomcat/trunk/java/javax/websocket/DefaultClientConfiguration.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/javax/websocket/DefaultClientConfiguration.java?rev=1440926&r1=1440925&r2=1440926&view=diff ============================================================================== --- tomcat/trunk/java/javax/websocket/DefaultClientConfiguration.java (original) +++ tomcat/trunk/java/javax/websocket/DefaultClientConfiguration.java Thu Jan 31 12:15:23 2013 @@ -22,7 +22,7 @@ import java.util.Map; public class DefaultClientConfiguration implements ClientEndpointConfiguration { private List<String> preferredSubprotocols = new ArrayList<>(); - private List<String> extensions = new ArrayList<>(); + private List<Extension> extensions = new ArrayList<>(); private List<Encoder> encoders = new ArrayList<>(); private List<Decoder> decoders = new ArrayList<>(); @@ -38,12 +38,12 @@ public class DefaultClientConfiguration } @Override - public List<String> getExtensions() { + public List<Extension> getExtensions() { return extensions; } public ClientEndpointConfiguration setExtensions( - List<String> extensions) { + List<Extension> extensions) { this.extensions = extensions; return this; } Modified: tomcat/trunk/java/javax/websocket/Extension.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/javax/websocket/Extension.java?rev=1440926&r1=1440925&r2=1440926&view=diff ============================================================================== --- tomcat/trunk/java/javax/websocket/Extension.java (original) +++ tomcat/trunk/java/javax/websocket/Extension.java Thu Jan 31 12:15:23 2013 @@ -16,9 +16,14 @@ */ package javax.websocket; -import java.util.Map; +import java.util.List; public interface Extension { String getName(); - Map<String,String> getParameters(); + List<Parameter> getParameters(); + + interface Parameter { + String getName(); + String getValue(); + } } Modified: tomcat/trunk/java/javax/websocket/RemoteEndpoint.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/javax/websocket/RemoteEndpoint.java?rev=1440926&r1=1440925&r2=1440926&view=diff ============================================================================== --- tomcat/trunk/java/javax/websocket/RemoteEndpoint.java (original) +++ tomcat/trunk/java/javax/websocket/RemoteEndpoint.java Thu Jan 31 12:15:23 2013 @@ -80,8 +80,8 @@ public interface RemoteEndpoint { void sendObjectByCompletion(Object obj, SendHandler completion); - void sendPing(ByteBuffer applicationData) throws IOException; + void sendPing(ByteBuffer applicationData) throws IOException, IllegalArgumentException; - void sendPong(ByteBuffer applicationData) throws IOException; + void sendPong(ByteBuffer applicationData) throws IOException, IllegalArgumentException; } Modified: tomcat/trunk/java/javax/websocket/Session.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/javax/websocket/Session.java?rev=1440926&r1=1440925&r2=1440926&view=diff ============================================================================== --- tomcat/trunk/java/javax/websocket/Session.java (original) +++ tomcat/trunk/java/javax/websocket/Session.java Thu Jan 31 12:15:23 2013 @@ -16,6 +16,7 @@ */ package javax.websocket; +import java.io.Closeable; import java.io.IOException; import java.net.URI; import java.security.Principal; @@ -23,7 +24,7 @@ import java.util.List; import java.util.Map; import java.util.Set; -public interface Session { +public interface Session extends Closeable { /** * Returns the container that created this session. @@ -41,7 +42,7 @@ public interface Session { String getNegotiatedSubprotocol(); - List<String> getNegotiatedExtensions(); + List<Extension> getNegotiatedExtensions(); boolean isSecure(); @@ -66,6 +67,7 @@ public interface Session { * * @throws IOException */ + @Override void close() throws IOException; Modified: tomcat/trunk/java/org/apache/tomcat/websocket/WsSession.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/websocket/WsSession.java?rev=1440926&r1=1440925&r2=1440926&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/tomcat/websocket/WsSession.java (original) +++ tomcat/trunk/java/org/apache/tomcat/websocket/WsSession.java Thu Jan 31 12:15:23 2013 @@ -33,6 +33,7 @@ import java.util.concurrent.ConcurrentHa import javax.websocket.CloseReason; import javax.websocket.CloseReason.CloseCodes; import javax.websocket.Endpoint; +import javax.websocket.Extension; import javax.websocket.MessageHandler; import javax.websocket.PongMessage; import javax.websocket.RemoteEndpoint; @@ -174,7 +175,7 @@ public class WsSession implements Sessio @Override - public List<String> getNegotiatedExtensions() { + public List<Extension> getNegotiatedExtensions() { // TODO Auto-generated method stub return null; } Modified: tomcat/trunk/test/org/apache/tomcat/websocket/TestWsWebSocketContainer.java URL: http://svn.apache.org/viewvc/tomcat/trunk/test/org/apache/tomcat/websocket/TestWsWebSocketContainer.java?rev=1440926&r1=1440925&r2=1440926&view=diff ============================================================================== --- tomcat/trunk/test/org/apache/tomcat/websocket/TestWsWebSocketContainer.java (original) +++ tomcat/trunk/test/org/apache/tomcat/websocket/TestWsWebSocketContainer.java Thu Jan 31 12:15:23 2013 @@ -78,7 +78,8 @@ public class TestWsWebSocketContainer ex tomcat.start(); - WebSocketContainer wsContainer = ContainerProvider.getClientContainer(); + WebSocketContainer wsContainer = + ContainerProvider.createClientContainer(); Session wsSession = wsContainer.connectToServer(TesterEndpoint.class, new DefaultClientConfiguration(), new URI("http://localhost:" + getPort() + EchoConfig.PATH_ASYNC)); @@ -107,7 +108,8 @@ public class TestWsWebSocketContainer ex tomcat.start(); - WebSocketContainer wsContainer = ContainerProvider.getClientContainer(); + WebSocketContainer wsContainer = + ContainerProvider.createClientContainer(); wsContainer.connectToServer(TesterEndpoint.class, new DefaultClientConfiguration(), new URI("ftp://localhost:" + getPort() + EchoConfig.PATH_ASYNC)); @@ -124,7 +126,8 @@ public class TestWsWebSocketContainer ex tomcat.start(); - WebSocketContainer wsContainer = ContainerProvider.getClientContainer(); + WebSocketContainer wsContainer = + ContainerProvider.createClientContainer(); wsContainer.connectToServer(TesterEndpoint.class, new DefaultClientConfiguration(), new URI("http://" + EchoConfig.PATH_ASYNC)); @@ -188,13 +191,8 @@ public class TestWsWebSocketContainer ex tomcat.addContext("", System.getProperty("java.io.tmpdir")); ctx.addApplicationListener(EchoConfig.class.getName()); - WebSocketContainer wsContainer = ContainerProvider.getClientContainer(); - - // Reset client buffer size as client container is retained between - // tests - - wsContainer.setMaxBinaryMessageBufferSize(8192); - wsContainer.setMaxTextMessageBufferSize(8192); + WebSocketContainer wsContainer = + ContainerProvider.createClientContainer(); if (isServerBuffer) { if (isTextBuffer) { @@ -277,13 +275,8 @@ public class TestWsWebSocketContainer ex tomcat.addContext("", System.getProperty("java.io.tmpdir")); ctx.addApplicationListener(BlockingConfig.class.getName()); - WebSocketContainer wsContainer = ContainerProvider.getClientContainer(); - - // Reset client buffer size as client container is retained between - // tests - wsContainer.setMaxBinaryMessageBufferSize(8192); - wsContainer.setMaxTextMessageBufferSize(8192); - + WebSocketContainer wsContainer = + ContainerProvider.createClientContainer(); // Set the async timeout if (setTimeoutOnContainer) { @@ -367,12 +360,8 @@ public class TestWsWebSocketContainer ex ctx.addApplicationListener(WsListener.class.getName()); ctx.addApplicationListener(ConstantTxConfig.class.getName()); - WebSocketContainer wsContainer = ContainerProvider.getClientContainer(); - - // Reset client buffer size as client container is retained between - // tests - wsContainer.setMaxBinaryMessageBufferSize(8192); - wsContainer.setMaxTextMessageBufferSize(8192); + WebSocketContainer wsContainer = + ContainerProvider.createClientContainer(); tomcat.start(); --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org