diff --git a/examples/embedded/src/main/java/org/eclipse/jetty/embedded/WebSocketJsrServer.java b/examples/embedded/src/main/java/org/eclipse/jetty/embedded/WebSocketJsrServer.java index d3ac32dafbd..473fae972ab 100644 --- a/examples/embedded/src/main/java/org/eclipse/jetty/embedded/WebSocketJsrServer.java +++ b/examples/embedded/src/main/java/org/eclipse/jetty/embedded/WebSocketJsrServer.java @@ -26,7 +26,7 @@ import org.eclipse.jetty.server.Server; import org.eclipse.jetty.server.handler.DefaultHandler; import org.eclipse.jetty.server.handler.HandlerList; import org.eclipse.jetty.servlet.ServletContextHandler; -import org.eclipse.jetty.websocket.javax.server.JavaxWebSocketServletContainerInitializer; +import org.eclipse.jetty.websocket.javax.server.config.JavaxWebSocketServletContainerInitializer; /** * Example of setting up a javax.websocket server with Jetty embedded diff --git a/jetty-osgi/jetty-osgi-boot/jettyhome/etc/jetty.xml b/jetty-osgi/jetty-osgi-boot/jettyhome/etc/jetty.xml index 17f38f2776d..70c174072ab 100644 --- a/jetty-osgi/jetty-osgi-boot/jettyhome/etc/jetty.xml +++ b/jetty-osgi/jetty-osgi-boot/jettyhome/etc/jetty.xml @@ -96,7 +96,7 @@ org.eclipse.jetty.webapp.JmxConfiguration org.eclipse.jetty.osgi.annotations.AnnotationConfiguration org.eclipse.jetty.websocket.server.config.JettyWebSocketConfiguration - org.eclipse.jetty.websocket.javax.server.JavaxWebSocketConfiguration + org.eclipse.jetty.websocket.javax.server.config.JavaxWebSocketConfiguration org.eclipse.jetty.osgi.boot.OSGiWebInfConfiguration org.eclipse.jetty.osgi.boot.OSGiMetaInfConfiguration diff --git a/jetty-osgi/test-jetty-osgi/src/test/config/etc/jetty-with-custom-class.xml b/jetty-osgi/test-jetty-osgi/src/test/config/etc/jetty-with-custom-class.xml index 9cc5f6f72e7..6c2b9d68082 100644 --- a/jetty-osgi/test-jetty-osgi/src/test/config/etc/jetty-with-custom-class.xml +++ b/jetty-osgi/test-jetty-osgi/src/test/config/etc/jetty-with-custom-class.xml @@ -82,7 +82,7 @@ org.eclipse.jetty.plus.webapp.EnvConfiguration org.eclipse.jetty.webapp.JmxConfiguration org.eclipse.jetty.websocket.server.config.JettyWebSocketConfiguration - org.eclipse.jetty.websocket.javax.server.JavaxWebSocketConfiguration + org.eclipse.jetty.websocket.javax.server.config.JavaxWebSocketConfiguration org.eclipse.jetty.osgi.annotations.AnnotationConfiguration org.eclipse.jetty.osgi.boot.OSGiWebInfConfiguration org.eclipse.jetty.osgi.boot.OSGiMetaInfConfiguration diff --git a/jetty-osgi/test-jetty-osgi/src/test/config/etc/jetty.xml b/jetty-osgi/test-jetty-osgi/src/test/config/etc/jetty.xml index 291fccd1873..ad2b008c33a 100644 --- a/jetty-osgi/test-jetty-osgi/src/test/config/etc/jetty.xml +++ b/jetty-osgi/test-jetty-osgi/src/test/config/etc/jetty.xml @@ -85,7 +85,7 @@ org.eclipse.jetty.webapp.JmxConfiguration org.eclipse.jetty.osgi.annotations.AnnotationConfiguration org.eclipse.jetty.websocket.server.config.JettyWebSocketConfiguration - org.eclipse.jetty.websocket.javax.server.JavaxWebSocketConfiguration + org.eclipse.jetty.websocket.javax.server.config.JavaxWebSocketConfiguration org.eclipse.jetty.osgi.boot.OSGiWebInfConfiguration org.eclipse.jetty.osgi.boot.OSGiMetaInfConfiguration diff --git a/jetty-websocket/javax-websocket-server/src/main/java/module-info.java b/jetty-websocket/javax-websocket-server/src/main/java/module-info.java index 3c20f2e9d1d..8ef5adc7618 100644 --- a/jetty-websocket/javax-websocket-server/src/main/java/module-info.java +++ b/jetty-websocket/javax-websocket-server/src/main/java/module-info.java @@ -20,13 +20,13 @@ import javax.servlet.ServletContainerInitializer; import javax.websocket.server.ServerEndpointConfig; import org.eclipse.jetty.webapp.Configuration; -import org.eclipse.jetty.websocket.javax.server.ContainerDefaultConfigurator; -import org.eclipse.jetty.websocket.javax.server.JavaxWebSocketConfiguration; -import org.eclipse.jetty.websocket.javax.server.JavaxWebSocketServletContainerInitializer; +import org.eclipse.jetty.websocket.javax.server.config.ContainerDefaultConfigurator; +import org.eclipse.jetty.websocket.javax.server.config.JavaxWebSocketConfiguration; +import org.eclipse.jetty.websocket.javax.server.config.JavaxWebSocketServletContainerInitializer; module org.eclipse.jetty.websocket.javax.server { - exports org.eclipse.jetty.websocket.javax.server; + exports org.eclipse.jetty.websocket.javax.server.config; requires jetty.servlet.api; requires jetty.websocket.api; diff --git a/jetty-websocket/javax-websocket-server/src/main/java/org/eclipse/jetty/websocket/javax/server/ContainerDefaultConfigurator.java b/jetty-websocket/javax-websocket-server/src/main/java/org/eclipse/jetty/websocket/javax/server/config/ContainerDefaultConfigurator.java similarity index 98% rename from jetty-websocket/javax-websocket-server/src/main/java/org/eclipse/jetty/websocket/javax/server/ContainerDefaultConfigurator.java rename to jetty-websocket/javax-websocket-server/src/main/java/org/eclipse/jetty/websocket/javax/server/config/ContainerDefaultConfigurator.java index b4acdeb8b01..9906438cc3f 100644 --- a/jetty-websocket/javax-websocket-server/src/main/java/org/eclipse/jetty/websocket/javax/server/ContainerDefaultConfigurator.java +++ b/jetty-websocket/javax-websocket-server/src/main/java/org/eclipse/jetty/websocket/javax/server/config/ContainerDefaultConfigurator.java @@ -16,7 +16,7 @@ // ======================================================================== // -package org.eclipse.jetty.websocket.javax.server; +package org.eclipse.jetty.websocket.javax.server.config; import java.util.List; import java.util.ServiceLoader; diff --git a/jetty-websocket/javax-websocket-server/src/main/java/org/eclipse/jetty/websocket/javax/server/JavaxWebSocketConfiguration.java b/jetty-websocket/javax-websocket-server/src/main/java/org/eclipse/jetty/websocket/javax/server/config/JavaxWebSocketConfiguration.java similarity index 89% rename from jetty-websocket/javax-websocket-server/src/main/java/org/eclipse/jetty/websocket/javax/server/JavaxWebSocketConfiguration.java rename to jetty-websocket/javax-websocket-server/src/main/java/org/eclipse/jetty/websocket/javax/server/config/JavaxWebSocketConfiguration.java index 57255fad3b2..d0baa67fb5b 100644 --- a/jetty-websocket/javax-websocket-server/src/main/java/org/eclipse/jetty/websocket/javax/server/JavaxWebSocketConfiguration.java +++ b/jetty-websocket/javax-websocket-server/src/main/java/org/eclipse/jetty/websocket/javax/server/config/JavaxWebSocketConfiguration.java @@ -16,7 +16,7 @@ // ======================================================================== // -package org.eclipse.jetty.websocket.javax.server; +package org.eclipse.jetty.websocket.javax.server.config; import org.eclipse.jetty.webapp.AbstractConfiguration; import org.eclipse.jetty.webapp.FragmentConfiguration; @@ -38,6 +38,7 @@ public class JavaxWebSocketConfiguration extends AbstractConfiguration addDependencies(WebXmlConfiguration.class, MetaInfConfiguration.class, WebInfConfiguration.class, FragmentConfiguration.class); addDependents("org.eclipse.jetty.annotations.AnnotationConfiguration", WebAppConfiguration.class.getName()); protectAndExpose("org.eclipse.jetty.websocket.servlet."); // For WebSocketUpgradeFilter - protectAndExpose("org.eclipse.jetty.websocket.javax."); // TODO Do we need all classes? + protectAndExpose("org.eclipse.jetty.websocket.javax.server.config."); + hide("org.eclipse.jetty.websocket.javax.server.internal"); } } diff --git a/jetty-websocket/javax-websocket-server/src/main/java/org/eclipse/jetty/websocket/javax/server/JavaxWebSocketServletContainerInitializer.java b/jetty-websocket/javax-websocket-server/src/main/java/org/eclipse/jetty/websocket/javax/server/config/JavaxWebSocketServletContainerInitializer.java similarity index 98% rename from jetty-websocket/javax-websocket-server/src/main/java/org/eclipse/jetty/websocket/javax/server/JavaxWebSocketServletContainerInitializer.java rename to jetty-websocket/javax-websocket-server/src/main/java/org/eclipse/jetty/websocket/javax/server/config/JavaxWebSocketServletContainerInitializer.java index 9261f8356be..0780290b912 100644 --- a/jetty-websocket/javax-websocket-server/src/main/java/org/eclipse/jetty/websocket/javax/server/JavaxWebSocketServletContainerInitializer.java +++ b/jetty-websocket/javax-websocket-server/src/main/java/org/eclipse/jetty/websocket/javax/server/config/JavaxWebSocketServletContainerInitializer.java @@ -16,7 +16,7 @@ // ======================================================================== // -package org.eclipse.jetty.websocket.javax.server; +package org.eclipse.jetty.websocket.javax.server.config; import java.util.HashSet; import java.util.Set; @@ -39,6 +39,7 @@ import org.eclipse.jetty.util.log.Log; import org.eclipse.jetty.util.log.Logger; import org.eclipse.jetty.util.thread.ThreadClassLoaderScope; import org.eclipse.jetty.websocket.core.WebSocketComponents; +import org.eclipse.jetty.websocket.javax.server.internal.JavaxWebSocketServerContainer; import org.eclipse.jetty.websocket.servlet.WebSocketMapping; import org.eclipse.jetty.websocket.servlet.WebSocketUpgradeFilter; diff --git a/jetty-websocket/javax-websocket-server/src/main/java/org/eclipse/jetty/websocket/javax/server/internal/AnnotatedServerEndpointConfig.java b/jetty-websocket/javax-websocket-server/src/main/java/org/eclipse/jetty/websocket/javax/server/internal/AnnotatedServerEndpointConfig.java index 277fa42daec..f3d03450cec 100644 --- a/jetty-websocket/javax-websocket-server/src/main/java/org/eclipse/jetty/websocket/javax/server/internal/AnnotatedServerEndpointConfig.java +++ b/jetty-websocket/javax-websocket-server/src/main/java/org/eclipse/jetty/websocket/javax/server/internal/AnnotatedServerEndpointConfig.java @@ -33,7 +33,7 @@ import javax.websocket.server.ServerEndpoint; import javax.websocket.server.ServerEndpointConfig; import org.eclipse.jetty.websocket.javax.common.JavaxWebSocketContainer; -import org.eclipse.jetty.websocket.javax.server.ContainerDefaultConfigurator; +import org.eclipse.jetty.websocket.javax.server.config.ContainerDefaultConfigurator; public class AnnotatedServerEndpointConfig implements ServerEndpointConfig { diff --git a/jetty-websocket/javax-websocket-server/src/main/java/org/eclipse/jetty/websocket/javax/server/JavaxWebSocketServerContainer.java b/jetty-websocket/javax-websocket-server/src/main/java/org/eclipse/jetty/websocket/javax/server/internal/JavaxWebSocketServerContainer.java similarity index 97% rename from jetty-websocket/javax-websocket-server/src/main/java/org/eclipse/jetty/websocket/javax/server/JavaxWebSocketServerContainer.java rename to jetty-websocket/javax-websocket-server/src/main/java/org/eclipse/jetty/websocket/javax/server/internal/JavaxWebSocketServerContainer.java index ffe0ae7bc6b..276c1015cb7 100644 --- a/jetty-websocket/javax-websocket-server/src/main/java/org/eclipse/jetty/websocket/javax/server/JavaxWebSocketServerContainer.java +++ b/jetty-websocket/javax-websocket-server/src/main/java/org/eclipse/jetty/websocket/javax/server/internal/JavaxWebSocketServerContainer.java @@ -16,7 +16,7 @@ // ======================================================================== // -package org.eclipse.jetty.websocket.javax.server; +package org.eclipse.jetty.websocket.javax.server.internal; import java.util.ArrayList; import java.util.List; @@ -41,9 +41,7 @@ import org.eclipse.jetty.websocket.core.WebSocketComponents; import org.eclipse.jetty.websocket.core.WebSocketException; import org.eclipse.jetty.websocket.core.client.WebSocketCoreClient; import org.eclipse.jetty.websocket.javax.client.JavaxWebSocketClientContainer; -import org.eclipse.jetty.websocket.javax.server.internal.AnnotatedServerEndpointConfig; -import org.eclipse.jetty.websocket.javax.server.internal.JavaxWebSocketCreator; -import org.eclipse.jetty.websocket.javax.server.internal.UndefinedServerEndpointConfig; +import org.eclipse.jetty.websocket.javax.server.config.JavaxWebSocketServletContainerInitializer; import org.eclipse.jetty.websocket.servlet.WebSocketMapping; @ManagedObject("JSR356 Server Container") diff --git a/jetty-websocket/javax-websocket-server/src/main/java/org/eclipse/jetty/websocket/javax/server/JavaxWebSocketServerFrameHandlerFactory.java b/jetty-websocket/javax-websocket-server/src/main/java/org/eclipse/jetty/websocket/javax/server/internal/JavaxWebSocketServerFrameHandlerFactory.java similarity index 92% rename from jetty-websocket/javax-websocket-server/src/main/java/org/eclipse/jetty/websocket/javax/server/JavaxWebSocketServerFrameHandlerFactory.java rename to jetty-websocket/javax-websocket-server/src/main/java/org/eclipse/jetty/websocket/javax/server/internal/JavaxWebSocketServerFrameHandlerFactory.java index 8a5bdee8907..b16b5b2af02 100644 --- a/jetty-websocket/javax-websocket-server/src/main/java/org/eclipse/jetty/websocket/javax/server/JavaxWebSocketServerFrameHandlerFactory.java +++ b/jetty-websocket/javax-websocket-server/src/main/java/org/eclipse/jetty/websocket/javax/server/internal/JavaxWebSocketServerFrameHandlerFactory.java @@ -16,7 +16,7 @@ // ======================================================================== // -package org.eclipse.jetty.websocket.javax.server; +package org.eclipse.jetty.websocket.javax.server.internal; import javax.websocket.Endpoint; import javax.websocket.EndpointConfig; @@ -27,8 +27,6 @@ import org.eclipse.jetty.websocket.core.FrameHandler; import org.eclipse.jetty.websocket.javax.common.JavaxWebSocketContainer; import org.eclipse.jetty.websocket.javax.common.JavaxWebSocketFrameHandlerFactory; import org.eclipse.jetty.websocket.javax.common.JavaxWebSocketFrameHandlerMetadata; -import org.eclipse.jetty.websocket.javax.server.internal.DelegatedJavaxServletUpgradeRequest; -import org.eclipse.jetty.websocket.javax.server.internal.PathParamIdentifier; import org.eclipse.jetty.websocket.servlet.FrameHandlerFactory; import org.eclipse.jetty.websocket.servlet.ServletUpgradeRequest; import org.eclipse.jetty.websocket.servlet.ServletUpgradeResponse; diff --git a/jetty-websocket/javax-websocket-server/src/main/java/org/eclipse/jetty/websocket/javax/server/internal/UndefinedServerEndpointConfig.java b/jetty-websocket/javax-websocket-server/src/main/java/org/eclipse/jetty/websocket/javax/server/internal/UndefinedServerEndpointConfig.java index 8fdaf945db5..a5361a48d6a 100644 --- a/jetty-websocket/javax-websocket-server/src/main/java/org/eclipse/jetty/websocket/javax/server/internal/UndefinedServerEndpointConfig.java +++ b/jetty-websocket/javax-websocket-server/src/main/java/org/eclipse/jetty/websocket/javax/server/internal/UndefinedServerEndpointConfig.java @@ -27,7 +27,7 @@ import javax.websocket.Encoder; import javax.websocket.Extension; import javax.websocket.server.ServerEndpointConfig; -import org.eclipse.jetty.websocket.javax.server.ContainerDefaultConfigurator; +import org.eclipse.jetty.websocket.javax.server.config.ContainerDefaultConfigurator; public class UndefinedServerEndpointConfig implements ServerEndpointConfig { diff --git a/jetty-websocket/javax-websocket-server/src/main/resources/META-INF/services/javax.servlet.ServletContainerInitializer b/jetty-websocket/javax-websocket-server/src/main/resources/META-INF/services/javax.servlet.ServletContainerInitializer index 86c5fef3534..68d8b37077c 100644 --- a/jetty-websocket/javax-websocket-server/src/main/resources/META-INF/services/javax.servlet.ServletContainerInitializer +++ b/jetty-websocket/javax-websocket-server/src/main/resources/META-INF/services/javax.servlet.ServletContainerInitializer @@ -1 +1 @@ -org.eclipse.jetty.websocket.javax.server.JavaxWebSocketServletContainerInitializer \ No newline at end of file +org.eclipse.jetty.websocket.javax.server.config.JavaxWebSocketServletContainerInitializer \ No newline at end of file diff --git a/jetty-websocket/javax-websocket-server/src/main/resources/META-INF/services/javax.websocket.server.ServerEndpointConfig$Configurator b/jetty-websocket/javax-websocket-server/src/main/resources/META-INF/services/javax.websocket.server.ServerEndpointConfig$Configurator index b925d25755c..e9f7fc540a4 100644 --- a/jetty-websocket/javax-websocket-server/src/main/resources/META-INF/services/javax.websocket.server.ServerEndpointConfig$Configurator +++ b/jetty-websocket/javax-websocket-server/src/main/resources/META-INF/services/javax.websocket.server.ServerEndpointConfig$Configurator @@ -1 +1 @@ -org.eclipse.jetty.websocket.javax.server.ContainerDefaultConfigurator \ No newline at end of file +org.eclipse.jetty.websocket.javax.server.config.ContainerDefaultConfigurator \ No newline at end of file diff --git a/jetty-websocket/javax-websocket-server/src/main/resources/META-INF/services/org.eclipse.jetty.webapp.Configuration b/jetty-websocket/javax-websocket-server/src/main/resources/META-INF/services/org.eclipse.jetty.webapp.Configuration index 280be7ed694..9c5a60b0447 100644 --- a/jetty-websocket/javax-websocket-server/src/main/resources/META-INF/services/org.eclipse.jetty.webapp.Configuration +++ b/jetty-websocket/javax-websocket-server/src/main/resources/META-INF/services/org.eclipse.jetty.webapp.Configuration @@ -1 +1 @@ -org.eclipse.jetty.websocket.javax.server.JavaxWebSocketConfiguration \ No newline at end of file +org.eclipse.jetty.websocket.javax.server.config.JavaxWebSocketConfiguration \ No newline at end of file diff --git a/jetty-websocket/javax-websocket-server/src/test/java/org/eclipse/jetty/websocket/javax/server/PathParamTest.java b/jetty-websocket/javax-websocket-server/src/test/java/org/eclipse/jetty/websocket/javax/server/PathParamTest.java deleted file mode 100644 index 796ee693ca6..00000000000 --- a/jetty-websocket/javax-websocket-server/src/test/java/org/eclipse/jetty/websocket/javax/server/PathParamTest.java +++ /dev/null @@ -1,61 +0,0 @@ -// -// ======================================================================== -// Copyright (c) 1995-2019 Mort Bay Consulting Pty. Ltd. -// ------------------------------------------------------------------------ -// All rights reserved. This program and the accompanying materials -// are made available under the terms of the Eclipse Public License v1.0 -// and Apache License v2.0 which accompanies this distribution. -// -// The Eclipse Public License is available at -// http://www.eclipse.org/legal/epl-v10.html -// -// The Apache License v2.0 is available at -// http://www.opensource.org/licenses/apache2.0.php -// -// You may elect to redistribute this code under either of these licenses. -// ======================================================================== -// - -package org.eclipse.jetty.websocket.javax.server; - -import javax.websocket.DeploymentException; -import javax.websocket.OnMessage; -import javax.websocket.server.PathParam; -import javax.websocket.server.ServerEndpoint; - -import org.junit.jupiter.api.AfterEach; -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.Test; - -public class PathParamTest -{ - private JavaxWebSocketServerContainer container; - - @BeforeEach - public void startContainer() throws Exception - { - container = new DummyServerContainer(); - container.start(); - } - - @AfterEach - public void stopContainer() throws Exception - { - container.stop(); - } - - @ServerEndpoint("/pathparam/basic/{name}") - public static class BasicPathParamSocket - { - @OnMessage - public void onMessage(String message, @PathParam("name") String name) - { - } - } - - @Test - public void testBasicPathParamSocket() throws DeploymentException - { - container.addEndpoint(BasicPathParamSocket.class); - } -} diff --git a/jetty-websocket/javax-websocket-server/src/test/java/org/eclipse/jetty/websocket/javax/server/browser/JsrBrowserDebugTool.java b/jetty-websocket/javax-websocket-server/src/test/java/org/eclipse/jetty/websocket/javax/server/browser/JsrBrowserDebugTool.java index ccb71039385..be0468ed9b3 100644 --- a/jetty-websocket/javax-websocket-server/src/test/java/org/eclipse/jetty/websocket/javax/server/browser/JsrBrowserDebugTool.java +++ b/jetty-websocket/javax-websocket-server/src/test/java/org/eclipse/jetty/websocket/javax/server/browser/JsrBrowserDebugTool.java @@ -33,7 +33,7 @@ import org.eclipse.jetty.servlet.ServletHolder; import org.eclipse.jetty.util.log.Log; import org.eclipse.jetty.util.log.Logger; import org.eclipse.jetty.util.resource.Resource; -import org.eclipse.jetty.websocket.javax.server.JavaxWebSocketServletContainerInitializer; +import org.eclipse.jetty.websocket.javax.server.config.JavaxWebSocketServletContainerInitializer; /** * Tool to help debug JSR based websocket circumstances reported around browsers. diff --git a/jetty-websocket/javax-websocket-server/src/test/java/org/eclipse/jetty/websocket/javax/server/WebSocketServerExamplesTest.java b/jetty-websocket/javax-websocket-server/src/test/java/org/eclipse/jetty/websocket/javax/server/examples/WebSocketServerExamplesTest.java similarity index 90% rename from jetty-websocket/javax-websocket-server/src/test/java/org/eclipse/jetty/websocket/javax/server/WebSocketServerExamplesTest.java rename to jetty-websocket/javax-websocket-server/src/test/java/org/eclipse/jetty/websocket/javax/server/examples/WebSocketServerExamplesTest.java index 56438ccfb47..dffb3e5179c 100644 --- a/jetty-websocket/javax-websocket-server/src/test/java/org/eclipse/jetty/websocket/javax/server/WebSocketServerExamplesTest.java +++ b/jetty-websocket/javax-websocket-server/src/test/java/org/eclipse/jetty/websocket/javax/server/examples/WebSocketServerExamplesTest.java @@ -16,7 +16,7 @@ // ======================================================================== // -package org.eclipse.jetty.websocket.javax.server; +package org.eclipse.jetty.websocket.javax.server.examples; import java.net.URI; import java.util.concurrent.ArrayBlockingQueue; @@ -45,9 +45,7 @@ import org.eclipse.jetty.util.log.Log; import org.eclipse.jetty.util.log.Logger; import org.eclipse.jetty.util.security.Constraint; import org.eclipse.jetty.util.security.Credential; -import org.eclipse.jetty.websocket.javax.server.examples.GetHttpSessionSocket; -import org.eclipse.jetty.websocket.javax.server.examples.MyAuthedSocket; -import org.eclipse.jetty.websocket.javax.server.examples.StreamingEchoSocket; +import org.eclipse.jetty.websocket.javax.server.config.JavaxWebSocketServletContainerInitializer; import org.junit.jupiter.api.AfterAll; import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.Test; @@ -93,15 +91,15 @@ public class WebSocketServerExamplesTest } static Server _server; - static ServerConnector connector; + static ServerConnector _connector; static ServletContextHandler _context; @BeforeAll public static void setup() throws Exception { _server = new Server(); - connector = new ServerConnector(_server); - _server.addConnector(connector); + _connector = new ServerConnector(_server); + _server.addConnector(_connector); _context = new ServletContextHandler(ServletContextHandler.SESSIONS); _context.setContextPath("/"); @@ -116,7 +114,7 @@ public class WebSocketServerExamplesTest }); _server.start(); - System.setProperty("org.eclipse.jetty.websocket.port", Integer.toString(connector.getLocalPort())); + System.setProperty("org.eclipse.jetty.websocket.port", Integer.toString(_connector.getLocalPort())); } @AfterAll @@ -155,7 +153,7 @@ public class WebSocketServerExamplesTest public void testMyAuthedSocket() throws Exception { //HttpClient is configured for BasicAuthentication with the XmlHttpClientProvider - URI uri = URI.create("ws://localhost:" + connector.getLocalPort() + "/secured/socket"); + URI uri = URI.create("ws://localhost:" + _connector.getLocalPort() + "/secured/socket"); WebSocketContainer clientContainer = ContainerProvider.getWebSocketContainer(); ClientSocket clientEndpoint = new ClientSocket(); @@ -172,7 +170,7 @@ public class WebSocketServerExamplesTest @Test public void testStreamingEchoSocket() throws Exception { - URI uri = URI.create("ws://localhost:" + connector.getLocalPort() + "/echo"); + URI uri = URI.create("ws://localhost:" + _connector.getLocalPort() + "/echo"); WebSocketContainer clientContainer = ContainerProvider.getWebSocketContainer(); ClientSocket clientEndpoint = new ClientSocket(); @@ -189,7 +187,7 @@ public class WebSocketServerExamplesTest @Test public void testGetHttpSessionSocket() throws Exception { - URI uri = URI.create("ws://localhost:" + connector.getLocalPort() + "/example"); + URI uri = URI.create("ws://localhost:" + _connector.getLocalPort() + "/example"); WebSocketContainer clientContainer = ContainerProvider.getWebSocketContainer(); ClientSocket clientEndpoint = new ClientSocket(); diff --git a/jetty-websocket/javax-websocket-tests/src/main/java/org/eclipse/jetty/websocket/javax/tests/LocalServer.java b/jetty-websocket/javax-websocket-tests/src/main/java/org/eclipse/jetty/websocket/javax/tests/LocalServer.java index 5a638ab8cd0..9ed2a87aa3c 100644 --- a/jetty-websocket/javax-websocket-tests/src/main/java/org/eclipse/jetty/websocket/javax/tests/LocalServer.java +++ b/jetty-websocket/javax-websocket-tests/src/main/java/org/eclipse/jetty/websocket/javax/tests/LocalServer.java @@ -50,9 +50,9 @@ import org.eclipse.jetty.util.thread.QueuedThreadPool; import org.eclipse.jetty.websocket.core.internal.Parser; import org.eclipse.jetty.websocket.javax.common.JavaxWebSocketSession; import org.eclipse.jetty.websocket.javax.common.JavaxWebSocketSessionListener; -import org.eclipse.jetty.websocket.javax.server.JavaxWebSocketServerContainer; -import org.eclipse.jetty.websocket.javax.server.JavaxWebSocketServerFrameHandlerFactory; -import org.eclipse.jetty.websocket.javax.server.JavaxWebSocketServletContainerInitializer; +import org.eclipse.jetty.websocket.javax.server.config.JavaxWebSocketServletContainerInitializer; +import org.eclipse.jetty.websocket.javax.server.internal.JavaxWebSocketServerContainer; +import org.eclipse.jetty.websocket.javax.server.internal.JavaxWebSocketServerFrameHandlerFactory; import org.eclipse.jetty.websocket.servlet.FrameHandlerFactory; import org.eclipse.jetty.websocket.servlet.WebSocketCreator; import org.eclipse.jetty.websocket.servlet.WebSocketServlet; diff --git a/jetty-websocket/javax-websocket-tests/src/main/java/org/eclipse/jetty/websocket/javax/tests/WSServer.java b/jetty-websocket/javax-websocket-tests/src/main/java/org/eclipse/jetty/websocket/javax/tests/WSServer.java index 817fcc2a7ed..52beae928fb 100644 --- a/jetty-websocket/javax-websocket-tests/src/main/java/org/eclipse/jetty/websocket/javax/tests/WSServer.java +++ b/jetty-websocket/javax-websocket-tests/src/main/java/org/eclipse/jetty/websocket/javax/tests/WSServer.java @@ -39,7 +39,7 @@ import org.eclipse.jetty.util.log.Log; import org.eclipse.jetty.util.log.Logger; import org.eclipse.jetty.util.resource.PathResource; import org.eclipse.jetty.webapp.WebAppContext; -import org.eclipse.jetty.websocket.javax.server.JavaxWebSocketConfiguration; +import org.eclipse.jetty.websocket.javax.server.config.JavaxWebSocketConfiguration; import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.Matchers.is; diff --git a/jetty-websocket/javax-websocket-tests/src/test/java/com/acme/websocket/BasicEchoEndpoint.java b/jetty-websocket/javax-websocket-tests/src/test/java/com/acme/websocket/BasicEchoEndpoint.java new file mode 100644 index 00000000000..81ac929eb70 --- /dev/null +++ b/jetty-websocket/javax-websocket-tests/src/test/java/com/acme/websocket/BasicEchoEndpoint.java @@ -0,0 +1,46 @@ +// +// ======================================================================== +// Copyright (c) 1995-2019 Mort Bay Consulting Pty. Ltd. +// ------------------------------------------------------------------------ +// All rights reserved. This program and the accompanying materials +// are made available under the terms of the Eclipse Public License v1.0 +// and Apache License v2.0 which accompanies this distribution. +// +// The Eclipse Public License is available at +// http://www.eclipse.org/legal/epl-v10.html +// +// The Apache License v2.0 is available at +// http://www.opensource.org/licenses/apache2.0.php +// +// You may elect to redistribute this code under either of these licenses. +// ======================================================================== +// + +package com.acme.websocket; + +import javax.websocket.Endpoint; +import javax.websocket.EndpointConfig; +import javax.websocket.MessageHandler; +import javax.websocket.OnOpen; +import javax.websocket.Session; +import javax.websocket.server.ServerEndpoint; + +@ServerEndpoint("/echo") +public class BasicEchoEndpoint extends Endpoint implements MessageHandler.Whole +{ + private Session session; + + @Override + public void onMessage(String msg) + { + // reply with echo + session.getAsyncRemote().sendText(msg); + } + + @OnOpen + public void onOpen(Session session, EndpointConfig config) + { + this.session = session; + session.addMessageHandler(this); + } +} diff --git a/jetty-websocket/javax-websocket-tests/src/test/java/com/acme/websocket/BasicEchoEndpointConfigContextListener.java b/jetty-websocket/javax-websocket-tests/src/test/java/com/acme/websocket/BasicEchoEndpointConfigContextListener.java new file mode 100644 index 00000000000..4b8ddb988a8 --- /dev/null +++ b/jetty-websocket/javax-websocket-tests/src/test/java/com/acme/websocket/BasicEchoEndpointConfigContextListener.java @@ -0,0 +1,54 @@ +// +// ======================================================================== +// Copyright (c) 1995-2019 Mort Bay Consulting Pty. Ltd. +// ------------------------------------------------------------------------ +// All rights reserved. This program and the accompanying materials +// are made available under the terms of the Eclipse Public License v1.0 +// and Apache License v2.0 which accompanies this distribution. +// +// The Eclipse Public License is available at +// http://www.eclipse.org/legal/epl-v10.html +// +// The Apache License v2.0 is available at +// http://www.opensource.org/licenses/apache2.0.php +// +// You may elect to redistribute this code under either of these licenses. +// ======================================================================== +// + +package com.acme.websocket; + +import javax.servlet.ServletContextEvent; +import javax.servlet.ServletContextListener; +import javax.websocket.DeploymentException; +import javax.websocket.server.ServerEndpointConfig; + +public class BasicEchoEndpointConfigContextListener implements ServletContextListener +{ + @Override + public void contextDestroyed(ServletContextEvent sce) + { + /* do nothing */ + } + + @Override + public void contextInitialized(ServletContextEvent sce) + { + javax.websocket.server.ServerContainer container = (javax.websocket.server.ServerContainer)sce.getServletContext() + .getAttribute(javax.websocket.server.ServerContainer.class.getName()); + if (container == null) + throw new IllegalStateException("No Websocket ServerContainer in " + sce.getServletContext()); + + // Build up a configuration with a specific path + String path = "/echo"; + ServerEndpointConfig.Builder builder = ServerEndpointConfig.Builder.create(BasicEchoEndpoint.class, path); + try + { + container.addEndpoint(builder.build()); + } + catch (DeploymentException e) + { + throw new RuntimeException("Unable to add endpoint via config file", e); + } + } +} diff --git a/jetty-websocket/javax-websocket-tests/src/test/java/com/acme/websocket/IdleTimeoutContextListener.java b/jetty-websocket/javax-websocket-tests/src/test/java/com/acme/websocket/IdleTimeoutContextListener.java new file mode 100644 index 00000000000..e58ba1b9726 --- /dev/null +++ b/jetty-websocket/javax-websocket-tests/src/test/java/com/acme/websocket/IdleTimeoutContextListener.java @@ -0,0 +1,54 @@ +// +// ======================================================================== +// Copyright (c) 1995-2019 Mort Bay Consulting Pty. Ltd. +// ------------------------------------------------------------------------ +// All rights reserved. This program and the accompanying materials +// are made available under the terms of the Eclipse Public License v1.0 +// and Apache License v2.0 which accompanies this distribution. +// +// The Eclipse Public License is available at +// http://www.eclipse.org/legal/epl-v10.html +// +// The Apache License v2.0 is available at +// http://www.opensource.org/licenses/apache2.0.php +// +// You may elect to redistribute this code under either of these licenses. +// ======================================================================== +// + +package com.acme.websocket; + +import javax.servlet.ServletContextEvent; +import javax.servlet.ServletContextListener; +import javax.websocket.DeploymentException; +import javax.websocket.server.ServerContainer; +import javax.websocket.server.ServerEndpointConfig; + +/** + * Example of adding a server WebSocket (extending {@link javax.websocket.Endpoint}) programmatically via config + */ +public class IdleTimeoutContextListener implements ServletContextListener +{ + @Override + public void contextDestroyed(ServletContextEvent sce) + { + /* do nothing */ + } + + @Override + public void contextInitialized(ServletContextEvent sce) + { + ServerContainer container = (ServerContainer)sce.getServletContext().getAttribute(ServerContainer.class.getName()); + // Build up a configuration with a specific path + String path = "/idle-onopen-endpoint"; + ServerEndpointConfig.Builder builder = ServerEndpointConfig.Builder.create(OnOpenIdleTimeoutEndpoint.class, path); + try + { + container.addEndpoint(builder.build()); + } + catch (DeploymentException e) + { + throw new RuntimeException("Unable to add endpoint via config file", e); + } + } +} diff --git a/jetty-websocket/javax-websocket-tests/src/test/java/com/acme/websocket/IdleTimeoutOnOpenEndpoint.java b/jetty-websocket/javax-websocket-tests/src/test/java/com/acme/websocket/IdleTimeoutOnOpenEndpoint.java new file mode 100644 index 00000000000..8ad113ec775 --- /dev/null +++ b/jetty-websocket/javax-websocket-tests/src/test/java/com/acme/websocket/IdleTimeoutOnOpenEndpoint.java @@ -0,0 +1,44 @@ +// +// ======================================================================== +// Copyright (c) 1995-2019 Mort Bay Consulting Pty. Ltd. +// ------------------------------------------------------------------------ +// All rights reserved. This program and the accompanying materials +// are made available under the terms of the Eclipse Public License v1.0 +// and Apache License v2.0 which accompanies this distribution. +// +// The Eclipse Public License is available at +// http://www.eclipse.org/legal/epl-v10.html +// +// The Apache License v2.0 is available at +// http://www.opensource.org/licenses/apache2.0.php +// +// You may elect to redistribute this code under either of these licenses. +// ======================================================================== +// + +package com.acme.websocket; + +import javax.websocket.Endpoint; +import javax.websocket.EndpointConfig; +import javax.websocket.MessageHandler; +import javax.websocket.Session; + +public class IdleTimeoutOnOpenEndpoint extends Endpoint implements MessageHandler.Whole +{ + private Session session; + + @Override + public void onOpen(Session session, EndpointConfig config) + { + this.session = session; + session.addMessageHandler(this); + session.setMaxIdleTimeout(500); + } + + @Override + public void onMessage(String message) + { + // echo message back (this is an indication of timeout failure) + session.getAsyncRemote().sendText(message); + } +} diff --git a/jetty-websocket/javax-websocket-tests/src/test/java/com/acme/websocket/IdleTimeoutOnOpenSocket.java b/jetty-websocket/javax-websocket-tests/src/test/java/com/acme/websocket/IdleTimeoutOnOpenSocket.java new file mode 100644 index 00000000000..3278e6594db --- /dev/null +++ b/jetty-websocket/javax-websocket-tests/src/test/java/com/acme/websocket/IdleTimeoutOnOpenSocket.java @@ -0,0 +1,50 @@ +// +// ======================================================================== +// Copyright (c) 1995-2019 Mort Bay Consulting Pty. Ltd. +// ------------------------------------------------------------------------ +// All rights reserved. This program and the accompanying materials +// are made available under the terms of the Eclipse Public License v1.0 +// and Apache License v2.0 which accompanies this distribution. +// +// The Eclipse Public License is available at +// http://www.eclipse.org/legal/epl-v10.html +// +// The Apache License v2.0 is available at +// http://www.opensource.org/licenses/apache2.0.php +// +// You may elect to redistribute this code under either of these licenses. +// ======================================================================== +// + +package com.acme.websocket; + +import javax.websocket.OnError; +import javax.websocket.OnMessage; +import javax.websocket.OnOpen; +import javax.websocket.Session; +import javax.websocket.server.ServerEndpoint; + +import org.eclipse.jetty.websocket.core.WebSocketTimeoutException; + +@ServerEndpoint(value = "/idle-onopen-socket") +public class IdleTimeoutOnOpenSocket +{ + @OnOpen + public void onOpen(Session session) + { + session.setMaxIdleTimeout(500); + } + + @OnMessage + public String onMessage(String msg) + { + return msg; + } + + @OnError + public void onError(Throwable cause) + { + if (!(cause instanceof WebSocketTimeoutException)) + throw new RuntimeException(cause); + } +} diff --git a/jetty-websocket/javax-websocket-tests/src/test/java/com/acme/websocket/LargeEchoContextListener.java b/jetty-websocket/javax-websocket-tests/src/test/java/com/acme/websocket/LargeEchoContextListener.java new file mode 100644 index 00000000000..813caf986df --- /dev/null +++ b/jetty-websocket/javax-websocket-tests/src/test/java/com/acme/websocket/LargeEchoContextListener.java @@ -0,0 +1,39 @@ +// +// ======================================================================== +// Copyright (c) 1995-2019 Mort Bay Consulting Pty. Ltd. +// ------------------------------------------------------------------------ +// All rights reserved. This program and the accompanying materials +// are made available under the terms of the Eclipse Public License v1.0 +// and Apache License v2.0 which accompanies this distribution. +// +// The Eclipse Public License is available at +// http://www.eclipse.org/legal/epl-v10.html +// +// The Apache License v2.0 is available at +// http://www.opensource.org/licenses/apache2.0.php +// +// You may elect to redistribute this code under either of these licenses. +// ======================================================================== +// + +package com.acme.websocket; + +import javax.servlet.ServletContextEvent; +import javax.servlet.ServletContextListener; +import javax.websocket.server.ServerContainer; + +public class LargeEchoContextListener implements ServletContextListener +{ + @Override + public void contextDestroyed(ServletContextEvent sce) + { + /* do nothing */ + } + + @Override + public void contextInitialized(ServletContextEvent sce) + { + ServerContainer container = (ServerContainer)sce.getServletContext().getAttribute(ServerContainer.class.getName()); + container.setDefaultMaxTextMessageBufferSize(128 * 1024); + } +} diff --git a/jetty-websocket/javax-websocket-server/src/test/java/org/eclipse/jetty/websocket/javax/server/DummyServerContainer.java b/jetty-websocket/javax-websocket-tests/src/test/java/com/acme/websocket/LargeEchoDefaultSocket.java similarity index 70% rename from jetty-websocket/javax-websocket-server/src/test/java/org/eclipse/jetty/websocket/javax/server/DummyServerContainer.java rename to jetty-websocket/javax-websocket-tests/src/test/java/com/acme/websocket/LargeEchoDefaultSocket.java index c39c5169bea..f5b9ddbfb9b 100644 --- a/jetty-websocket/javax-websocket-server/src/test/java/org/eclipse/jetty/websocket/javax/server/DummyServerContainer.java +++ b/jetty-websocket/javax-websocket-tests/src/test/java/com/acme/websocket/LargeEchoDefaultSocket.java @@ -16,14 +16,18 @@ // ======================================================================== // -package org.eclipse.jetty.websocket.javax.server; +package com.acme.websocket; -import org.eclipse.jetty.websocket.servlet.WebSocketMapping; +import javax.websocket.OnMessage; +import javax.websocket.server.ServerEndpoint; -public class DummyServerContainer extends JavaxWebSocketServerContainer +@ServerEndpoint(value = "/echo/large") +public class LargeEchoDefaultSocket { - public DummyServerContainer() + @OnMessage + public void echo(javax.websocket.Session session, String msg) { - super(new WebSocketMapping()); + // reply with echo + session.getAsyncRemote().sendText(msg); } } diff --git a/jetty-websocket/javax-websocket-tests/src/test/java/com/acme/websocket/OnOpenIdleTimeoutEndpoint.java b/jetty-websocket/javax-websocket-tests/src/test/java/com/acme/websocket/OnOpenIdleTimeoutEndpoint.java new file mode 100644 index 00000000000..71c305fa353 --- /dev/null +++ b/jetty-websocket/javax-websocket-tests/src/test/java/com/acme/websocket/OnOpenIdleTimeoutEndpoint.java @@ -0,0 +1,44 @@ +// +// ======================================================================== +// Copyright (c) 1995-2019 Mort Bay Consulting Pty. Ltd. +// ------------------------------------------------------------------------ +// All rights reserved. This program and the accompanying materials +// are made available under the terms of the Eclipse Public License v1.0 +// and Apache License v2.0 which accompanies this distribution. +// +// The Eclipse Public License is available at +// http://www.eclipse.org/legal/epl-v10.html +// +// The Apache License v2.0 is available at +// http://www.opensource.org/licenses/apache2.0.php +// +// You may elect to redistribute this code under either of these licenses. +// ======================================================================== +// + +package com.acme.websocket; + +import javax.websocket.Endpoint; +import javax.websocket.EndpointConfig; +import javax.websocket.MessageHandler; +import javax.websocket.Session; + +public class OnOpenIdleTimeoutEndpoint extends Endpoint implements MessageHandler.Whole +{ + private Session session; + + @Override + public void onOpen(Session session, EndpointConfig config) + { + this.session = session; + session.addMessageHandler(this); + session.setMaxIdleTimeout(500); + } + + @Override + public void onMessage(String message) + { + // echo message back (this is an indication of timeout failure) + session.getAsyncRemote().sendText(message); + } +} diff --git a/jetty-websocket/javax-websocket-tests/src/test/java/com/acme/websocket/PongContextListener.java b/jetty-websocket/javax-websocket-tests/src/test/java/com/acme/websocket/PongContextListener.java new file mode 100644 index 00000000000..68e47ecd086 --- /dev/null +++ b/jetty-websocket/javax-websocket-tests/src/test/java/com/acme/websocket/PongContextListener.java @@ -0,0 +1,61 @@ +// +// ======================================================================== +// Copyright (c) 1995-2019 Mort Bay Consulting Pty. Ltd. +// ------------------------------------------------------------------------ +// All rights reserved. This program and the accompanying materials +// are made available under the terms of the Eclipse Public License v1.0 +// and Apache License v2.0 which accompanies this distribution. +// +// The Eclipse Public License is available at +// http://www.eclipse.org/legal/epl-v10.html +// +// The Apache License v2.0 is available at +// http://www.opensource.org/licenses/apache2.0.php +// +// You may elect to redistribute this code under either of these licenses. +// ======================================================================== +// + +package com.acme.websocket; + +import javax.servlet.ServletContextEvent; +import javax.servlet.ServletContextListener; +import javax.websocket.DeploymentException; +import javax.websocket.HandshakeResponse; +import javax.websocket.server.HandshakeRequest; +import javax.websocket.server.ServerContainer; +import javax.websocket.server.ServerEndpointConfig; + +public class PongContextListener implements ServletContextListener +{ + public static class Config extends ServerEndpointConfig.Configurator + { + @Override + public void modifyHandshake(ServerEndpointConfig sec, HandshakeRequest request, HandshakeResponse response) + { + sec.getUserProperties().put("path", sec.getPath()); + super.modifyHandshake(sec, request, response); + } + } + + @Override + public void contextDestroyed(ServletContextEvent sce) + { + /* do nothing */ + } + + @Override + public void contextInitialized(ServletContextEvent sce) + { + ServerContainer container = (ServerContainer)sce.getServletContext().getAttribute(ServerContainer.class.getName()); + try + { + ServerEndpointConfig.Configurator config = new Config(); + container.addEndpoint(ServerEndpointConfig.Builder.create(PongMessageEndpoint.class, "/pong").configurator(config).build()); + } + catch (DeploymentException e) + { + throw new RuntimeException("Unable to add endpoint directly", e); + } + } +} diff --git a/jetty-websocket/javax-websocket-tests/src/test/java/com/acme/websocket/PongMessageEndpoint.java b/jetty-websocket/javax-websocket-tests/src/test/java/com/acme/websocket/PongMessageEndpoint.java new file mode 100644 index 00000000000..b7253c13fdf --- /dev/null +++ b/jetty-websocket/javax-websocket-tests/src/test/java/com/acme/websocket/PongMessageEndpoint.java @@ -0,0 +1,66 @@ +// +// ======================================================================== +// Copyright (c) 1995-2019 Mort Bay Consulting Pty. Ltd. +// ------------------------------------------------------------------------ +// All rights reserved. This program and the accompanying materials +// are made available under the terms of the Eclipse Public License v1.0 +// and Apache License v2.0 which accompanies this distribution. +// +// The Eclipse Public License is available at +// http://www.eclipse.org/legal/epl-v10.html +// +// The Apache License v2.0 is available at +// http://www.opensource.org/licenses/apache2.0.php +// +// You may elect to redistribute this code under either of these licenses. +// ======================================================================== +// + +package com.acme.websocket; + +import java.nio.ByteBuffer; +import java.nio.charset.StandardCharsets; +import java.util.Arrays; +import javax.websocket.Endpoint; +import javax.websocket.EndpointConfig; +import javax.websocket.MessageHandler; +import javax.websocket.PongMessage; +import javax.websocket.Session; + +public class PongMessageEndpoint extends Endpoint implements MessageHandler.Whole +{ + private String path = "?"; + private Session session; + + @Override + public void onOpen(Session session, EndpointConfig config) + { + this.session = session; + this.session.addMessageHandler(this); + this.path = (String)config.getUserProperties().get("path"); + } + + @Override + public void onMessage(PongMessage pong) + { + byte[] buf = toArray(pong.getApplicationData()); + String message = new String(buf, StandardCharsets.UTF_8); + this.session.getAsyncRemote().sendText("PongMessageEndpoint.onMessage(PongMessage):[" + path + "]:" + message); + } + + public static byte[] toArray(ByteBuffer buffer) + { + if (buffer.hasArray()) + { + byte[] array = buffer.array(); + int from = buffer.arrayOffset() + buffer.position(); + return Arrays.copyOfRange(array, from, from + buffer.remaining()); + } + else + { + byte[] to = new byte[buffer.remaining()]; + buffer.slice().get(to); + return to; + } + } +} diff --git a/jetty-websocket/javax-websocket-tests/src/test/java/com/acme/websocket/PongSocket.java b/jetty-websocket/javax-websocket-tests/src/test/java/com/acme/websocket/PongSocket.java new file mode 100644 index 00000000000..5a0385d5ddb --- /dev/null +++ b/jetty-websocket/javax-websocket-tests/src/test/java/com/acme/websocket/PongSocket.java @@ -0,0 +1,67 @@ +// +// ======================================================================== +// Copyright (c) 1995-2019 Mort Bay Consulting Pty. Ltd. +// ------------------------------------------------------------------------ +// All rights reserved. This program and the accompanying materials +// are made available under the terms of the Eclipse Public License v1.0 +// and Apache License v2.0 which accompanies this distribution. +// +// The Eclipse Public License is available at +// http://www.eclipse.org/legal/epl-v10.html +// +// The Apache License v2.0 is available at +// http://www.opensource.org/licenses/apache2.0.php +// +// You may elect to redistribute this code under either of these licenses. +// ======================================================================== +// + +package com.acme.websocket; + +import java.nio.ByteBuffer; +import java.nio.charset.StandardCharsets; +import java.util.Arrays; +import javax.websocket.EndpointConfig; +import javax.websocket.OnMessage; +import javax.websocket.OnOpen; +import javax.websocket.PongMessage; +import javax.websocket.Session; +import javax.websocket.server.ServerEndpoint; + +@ServerEndpoint(value = "/pong-socket", configurator = PongContextListener.Config.class) +public class PongSocket +{ + private String path = "?"; + private Session session; + + @OnOpen + public void onOpen(Session session, EndpointConfig config) + { + this.session = session; + this.path = (String)config.getUserProperties().get("path"); + } + + @OnMessage + public void onPong(PongMessage pong) + { + byte[] buf = toArray(pong.getApplicationData()); + String message = new String(buf, StandardCharsets.UTF_8); + this.session.getAsyncRemote().sendText("PongSocket.onPong(PongMessage)[" + path + "]:" + message); + } + + public static byte[] toArray(ByteBuffer buffer) + { + if (buffer.hasArray()) + { + byte[] array = buffer.array(); + int from = buffer.arrayOffset() + buffer.position(); + return Arrays.copyOfRange(array, from, from + buffer.remaining()); + } + else + { + byte[] to = new byte[buffer.remaining()]; + buffer.slice().get(to); + return to; + } + } +} diff --git a/jetty-websocket/javax-websocket-tests/src/test/java/org/eclipse/jetty/websocket/javax/tests/PathParamTest.java b/jetty-websocket/javax-websocket-tests/src/test/java/org/eclipse/jetty/websocket/javax/tests/PathParamTest.java new file mode 100644 index 00000000000..1796eb4caeb --- /dev/null +++ b/jetty-websocket/javax-websocket-tests/src/test/java/org/eclipse/jetty/websocket/javax/tests/PathParamTest.java @@ -0,0 +1,104 @@ +// +// ======================================================================== +// Copyright (c) 1995-2019 Mort Bay Consulting Pty. Ltd. +// ------------------------------------------------------------------------ +// All rights reserved. This program and the accompanying materials +// are made available under the terms of the Eclipse Public License v1.0 +// and Apache License v2.0 which accompanies this distribution. +// +// The Eclipse Public License is available at +// http://www.eclipse.org/legal/epl-v10.html +// +// The Apache License v2.0 is available at +// http://www.opensource.org/licenses/apache2.0.php +// +// You may elect to redistribute this code under either of these licenses. +// ======================================================================== +// + +package org.eclipse.jetty.websocket.javax.tests; + +import java.net.URI; +import java.util.concurrent.TimeUnit; +import javax.websocket.ContainerProvider; +import javax.websocket.OnMessage; +import javax.websocket.OnOpen; +import javax.websocket.Session; +import javax.websocket.WebSocketContainer; +import javax.websocket.server.PathParam; +import javax.websocket.server.ServerEndpoint; + +import org.eclipse.jetty.server.Server; +import org.eclipse.jetty.server.ServerConnector; +import org.eclipse.jetty.servlet.ServletContextHandler; +import org.eclipse.jetty.websocket.javax.server.config.JavaxWebSocketServletContainerInitializer; +import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + +import static org.hamcrest.MatcherAssert.assertThat; +import static org.hamcrest.Matchers.is; + +public class PathParamTest +{ + private Server _server; + private ServerConnector _connector; + private ServletContextHandler _context; + + @BeforeEach + public void startContainer() throws Exception + { + _server = new Server(); + _connector = new ServerConnector(_server); + _server.addConnector(_connector); + + _context = new ServletContextHandler(ServletContextHandler.SESSIONS); + _context.setContextPath("/"); + _server.setHandler(_context); + + JavaxWebSocketServletContainerInitializer.configure(_context, (context, container) -> + container.addEndpoint(EchoParamSocket.class)); + + _server.start(); + } + + @AfterEach + public void stopContainer() throws Exception + { + _server.stop(); + } + + @ServerEndpoint("/pathparam/echo/{name}") + public static class EchoParamSocket + { + private Session session; + + @OnOpen + public void onOpen(Session session) + { + this.session = session; + } + + @OnMessage + public void onMessage(String message, @PathParam("name") String name) + { + session.getAsyncRemote().sendText(message+"-"+name); + } + } + + @Test + public void testBasicPathParamSocket() throws Exception + { + WebSocketContainer container = ContainerProvider.getWebSocketContainer(); + EventSocket clientEndpoint = new EventSocket(); + + URI serverUri = URI.create("ws://localhost:"+ _connector.getLocalPort()+"/pathparam/echo/myParam"); + Session session = container.connectToServer(clientEndpoint, serverUri); + session.getBasicRemote().sendText("echo"); + + String resp = clientEndpoint.messageQueue.poll(1, TimeUnit.SECONDS); + assertThat("Response echo", resp, is("echo-myParam")); + session.close(); + clientEndpoint.closeLatch.await(5, TimeUnit.SECONDS); + } +} diff --git a/jetty-websocket/javax-websocket-tests/src/test/java/org/eclipse/jetty/websocket/javax/tests/RestartContextTest.java b/jetty-websocket/javax-websocket-tests/src/test/java/org/eclipse/jetty/websocket/javax/tests/RestartContextTest.java index 2499f5a5017..80a0265c382 100644 --- a/jetty-websocket/javax-websocket-tests/src/test/java/org/eclipse/jetty/websocket/javax/tests/RestartContextTest.java +++ b/jetty-websocket/javax-websocket-tests/src/test/java/org/eclipse/jetty/websocket/javax/tests/RestartContextTest.java @@ -37,8 +37,8 @@ import org.eclipse.jetty.server.ServerConnector; import org.eclipse.jetty.server.handler.DefaultHandler; import org.eclipse.jetty.server.handler.HandlerList; import org.eclipse.jetty.servlet.ServletContextHandler; -import org.eclipse.jetty.websocket.javax.server.JavaxWebSocketServerContainer; -import org.eclipse.jetty.websocket.javax.server.JavaxWebSocketServletContainerInitializer; +import org.eclipse.jetty.websocket.javax.server.config.JavaxWebSocketServletContainerInitializer; +import org.eclipse.jetty.websocket.javax.server.internal.JavaxWebSocketServerContainer; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.Test; diff --git a/jetty-websocket/javax-websocket-tests/src/test/java/org/eclipse/jetty/websocket/javax/tests/server/AbstractJavaxWebSocketServerFrameHandlerTest.java b/jetty-websocket/javax-websocket-tests/src/test/java/org/eclipse/jetty/websocket/javax/tests/server/AbstractJavaxWebSocketServerFrameHandlerTest.java index 548526309ee..ae920dae9ad 100644 --- a/jetty-websocket/javax-websocket-tests/src/test/java/org/eclipse/jetty/websocket/javax/tests/server/AbstractJavaxWebSocketServerFrameHandlerTest.java +++ b/jetty-websocket/javax-websocket-tests/src/test/java/org/eclipse/jetty/websocket/javax/tests/server/AbstractJavaxWebSocketServerFrameHandlerTest.java @@ -27,8 +27,8 @@ import org.eclipse.jetty.servlet.ServletContextHandler; import org.eclipse.jetty.websocket.javax.client.EmptyClientEndpointConfig; import org.eclipse.jetty.websocket.javax.common.decoders.AvailableDecoders; import org.eclipse.jetty.websocket.javax.common.encoders.AvailableEncoders; -import org.eclipse.jetty.websocket.javax.server.JavaxWebSocketServerContainer; -import org.eclipse.jetty.websocket.javax.server.JavaxWebSocketServletContainerInitializer; +import org.eclipse.jetty.websocket.javax.server.config.JavaxWebSocketServletContainerInitializer; +import org.eclipse.jetty.websocket.javax.server.internal.JavaxWebSocketServerContainer; import org.junit.jupiter.api.AfterAll; import org.junit.jupiter.api.BeforeAll; diff --git a/jetty-websocket/javax-websocket-tests/src/test/java/org/eclipse/jetty/websocket/javax/tests/server/DeploymentExceptionTest.java b/jetty-websocket/javax-websocket-tests/src/test/java/org/eclipse/jetty/websocket/javax/tests/server/DeploymentExceptionTest.java index 052d8f87e3f..b38868cbfc0 100644 --- a/jetty-websocket/javax-websocket-tests/src/test/java/org/eclipse/jetty/websocket/javax/tests/server/DeploymentExceptionTest.java +++ b/jetty-websocket/javax-websocket-tests/src/test/java/org/eclipse/jetty/websocket/javax/tests/server/DeploymentExceptionTest.java @@ -30,7 +30,7 @@ import org.eclipse.jetty.server.Server; import org.eclipse.jetty.server.handler.HandlerCollection; import org.eclipse.jetty.servlet.ServletContextHandler; import org.eclipse.jetty.websocket.javax.common.util.InvalidSignatureException; -import org.eclipse.jetty.websocket.javax.server.JavaxWebSocketServletContainerInitializer; +import org.eclipse.jetty.websocket.javax.server.config.JavaxWebSocketServletContainerInitializer; import org.eclipse.jetty.websocket.javax.tests.server.sockets.InvalidCloseIntSocket; import org.eclipse.jetty.websocket.javax.tests.server.sockets.InvalidErrorErrorSocket; import org.eclipse.jetty.websocket.javax.tests.server.sockets.InvalidErrorIntSocket; diff --git a/jetty-websocket/javax-websocket-tests/src/test/java/org/eclipse/jetty/websocket/javax/tests/server/EndpointViaConfigTest.java b/jetty-websocket/javax-websocket-tests/src/test/java/org/eclipse/jetty/websocket/javax/tests/server/EndpointViaConfigTest.java index 69f27b6c05d..43f0e5dbe8c 100644 --- a/jetty-websocket/javax-websocket-tests/src/test/java/org/eclipse/jetty/websocket/javax/tests/server/EndpointViaConfigTest.java +++ b/jetty-websocket/javax-websocket-tests/src/test/java/org/eclipse/jetty/websocket/javax/tests/server/EndpointViaConfigTest.java @@ -21,16 +21,9 @@ package org.eclipse.jetty.websocket.javax.tests.server; import java.net.URI; import java.util.concurrent.Future; import java.util.concurrent.TimeUnit; -import javax.servlet.ServletContextEvent; -import javax.servlet.ServletContextListener; -import javax.websocket.DeploymentException; -import javax.websocket.EndpointConfig; -import javax.websocket.MessageHandler; -import javax.websocket.OnOpen; -import javax.websocket.Session; -import javax.websocket.server.ServerEndpoint; -import javax.websocket.server.ServerEndpointConfig; +import com.acme.websocket.BasicEchoEndpoint; +import com.acme.websocket.BasicEchoEndpointConfigContextListener; import org.eclipse.jetty.toolchain.test.jupiter.WorkDir; import org.eclipse.jetty.toolchain.test.jupiter.WorkDirExtension; import org.eclipse.jetty.util.Callback; @@ -41,7 +34,6 @@ import org.eclipse.jetty.websocket.core.Frame; import org.eclipse.jetty.websocket.core.FrameHandler; import org.eclipse.jetty.websocket.core.OpCode; import org.eclipse.jetty.websocket.core.client.WebSocketCoreClient; -import org.eclipse.jetty.websocket.javax.tests.WSEventTracker; import org.eclipse.jetty.websocket.javax.tests.WSServer; import org.eclipse.jetty.websocket.javax.tests.framehandlers.FrameHandlerTracker; import org.junit.jupiter.api.Test; @@ -59,55 +51,6 @@ public class EndpointViaConfigTest { private static final Logger LOG = Log.getLogger(EndpointViaConfigTest.class); - @ServerEndpoint("/echo") - public static class BasicEchoEndpoint extends WSEventTracker implements MessageHandler.Whole - { - @Override - public void onMessage(String msg) - { - super.onWsText(msg); - // reply with echo - session.getAsyncRemote().sendText(msg); - } - - @OnOpen - public void onOpen(Session session, EndpointConfig config) - { - super.onWsOpen(session, config); - this.session.addMessageHandler(this); - } - } - - public static class BasicEchoEndpointConfigContextListener implements ServletContextListener - { - @Override - public void contextDestroyed(ServletContextEvent sce) - { - /* do nothing */ - } - - @Override - public void contextInitialized(ServletContextEvent sce) - { - javax.websocket.server.ServerContainer container = (javax.websocket.server.ServerContainer)sce.getServletContext() - .getAttribute(javax.websocket.server.ServerContainer.class.getName()); - if (container == null) - throw new IllegalStateException("No Websocket ServerContainer in " + sce.getServletContext()); - - // Build up a configuration with a specific path - String path = "/echo"; - ServerEndpointConfig.Builder builder = ServerEndpointConfig.Builder.create(BasicEchoEndpoint.class, path); - try - { - container.addEndpoint(builder.build()); - } - catch (DeploymentException e) - { - throw new RuntimeException("Unable to add endpoint via config file", e); - } - } - } - public WorkDir testdir; @Test diff --git a/jetty-websocket/javax-websocket-tests/src/test/java/org/eclipse/jetty/websocket/javax/tests/server/IdleTimeoutTest.java b/jetty-websocket/javax-websocket-tests/src/test/java/org/eclipse/jetty/websocket/javax/tests/server/IdleTimeoutTest.java index 261f265c3d0..b3561a78b92 100644 --- a/jetty-websocket/javax-websocket-tests/src/test/java/org/eclipse/jetty/websocket/javax/tests/server/IdleTimeoutTest.java +++ b/jetty-websocket/javax-websocket-tests/src/test/java/org/eclipse/jetty/websocket/javax/tests/server/IdleTimeoutTest.java @@ -21,6 +21,9 @@ package org.eclipse.jetty.websocket.javax.tests.server; import java.util.concurrent.BlockingQueue; import java.util.concurrent.TimeUnit; +import com.acme.websocket.IdleTimeoutContextListener; +import com.acme.websocket.IdleTimeoutOnOpenEndpoint; +import com.acme.websocket.IdleTimeoutOnOpenSocket; import org.eclipse.jetty.toolchain.test.MavenTestingUtils; import org.eclipse.jetty.util.log.StacklessLogging; import org.eclipse.jetty.webapp.WebAppContext; @@ -29,8 +32,6 @@ import org.eclipse.jetty.websocket.core.Frame; import org.eclipse.jetty.websocket.core.OpCode; import org.eclipse.jetty.websocket.javax.tests.Fuzzer; import org.eclipse.jetty.websocket.javax.tests.WSServer; -import org.eclipse.jetty.websocket.javax.tests.server.sockets.IdleTimeoutOnOpenEndpoint; -import org.eclipse.jetty.websocket.javax.tests.server.sockets.IdleTimeoutOnOpenSocket; import org.junit.jupiter.api.AfterAll; import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.Test; @@ -59,7 +60,6 @@ public class IdleTimeoutTest WebAppContext webapp = server.createWebAppContext(); server.deployWebapp(webapp); - // wsb.dump(); } @AfterAll diff --git a/jetty-websocket/javax-websocket-tests/src/test/java/org/eclipse/jetty/websocket/javax/tests/server/JettyServerEndpointConfiguratorTest.java b/jetty-websocket/javax-websocket-tests/src/test/java/org/eclipse/jetty/websocket/javax/tests/server/JettyServerEndpointConfiguratorTest.java index 0c28d087267..61ab2aca1f2 100644 --- a/jetty-websocket/javax-websocket-tests/src/test/java/org/eclipse/jetty/websocket/javax/tests/server/JettyServerEndpointConfiguratorTest.java +++ b/jetty-websocket/javax-websocket-tests/src/test/java/org/eclipse/jetty/websocket/javax/tests/server/JettyServerEndpointConfiguratorTest.java @@ -22,7 +22,7 @@ import java.util.Iterator; import java.util.ServiceLoader; import javax.websocket.server.ServerEndpointConfig; -import org.eclipse.jetty.websocket.javax.server.ContainerDefaultConfigurator; +import org.eclipse.jetty.websocket.javax.server.config.ContainerDefaultConfigurator; import org.junit.jupiter.api.Test; import static org.hamcrest.MatcherAssert.assertThat; diff --git a/jetty-websocket/javax-websocket-tests/src/test/java/org/eclipse/jetty/websocket/javax/tests/server/LargeContainerTest.java b/jetty-websocket/javax-websocket-tests/src/test/java/org/eclipse/jetty/websocket/javax/tests/server/LargeContainerTest.java index 21ffd70a40a..fbdf26ce9db 100644 --- a/jetty-websocket/javax-websocket-tests/src/test/java/org/eclipse/jetty/websocket/javax/tests/server/LargeContainerTest.java +++ b/jetty-websocket/javax-websocket-tests/src/test/java/org/eclipse/jetty/websocket/javax/tests/server/LargeContainerTest.java @@ -23,12 +23,8 @@ import java.nio.charset.StandardCharsets; import java.util.Arrays; import java.util.concurrent.Future; import java.util.concurrent.TimeUnit; -import javax.servlet.ServletContextEvent; -import javax.servlet.ServletContextListener; -import javax.websocket.OnMessage; -import javax.websocket.server.ServerContainer; -import javax.websocket.server.ServerEndpoint; +import com.acme.websocket.LargeEchoDefaultSocket; import org.eclipse.jetty.toolchain.test.jupiter.WorkDir; import org.eclipse.jetty.toolchain.test.jupiter.WorkDirExtension; import org.eclipse.jetty.util.Callback; @@ -51,33 +47,6 @@ import static org.hamcrest.Matchers.is; @ExtendWith(WorkDirExtension.class) public class LargeContainerTest { - @ServerEndpoint(value = "/echo/large") - public static class LargeEchoDefaultSocket - { - @OnMessage - public void echo(javax.websocket.Session session, String msg) - { - // reply with echo - session.getAsyncRemote().sendText(msg); - } - } - - public static class LargeEchoContextListener implements ServletContextListener - { - @Override - public void contextDestroyed(ServletContextEvent sce) - { - /* do nothing */ - } - - @Override - public void contextInitialized(ServletContextEvent sce) - { - ServerContainer container = (ServerContainer)sce.getServletContext().getAttribute(ServerContainer.class.getName()); - container.setDefaultMaxTextMessageBufferSize(128 * 1024); - } - } - public WorkDir testdir; @SuppressWarnings("Duplicates") @@ -95,7 +64,6 @@ public class LargeContainerTest WebAppContext webapp = wsb.createWebAppContext(); wsb.deployWebapp(webapp); - // wsb.dump(); WebSocketCoreClient client = new WebSocketCoreClient(); try diff --git a/jetty-websocket/javax-websocket-tests/src/test/java/org/eclipse/jetty/websocket/javax/tests/server/MemoryUsageTest.java b/jetty-websocket/javax-websocket-tests/src/test/java/org/eclipse/jetty/websocket/javax/tests/server/MemoryUsageTest.java index e5e0a6821a6..1cb415d913f 100644 --- a/jetty-websocket/javax-websocket-tests/src/test/java/org/eclipse/jetty/websocket/javax/tests/server/MemoryUsageTest.java +++ b/jetty-websocket/javax-websocket-tests/src/test/java/org/eclipse/jetty/websocket/javax/tests/server/MemoryUsageTest.java @@ -35,7 +35,7 @@ import javax.websocket.server.ServerEndpointConfig; import org.eclipse.jetty.server.Server; import org.eclipse.jetty.server.ServerConnector; import org.eclipse.jetty.servlet.ServletContextHandler; -import org.eclipse.jetty.websocket.javax.server.JavaxWebSocketServletContainerInitializer; +import org.eclipse.jetty.websocket.javax.server.config.JavaxWebSocketServletContainerInitializer; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; diff --git a/jetty-websocket/javax-websocket-tests/src/test/java/org/eclipse/jetty/websocket/javax/tests/server/PingPongTest.java b/jetty-websocket/javax-websocket-tests/src/test/java/org/eclipse/jetty/websocket/javax/tests/server/PingPongTest.java index 1b44cdc23f0..e323ff87ea5 100644 --- a/jetty-websocket/javax-websocket-tests/src/test/java/org/eclipse/jetty/websocket/javax/tests/server/PingPongTest.java +++ b/jetty-websocket/javax-websocket-tests/src/test/java/org/eclipse/jetty/websocket/javax/tests/server/PingPongTest.java @@ -19,33 +19,17 @@ package org.eclipse.jetty.websocket.javax.tests.server; import java.net.URI; -import java.nio.charset.StandardCharsets; import java.nio.file.Path; import java.time.Duration; import java.util.concurrent.Future; import java.util.concurrent.TimeUnit; import java.util.function.Consumer; -import javax.servlet.ServletContextEvent; -import javax.servlet.ServletContextListener; -import javax.websocket.DeploymentException; -import javax.websocket.Endpoint; -import javax.websocket.EndpointConfig; -import javax.websocket.HandshakeResponse; -import javax.websocket.MessageHandler; -import javax.websocket.OnMessage; -import javax.websocket.OnOpen; -import javax.websocket.PongMessage; -import javax.websocket.Session; -import javax.websocket.server.HandshakeRequest; -import javax.websocket.server.ServerContainer; -import javax.websocket.server.ServerEndpoint; -import javax.websocket.server.ServerEndpointConfig; +import com.acme.websocket.PongContextListener; +import com.acme.websocket.PongMessageEndpoint; +import com.acme.websocket.PongSocket; import org.eclipse.jetty.toolchain.test.MavenTestingUtils; -import org.eclipse.jetty.util.BufferUtil; import org.eclipse.jetty.util.Callback; -import org.eclipse.jetty.util.log.Log; -import org.eclipse.jetty.util.log.Logger; import org.eclipse.jetty.webapp.WebAppContext; import org.eclipse.jetty.websocket.core.Frame; import org.eclipse.jetty.websocket.core.FrameHandler; @@ -64,87 +48,6 @@ import static org.junit.jupiter.api.Assertions.assertTimeout; public class PingPongTest { - @ServerEndpoint(value = "/pong-socket", configurator = PongContextListener.Config.class) - public static class PongSocket - { - private static final Logger LOG = Log.getLogger(PongSocket.class); - private String path = "?"; - private Session session; - - @OnOpen - public void onOpen(Session session, EndpointConfig config) - { - this.session = session; - this.path = (String)config.getUserProperties().get("path"); - } - - @OnMessage - public void onPong(PongMessage pong) - { - if (LOG.isDebugEnabled()) - LOG.debug("PongSocket.onPong(): PongMessage.appData={}", BufferUtil.toDetailString(pong.getApplicationData())); - byte[] buf = BufferUtil.toArray(pong.getApplicationData()); - String message = new String(buf, StandardCharsets.UTF_8); - this.session.getAsyncRemote().sendText("PongSocket.onPong(PongMessage)[" + path + "]:" + message); - } - } - - public static class PongMessageEndpoint extends Endpoint implements MessageHandler.Whole - { - private String path = "?"; - private Session session; - - @Override - public void onOpen(Session session, EndpointConfig config) - { - this.session = session; - this.session.addMessageHandler(this); - this.path = (String)config.getUserProperties().get("path"); - } - - @Override - public void onMessage(PongMessage pong) - { - byte[] buf = BufferUtil.toArray(pong.getApplicationData()); - String message = new String(buf, StandardCharsets.UTF_8); - this.session.getAsyncRemote().sendText("PongMessageEndpoint.onMessage(PongMessage):[" + path + "]:" + message); - } - } - - public static class PongContextListener implements ServletContextListener - { - public static class Config extends ServerEndpointConfig.Configurator - { - @Override - public void modifyHandshake(ServerEndpointConfig sec, HandshakeRequest request, HandshakeResponse response) - { - sec.getUserProperties().put("path", sec.getPath()); - super.modifyHandshake(sec, request, response); - } - } - - @Override - public void contextDestroyed(ServletContextEvent sce) - { - /* do nothing */ - } - - @Override - public void contextInitialized(ServletContextEvent sce) - { - ServerContainer container = (ServerContainer)sce.getServletContext().getAttribute(ServerContainer.class.getName()); - try - { - ServerEndpointConfig.Configurator config = new Config(); - container.addEndpoint(ServerEndpointConfig.Builder.create(PongMessageEndpoint.class, "/pong").configurator(config).build()); - } - catch (DeploymentException e) - { - throw new RuntimeException("Unable to add endpoint directly", e); - } - } - } - private static WSServer server; private static WebSocketCoreClient client; diff --git a/jetty-websocket/javax-websocket-tests/src/test/java/org/eclipse/jetty/websocket/javax/tests/server/WebSocketServerContainerExecutorTest.java b/jetty-websocket/javax-websocket-tests/src/test/java/org/eclipse/jetty/websocket/javax/tests/server/WebSocketServerContainerExecutorTest.java index 7db6aa77bbe..e406aed6db6 100644 --- a/jetty-websocket/javax-websocket-tests/src/test/java/org/eclipse/jetty/websocket/javax/tests/server/WebSocketServerContainerExecutorTest.java +++ b/jetty-websocket/javax-websocket-tests/src/test/java/org/eclipse/jetty/websocket/javax/tests/server/WebSocketServerContainerExecutorTest.java @@ -44,12 +44,12 @@ import org.eclipse.jetty.server.Server; import org.eclipse.jetty.servlet.ServletContextHandler; import org.eclipse.jetty.util.IO; import org.eclipse.jetty.util.thread.QueuedThreadPool; -import org.eclipse.jetty.websocket.javax.server.JavaxWebSocketServerContainer; -import org.eclipse.jetty.websocket.javax.server.JavaxWebSocketServletContainerInitializer; +import org.eclipse.jetty.websocket.javax.server.config.JavaxWebSocketServletContainerInitializer; +import org.eclipse.jetty.websocket.javax.server.internal.JavaxWebSocketServerContainer; import org.eclipse.jetty.websocket.javax.tests.WSURI; import org.junit.jupiter.api.Test; -import static org.eclipse.jetty.websocket.javax.server.JavaxWebSocketServletContainerInitializer.HTTPCLIENT_ATTRIBUTE; +import static org.eclipse.jetty.websocket.javax.server.config.JavaxWebSocketServletContainerInitializer.HTTPCLIENT_ATTRIBUTE; import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.Matchers.is; import static org.hamcrest.Matchers.sameInstance; diff --git a/jetty-websocket/javax-websocket-tests/src/test/resources/basic-echo-endpoint-config-web.xml b/jetty-websocket/javax-websocket-tests/src/test/resources/basic-echo-endpoint-config-web.xml index 2daa96edb6c..191ba7fff8b 100644 --- a/jetty-websocket/javax-websocket-tests/src/test/resources/basic-echo-endpoint-config-web.xml +++ b/jetty-websocket/javax-websocket-tests/src/test/resources/basic-echo-endpoint-config-web.xml @@ -7,6 +7,6 @@ version="3.0"> - org.eclipse.jetty.websocket.javax.tests.server.EndpointViaConfigTest$BasicEchoEndpointConfigContextListener + com.acme.websocket.BasicEchoEndpointConfigContextListener \ No newline at end of file diff --git a/jetty-websocket/javax-websocket-tests/src/test/resources/idle-timeout-config-web.xml b/jetty-websocket/javax-websocket-tests/src/test/resources/idle-timeout-config-web.xml index ecb89d2acd2..a60cea6c700 100644 --- a/jetty-websocket/javax-websocket-tests/src/test/resources/idle-timeout-config-web.xml +++ b/jetty-websocket/javax-websocket-tests/src/test/resources/idle-timeout-config-web.xml @@ -7,6 +7,6 @@ version="3.0"> - org.eclipse.jetty.websocket.javax.tests.server.IdleTimeoutContextListener + com.acme.websocket.IdleTimeoutContextListener \ No newline at end of file diff --git a/jetty-websocket/javax-websocket-tests/src/test/resources/large-echo-config-web.xml b/jetty-websocket/javax-websocket-tests/src/test/resources/large-echo-config-web.xml index c4dfacddef3..b032926b059 100644 --- a/jetty-websocket/javax-websocket-tests/src/test/resources/large-echo-config-web.xml +++ b/jetty-websocket/javax-websocket-tests/src/test/resources/large-echo-config-web.xml @@ -7,6 +7,6 @@ version="3.0"> - org.eclipse.jetty.websocket.javax.tests.server.LargeContainerTest$LargeEchoContextListener + com.acme.websocket.LargeEchoContextListener \ No newline at end of file diff --git a/jetty-websocket/javax-websocket-tests/src/test/resources/pong-config-web.xml b/jetty-websocket/javax-websocket-tests/src/test/resources/pong-config-web.xml index aa16c7af156..a3478e35e2a 100644 --- a/jetty-websocket/javax-websocket-tests/src/test/resources/pong-config-web.xml +++ b/jetty-websocket/javax-websocket-tests/src/test/resources/pong-config-web.xml @@ -7,6 +7,6 @@ version="3.0"> - org.eclipse.jetty.websocket.javax.tests.server.PingPongTest$PongContextListener + com.acme.websocket.PongContextListener \ No newline at end of file diff --git a/jetty-websocket/jetty-websocket-server/src/main/java/module-info.java b/jetty-websocket/jetty-websocket-server/src/main/java/module-info.java index 689f680ecea..005c0f64d7f 100644 --- a/jetty-websocket/jetty-websocket-server/src/main/java/module-info.java +++ b/jetty-websocket/jetty-websocket-server/src/main/java/module-info.java @@ -25,6 +25,7 @@ import org.eclipse.jetty.websocket.server.config.JettyWebSocketServletContainerI module org.eclipse.jetty.websocket.jetty.server { exports org.eclipse.jetty.websocket.server; + exports org.eclipse.jetty.websocket.server.config; requires jetty.servlet.api; requires org.eclipse.jetty.http;