diff options
Diffstat (limited to 'jetty-websocket')
19 files changed, 61 insertions, 130 deletions
diff --git a/jetty-websocket/javax-websocket-client-impl/pom.xml b/jetty-websocket/javax-websocket-client-impl/pom.xml index beb549e3e4..f6d2375e4f 100644 --- a/jetty-websocket/javax-websocket-client-impl/pom.xml +++ b/jetty-websocket/javax-websocket-client-impl/pom.xml @@ -3,7 +3,7 @@ <parent> <groupId>org.eclipse.jetty.websocket</groupId> <artifactId>websocket-parent</artifactId> - <version>9.2.8-SNAPSHOT</version> + <version>9.3.0-SNAPSHOT</version> </parent> <modelVersion>4.0.0</modelVersion> diff --git a/jetty-websocket/javax-websocket-client-impl/src/test/java/org/eclipse/jetty/websocket/jsr356/DecoderReaderTest.java b/jetty-websocket/javax-websocket-client-impl/src/test/java/org/eclipse/jetty/websocket/jsr356/DecoderReaderTest.java index c031b99f19..f5a8cd3e06 100644 --- a/jetty-websocket/javax-websocket-client-impl/src/test/java/org/eclipse/jetty/websocket/jsr356/DecoderReaderTest.java +++ b/jetty-websocket/javax-websocket-client-impl/src/test/java/org/eclipse/jetty/websocket/jsr356/DecoderReaderTest.java @@ -135,13 +135,14 @@ public class DecoderReaderTest } @OnMessage - public void onMessage(Quotes msg) + public synchronized void onMessage(Quotes msg) { + Integer h=hashCode(); messageQueue.add(msg); - System.out.printf("Quotes from: %s%n",msg.author); + System.out.printf("%x: Quotes from: %s%n",h,msg.author); for (String quote : msg.quotes) { - System.out.printf(" - %s%n",quote); + System.out.printf("%x: - %s%n",h,quote); } } @@ -271,8 +272,8 @@ public class DecoderReaderTest } // TODO analyse and fix - @Ignore @Test + @Ignore ("Quotes appear to be able to arrive in any order?") public void testTwoQuotes() throws Exception { QuotesSocket quoter = new QuotesSocket(); diff --git a/jetty-websocket/javax-websocket-server-impl/pom.xml b/jetty-websocket/javax-websocket-server-impl/pom.xml index f316eeff74..56651501ca 100644 --- a/jetty-websocket/javax-websocket-server-impl/pom.xml +++ b/jetty-websocket/javax-websocket-server-impl/pom.xml @@ -3,7 +3,7 @@ <parent> <groupId>org.eclipse.jetty.websocket</groupId> <artifactId>websocket-parent</artifactId> - <version>9.2.8-SNAPSHOT</version> + <version>9.3.0-SNAPSHOT</version> </parent> <modelVersion>4.0.0</modelVersion> @@ -70,23 +70,6 @@ </execution> </executions> </plugin> - <plugin> - <groupId>org.apache.maven.plugins</groupId> - <artifactId>maven-assembly-plugin</artifactId> - <executions> - <execution> - <phase>package</phase> - <goals> - <goal>single</goal> - </goals> - <configuration> - <descriptorRefs> - <descriptorRef>config</descriptorRef> - </descriptorRefs> - </configuration> - </execution> - </executions> - </plugin> </plugins> </build> </project> diff --git a/jetty-websocket/pom.xml b/jetty-websocket/pom.xml index aa6b24eb4f..a7e398ab49 100644 --- a/jetty-websocket/pom.xml +++ b/jetty-websocket/pom.xml @@ -3,7 +3,7 @@ <parent> <artifactId>jetty-project</artifactId> <groupId>org.eclipse.jetty</groupId> - <version>9.2.8-SNAPSHOT</version> + <version>9.3.0-SNAPSHOT</version> </parent> <modelVersion>4.0.0</modelVersion> @@ -43,7 +43,6 @@ </goals> <configuration> <instructions> - <Export-Package>${bundle-symbolic-name}.*;version="${parsedVersion.majorVersion}.${parsedVersion.minorVersion}.${parsedVersion.incrementalVersion}"</Export-Package> <Import-Package>javax.servlet.*;version="[3.1,4.0)",org.eclipse.jetty.*;version="[9.0,10.0)",*</Import-Package> <_nouses>true</_nouses> </instructions> @@ -52,15 +51,6 @@ </executions> </plugin> <plugin> - <groupId>org.apache.maven.plugins</groupId> - <artifactId>maven-jar-plugin</artifactId> - <configuration> - <archive> - <manifestFile>${project.build.outputDirectory}/META-INF/MANIFEST.MF</manifestFile> - </archive> - </configuration> - </plugin> - <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>clirr-maven-plugin</artifactId> <version>2.5</version> diff --git a/jetty-websocket/websocket-api/pom.xml b/jetty-websocket/websocket-api/pom.xml index 18d3301036..2c078b8b19 100644 --- a/jetty-websocket/websocket-api/pom.xml +++ b/jetty-websocket/websocket-api/pom.xml @@ -3,7 +3,7 @@ <parent> <groupId>org.eclipse.jetty.websocket</groupId> <artifactId>websocket-parent</artifactId> - <version>9.2.8-SNAPSHOT</version> + <version>9.3.0-SNAPSHOT</version> </parent> <modelVersion>4.0.0</modelVersion> diff --git a/jetty-websocket/websocket-client/pom.xml b/jetty-websocket/websocket-client/pom.xml index bd5b79c04a..b09cd38407 100644 --- a/jetty-websocket/websocket-client/pom.xml +++ b/jetty-websocket/websocket-client/pom.xml @@ -3,7 +3,7 @@ <parent> <groupId>org.eclipse.jetty.websocket</groupId> <artifactId>websocket-parent</artifactId> - <version>9.2.8-SNAPSHOT</version> + <version>9.3.0-SNAPSHOT</version> </parent> <modelVersion>4.0.0</modelVersion> diff --git a/jetty-websocket/websocket-client/src/main/java/org/eclipse/jetty/websocket/client/ClientUpgradeRequest.java b/jetty-websocket/websocket-client/src/main/java/org/eclipse/jetty/websocket/client/ClientUpgradeRequest.java index b70cad7e17..3339eec67a 100644 --- a/jetty-websocket/websocket-client/src/main/java/org/eclipse/jetty/websocket/client/ClientUpgradeRequest.java +++ b/jetty-websocket/websocket-client/src/main/java/org/eclipse/jetty/websocket/client/ClientUpgradeRequest.java @@ -46,7 +46,6 @@ import org.eclipse.jetty.websocket.api.extensions.ExtensionConfig; public class ClientUpgradeRequest extends UpgradeRequest { private static final Logger LOG = Log.getLogger(ClientUpgradeRequest.class); - private static final int MAX_KEYS = -1; // maximum number of parameter keys to decode private static final Set<String> FORBIDDEN_HEADERS; static @@ -239,7 +238,7 @@ public class ClientUpgradeRequest extends UpgradeRequest if (StringUtil.isNotBlank(query)) { MultiMap<String> params = new MultiMap<String>(); - UrlEncoded.decodeTo(uri.getQuery(),params,StandardCharsets.UTF_8,MAX_KEYS); + UrlEncoded.decodeTo(uri.getQuery(),params,StandardCharsets.UTF_8); for (String key : params.keySet()) { diff --git a/jetty-websocket/websocket-client/src/main/java/org/eclipse/jetty/websocket/client/WebSocketClient.java b/jetty-websocket/websocket-client/src/main/java/org/eclipse/jetty/websocket/client/WebSocketClient.java index 3320d57a31..74a759fb38 100644 --- a/jetty-websocket/websocket-client/src/main/java/org/eclipse/jetty/websocket/client/WebSocketClient.java +++ b/jetty-websocket/websocket-client/src/main/java/org/eclipse/jetty/websocket/client/WebSocketClient.java @@ -22,9 +22,7 @@ import java.io.IOException; import java.net.CookieStore; import java.net.SocketAddress; import java.net.URI; -import java.util.ArrayList; import java.util.HashSet; -import java.util.List; import java.util.Locale; import java.util.Set; import java.util.concurrent.Executor; @@ -45,7 +43,6 @@ import org.eclipse.jetty.util.thread.Scheduler; import org.eclipse.jetty.util.thread.ShutdownThread; import org.eclipse.jetty.websocket.api.Session; import org.eclipse.jetty.websocket.api.WebSocketPolicy; -import org.eclipse.jetty.websocket.api.extensions.Extension; import org.eclipse.jetty.websocket.api.extensions.ExtensionConfig; import org.eclipse.jetty.websocket.api.extensions.ExtensionFactory; import org.eclipse.jetty.websocket.client.io.ConnectPromise; @@ -82,6 +79,7 @@ public class WebSocketClient extends ContainerLifeCycle implements SessionListen private Masker masker; private SocketAddress bindAddress; private long connectTimeout = SelectorManager.DEFAULT_CONNECT_TIMEOUT; + private boolean dispatchIO = true; public WebSocketClient() { @@ -184,7 +182,7 @@ public class WebSocketClient extends ContainerLifeCycle implements SessionListen LOG.debug("connect websocket {} to {}",websocket,toUri); // Grab Connection Manager - initialiseClient(); + initializeClient(); ConnectionManager manager = getConnectionManager(); // Setup Driver for user provided websocket @@ -282,6 +280,11 @@ public class WebSocketClient extends ContainerLifeCycle implements SessionListen LOG.debug("Stopped {}",this); } + public boolean isDispatchIO() + { + return dispatchIO; + } + /** * Return the number of milliseconds for a timeout of an attempted write operation. * @@ -416,29 +419,7 @@ public class WebSocketClient extends ContainerLifeCycle implements SessionListen return sslContextFactory; } - public List<Extension> initExtensions(List<ExtensionConfig> requested) - { - List<Extension> extensions = new ArrayList<Extension>(); - - for (ExtensionConfig cfg : requested) - { - Extension extension = extensionRegistry.newInstance(cfg); - - if (extension == null) - { - continue; - } - - if (LOG.isDebugEnabled()) - LOG.debug("added {}",extension); - extensions.add(extension); - } - if (LOG.isDebugEnabled()) - LOG.debug("extensions={}",extensions); - return extensions; - } - - private synchronized void initialiseClient() throws IOException + private synchronized void initializeClient() throws IOException { if (!ShutdownThread.isRegistered(this)) { @@ -496,8 +477,17 @@ public class WebSocketClient extends ContainerLifeCycle implements SessionListen this.policy.setAsyncWriteTimeout(ms); } + /** + * @deprecated use {@link #setBindAddress(SocketAddress)} instead + */ + @Deprecated public void setBindAdddress(SocketAddress bindAddress) { + setBindAddress(bindAddress); + } + + public void setBindAddress(SocketAddress bindAddress) + { this.bindAddress = bindAddress; } @@ -531,6 +521,11 @@ public class WebSocketClient extends ContainerLifeCycle implements SessionListen this.daemon = daemon; } + public void setDispatchIO(boolean dispatchIO) + { + this.dispatchIO = dispatchIO; + } + public void setEventDriverFactory(EventDriverFactory factory) { this.eventDriverFactory = factory; diff --git a/jetty-websocket/websocket-client/src/main/java/org/eclipse/jetty/websocket/client/io/ConnectionManager.java b/jetty-websocket/websocket-client/src/main/java/org/eclipse/jetty/websocket/client/io/ConnectionManager.java index 1aae226b1e..580adeacbc 100644 --- a/jetty-websocket/websocket-client/src/main/java/org/eclipse/jetty/websocket/client/io/ConnectionManager.java +++ b/jetty-websocket/websocket-client/src/main/java/org/eclipse/jetty/websocket/client/io/ConnectionManager.java @@ -33,7 +33,6 @@ import org.eclipse.jetty.util.component.ContainerLifeCycle; import org.eclipse.jetty.util.log.Log; import org.eclipse.jetty.util.log.Logger; import org.eclipse.jetty.websocket.api.StatusCode; -import org.eclipse.jetty.websocket.api.WebSocketException; import org.eclipse.jetty.websocket.client.ClientUpgradeRequest; import org.eclipse.jetty.websocket.client.WebSocketClient; import org.eclipse.jetty.websocket.common.WebSocketSession; @@ -104,20 +103,6 @@ public class ConnectionManager extends ContainerLifeCycle } } - private class VirtualConnect extends ConnectPromise - { - public VirtualConnect(WebSocketClient client, EventDriver driver, ClientUpgradeRequest request) - { - super(client,driver,request); - } - - @Override - public void run() - { - failed(new WebSocketException("MUX Not yet supported")); - } - } - private static final Logger LOG = Log.getLogger(ConnectionManager.class); public static InetSocketAddress toSocketAddress(URI uri) @@ -187,14 +172,6 @@ public class ConnectionManager extends ContainerLifeCycle public ConnectPromise connect(WebSocketClient client, EventDriver driver, ClientUpgradeRequest request) { - URI toUri = request.getRequestURI(); - String hostname = toUri.getHost(); - - if (isVirtualConnectionPossibleTo(hostname)) - { - return new VirtualConnect(client,driver,request); - } - return new PhysicalConnect(client,driver,request); } @@ -228,12 +205,6 @@ public class ConnectionManager extends ContainerLifeCycle return Collections.unmodifiableCollection(sessions); } - public boolean isVirtualConnectionPossibleTo(String hostname) - { - // TODO Auto-generated method stub - return false; - } - /** * Factory method for new WebSocketClientSelectorManager (used by other projects like cometd) * diff --git a/jetty-websocket/websocket-client/src/main/java/org/eclipse/jetty/websocket/client/io/WebSocketClientSelectorManager.java b/jetty-websocket/websocket-client/src/main/java/org/eclipse/jetty/websocket/client/io/WebSocketClientSelectorManager.java index 15597e3f95..35180c4aca 100644 --- a/jetty-websocket/websocket-client/src/main/java/org/eclipse/jetty/websocket/client/io/WebSocketClientSelectorManager.java +++ b/jetty-websocket/websocket-client/src/main/java/org/eclipse/jetty/websocket/client/io/WebSocketClientSelectorManager.java @@ -22,11 +22,13 @@ import java.io.IOException; import java.nio.channels.SelectionKey; import java.nio.channels.SocketChannel; import java.util.concurrent.Executor; + import javax.net.ssl.SSLEngine; import org.eclipse.jetty.io.ByteBufferPool; import org.eclipse.jetty.io.Connection; import org.eclipse.jetty.io.EndPoint; +import org.eclipse.jetty.io.ManagedSelector; import org.eclipse.jetty.io.SelectChannelEndPoint; import org.eclipse.jetty.io.SelectorManager; import org.eclipse.jetty.io.ssl.SslConnection; diff --git a/jetty-websocket/websocket-client/src/test/java/org/eclipse/jetty/websocket/client/ClientCloseTest.java b/jetty-websocket/websocket-client/src/test/java/org/eclipse/jetty/websocket/client/ClientCloseTest.java index 01ca91b42a..7b922ec7b2 100644 --- a/jetty-websocket/websocket-client/src/test/java/org/eclipse/jetty/websocket/client/ClientCloseTest.java +++ b/jetty-websocket/websocket-client/src/test/java/org/eclipse/jetty/websocket/client/ClientCloseTest.java @@ -35,8 +35,8 @@ import java.util.concurrent.atomic.AtomicInteger; import org.eclipse.jetty.io.EndPoint; import org.eclipse.jetty.io.EofException; +import org.eclipse.jetty.io.ManagedSelector; import org.eclipse.jetty.io.SelectChannelEndPoint; -import org.eclipse.jetty.io.SelectorManager.ManagedSelector; import org.eclipse.jetty.toolchain.test.EventQueue; import org.eclipse.jetty.toolchain.test.TestTracker; import org.eclipse.jetty.util.BufferUtil; diff --git a/jetty-websocket/websocket-common/pom.xml b/jetty-websocket/websocket-common/pom.xml index 07d69c4fe2..de1da48499 100644 --- a/jetty-websocket/websocket-common/pom.xml +++ b/jetty-websocket/websocket-common/pom.xml @@ -3,7 +3,7 @@ <parent> <groupId>org.eclipse.jetty.websocket</groupId> <artifactId>websocket-parent</artifactId> - <version>9.2.8-SNAPSHOT</version> + <version>9.3.0-SNAPSHOT</version> </parent> <modelVersion>4.0.0</modelVersion> diff --git a/jetty-websocket/websocket-common/src/main/java/org/eclipse/jetty/websocket/common/BlockingWriteCallback.java b/jetty-websocket/websocket-common/src/main/java/org/eclipse/jetty/websocket/common/BlockingWriteCallback.java index 0909a3fde9..91fe16b31c 100644 --- a/jetty-websocket/websocket-common/src/main/java/org/eclipse/jetty/websocket/common/BlockingWriteCallback.java +++ b/jetty-websocket/websocket-common/src/main/java/org/eclipse/jetty/websocket/common/BlockingWriteCallback.java @@ -24,9 +24,8 @@ import org.eclipse.jetty.util.Callback; import org.eclipse.jetty.util.SharedBlockingCallback; import org.eclipse.jetty.websocket.api.WriteCallback; - -/* ------------------------------------------------------------ */ -/** extend a SharedlBlockingCallback to an websocket WriteCallback +/** + * Extends a {@link SharedBlockingCallback} to a WebSocket {@link WriteCallback} */ public class BlockingWriteCallback extends SharedBlockingCallback { @@ -41,9 +40,9 @@ public class BlockingWriteCallback extends SharedBlockingCallback public static class WriteBlocker implements WriteCallback, Callback, AutoCloseable { - Blocker blocker; + private final Blocker blocker; - WriteBlocker(Blocker blocker) + protected WriteBlocker(Blocker blocker) { this.blocker=blocker; } @@ -73,7 +72,7 @@ public class BlockingWriteCallback extends SharedBlockingCallback } @Override - public void close() throws IOException + public void close() { blocker.close(); } diff --git a/jetty-websocket/websocket-common/src/main/java/org/eclipse/jetty/websocket/common/WebSocketSession.java b/jetty-websocket/websocket-common/src/main/java/org/eclipse/jetty/websocket/common/WebSocketSession.java index cfd5323d52..6195f1d918 100644 --- a/jetty-websocket/websocket-common/src/main/java/org/eclipse/jetty/websocket/common/WebSocketSession.java +++ b/jetty-websocket/websocket-common/src/main/java/org/eclipse/jetty/websocket/common/WebSocketSession.java @@ -303,10 +303,19 @@ public class WebSocketSession extends ContainerLifeCycle implements Session, Inc @Override public void incomingFrame(Frame frame) { - if (connection.getIOState().isInputAvailable()) + ClassLoader old = Thread.currentThread().getContextClassLoader(); + try { - // Forward Frames Through Extension List - incomingHandler.incomingFrame(frame); + Thread.currentThread().setContextClassLoader(classLoader); + if (connection.getIOState().isInputAvailable()) + { + // Forward Frames Through Extension List + incomingHandler.incomingFrame(frame); + } + } + finally + { + Thread.currentThread().setContextClassLoader(old); } } diff --git a/jetty-websocket/websocket-common/src/main/java/org/eclipse/jetty/websocket/common/io/AbstractWebSocketConnection.java b/jetty-websocket/websocket-common/src/main/java/org/eclipse/jetty/websocket/common/io/AbstractWebSocketConnection.java index 2fd0cd2629..1e8ef2f883 100644 --- a/jetty-websocket/websocket-common/src/main/java/org/eclipse/jetty/websocket/common/io/AbstractWebSocketConnection.java +++ b/jetty-websocket/websocket-common/src/main/java/org/eclipse/jetty/websocket/common/io/AbstractWebSocketConnection.java @@ -221,7 +221,7 @@ public abstract class AbstractWebSocketConnection extends AbstractConnection imp public AbstractWebSocketConnection(EndPoint endp, Executor executor, Scheduler scheduler, WebSocketPolicy policy, ByteBufferPool bufferPool) { - super(endp,executor,EXECUTE_ONFILLABLE); // TODO review if this is best. Specifically with MUX + super(endp,executor); this.policy = policy; this.bufferPool = bufferPool; this.generator = new Generator(policy,bufferPool); diff --git a/jetty-websocket/websocket-server/pom.xml b/jetty-websocket/websocket-server/pom.xml index 899430f813..76efde8a16 100644 --- a/jetty-websocket/websocket-server/pom.xml +++ b/jetty-websocket/websocket-server/pom.xml @@ -3,7 +3,7 @@ <parent> <groupId>org.eclipse.jetty.websocket</groupId> <artifactId>websocket-parent</artifactId> - <version>9.2.8-SNAPSHOT</version> + <version>9.3.0-SNAPSHOT</version> </parent> <modelVersion>4.0.0</modelVersion> @@ -21,9 +21,8 @@ <artifactId>maven-jar-plugin</artifactId> <executions> <execution> - <id>artifact-jars</id> + <id>test-jar</id> <goals> - <goal>jar</goal> <goal>test-jar</goal> </goals> </execution> diff --git a/jetty-websocket/websocket-server/src/main/java/org/eclipse/jetty/websocket/server/WebSocketServerFactory.java b/jetty-websocket/websocket-server/src/main/java/org/eclipse/jetty/websocket/server/WebSocketServerFactory.java index 2e814b889d..6bc10a901b 100644 --- a/jetty-websocket/websocket-server/src/main/java/org/eclipse/jetty/websocket/server/WebSocketServerFactory.java +++ b/jetty-websocket/websocket-server/src/main/java/org/eclipse/jetty/websocket/server/WebSocketServerFactory.java @@ -30,7 +30,6 @@ import java.util.Map; import java.util.Set; import java.util.concurrent.CopyOnWriteArraySet; import java.util.concurrent.Executor; - import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @@ -514,7 +513,7 @@ public class WebSocketServerFactory extends ContainerLifeCycle implements WebSoc EndPoint endp = http.getEndPoint(); Executor executor = http.getConnector().getExecutor(); ByteBufferPool bufferPool = http.getConnector().getByteBufferPool(); - + // Setup websocket connection WebSocketServerConnection wsConnection = new WebSocketServerConnection(endp, executor, scheduler, driver.getPolicy(), bufferPool); diff --git a/jetty-websocket/websocket-server/src/test/java/org/eclipse/jetty/websocket/server/SimpleServletServer.java b/jetty-websocket/websocket-server/src/test/java/org/eclipse/jetty/websocket/server/SimpleServletServer.java index cf921cec1d..585a680735 100644 --- a/jetty-websocket/websocket-server/src/test/java/org/eclipse/jetty/websocket/server/SimpleServletServer.java +++ b/jetty-websocket/websocket-server/src/test/java/org/eclipse/jetty/websocket/server/SimpleServletServer.java @@ -22,6 +22,7 @@ import java.net.URI; import javax.servlet.http.HttpServlet; +import org.eclipse.jetty.http.HttpVersion; import org.eclipse.jetty.server.HttpConfiguration; import org.eclipse.jetty.server.HttpConnectionFactory; import org.eclipse.jetty.server.SecureRequestCustomizer; @@ -100,7 +101,7 @@ public class SimpleServletServer https_config.addCustomizer(new SecureRequestCustomizer()); // SSL Connector - connector = new ServerConnector(server,new SslConnectionFactory(sslContextFactory,"http/1.1"),new HttpConnectionFactory(https_config)); + connector = new ServerConnector(server,new SslConnectionFactory(sslContextFactory,HttpVersion.HTTP_1_1.asString()),new HttpConnectionFactory(https_config)); connector.setPort(0); } else diff --git a/jetty-websocket/websocket-servlet/pom.xml b/jetty-websocket/websocket-servlet/pom.xml index 5b0d8f3370..f91ff8493a 100644 --- a/jetty-websocket/websocket-servlet/pom.xml +++ b/jetty-websocket/websocket-servlet/pom.xml @@ -3,7 +3,7 @@ <parent> <groupId>org.eclipse.jetty.websocket</groupId> <artifactId>websocket-parent</artifactId> - <version>9.2.8-SNAPSHOT</version> + <version>9.3.0-SNAPSHOT</version> </parent> <modelVersion>4.0.0</modelVersion> @@ -15,23 +15,6 @@ </properties> <build> <plugins> - <plugin> - <groupId>org.apache.maven.plugins</groupId> - <artifactId>maven-jar-plugin</artifactId> - <executions> - <execution> - <id>artifact-jar</id> - <goals> - <goal>jar</goal> - </goals> - </execution> - </executions> - <configuration> - <archive> - <manifestFile>target/classes/META-INF/MANIFEST.MF</manifestFile> - </archive> - </configuration> - </plugin> <plugin> <groupId>org.apache.felix</groupId> <artifactId>maven-bundle-plugin</artifactId> |