From d08c1025e9b981c8f278773c81b14a9f4859834a Mon Sep 17 00:00:00 2001 From: Lachlan Roberts Date: Fri, 13 Dec 2019 11:30:01 +1100 Subject: [PATCH] Issue #4407 - fix broken tests, ServerFHF now extends ClientFHF Signed-off-by: Lachlan Roberts --- .../javax/client/JavaxWebSocketClientContainer.java | 2 +- .../client/JavaxWebSocketClientFrameHandlerFactory.java | 5 +++++ .../server/internal/JavaxWebSocketServerContainer.java | 7 ------- .../internal/JavaxWebSocketServerFrameHandlerFactory.java | 7 +++---- .../websocket/javax/tests/client/EndpointEchoTest.java | 4 ++-- .../websocket/javax/tests/client/WriteTimeoutTest.java | 2 +- .../tests/client/misbehaving/MisbehavingClassTest.java | 2 +- .../server/WebSocketServerContainerExecutorTest.java | 8 +++++--- 8 files changed, 18 insertions(+), 19 deletions(-) diff --git a/jetty-websocket/javax-websocket-client/src/main/java/org/eclipse/jetty/websocket/javax/client/JavaxWebSocketClientContainer.java b/jetty-websocket/javax-websocket-client/src/main/java/org/eclipse/jetty/websocket/javax/client/JavaxWebSocketClientContainer.java index 36445e66d98..51959da8f97 100644 --- a/jetty-websocket/javax-websocket-client/src/main/java/org/eclipse/jetty/websocket/javax/client/JavaxWebSocketClientContainer.java +++ b/jetty-websocket/javax-websocket-client/src/main/java/org/eclipse/jetty/websocket/javax/client/JavaxWebSocketClientContainer.java @@ -214,7 +214,7 @@ public class JavaxWebSocketClientContainer extends JavaxWebSocketContainer imple public Session connectToServer(final Endpoint endpoint, final ClientEndpointConfig providedConfig, final URI path) throws DeploymentException, IOException { ClientEndpointConfig config = providedConfig; - if (config != null) + if (config == null) config = new EmptyClientEndpointConfig(); ConfiguredEndpoint instance = new ConfiguredEndpoint(endpoint, config); diff --git a/jetty-websocket/javax-websocket-client/src/main/java/org/eclipse/jetty/websocket/javax/client/JavaxWebSocketClientFrameHandlerFactory.java b/jetty-websocket/javax-websocket-client/src/main/java/org/eclipse/jetty/websocket/javax/client/JavaxWebSocketClientFrameHandlerFactory.java index 1db249ed7fc..d59ada627df 100644 --- a/jetty-websocket/javax-websocket-client/src/main/java/org/eclipse/jetty/websocket/javax/client/JavaxWebSocketClientFrameHandlerFactory.java +++ b/jetty-websocket/javax-websocket-client/src/main/java/org/eclipse/jetty/websocket/javax/client/JavaxWebSocketClientFrameHandlerFactory.java @@ -29,6 +29,11 @@ import org.eclipse.jetty.websocket.javax.common.util.InvokerUtils; public class JavaxWebSocketClientFrameHandlerFactory extends JavaxWebSocketFrameHandlerFactory { + public JavaxWebSocketClientFrameHandlerFactory(JavaxWebSocketContainer container, InvokerUtils.ParamIdentifier paramIdentifier) + { + super(container, paramIdentifier); + } + public JavaxWebSocketClientFrameHandlerFactory(JavaxWebSocketContainer container) { super(container, InvokerUtils.PARAM_IDENTITY); diff --git a/jetty-websocket/javax-websocket-server/src/main/java/org/eclipse/jetty/websocket/javax/server/internal/JavaxWebSocketServerContainer.java b/jetty-websocket/javax-websocket-server/src/main/java/org/eclipse/jetty/websocket/javax/server/internal/JavaxWebSocketServerContainer.java index 934d1ce732a..e4e54510749 100644 --- a/jetty-websocket/javax-websocket-server/src/main/java/org/eclipse/jetty/websocket/javax/server/internal/JavaxWebSocketServerContainer.java +++ b/jetty-websocket/javax-websocket-server/src/main/java/org/eclipse/jetty/websocket/javax/server/internal/JavaxWebSocketServerContainer.java @@ -24,7 +24,6 @@ import java.util.concurrent.Executor; import java.util.function.Function; import javax.servlet.ServletContext; import javax.websocket.DeploymentException; -import javax.websocket.EndpointConfig; import javax.websocket.server.ServerEndpoint; import javax.websocket.server.ServerEndpointConfig; @@ -160,12 +159,6 @@ public class JavaxWebSocketServerContainer extends JavaxWebSocketClientContainer return frameHandlerFactory; } - @Override - protected EndpointConfig newEmptyConfig(Object endpoint) - { - return new UndefinedServerEndpointConfig(endpoint.getClass()); - } - @Override public void addEndpoint(Class endpointClass) throws DeploymentException { diff --git a/jetty-websocket/javax-websocket-server/src/main/java/org/eclipse/jetty/websocket/javax/server/internal/JavaxWebSocketServerFrameHandlerFactory.java b/jetty-websocket/javax-websocket-server/src/main/java/org/eclipse/jetty/websocket/javax/server/internal/JavaxWebSocketServerFrameHandlerFactory.java index b16b5b2af02..d6af9587de9 100644 --- a/jetty-websocket/javax-websocket-server/src/main/java/org/eclipse/jetty/websocket/javax/server/internal/JavaxWebSocketServerFrameHandlerFactory.java +++ b/jetty-websocket/javax-websocket-server/src/main/java/org/eclipse/jetty/websocket/javax/server/internal/JavaxWebSocketServerFrameHandlerFactory.java @@ -24,14 +24,14 @@ import javax.websocket.server.ServerEndpoint; import org.eclipse.jetty.http.pathmap.UriTemplatePathSpec; import org.eclipse.jetty.websocket.core.FrameHandler; +import org.eclipse.jetty.websocket.javax.client.JavaxWebSocketClientFrameHandlerFactory; 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.servlet.FrameHandlerFactory; import org.eclipse.jetty.websocket.servlet.ServletUpgradeRequest; import org.eclipse.jetty.websocket.servlet.ServletUpgradeResponse; -public class JavaxWebSocketServerFrameHandlerFactory extends JavaxWebSocketFrameHandlerFactory implements FrameHandlerFactory +public class JavaxWebSocketServerFrameHandlerFactory extends JavaxWebSocketClientFrameHandlerFactory implements FrameHandlerFactory { public JavaxWebSocketServerFrameHandlerFactory(JavaxWebSocketContainer container) { @@ -47,10 +47,9 @@ public class JavaxWebSocketServerFrameHandlerFactory extends JavaxWebSocketFrame } ServerEndpoint anno = endpointClass.getAnnotation(ServerEndpoint.class); - if (anno == null) { - return null; + return super.createMetadata(endpointClass, endpointConfig); } UriTemplatePathSpec templatePathSpec = new UriTemplatePathSpec(anno.value()); diff --git a/jetty-websocket/javax-websocket-tests/src/test/java/org/eclipse/jetty/websocket/javax/tests/client/EndpointEchoTest.java b/jetty-websocket/javax-websocket-tests/src/test/java/org/eclipse/jetty/websocket/javax/tests/client/EndpointEchoTest.java index fb3224508de..5c13041fc9f 100644 --- a/jetty-websocket/javax-websocket-tests/src/test/java/org/eclipse/jetty/websocket/javax/tests/client/EndpointEchoTest.java +++ b/jetty-websocket/javax-websocket-tests/src/test/java/org/eclipse/jetty/websocket/javax/tests/client/EndpointEchoTest.java @@ -77,7 +77,7 @@ public class EndpointEchoTest ClientEndpoint clientEndpoint = new ClientEndpoint(); assertThat(clientEndpoint, Matchers.instanceOf(javax.websocket.Endpoint.class)); // Issue connect using instance of class that extends Endpoint - Session session = container.connectToServer(clientEndpoint, server.getWsUri().resolve("/echo/text")); + Session session = container.connectToServer(clientEndpoint, null, server.getWsUri().resolve("/echo/text")); session.getBasicRemote().sendText("Echo"); String resp = clientEndpoint.messageQueue.poll(1, TimeUnit.SECONDS); @@ -91,7 +91,7 @@ public class EndpointEchoTest { WebSocketContainer container = ContainerProvider.getWebSocketContainer(); // Issue connect using class reference (class extends Endpoint) - Session session = container.connectToServer(ClientEndpoint.class, server.getWsUri().resolve("/echo/text")); + Session session = container.connectToServer(ClientEndpoint.class, null, server.getWsUri().resolve("/echo/text")); session.getBasicRemote().sendText("Echo"); JavaxWebSocketSession jsrSession = (JavaxWebSocketSession)session; diff --git a/jetty-websocket/javax-websocket-tests/src/test/java/org/eclipse/jetty/websocket/javax/tests/client/WriteTimeoutTest.java b/jetty-websocket/javax-websocket-tests/src/test/java/org/eclipse/jetty/websocket/javax/tests/client/WriteTimeoutTest.java index 5f67ffb7331..160791b315c 100644 --- a/jetty-websocket/javax-websocket-tests/src/test/java/org/eclipse/jetty/websocket/javax/tests/client/WriteTimeoutTest.java +++ b/jetty-websocket/javax-websocket-tests/src/test/java/org/eclipse/jetty/websocket/javax/tests/client/WriteTimeoutTest.java @@ -82,7 +82,7 @@ public class WriteTimeoutTest WebSocketContainer container = ContainerProvider.getWebSocketContainer(); ClientEndpoint clientEndpoint = new ClientEndpoint(); assertThat(clientEndpoint, Matchers.instanceOf(javax.websocket.Endpoint.class)); - Session session = container.connectToServer(clientEndpoint, server.getWsUri().resolve("/logSocket")); + Session session = container.connectToServer(clientEndpoint, null, server.getWsUri().resolve("/logSocket")); session.getAsyncRemote().setSendTimeout(5); diff --git a/jetty-websocket/javax-websocket-tests/src/test/java/org/eclipse/jetty/websocket/javax/tests/client/misbehaving/MisbehavingClassTest.java b/jetty-websocket/javax-websocket-tests/src/test/java/org/eclipse/jetty/websocket/javax/tests/client/misbehaving/MisbehavingClassTest.java index f83163d2c73..7274fd8e299 100644 --- a/jetty-websocket/javax-websocket-tests/src/test/java/org/eclipse/jetty/websocket/javax/tests/client/misbehaving/MisbehavingClassTest.java +++ b/jetty-websocket/javax-websocket-tests/src/test/java/org/eclipse/jetty/websocket/javax/tests/client/misbehaving/MisbehavingClassTest.java @@ -60,7 +60,7 @@ public class MisbehavingClassTest try (StacklessLogging ignored = new StacklessLogging(WebSocketCoreSession.class)) { // expecting RuntimeException during onOpen - container.connectToServer(socket, server.getWsUri()); + container.connectToServer(socket, null, server.getWsUri()); assertThat("Close should have occurred", socket.closeLatch.await(1, TimeUnit.SECONDS), is(true)); Throwable cause = socket.errors.pop(); assertThat("Error", cause, instanceOf(RuntimeException.class)); 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 e406aed6db6..c6e0c797cc9 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 @@ -30,11 +30,12 @@ import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; +import javax.websocket.ClientEndpoint; import javax.websocket.ContainerProvider; -import javax.websocket.Endpoint; import javax.websocket.EndpointConfig; import javax.websocket.OnError; import javax.websocket.OnMessage; +import javax.websocket.OnOpen; import javax.websocket.Session; import javax.websocket.WebSocketContainer; import javax.websocket.server.ServerEndpoint; @@ -73,9 +74,10 @@ public class WebSocketServerContainerExecutorTest } } - public static class EndpointAdapter extends Endpoint + @ClientEndpoint + public static class EndpointAdapter { - @Override + @OnOpen public void onOpen(Session session, EndpointConfig config) { /* do nothing */