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/01/31 13:15:23 UTC
svn commit: r1440926 - in /tomcat/trunk: java/javax/websocket/
java/org/apache/tomcat/websocket/ test/javax/websocket/
test/org/apache/tomcat/websocket/
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-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org
Re: svn commit: r1440926 - in /tomcat/trunk: java/javax/websocket/
java/org/apache/tomcat/websocket/ test/javax/websocket/ test/org/apache/tomcat/websocket/
Posted by Konstantin Kolinko <kn...@gmail.com>.
2013/1/31 <ma...@apache.org>:
> 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/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;
It is unusual to add a runtime exception to the official API. Usually
they are just documented.
Best regards,
Konstantin Kolinko
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org