29
29
import java .util .List ;
30
30
import java .util .Map ;
31
31
import java .util .Set ;
32
- import javax .servlet .DispatcherType ;
33
- import javax .servlet .Filter ;
34
- import javax .servlet .FilterChain ;
35
- import javax .servlet .ServletConfig ;
36
- import javax .servlet .ServletContainerInitializer ;
37
- import javax .servlet .ServletContext ;
38
- import javax .servlet .ServletContextEvent ;
39
- import javax .servlet .ServletContextListener ;
40
- import javax .servlet .ServletException ;
41
- import javax .servlet .http .HttpFilter ;
42
- import javax .servlet .http .HttpServlet ;
43
- import javax .servlet .http .HttpServletRequest ;
44
- import javax .servlet .http .HttpServletResponse ;
32
+ import jakarta .servlet .DispatcherType ;
33
+ import jakarta .servlet .Filter ;
34
+ import jakarta .servlet .FilterChain ;
35
+ import jakarta .servlet .ServletConfig ;
36
+ import jakarta .servlet .ServletContainerInitializer ;
37
+ import jakarta .servlet .ServletContext ;
38
+ import jakarta .servlet .ServletContextEvent ;
39
+ import jakarta .servlet .ServletContextListener ;
40
+ import jakarta .servlet .ServletException ;
41
+ import jakarta .servlet .http .HttpFilter ;
42
+ import jakarta .servlet .http .HttpServlet ;
43
+ import jakarta .servlet .http .HttpServletRequest ;
44
+ import jakarta .servlet .http .HttpServletResponse ;
45
45
46
46
import io .undertow .Handlers ;
47
47
import io .undertow .Undertow ;
70
70
import io .undertow .servlet .util .ImmediateInstanceFactory ;
71
71
import io .undertow .util .ETag ;
72
72
import io .undertow .util .StatusCodes ;
73
- import org .junit .Test ;
73
+ import org .junit .jupiter . api . Test ;
74
74
import org .slf4j .Logger ;
75
75
import org .slf4j .LoggerFactory ;
76
76
import org .xnio .ChannelListener ;
83
83
import org .xnio .XnioWorker ;
84
84
import org .xnio .channels .AcceptingChannel ;
85
85
86
- import static org .hamcrest .CoreMatchers .equalTo ;
87
- import static org .hamcrest .MatcherAssert .assertThat ;
88
- import static org .junit .Assert .assertFalse ;
89
- import static org .junit .Assert .assertTrue ;
86
+ import static org .assertj .core .api .Assertions .assertThat ;
87
+ import static org .junit .jupiter .api .Assertions .assertFalse ;
88
+ import static org .junit .jupiter .api .Assertions .assertTrue ;
90
89
91
90
public class EmbeddedUndertowTest {
92
91
@@ -102,7 +101,7 @@ public void undertowWithSingleContextAndServlet() throws Exception {
102
101
103
102
HttpServlet servletInstance = new HttpServlet () {
104
103
@ Override
105
- protected void service (HttpServletRequest req , HttpServletResponse resp ) throws ServletException , IOException {
104
+ protected void service (HttpServletRequest req , HttpServletResponse resp ) throws IOException {
106
105
LOG .info ("Handling request: {}" , req .toString ());
107
106
resp .setContentType ("text/plain" );
108
107
resp .setCharacterEncoding ("UTF-8" );
@@ -113,7 +112,7 @@ protected void service(HttpServletRequest req, HttpServletResponse resp) throws
113
112
}
114
113
};
115
114
116
- ServletInfo servlet = Servlets .servlet ("s1" , servletInstance .getClass (), new ImmediateInstanceFactory <HttpServlet >(servletInstance ));
115
+ ServletInfo servlet = Servlets .servlet ("s1" , servletInstance .getClass (), new ImmediateInstanceFactory <>(servletInstance ));
117
116
servlet .addMapping ("/s1/*" );
118
117
119
118
DeploymentInfo deploymentInfo = Servlets .deployment ()
@@ -160,7 +159,7 @@ public void embeddedServerWithUndertowResourceServlet() throws Exception {
160
159
161
160
HttpServlet servletInstance = new DefaultServlet ();
162
161
163
- ServletInfo servlet = Servlets .servlet ("default" , servletInstance .getClass (), new ImmediateInstanceFactory <HttpServlet >(servletInstance ));
162
+ ServletInfo servlet = Servlets .servlet ("default" , servletInstance .getClass (), new ImmediateInstanceFactory <>(servletInstance ));
164
163
servlet .addInitParam ("directory-listing" , "true" );
165
164
166
165
// with "/" mapping, io.undertow.servlet.handlers.ServletPathMatch is used with
@@ -231,7 +230,7 @@ public void dynamicListeners() throws Exception {
231
230
232
231
HttpServlet servletInstance = new HttpServlet () {
233
232
@ Override
234
- protected void service (HttpServletRequest req , HttpServletResponse resp ) throws ServletException , IOException {
233
+ protected void service (HttpServletRequest req , HttpServletResponse resp ) throws IOException {
235
234
LOG .info ("Handling request: {}" , req .toString ());
236
235
resp .setContentType ("text/plain" );
237
236
resp .setCharacterEncoding ("UTF-8" );
@@ -251,7 +250,7 @@ protected void service(HttpServletRequest req, HttpServletResponse resp) throws
251
250
}
252
251
};
253
252
254
- ServletInfo servlet = Servlets .servlet ("default" , servletInstance .getClass (), new ImmediateInstanceFactory <HttpServlet >(servletInstance ));
253
+ ServletInfo servlet = Servlets .servlet ("default" , servletInstance .getClass (), new ImmediateInstanceFactory <>(servletInstance ));
255
254
servlet .addMapping ("/s1" );
256
255
257
256
DeploymentInfo deploymentInfo = Servlets .deployment ()
@@ -282,7 +281,7 @@ public void contextInitialized(ServletContextEvent sce) {
282
281
.addServletContainerInitializer (new ServletContainerInitializerInfo (ServletContainerInitializer .class ,
283
282
new ImmediateInstanceFactory <ServletContainerInitializer >(new ServletContainerInitializer () {
284
283
@ Override
285
- public void onStartup (Set <Class <?>> c , ServletContext ctx ) throws ServletException {
284
+ public void onStartup (Set <Class <?>> c , ServletContext ctx ) {
286
285
// ServletContextListener added from SCI - this is real "programmatic listener"
287
286
ctx .addListener (new ServletContextListener () {
288
287
@ Override
@@ -354,7 +353,7 @@ public void undertowWithRequestWrappers() throws Exception {
354
353
355
354
HttpServlet servletInstance = new HttpServlet () {
356
355
@ Override
357
- protected void service (HttpServletRequest req , HttpServletResponse resp ) throws ServletException , IOException {
356
+ protected void service (HttpServletRequest req , HttpServletResponse resp ) throws IOException {
358
357
LOG .info ("Handling request: {}" , req .toString ());
359
358
resp .setContentType ("text/plain" );
360
359
resp .setCharacterEncoding ("UTF-8" );
@@ -372,7 +371,7 @@ protected void doFilter(HttpServletRequest req, HttpServletResponse res, FilterC
372
371
}
373
372
};
374
373
375
- ServletInfo servlet = Servlets .servlet ("s1" , servletInstance .getClass (), new ImmediateInstanceFactory <HttpServlet >(servletInstance ));
374
+ ServletInfo servlet = Servlets .servlet ("s1" , servletInstance .getClass (), new ImmediateInstanceFactory <>(servletInstance ));
376
375
servlet .addMapping ("/s1/*" );
377
376
378
377
FilterInfo filter = Servlets .filter ("f1" , filterInstance .getClass (), new ImmediateInstanceFactory <>(filterInstance ));
@@ -434,7 +433,7 @@ protected void doFilter(HttpServletRequest req, HttpServletResponse res, FilterC
434
433
// "XNIO-1 task-1@2434" prio=5 tid=0x17 nid=NA runnable
435
434
// java.lang.Thread.State: RUNNABLE
436
435
// at org.ops4j.pax.web.service.undertow.internal.EmbeddedUndertowTest$2.service(EmbeddedUndertowTest.java:139)
437
- // at javax .servlet.http.HttpServlet.service(HttpServlet.java:590)
436
+ // at jakarta .servlet.http.HttpServlet.service(HttpServlet.java:590)
438
437
// at io.undertow.servlet.handlers.ServletHandler.handleRequest(ServletHandler.java:74)
439
438
// at io.undertow.servlet.handlers.security.ServletSecurityRoleHandler.handleRequest(ServletSecurityRoleHandler.java:62)
440
439
// at io.undertow.servlet.handlers.ServletChain$1.handleRequest(ServletChain.java:68)
@@ -559,7 +558,7 @@ public void undertowUsingLowLevelBuilders() throws Exception {
559
558
560
559
HttpServlet servletInstance = new HttpServlet () {
561
560
@ Override
562
- protected void service (HttpServletRequest req , HttpServletResponse resp ) throws ServletException , IOException {
561
+ protected void service (HttpServletRequest req , HttpServletResponse resp ) throws IOException {
563
562
LOG .info ("Handling request: {}" , req .toString ());
564
563
resp .setContentType ("text/plain" );
565
564
resp .setCharacterEncoding ("UTF-8" );
@@ -570,7 +569,7 @@ protected void service(HttpServletRequest req, HttpServletResponse resp) throws
570
569
}
571
570
};
572
571
573
- ServletInfo servlet = Servlets .servlet ("s1" , servletInstance .getClass (), new ImmediateInstanceFactory <HttpServlet >(servletInstance ));
572
+ ServletInfo servlet = Servlets .servlet ("s1" , servletInstance .getClass (), new ImmediateInstanceFactory <>(servletInstance ));
574
573
servlet .addMapping ("/s1/*" );
575
574
576
575
DeploymentInfo deploymentInfo = Servlets .deployment ()
@@ -606,7 +605,7 @@ protected void service(HttpServletRequest req, HttpServletResponse resp) throws
606
605
response = send (port , "/c1/s2" );
607
606
assertTrue (response .contains ("HTTP/1.1 404" ));
608
607
609
- ServletInfo servlet2 = Servlets .servlet ("s2" , servletInstance .getClass (), new ImmediateInstanceFactory <HttpServlet >(servletInstance ));
608
+ ServletInfo servlet2 = Servlets .servlet ("s2" , servletInstance .getClass (), new ImmediateInstanceFactory <>(servletInstance ));
610
609
servlet2 .addMapping ("/s2/*" );
611
610
// this is not necessary. Not even reasonable, because the deployment info is originally cloned inside
612
611
// the deployment
@@ -963,7 +962,7 @@ public void init(ServletConfig config) throws ServletException {
963
962
}
964
963
965
964
@ Override
966
- protected void service (HttpServletRequest req , HttpServletResponse resp ) throws ServletException , IOException {
965
+ protected void service (HttpServletRequest req , HttpServletResponse resp ) throws IOException {
967
966
LOG .info ("Handling request: {}" , req .toString ());
968
967
resp .setContentType ("text/plain" );
969
968
resp .setCharacterEncoding ("UTF-8" );
@@ -983,11 +982,11 @@ protected void service(HttpServletRequest req, HttpServletResponse resp) throws
983
982
984
983
// another example of "info" like class. "servlet info" is added to "deployment info" (directly, not as clone)
985
984
// which means "servlet is registered inside servlet context"
986
- ServletInfo servlet = Servlets .servlet ("c1s1" , servletInstance .getClass (), new ImmediateInstanceFactory <HttpServlet >(servletInstance ));
985
+ ServletInfo servlet = Servlets .servlet ("c1s1" , servletInstance .getClass (), new ImmediateInstanceFactory <>(servletInstance ));
987
986
servlet .addMapping ("/s1/*" );
988
987
989
988
// "deployment info" represents a full information about single "servlet context" which can simply be
990
- // treated as "JavaEE web application" with single context path
989
+ // treated as "JakartaEE web application" with single context path
991
990
// this info is in 1:1 relation with single web.xml descriptor
992
991
DeploymentInfo deploymentInfo1 = Servlets .deployment ()
993
992
.setClassLoader (this .getClass ().getClassLoader ())
@@ -1011,15 +1010,15 @@ protected void service(HttpServletRequest req, HttpServletResponse resp) throws
1011
1010
// - returned as io.undertow.servlet.api.DeploymentManager object that controls the lifecycle of
1012
1011
// associated "physical deployment"
1013
1012
DeploymentManager dm1 = container .addDeployment (deploymentInfo1 );
1014
- assertThat (dm1 .getState (), equalTo (DeploymentManager .State .UNDEPLOYED ) );
1013
+ assertThat (dm1 .getState ()). isEqualTo (DeploymentManager .State .UNDEPLOYED );
1015
1014
1016
1015
// "deploying" clones the already cloned "deployment info" again and turns it into "physical deployment"
1017
1016
// represented by io.undertow.servlet.api.Deployment, which allows read access to various aspects
1018
1017
// of "web application".
1019
1018
// the problem with Undertow is that while we can add new servlets to existing "deployment", we can't
1020
1019
// remove them...
1021
1020
// "deploy" does few important things:
1022
- // - creates instance of io.undertow.servlet.spec.ServletContextImpl (THE javax .servlet.ServletContext)
1021
+ // - creates instance of io.undertow.servlet.spec.ServletContextImpl (THE jakarta .servlet.ServletContext)
1023
1022
// - creates instance of io.undertow.servlet.core.DeploymentImpl
1024
1023
// - prepares all the "web elements" by turning "info" into "physical representation" of e.g., servlet
1025
1024
// - e.g., io.undertow.servlet.api.ServletInfo is turned into io.undertow.servlet.core.ManagedServlet
@@ -1032,11 +1031,11 @@ protected void service(HttpServletRequest req, HttpServletResponse resp) throws
1032
1031
// - the final handler is put as io.undertow.servlet.core.DeploymentImpl.initialHandler and then
1033
1032
// returned from (as-is) io.undertow.servlet.api.DeploymentManager.start()
1034
1033
dm1 .deploy ();
1035
- assertThat (dm1 .getState (), equalTo (DeploymentManager .State .DEPLOYED ) );
1034
+ assertThat (dm1 .getState ()). isEqualTo (DeploymentManager .State .DEPLOYED );
1036
1035
1037
1036
// "start" starts all lifecycle objects (servlets, filters, listeners)
1038
1037
HttpHandler handler = dm1 .start ();
1039
- assertThat (dm1 .getState (), equalTo (DeploymentManager .State .STARTED ) );
1038
+ assertThat (dm1 .getState ()). isEqualTo (DeploymentManager .State .STARTED );
1040
1039
1041
1040
path .addPrefixPath ("/c1" , handler );
1042
1041
@@ -1056,7 +1055,7 @@ protected void service(HttpServletRequest req, HttpServletResponse resp) throws
1056
1055
1057
1056
// add new context
1058
1057
1059
- ServletInfo servlet2 = Servlets .servlet ("c2s1" , servletInstance .getClass (), new ImmediateInstanceFactory <HttpServlet >(servletInstance ));
1058
+ ServletInfo servlet2 = Servlets .servlet ("c2s1" , servletInstance .getClass (), new ImmediateInstanceFactory <>(servletInstance ));
1060
1059
servlet2 .addMapping ("/s1/*" );
1061
1060
1062
1061
DeploymentInfo deploymentInfo2 = Servlets .deployment ()
@@ -1076,7 +1075,7 @@ protected void service(HttpServletRequest req, HttpServletResponse resp) throws
1076
1075
1077
1076
// add new servlet to existing context
1078
1077
1079
- ServletInfo servlet3 = Servlets .servlet ("c1s2" , servletInstance .getClass (), new ImmediateInstanceFactory <HttpServlet >(servletInstance ));
1078
+ ServletInfo servlet3 = Servlets .servlet ("c1s2" , servletInstance .getClass (), new ImmediateInstanceFactory <>(servletInstance ));
1080
1079
servlet3 .addMapping ("/s2/*" );
1081
1080
1082
1081
response = send (port , "/c1/s2" );
@@ -1122,7 +1121,7 @@ private String send(int port, String request, String... headers) throws IOExcept
1122
1121
s .getOutputStream ().write (("Connection: close\r \n \r \n " ).getBytes ());
1123
1122
1124
1123
byte [] buf = new byte [64 ];
1125
- int read = - 1 ;
1124
+ int read ;
1126
1125
StringWriter sw = new StringWriter ();
1127
1126
while ((read = s .getInputStream ().read (buf )) > 0 ) {
1128
1127
sw .append (new String (buf , 0 , read ));
@@ -1135,7 +1134,7 @@ private String send(int port, String request, String... headers) throws IOExcept
1135
1134
private Map <String , String > extractHeaders (String response ) throws IOException {
1136
1135
Map <String , String > headers = new LinkedHashMap <>();
1137
1136
try (BufferedReader reader = new BufferedReader (new StringReader (response ))) {
1138
- String line = null ;
1137
+ String line ;
1139
1138
while ((line = reader .readLine ()) != null ) {
1140
1139
if (line .trim ().equals ("" )) {
1141
1140
break ;
0 commit comments