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>