Skip to content

Commit 29f2c1f

Browse files
committed
[#1802] Switch pax-web-undertow-websocket from javax to jakarta
1 parent c826a66 commit 29f2c1f

File tree

5 files changed

+74
-57
lines changed

5 files changed

+74
-57
lines changed

pax-web-undertow-websocket/pom.xml

+27-10
Original file line numberDiff line numberDiff line change
@@ -42,14 +42,16 @@
4242
<configuration>
4343
<instructions>
4444
<Import-Package>
45-
javax.servlet;version="[3.1,5)",
46-
javax.servlet.annotation;version="[3.1,5)",
47-
javax.servlet.http;version="[3.1,5)",
48-
javax.websocket;version="[1.1,2)",
49-
javax.websocket.server;version="[1.1,2)",
45+
<!-- ranges indicate Servlet API 6.0+ (JakartaEE 10+) -->
46+
jakarta.servlet;version="[6,7)",
47+
jakarta.servlet.annotation;version="[6,7)",
48+
jakarta.servlet.http;version="[6,7)",
49+
50+
jakarta.websocket;version="[2.1,3)",
51+
jakarta.websocket.server;version="[2.1,3)",
5052

5153
<!-- from pax-logging-api -->
52-
org.slf4j;version="[1.7,2)",
54+
org.slf4j;version="[2,3)",
5355

5456
org.ops4j.pax.web.service.spi.model,
5557
org.ops4j.pax.web.service.spi.servlet,
@@ -83,7 +85,7 @@
8385
<artifactId>pax-web-undertow</artifactId>
8486
</dependency>
8587

86-
<!-- JavaEE -->
88+
<!-- JakartaEE -->
8789

8890
<dependency>
8991
<groupId>jakarta.servlet</groupId>
@@ -95,6 +97,11 @@
9597
<artifactId>jakarta.websocket-api</artifactId>
9698
<scope>provided</scope>
9799
</dependency>
100+
<dependency>
101+
<groupId>jakarta.websocket</groupId>
102+
<artifactId>jakarta.websocket-client-api</artifactId>
103+
<scope>provided</scope>
104+
</dependency>
98105

99106
<!-- Undertow -->
100107

@@ -144,7 +151,7 @@
144151
</dependency>
145152
<dependency>
146153
<groupId>org.apache.logging.log4j</groupId>
147-
<artifactId>log4j-slf4j-impl</artifactId>
154+
<artifactId>log4j-slf4j2-impl</artifactId>
148155
<scope>test</scope>
149156
</dependency>
150157

@@ -159,8 +166,18 @@
159166
<!-- Testing -->
160167

161168
<dependency>
162-
<groupId>junit</groupId>
163-
<artifactId>junit</artifactId>
169+
<groupId>org.junit.jupiter</groupId>
170+
<artifactId>junit-jupiter-api</artifactId>
171+
<scope>test</scope>
172+
</dependency>
173+
<dependency>
174+
<groupId>org.junit.jupiter</groupId>
175+
<artifactId>junit-jupiter-engine</artifactId>
176+
<scope>test</scope>
177+
</dependency>
178+
<dependency>
179+
<groupId>org.assertj</groupId>
180+
<artifactId>assertj-core</artifactId>
164181
<scope>test</scope>
165182
</dependency>
166183
<dependency>

pax-web-undertow-websocket/src/main/java/org/ops4j/pax/web/service/undertow/websocket/internal/WebSocketsExtension.java

+7-7
Original file line numberDiff line numberDiff line change
@@ -20,13 +20,13 @@
2020
import java.util.EnumSet;
2121
import java.util.EventListener;
2222
import java.util.List;
23-
import javax.servlet.DispatcherType;
24-
import javax.servlet.FilterRegistration;
25-
import javax.servlet.ServletContext;
26-
import javax.servlet.ServletContextEvent;
27-
import javax.servlet.ServletContextListener;
28-
import javax.websocket.Extension;
29-
import javax.websocket.server.ServerContainer;
23+
import jakarta.servlet.DispatcherType;
24+
import jakarta.servlet.FilterRegistration;
25+
import jakarta.servlet.ServletContext;
26+
import jakarta.servlet.ServletContextEvent;
27+
import jakarta.servlet.ServletContextListener;
28+
import jakarta.websocket.Extension;
29+
import jakarta.websocket.server.ServerContainer;
3030

3131
import io.undertow.servlet.Servlets;
3232
import io.undertow.servlet.api.DeploymentInfo;

pax-web-undertow-websocket/src/main/java/org/ops4j/pax/web/service/undertow/websocket/internal/WebSocketsInitializer.java

+17-16
Original file line numberDiff line numberDiff line change
@@ -19,16 +19,16 @@
1919
import java.lang.reflect.Modifier;
2020
import java.util.HashSet;
2121
import java.util.Set;
22-
import javax.servlet.ServletContainerInitializer;
23-
import javax.servlet.ServletContext;
24-
import javax.servlet.ServletException;
25-
import javax.servlet.annotation.HandlesTypes;
26-
import javax.websocket.DeploymentException;
27-
import javax.websocket.Endpoint;
28-
import javax.websocket.server.ServerApplicationConfig;
29-
import javax.websocket.server.ServerContainer;
30-
import javax.websocket.server.ServerEndpoint;
31-
import javax.websocket.server.ServerEndpointConfig;
22+
import jakarta.servlet.ServletContainerInitializer;
23+
import jakarta.servlet.ServletContext;
24+
import jakarta.servlet.ServletException;
25+
import jakarta.servlet.annotation.HandlesTypes;
26+
import jakarta.websocket.DeploymentException;
27+
import jakarta.websocket.Endpoint;
28+
import jakarta.websocket.server.ServerApplicationConfig;
29+
import jakarta.websocket.server.ServerContainer;
30+
import jakarta.websocket.server.ServerEndpoint;
31+
import jakarta.websocket.server.ServerEndpointConfig;
3232

3333
import org.slf4j.Logger;
3434
import org.slf4j.LoggerFactory;
@@ -49,13 +49,13 @@ public void onStartup(Set<Class<?>> c, ServletContext ctx) throws ServletExcepti
4949
ServerContainer wsContainer = (ServerContainer) ctx.getAttribute(ServerContainer.class.getName());
5050

5151
if (wsContainer == null) {
52-
LOG.warn("[dev error] No javax.websocket.server.ServerContainer available in servlet context." +
52+
LOG.warn("[dev error] No jakarta.websocket.server.ServerContainer available in servlet context." +
5353
" Skipping WebSocket registration.");
5454
return;
5555
}
5656

5757
// inspired by Tomcat's org.apache.tomcat.websocket.server.WsSci and
58-
// Jetty's org.eclipse.jetty.websocket.javax.server.config.JavaxWebSocketServletContainerInitializer
58+
// Jetty's org.eclipse.jetty.ee10.websocket.jakarta.server.config.JakartaWebSocketServletContainerInitializer
5959

6060
Set<Class<?>> annotatedEndpointClasses = new HashSet<>();
6161
Set<Class<? extends Endpoint>> conigurableEndpoints = new HashSet<>();
@@ -67,15 +67,16 @@ public void onStartup(Set<Class<?>> c, ServletContext ctx) throws ServletExcepti
6767
if (!Modifier.isPublic(modifiers) || Modifier.isAbstract(modifiers) || Modifier.isInterface(modifiers)) {
6868
continue;
6969
}
70-
if (potentialEndpointClass.getPackage().getName().startsWith("javax.")) {
70+
if (potentialEndpointClass.getPackage().getName().startsWith("javax.")
71+
|| potentialEndpointClass.getPackage().getName().startsWith("jakarta.")) {
7172
continue;
7273
}
7374
if (Endpoint.class.isAssignableFrom(potentialEndpointClass)) {
74-
// a class to be processed by javax.websocket.server.ServerApplicationConfig
75+
// a class to be processed by jakarta.websocket.server.ServerApplicationConfig
7576
conigurableEndpoints.add((Class<? extends Endpoint>) potentialEndpointClass);
7677
}
7778
if (ServerApplicationConfig.class.isAssignableFrom(potentialEndpointClass)) {
78-
// a class that processes javax.websocket.Endpoints
79+
// a class that processes jakarta.websocket.Endpoints
7980
try {
8081
configs.add((ServerApplicationConfig) potentialEndpointClass.getConstructor().newInstance());
8182
} catch (InstantiationException | IllegalAccessException | NoSuchMethodException |
@@ -93,7 +94,7 @@ public void onStartup(Set<Class<?>> c, ServletContext ctx) throws ServletExcepti
9394
Set<Class<?>> configuredAnnotatedEndpointClasses = new HashSet<>();
9495

9596
if (configs.isEmpty()) {
96-
// no javax.websocket.server.ServerApplicationConfigs available - consider only annotated endpoints
97+
// no jakarta.websocket.server.ServerApplicationConfigs available - consider only annotated endpoints
9798
configuredAnnotatedEndpointClasses.addAll(annotatedEndpointClasses);
9899
} else {
99100
for (ServerApplicationConfig config : configs) {

pax-web-undertow-websocket/src/test/java/org/ops4j/pax/web/service/undertow/websocket/internal/EmbeddedUndertowWebSocketsTest.java

+18-19
Original file line numberDiff line numberDiff line change
@@ -24,20 +24,20 @@
2424
import java.util.Map;
2525
import java.util.ServiceLoader;
2626
import java.util.Set;
27-
import javax.servlet.http.HttpServlet;
28-
import javax.websocket.ClientEndpointConfig;
29-
import javax.websocket.ContainerProvider;
30-
import javax.websocket.Endpoint;
31-
import javax.websocket.EndpointConfig;
32-
import javax.websocket.OnMessage;
33-
import javax.websocket.OnOpen;
34-
import javax.websocket.RemoteEndpoint;
35-
import javax.websocket.Session;
36-
import javax.websocket.WebSocketContainer;
37-
import javax.websocket.server.ServerApplicationConfig;
38-
import javax.websocket.server.ServerContainer;
39-
import javax.websocket.server.ServerEndpoint;
40-
import javax.websocket.server.ServerEndpointConfig;
27+
import jakarta.servlet.http.HttpServlet;
28+
import jakarta.websocket.ClientEndpointConfig;
29+
import jakarta.websocket.ContainerProvider;
30+
import jakarta.websocket.Endpoint;
31+
import jakarta.websocket.EndpointConfig;
32+
import jakarta.websocket.OnMessage;
33+
import jakarta.websocket.OnOpen;
34+
import jakarta.websocket.RemoteEndpoint;
35+
import jakarta.websocket.Session;
36+
import jakarta.websocket.WebSocketContainer;
37+
import jakarta.websocket.server.ServerApplicationConfig;
38+
import jakarta.websocket.server.ServerContainer;
39+
import jakarta.websocket.server.ServerEndpoint;
40+
import jakarta.websocket.server.ServerEndpointConfig;
4141

4242
import io.undertow.Handlers;
4343
import io.undertow.Undertow;
@@ -52,13 +52,12 @@
5252
import io.undertow.servlet.util.ImmediateInstanceFactory;
5353
import io.undertow.websockets.jsr.ServerWebSocketContainer;
5454
import io.undertow.websockets.jsr.WebSocketDeploymentInfo;
55-
import org.junit.Test;
55+
import org.junit.jupiter.api.Test;
5656
import org.slf4j.Logger;
5757
import org.slf4j.LoggerFactory;
5858

59-
import static org.hamcrest.CoreMatchers.equalTo;
60-
import static org.hamcrest.MatcherAssert.assertThat;
61-
import static org.junit.Assert.assertNotNull;
59+
import static org.assertj.core.api.Assertions.assertThat;
60+
import static org.junit.jupiter.api.Assertions.assertNotNull;
6261

6362
public class EmbeddedUndertowWebSocketsTest {
6463

@@ -115,7 +114,7 @@ public <T> T getEndpointInstance(Class<T> endpointClass) throws InstantiationExc
115114

116115
// we can add more endpoints only before io.undertow.websockets.jsr.JsrWebSocketFilter.init() is called
117116
ServerContainer sc = (ServerContainer) dm.getDeployment().getServletContext().getAttribute(ServerContainer.class.getName());
118-
assertThat(sc.getClass().getName(), equalTo("io.undertow.websockets.jsr.ServerWebSocketContainer"));
117+
assertThat(sc.getClass().getName()).isEqualTo("io.undertow.websockets.jsr.ServerWebSocketContainer");
119118
sc.addEndpoint(MyAnnotatedEndpoint.class);
120119

121120
ClientEndpointConfig config = ClientEndpointConfig.Builder.create()

pax-web-undertow/pom.xml

+5-5
Original file line numberDiff line numberDiff line change
@@ -225,11 +225,6 @@
225225
<artifactId>jul-to-slf4j</artifactId>
226226
<scope>provided</scope>
227227
</dependency>
228-
<dependency>
229-
<groupId>org.assertj</groupId>
230-
<artifactId>assertj-core</artifactId>
231-
<scope>test</scope>
232-
</dependency>
233228
<dependency>
234229
<groupId>org.apache.logging.log4j</groupId>
235230
<artifactId>log4j-slf4j2-impl</artifactId>
@@ -272,6 +267,11 @@
272267
<artifactId>junit-jupiter-engine</artifactId>
273268
<scope>test</scope>
274269
</dependency>
270+
<dependency>
271+
<groupId>org.assertj</groupId>
272+
<artifactId>assertj-core</artifactId>
273+
<scope>test</scope>
274+
</dependency>
275275
<dependency>
276276
<groupId>org.mockito</groupId>
277277
<artifactId>mockito-core</artifactId>

0 commit comments

Comments
 (0)