You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@felix.apache.org by pa...@apache.org on 2024/12/30 11:20:42 UTC

(felix-dev) branch maintenance/FELIX-6746-websocketservlet-init-NPE updated: FELIX-6746 JettyWebSocketServlet: Error during calling init() - Extract test methods - Remove ServletWrapper support, as it doesn't work properly yet

This is an automated email from the ASF dual-hosted git repository.

paulrutter pushed a commit to branch maintenance/FELIX-6746-websocketservlet-init-NPE
in repository https://gitbox.apache.org/repos/asf/felix-dev.git


The following commit(s) were added to refs/heads/maintenance/FELIX-6746-websocketservlet-init-NPE by this push:
     new 1a94da05a2 FELIX-6746 JettyWebSocketServlet: Error during calling init() - Extract test methods - Remove ServletWrapper support, as it doesn't work properly yet
1a94da05a2 is described below

commit 1a94da05a2adacf0789ad36d63938265e1f3c158
Author: Paul Rütter <pa...@blueconic.com>
AuthorDate: Mon Dec 30 12:20:29 2024 +0100

    FELIX-6746 JettyWebSocketServlet: Error during calling init()
    - Extract test methods
    - Remove ServletWrapper support, as it doesn't work properly yet
---
 .../http/base/internal/handler/ServletHandler.java |  8 +-----
 .../http/jetty/it/JettySpecificWebsocketIT.java    | 33 +++++-----------------
 http/samples/whiteboard/pom.xml                    |  2 +-
 3 files changed, 9 insertions(+), 34 deletions(-)

diff --git a/http/base/src/main/java/org/apache/felix/http/base/internal/handler/ServletHandler.java b/http/base/src/main/java/org/apache/felix/http/base/internal/handler/ServletHandler.java
index 1291c7a8a0..e1c8b38431 100644
--- a/http/base/src/main/java/org/apache/felix/http/base/internal/handler/ServletHandler.java
+++ b/http/base/src/main/java/org/apache/felix/http/base/internal/handler/ServletHandler.java
@@ -213,13 +213,7 @@ public abstract class ServletHandler implements Comparable<ServletHandler>
         SystemLogger.LOGGER.debug("Checking if the servlet is a JettyWebSocketServlet: '" + superClass.getSimpleName() + "'");
 
         // Now check if the servlet class extends 'JettyWebSocketServlet'
-        boolean isJettyWebSocketServlet = superClass.getSimpleName().endsWith(JETTY_WEB_SOCKET_SERVLET_CLASS);
-        if (!isJettyWebSocketServlet && servlet instanceof org.apache.felix.http.javaxwrappers.ServletWrapper) {
-            // In case the servlet is wrapped, we need to check the wrapped servlet
-            isJettyWebSocketServlet = ((org.apache.felix.http.javaxwrappers.ServletWrapper) servlet)
-                    .getServlet().getClass().getSuperclass().getSimpleName().endsWith(JETTY_WEB_SOCKET_SERVLET_CLASS);
-        }
-        return isJettyWebSocketServlet;
+        return superClass.getSimpleName().endsWith(JETTY_WEB_SOCKET_SERVLET_CLASS);
     }
 
 
diff --git a/http/jetty12/src/test/java/org/apache/felix/http/jetty/it/JettySpecificWebsocketIT.java b/http/jetty12/src/test/java/org/apache/felix/http/jetty/it/JettySpecificWebsocketIT.java
index 7f883370c5..78d7a8b235 100644
--- a/http/jetty12/src/test/java/org/apache/felix/http/jetty/it/JettySpecificWebsocketIT.java
+++ b/http/jetty12/src/test/java/org/apache/felix/http/jetty/it/JettySpecificWebsocketIT.java
@@ -110,30 +110,7 @@ public class JettySpecificWebsocketIT extends AbstractJettyTestSupport {
                 HTTP_WHITEBOARD_SERVLET_PATTERN, "/mywebsocket1"
         )));
 
-        HttpClientTransportOverHTTP transport = new HttpClientTransportOverHTTP();
-        HttpClient httpClient = new org.eclipse.jetty.client.HttpClient(transport);
-        WebSocketClient webSocketClient = new WebSocketClient(httpClient);
-        webSocketClient.start();
-
-        Object value = bundleContext.getServiceReference(HttpService.class).getProperty("org.osgi.service.http.port");
-        int httpPort = Integer.parseInt((String)value);
-        URI destUri = new URI(String.format("ws://localhost:%d/mywebsocket1", httpPort));
-
-        MyClientWebSocket clientWebSocket = new MyClientWebSocket();
-        ClientUpgradeRequest request = new ClientUpgradeRequest();
-        CompletableFuture<Session> future = webSocketClient.connect(clientWebSocket, destUri, request);
-        Session session = future.get();
-        assertNotNull(session);
-
-        // send a message from the client to the server
-        clientWebSocket.sendMessage("Hello WebSocket");
-
-        // wait for the async response from the server
-        Awaitility.await("waitForResponse")
-                .atMost(Duration.ofSeconds(30))
-                .pollDelay(Duration.ofMillis(200))
-                .until(() -> clientWebSocket.getLastMessage() != null);
-        assertEquals("Hello WebSocket", clientWebSocket.getLastMessage());
+        assertWebSocketResponse("mywebsocket1");
     }
 
     @Test
@@ -145,9 +122,13 @@ public class JettySpecificWebsocketIT extends AbstractJettyTestSupport {
             }
         };
         final Dictionary<String, Object> props = new Hashtable<>();
-        props.put(HTTP_WHITEBOARD_SERVLET_PATTERN, "/websocketservlet");
+        props.put(HTTP_WHITEBOARD_SERVLET_PATTERN, "/websocketservletwhiteboard");
         bundleContext.registerService(Servlet.class, webSocketServlet, props);
 
+        assertWebSocketResponse("websocketservletwhiteboard");
+    }
+
+    private void assertWebSocketResponse(String servletPath) throws Exception {
         HttpClientTransportOverHTTP transport = new HttpClientTransportOverHTTP();
         HttpClient httpClient = new org.eclipse.jetty.client.HttpClient(transport);
         WebSocketClient webSocketClient = new WebSocketClient(httpClient);
@@ -155,7 +136,7 @@ public class JettySpecificWebsocketIT extends AbstractJettyTestSupport {
 
         Object value = bundleContext.getServiceReference(HttpService.class).getProperty("org.osgi.service.http.port");
         int httpPort = Integer.parseInt((String)value);
-        URI destUri = new URI(String.format("ws://localhost:%d/websocketservlet", httpPort));
+        URI destUri = new URI(String.format("ws://localhost:%d/" + servletPath, httpPort));
 
         MyClientWebSocket clientWebSocket = new MyClientWebSocket();
         ClientUpgradeRequest request = new ClientUpgradeRequest();
diff --git a/http/samples/whiteboard/pom.xml b/http/samples/whiteboard/pom.xml
index 3cb20fa90b..aa08f324e0 100644
--- a/http/samples/whiteboard/pom.xml
+++ b/http/samples/whiteboard/pom.xml
@@ -96,7 +96,7 @@
         <dependency>
             <groupId>org.apache.felix</groupId>
             <artifactId>org.apache.felix.http.jetty12</artifactId>
-            <version>1.0.5-SNAPSHOT</version>
+            <version>1.0.20-SNAPSHOT</version>
             <scope>provided</scope>
         </dependency>
         <dependency>