From 574812e0662890a15bb525e96f6bb01e46e084f5 Mon Sep 17 00:00:00 2001 From: Olivier Lamy Date: Wed, 22 Nov 2023 19:58:04 +1000 Subject: [PATCH] Do not fail when tests when cross context not supported (as it is not mandatory per spec) (#553) * do not fail test when cross context is not supported (servletContext.getContext returning null) * add a sys property to define if cross context is supported or not --------- Signed-off-by: Olivier Lamy --- tck/README.md | 45 +++ .../dispatchtest/DispatchTestServlet.java | 212 +++++++----- .../dispatchtest/DispatchTests.java | 324 ++++++++++++------ .../dispatchtest/DispatchTests11.java | 21 +- .../dispatchtest/DispatchTests12.java | 14 +- .../httpsessionx/ExpireHttpSession.java | 2 +- .../httpsessionx/TestServlet.java | 62 +++- .../tck/common/util/ServletTestUtil.java | 6 +- 8 files changed, 451 insertions(+), 235 deletions(-) create mode 100644 tck/README.md diff --git a/tck/README.md b/tck/README.md new file mode 100644 index 000000000..e04134c4c --- /dev/null +++ b/tck/README.md @@ -0,0 +1,45 @@ +# Jakarta Servlet + +This repository contains the code for Jakarta Servle TCK + +About Jakarta Servlet TCK +------------------------- +Jakarta Servlet TCK defines a server-side API for handling HTTP requests and is based on Junit5 and Arquillian. + +Building +-------- +Prerequisites: + +* JDK 11+ +* Maven 3.9.0+ + +Run the build: + +`mvn install` + +Running TCK +------------ +You need to configure your Apache Maven build to run tests from the tck artifacts. +This will be achieved by adding a dependency within your surefire configuration +```xml + + + jakarta.servlet + tck-runtime + + + + org.apache.maven.plugins + maven-surefire-plugin + ${surefire.version} + + + jakarta.servlet:tck-runtime + + + + false + + + +``` diff --git a/tck/tck-runtime/src/main/java/servlet/tck/api/jakarta_servlet/dispatchtest/DispatchTestServlet.java b/tck/tck-runtime/src/main/java/servlet/tck/api/jakarta_servlet/dispatchtest/DispatchTestServlet.java index d277df046..5c6aca679 100644 --- a/tck/tck-runtime/src/main/java/servlet/tck/api/jakarta_servlet/dispatchtest/DispatchTestServlet.java +++ b/tck/tck-runtime/src/main/java/servlet/tck/api/jakarta_servlet/dispatchtest/DispatchTestServlet.java @@ -21,11 +21,13 @@ import java.io.IOException; +import jakarta.servlet.ServletContext; import servlet.tck.common.servlets.GenericTCKServlet; import jakarta.servlet.AsyncContext; import jakarta.servlet.ServletRequest; import jakarta.servlet.ServletResponse; +import servlet.tck.common.util.ServletTestUtil; public class DispatchTestServlet extends GenericTCKServlet { @@ -156,9 +158,12 @@ public void dispatchReturnTest4(ServletRequest request, AsyncContext ac = request.startAsync(); response.getWriter() .println("Before dispatch=" + System.currentTimeMillis()); - ac.dispatch( - request.getServletContext().getContext(getDispatcher1ContextRoot()), - "/DispatchTests10?testname=dispatchTest10"); + ServletContext context = request.getServletContext().getContext(getDispatcher1ContextRoot()); + if (context!=null || ServletTestUtil.SUPPORT_CROSS_CONTEXT) { + ac.dispatch(context,"/DispatchTests10?testname=dispatchTest10"); + } else { + ac.complete(); + } response.getWriter() .println("dispatch return=" + System.currentTimeMillis()); } @@ -176,9 +181,12 @@ public void dispatchReturnTest5(ServletRequest request, AsyncContext ac = request.startAsync(request, response); response.getWriter() .println("Before dispatch=" + System.currentTimeMillis()); - ac.dispatch( - request.getServletContext().getContext(getDispatcher1ContextRoot()), - "/DispatchTests10?testname=dispatchTest10"); + ServletContext servletContext = request.getServletContext().getContext(getDispatcher1ContextRoot()); + if(servletContext!=null || ServletTestUtil.SUPPORT_CROSS_CONTEXT ) { + ac.dispatch(servletContext, "/DispatchTests10?testname=dispatchTest10"); + } else { + ac.complete(); + } response.getWriter() .println("dispatch return=" + System.currentTimeMillis()); } @@ -584,9 +592,12 @@ public void startAsyncAgainTest12(ServletRequest request, AsyncContext ac = request.startAsync(); response.getWriter() .println("Before dispatch=" + System.currentTimeMillis()); - ac.dispatch( - request.getServletContext().getContext(getDispatcher1ContextRoot()), - "/DispatchTests11?testname=dispatchTest11"); + ServletContext servletContext = request.getServletContext().getContext(getDispatcher1ContextRoot()); + if(servletContext!=null|| ServletTestUtil.SUPPORT_CROSS_CONTEXT) { + ac.dispatch(servletContext, "/DispatchTests11?testname=dispatchTest11"); + } else { + ac.complete(); + } response.getWriter() .println("dispatch return=" + System.currentTimeMillis()); } @@ -604,9 +615,12 @@ public void startAsyncAgainTest13(ServletRequest request, AsyncContext ac = request.startAsync(request, response); response.getWriter() .println("Before dispatch=" + System.currentTimeMillis()); - ac.dispatch( - request.getServletContext().getContext(getDispatcher1ContextRoot()), - "/DispatchTests12?testname=dispatchTest12"); + ServletContext servletContext = request.getServletContext().getContext(getDispatcher1ContextRoot()); + if(servletContext!=null|| ServletTestUtil.SUPPORT_CROSS_CONTEXT) { + ac.dispatch(servletContext, "/DispatchTests12?testname=dispatchTest12"); + } else { + ac.complete(); + } response.getWriter() .println("dispatch return=" + System.currentTimeMillis()); } @@ -624,9 +638,12 @@ public void startAsyncAgainTest14(ServletRequest request, AsyncContext ac = request.startAsync(); response.getWriter() .println("Before dispatch=" + System.currentTimeMillis()); - ac.dispatch( - request.getServletContext().getContext(getDispatcher1ContextRoot()), - "/DispatchTests13?testname=dispatchTest13"); + ServletContext servletContext = request.getServletContext().getContext(getDispatcher1ContextRoot()); + if(servletContext!=null|| ServletTestUtil.SUPPORT_CROSS_CONTEXT) { + ac.dispatch(servletContext, "/DispatchTests13?testname=dispatchTest13"); + } else { + ac.complete(); + } response.getWriter() .println("dispatch return=" + System.currentTimeMillis()); } @@ -644,9 +661,12 @@ public void startAsyncAgainTest15(ServletRequest request, AsyncContext ac = request.startAsync(request, response); response.getWriter() .println("Before dispatch=" + System.currentTimeMillis()); - ac.dispatch( - request.getServletContext().getContext(getDispatcher1ContextRoot()), - "/DispatchTests14?testname=dispatchTest14"); + ServletContext servletContext = request.getServletContext().getContext(getDispatcher1ContextRoot()); + if(servletContext!=null|| ServletTestUtil.SUPPORT_CROSS_CONTEXT) { + ac.dispatch(servletContext, "/DispatchTests14?testname=dispatchTest14"); + } else { + ac.complete(); + } response.getWriter() .println("dispatch return=" + System.currentTimeMillis()); } @@ -664,9 +684,12 @@ public void startAsyncAgainTest16(ServletRequest request, AsyncContext ac = request.startAsync(); response.getWriter() .println("Before dispatch=" + System.currentTimeMillis()); - ac.dispatch( - request.getServletContext().getContext(getDispatcher1ContextRoot()), - "/DispatchTests15?testname=dispatchTest15"); + ServletContext servletContext = request.getServletContext().getContext(getDispatcher1ContextRoot()); + if(servletContext!=null|| ServletTestUtil.SUPPORT_CROSS_CONTEXT) { + ac.dispatch(servletContext, "/DispatchTests15?testname=dispatchTest15"); + } else { + ac.complete(); + } response.getWriter() .println("dispatch return=" + System.currentTimeMillis()); } @@ -684,9 +707,12 @@ public void startAsyncAgainTest17(ServletRequest request, AsyncContext ac = request.startAsync(request, response); response.getWriter() .println("Before dispatch=" + System.currentTimeMillis()); - ac.dispatch( - request.getServletContext().getContext(getDispatcher1ContextRoot()), - "/DispatchTests16?testname=dispatchTest16"); + ServletContext servletContext = request.getServletContext().getContext(getDispatcher1ContextRoot()); + if(servletContext!=null || ServletTestUtil.SUPPORT_CROSS_CONTEXT) { + ac.dispatch(servletContext, "/DispatchTests16?testname=dispatchTest16"); + } else { + ac.complete(); + } response.getWriter() .println("dispatch return=" + System.currentTimeMillis()); } @@ -847,22 +873,25 @@ public void negativeDispatchTest8(ServletRequest request, AsyncContext ac = request.startAsync(); response.getWriter() .println("Before dispatch=" + System.currentTimeMillis()); - ac.dispatch( - request.getServletContext().getContext(getDispatcher1ContextRoot()), - "/DispatchTests10?testname=dispatchTest10"); - response.getWriter() - .println("dispatch return=" + System.currentTimeMillis()); - - try { - response.getWriter().println("dispatch again"); - ac.dispatch( - request.getServletContext() - .getContext(getDispatcher1ContextRoot()), - "/DispatchTests19?testname=dispatchTest19"); - } catch (IllegalStateException ex) { - response.getWriter().println("dispatch() called again"); + ServletContext servletContext = request.getServletContext().getContext(getDispatcher1ContextRoot()); + if(servletContext!=null || ServletTestUtil.SUPPORT_CROSS_CONTEXT) { + ac.dispatch(servletContext, "/DispatchTests10?testname=dispatchTest10"); response.getWriter() - .println("Expected IllegalStateException thrown" + ex.getMessage()); + .println("dispatch return=" + System.currentTimeMillis()); + + try { + response.getWriter().println("dispatch again"); + ac.dispatch( + request.getServletContext() + .getContext(getDispatcher1ContextRoot()), + "/DispatchTests19?testname=dispatchTest19"); + } catch (IllegalStateException ex) { + response.getWriter().println("dispatch() called again"); + response.getWriter() + .println("Expected IllegalStateException thrown" + ex.getMessage()); + } + } else { + ac.complete(); } } @@ -879,22 +908,25 @@ public void negativeDispatchTest9(ServletRequest request, AsyncContext ac = request.startAsync(request, response); response.getWriter() .println("Before dispatch=" + System.currentTimeMillis()); - ac.dispatch( - request.getServletContext().getContext(getDispatcher1ContextRoot()), - "/DispatchTests10?testname=dispatchTest10"); - response.getWriter() - .println("dispatch return=" + System.currentTimeMillis()); - - try { - response.getWriter().println("dispatch again"); - ac.dispatch( - request.getServletContext() - .getContext(getDispatcher1ContextRoot()), - "/DispatchTests19?testname=dispatchTest19"); - } catch (IllegalStateException ex) { - response.getWriter().println("dispatch() called again"); + ServletContext servletContext = request.getServletContext().getContext(getDispatcher1ContextRoot()); + if(servletContext!=null || ServletTestUtil.SUPPORT_CROSS_CONTEXT) { + ac.dispatch(servletContext, "/DispatchTests10?testname=dispatchTest10"); response.getWriter() - .println("Expected IllegalStateException thrown" + ex.getMessage()); + .println("dispatch return=" + System.currentTimeMillis()); + + try { + response.getWriter().println("dispatch again"); + ac.dispatch( + request.getServletContext() + .getContext(getDispatcher1ContextRoot()), + "/DispatchTests19?testname=dispatchTest19"); + } catch (IllegalStateException ex) { + response.getWriter().println("dispatch() called again"); + response.getWriter() + .println("Expected IllegalStateException thrown" + ex.getMessage()); + } + } else { + ac.complete(); } } @@ -912,19 +944,22 @@ public void negativeDispatchTest12(ServletRequest request, AsyncContext ac = request.startAsync(); response.getWriter() .println("Before dispatch=" + System.currentTimeMillis()); - ac.dispatch( - request.getServletContext().getContext(getDispatcher1ContextRoot()), - "/DispatchTests10?testname=dispatchTest10"); - response.getWriter() - .println("dispatch return=" + System.currentTimeMillis()); - - try { - response.getWriter().println("dispatch again"); - ac.dispatch("/DispatchTests?testname=dispatchTest"); - } catch (IllegalStateException ex) { - response.getWriter().println("dispatch(URI) called again"); + ServletContext servletContext = request.getServletContext().getContext(getDispatcher1ContextRoot()); + if(servletContext!=null || ServletTestUtil.SUPPORT_CROSS_CONTEXT) { + ac.dispatch(servletContext, "/DispatchTests10?testname=dispatchTest10"); response.getWriter() - .println("Expected IllegalStateException thrown" + ex.getMessage()); + .println("dispatch return=" + System.currentTimeMillis()); + + try { + response.getWriter().println("dispatch again"); + ac.dispatch("/DispatchTests?testname=dispatchTest"); + } catch (IllegalStateException ex) { + response.getWriter().println("dispatch(URI) called again"); + response.getWriter() + .println("Expected IllegalStateException thrown" + ex.getMessage()); + } + } else { + ac.complete(); } } @@ -942,19 +977,22 @@ public void negativeDispatchTest13(ServletRequest request, AsyncContext ac = request.startAsync(request, response); response.getWriter() .println("Before dispatch=" + System.currentTimeMillis()); - ac.dispatch( - request.getServletContext().getContext(getDispatcher1ContextRoot()), - "/DispatchTests10?testname=dispatchTest10"); - response.getWriter() - .println("dispatch return=" + System.currentTimeMillis()); - - try { - response.getWriter().println("dispatch again"); - ac.dispatch("/DispatchTests?testname=dispatchTest"); - } catch (IllegalStateException ex) { - response.getWriter().println("dispatch(URI) called again"); + ServletContext servletContext = request.getServletContext().getContext(getDispatcher1ContextRoot()); + if(servletContext!=null || ServletTestUtil.SUPPORT_CROSS_CONTEXT) { + ac.dispatch(servletContext, "/DispatchTests10?testname=dispatchTest10"); response.getWriter() - .println("Expected IllegalStateException thrown" + ex.getMessage()); + .println("dispatch return=" + System.currentTimeMillis()); + + try { + response.getWriter().println("dispatch again"); + ac.dispatch("/DispatchTests?testname=dispatchTest"); + } catch (IllegalStateException ex) { + response.getWriter().println("dispatch(URI) called again"); + response.getWriter() + .println("Expected IllegalStateException thrown" + ex.getMessage()); + } + } else { + ac.complete(); } } @@ -1087,9 +1125,12 @@ public void dispatchAfterCommitTest4(ServletRequest request, AsyncContext ac = request.startAsync(); response.getWriter() .println("Before dispatch=" + System.currentTimeMillis()); - ac.dispatch( - request.getServletContext().getContext(getDispatcher1ContextRoot()), - "/DispatchTests10?testname=dispatchTest10"); + ServletContext servletContext = request.getServletContext().getContext(getDispatcher1ContextRoot()); + if(servletContext!=null || ServletTestUtil.SUPPORT_CROSS_CONTEXT) { + ac.dispatch(servletContext, "/DispatchTests10?testname=dispatchTest10"); + } else { + ac.complete(); + } response.getWriter() .println("dispatch return=" + System.currentTimeMillis()); } @@ -1110,9 +1151,12 @@ public void dispatchAfterCommitTest5(ServletRequest request, AsyncContext ac = request.startAsync(request, response); response.getWriter() .println("Before dispatch=" + System.currentTimeMillis()); - ac.dispatch( - request.getServletContext().getContext(getDispatcher1ContextRoot()), - "/DispatchTests10?testname=dispatchTest10"); + ServletContext servletContext = request.getServletContext().getContext(getDispatcher1ContextRoot()); + if(servletContext!=null || ServletTestUtil.SUPPORT_CROSS_CONTEXT) { + ac.dispatch(servletContext, "/DispatchTests10?testname=dispatchTest10"); + } else { + ac.complete(); + } response.getWriter() .println("dispatch return=" + System.currentTimeMillis()); } diff --git a/tck/tck-runtime/src/main/java/servlet/tck/api/jakarta_servlet/dispatchtest/DispatchTests.java b/tck/tck-runtime/src/main/java/servlet/tck/api/jakarta_servlet/dispatchtest/DispatchTests.java index e154e6edd..9fbe755b1 100644 --- a/tck/tck-runtime/src/main/java/servlet/tck/api/jakarta_servlet/dispatchtest/DispatchTests.java +++ b/tck/tck-runtime/src/main/java/servlet/tck/api/jakarta_servlet/dispatchtest/DispatchTests.java @@ -28,6 +28,7 @@ import org.jboss.shrinkwrap.api.spec.WebArchive; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; +import servlet.tck.common.util.ServletTestUtil; import java.net.URL; @@ -205,12 +206,19 @@ public void dispatchReturnTest3() throws Exception { @Test public void dispatchReturnTest4() throws Exception { TEST_PROPS.get().setProperty(APITEST, "dispatchReturnTest4"); - TEST_PROPS.get().setProperty(SEARCH_STRING, - "ASYNC_NOT_STARTED_dispatchReturnTest4|" + "IsAsyncSupported=true|" - + "IsAsyncStarted=false|" + "DispatcherType=REQUEST|" - + "Before dispatch|" + "dispatch return|" + "After dispatch|" - + "ASYNC_STARTED_dispatchTest10|" + "IsAsyncSupported=true|" - + "IsAsyncStarted=false|" + "DispatcherType=ASYNC"); + if (ServletTestUtil.SUPPORT_CROSS_CONTEXT) { + TEST_PROPS.get().setProperty(SEARCH_STRING, + "ASYNC_NOT_STARTED_dispatchReturnTest4|" + "IsAsyncSupported=true|" + + "IsAsyncStarted=false|" + "DispatcherType=REQUEST|" + + "Before dispatch|" + "dispatch return|" + "After dispatch|" + + "ASYNC_STARTED_dispatchTest10|" + "IsAsyncSupported=true|" + + "IsAsyncStarted=false|" + "DispatcherType=ASYNC"); + } else { + TEST_PROPS.get().setProperty(SEARCH_STRING,"ASYNC_NOT_STARTED_dispatchReturnTest4|" + + "IsAsyncSupported=true|" + + "IsAsyncStarted=false|" + + "DispatcherType=REQUEST"); + } invoke(); } @@ -233,12 +241,19 @@ public void dispatchReturnTest4() throws Exception { @Test public void dispatchReturnTest5() throws Exception { TEST_PROPS.get().setProperty(APITEST, "dispatchReturnTest5"); - TEST_PROPS.get().setProperty(SEARCH_STRING, - "ASYNC_NOT_STARTED_dispatchReturnTest5|" + "IsAsyncSupported=true|" - + "IsAsyncStarted=false|" + "DispatcherType=REQUEST|" - + "Before dispatch|" + "dispatch return|" + "After dispatch|" - + "ASYNC_STARTED_dispatchTest10|" + "IsAsyncSupported=true|" - + "IsAsyncStarted=false|" + "DispatcherType=ASYNC"); + if (ServletTestUtil.SUPPORT_CROSS_CONTEXT) { + TEST_PROPS.get().setProperty(SEARCH_STRING, + "ASYNC_NOT_STARTED_dispatchReturnTest5|" + "IsAsyncSupported=true|" + + "IsAsyncStarted=false|" + "DispatcherType=REQUEST|" + + "Before dispatch|" + "dispatch return|" + "After dispatch|" + + "ASYNC_STARTED_dispatchTest10|" + "IsAsyncSupported=true|" + + "IsAsyncStarted=false|" + "DispatcherType=ASYNC"); + } else { + TEST_PROPS.get().setProperty(SEARCH_STRING,"ASYNC_NOT_STARTED_dispatchReturnTest5|" + + "IsAsyncSupported=true|" + + "IsAsyncStarted=false|" + + "DispatcherType=REQUEST"); + } invoke(); } @@ -656,16 +671,23 @@ public void startAsyncAgainTest11() throws Exception { @Test public void startAsyncAgainTest12() throws Exception { TEST_PROPS.get().setProperty(APITEST, "startAsyncAgainTest12"); - TEST_PROPS.get().setProperty(SEARCH_STRING, - "ASYNC_NOT_STARTED_startAsyncAgainTest12|" + "IsAsyncSupported=true|" - + "IsAsyncStarted=false|" + "DispatcherType=REQUEST|" - + "Before dispatch|" + "dispatch return|" + "After dispatch|" - + "ASYNC_STARTED_dispatchTest11|" + "IsAsyncSupported=true|" - + "IsAsyncStarted=false|" + "DispatcherType=ASYNC|" - + "Before second dispatch|" + "second dispatch return|" - + "After dispatch|" + "ASYNC_STARTED_dispatchTest|" - + "IsAsyncSupported=true|" + "IsAsyncStarted=false|" - + "DispatcherType=ASYNC"); + if(ServletTestUtil.SUPPORT_CROSS_CONTEXT) { + TEST_PROPS.get().setProperty(SEARCH_STRING, + "ASYNC_NOT_STARTED_startAsyncAgainTest12|" + "IsAsyncSupported=true|" + + "IsAsyncStarted=false|" + "DispatcherType=REQUEST|" + + "Before dispatch|" + "dispatch return|" + "After dispatch|" + + "ASYNC_STARTED_dispatchTest11|" + "IsAsyncSupported=true|" + + "IsAsyncStarted=false|" + "DispatcherType=ASYNC|" + + "Before second dispatch|" + "second dispatch return|" + + "After dispatch|" + "ASYNC_STARTED_dispatchTest|" + + "IsAsyncSupported=true|" + "IsAsyncStarted=false|" + + "DispatcherType=ASYNC"); + } else { + TEST_PROPS.get().setProperty(SEARCH_STRING, + "ASYNC_NOT_STARTED_startAsyncAgainTest12|" + "IsAsyncSupported=true|" + + "IsAsyncStarted=false|" + "DispatcherType=REQUEST|" + + "Before dispatch|"); + } invoke(); } @@ -689,16 +711,23 @@ public void startAsyncAgainTest12() throws Exception { @Test public void startAsyncAgainTest13() throws Exception { TEST_PROPS.get().setProperty(APITEST, "startAsyncAgainTest13"); - TEST_PROPS.get().setProperty(SEARCH_STRING, - "ASYNC_NOT_STARTED_startAsyncAgainTest13|" + "IsAsyncSupported=true|" - + "IsAsyncStarted=false|" + "DispatcherType=REQUEST|" - + "Before dispatch|" + "dispatch return|" + "After dispatch|" - + "ASYNC_STARTED_dispatchTest12|" + "IsAsyncSupported=true|" - + "IsAsyncStarted=false|" + "DispatcherType=ASYNC|" - + "Before second dispatch|" + "second dispatch return|" - + "After dispatch|" + "ASYNC_STARTED_dispatchTest|" - + "IsAsyncSupported=true|" + "IsAsyncStarted=false|" - + "DispatcherType=ASYNC"); + if(ServletTestUtil.SUPPORT_CROSS_CONTEXT) { + TEST_PROPS.get().setProperty(SEARCH_STRING, + "ASYNC_NOT_STARTED_startAsyncAgainTest13|" + "IsAsyncSupported=true|" + + "IsAsyncStarted=false|" + "DispatcherType=REQUEST|" + + "Before dispatch|" + "dispatch return|" + "After dispatch|" + + "ASYNC_STARTED_dispatchTest12|" + "IsAsyncSupported=true|" + + "IsAsyncStarted=false|" + "DispatcherType=ASYNC|" + + "Before second dispatch|" + "second dispatch return|" + + "After dispatch|" + "ASYNC_STARTED_dispatchTest|" + + "IsAsyncSupported=true|" + "IsAsyncStarted=false|" + + "DispatcherType=ASYNC"); + } else { + TEST_PROPS.get().setProperty(SEARCH_STRING, + "ASYNC_NOT_STARTED_startAsyncAgainTest13|" + "IsAsyncSupported=true|" + + "IsAsyncStarted=false|" + "DispatcherType=REQUEST|" + + "Before dispatch|"); + } invoke(); } @@ -723,13 +752,20 @@ public void startAsyncAgainTest13() throws Exception { @Test public void startAsyncAgainTest14() throws Exception { TEST_PROPS.get().setProperty(APITEST, "startAsyncAgainTest14"); - TEST_PROPS.get().setProperty(SEARCH_STRING, - "ASYNC_NOT_STARTED_startAsyncAgainTest14|" + "IsAsyncSupported=true|" - + "IsAsyncStarted=false|" + "DispatcherType=REQUEST|" - + "Before dispatch|" + "dispatch return|" + "After dispatch|" - + "ASYNC_STARTED_dispatchTest13|" + "IsAsyncSupported=true|" - + "IsAsyncStarted=false|" + "DispatcherType=ASYNC|" - + "Before complete"); + if(ServletTestUtil.SUPPORT_CROSS_CONTEXT) { + TEST_PROPS.get().setProperty(SEARCH_STRING, + "ASYNC_NOT_STARTED_startAsyncAgainTest14|" + "IsAsyncSupported=true|" + + "IsAsyncStarted=false|" + "DispatcherType=REQUEST|" + + "Before dispatch|" + "dispatch return|" + "After dispatch|" + + "ASYNC_STARTED_dispatchTest13|" + "IsAsyncSupported=true|" + + "IsAsyncStarted=false|" + "DispatcherType=ASYNC|" + + "Before complete"); + } else { + TEST_PROPS.get().setProperty(SEARCH_STRING, + "ASYNC_NOT_STARTED_startAsyncAgainTest14|" + "IsAsyncSupported=true|" + + "IsAsyncStarted=false|" + "DispatcherType=REQUEST|" + + "Before dispatch|"); + } invoke(); } @@ -753,13 +789,20 @@ public void startAsyncAgainTest14() throws Exception { @Test public void startAsyncAgainTest15() throws Exception { TEST_PROPS.get().setProperty(APITEST, "startAsyncAgainTest15"); - TEST_PROPS.get().setProperty(SEARCH_STRING, - "ASYNC_NOT_STARTED_startAsyncAgainTest15|" + "IsAsyncSupported=true|" - + "IsAsyncStarted=false|" + "DispatcherType=REQUEST|" - + "Before dispatch|" + "dispatch return|" + "After dispatch|" - + "ASYNC_STARTED_dispatchTest14|" + "IsAsyncSupported=true|" - + "IsAsyncStarted=false|" + "DispatcherType=ASYNC|" - + "Before complete"); + if(ServletTestUtil.SUPPORT_CROSS_CONTEXT) { + TEST_PROPS.get().setProperty(SEARCH_STRING, + "ASYNC_NOT_STARTED_startAsyncAgainTest15|" + "IsAsyncSupported=true|" + + "IsAsyncStarted=false|" + "DispatcherType=REQUEST|" + + "Before dispatch|" + "dispatch return|" + "After dispatch|" + + "ASYNC_STARTED_dispatchTest14|" + "IsAsyncSupported=true|" + + "IsAsyncStarted=false|" + "DispatcherType=ASYNC|" + + "Before complete"); + } else { + TEST_PROPS.get().setProperty(SEARCH_STRING, + "ASYNC_NOT_STARTED_startAsyncAgainTest15|" + "IsAsyncSupported=true|" + + "IsAsyncStarted=false|" + "DispatcherType=REQUEST|" + + "Before dispatch|"); + } invoke(); } @@ -783,16 +826,23 @@ public void startAsyncAgainTest15() throws Exception { @Test public void startAsyncAgainTest16() throws Exception { TEST_PROPS.get().setProperty(APITEST, "startAsyncAgainTest16"); - TEST_PROPS.get().setProperty(SEARCH_STRING, - "ASYNC_NOT_STARTED_startAsyncAgainTest16|" + "IsAsyncSupported=true|" - + "IsAsyncStarted=false|" + "DispatcherType=REQUEST|" - + "Before dispatch|" + "dispatch return|" + "After dispatch|" - + "ASYNC_STARTED_dispatchTest15|" + "IsAsyncSupported=true|" - + "IsAsyncStarted=false|" + "DispatcherType=ASYNC|" - + "startAsync called|" + "IsAsyncSupported=true|" - + "IsAsyncStarted=true|" + "DispatcherType=ASYNC|" - + "startAsync called again|" - + "Expected IllegalStateException thrown"); + if(ServletTestUtil.SUPPORT_CROSS_CONTEXT) { + TEST_PROPS.get().setProperty(SEARCH_STRING, + "ASYNC_NOT_STARTED_startAsyncAgainTest16|" + "IsAsyncSupported=true|" + + "IsAsyncStarted=false|" + "DispatcherType=REQUEST|" + + "Before dispatch|" + "dispatch return|" + "After dispatch|" + + "ASYNC_STARTED_dispatchTest15|" + "IsAsyncSupported=true|" + + "IsAsyncStarted=false|" + "DispatcherType=ASYNC|" + + "startAsync called|" + "IsAsyncSupported=true|" + + "IsAsyncStarted=true|" + "DispatcherType=ASYNC|" + + "startAsync called again|" + + "Expected IllegalStateException thrown"); + } else { + TEST_PROPS.get().setProperty(SEARCH_STRING, + "ASYNC_NOT_STARTED_startAsyncAgainTest16|" + "IsAsyncSupported=true|" + + "IsAsyncStarted=false|" + "DispatcherType=REQUEST|" + + "Before dispatch|"); + } invoke(); } @@ -816,16 +866,24 @@ public void startAsyncAgainTest16() throws Exception { @Test public void startAsyncAgainTest17() throws Exception { TEST_PROPS.get().setProperty(APITEST, "startAsyncAgainTest17"); - TEST_PROPS.get().setProperty(SEARCH_STRING, - "ASYNC_NOT_STARTED_startAsyncAgainTest17|" + "IsAsyncSupported=true|" - + "IsAsyncStarted=false|" + "DispatcherType=REQUEST|" - + "Before dispatch|" + "dispatch return|" + "After dispatch|" - + "ASYNC_STARTED_dispatchTest16|" + "IsAsyncSupported=true|" - + "IsAsyncStarted=false|" + "DispatcherType=ASYNC|" - + "startAsync called|" + "IsAsyncSupported=true|" - + "IsAsyncStarted=true|" + "DispatcherType=ASYNC|" - + "startAsync called again|" - + "Expected IllegalStateException thrown"); + if(ServletTestUtil.SUPPORT_CROSS_CONTEXT) { + TEST_PROPS.get().setProperty(SEARCH_STRING, + "ASYNC_NOT_STARTED_startAsyncAgainTest17|" + "IsAsyncSupported=true|" + + "IsAsyncStarted=false|" + "DispatcherType=REQUEST|" + + "Before dispatch|" + "dispatch return|" + "After dispatch|" + + "ASYNC_STARTED_dispatchTest16|" + "IsAsyncSupported=true|" + + "IsAsyncStarted=false|" + "DispatcherType=ASYNC|" + + "startAsync called|" + "IsAsyncSupported=true|" + + "IsAsyncStarted=true|" + "DispatcherType=ASYNC|" + + "startAsync called again|" + + "Expected IllegalStateException thrown"); + } else { + TEST_PROPS.get().setProperty(SEARCH_STRING, "ASYNC_NOT_STARTED_startAsyncAgainTest17|" + + "IsAsyncSupported=true|" + + "IsAsyncStarted=false|" + + "DispatcherType=REQUEST"); + } + invoke(); } @@ -967,14 +1025,21 @@ public void negativeDispatchTest5() throws Exception { @Test public void negativeDispatchTest8() throws Exception { TEST_PROPS.get().setProperty(APITEST, "negativeDispatchTest8"); - TEST_PROPS.get().setProperty(SEARCH_STRING, - "ASYNC_NOT_STARTED_negativeDispatchTest8|" + "IsAsyncSupported=true|" - + "IsAsyncStarted=false|" + "DispatcherType=REQUEST|" - + "Before dispatch|" + "dispatch return|" + "dispatch again|" - + "dispatch() called again|" - + "Expected IllegalStateException thrown|" + "After dispatch|" - + "ASYNC_STARTED_dispatchTest10|" + "IsAsyncSupported=true|" - + "IsAsyncStarted=false|" + "DispatcherType=ASYNC"); + if(ServletTestUtil.SUPPORT_CROSS_CONTEXT) { + TEST_PROPS.get().setProperty(SEARCH_STRING, + "ASYNC_NOT_STARTED_negativeDispatchTest8|" + "IsAsyncSupported=true|" + + "IsAsyncStarted=false|" + "DispatcherType=REQUEST|" + + "Before dispatch|" + "dispatch return|" + "dispatch again|" + + "dispatch() called again|" + + "Expected IllegalStateException thrown|" + "After dispatch|" + + "ASYNC_STARTED_dispatchTest10|" + "IsAsyncSupported=true|" + + "IsAsyncStarted=false|" + "DispatcherType=ASYNC"); + } else { + TEST_PROPS.get().setProperty(SEARCH_STRING, + "ASYNC_NOT_STARTED_negativeDispatchTest8|" + "IsAsyncSupported=true|" + + "IsAsyncStarted=false|" + "DispatcherType=REQUEST|" + + "Before dispatch|"); + } invoke(); } @@ -998,14 +1063,21 @@ public void negativeDispatchTest8() throws Exception { @Test public void negativeDispatchTest9() throws Exception { TEST_PROPS.get().setProperty(APITEST, "negativeDispatchTest9"); - TEST_PROPS.get().setProperty(SEARCH_STRING, - "ASYNC_NOT_STARTED_negativeDispatchTest9|" + "IsAsyncSupported=true|" - + "IsAsyncStarted=false|" + "DispatcherType=REQUEST|" - + "Before dispatch|" + "dispatch return|" + "dispatch again|" - + "dispatch() called again|" - + "Expected IllegalStateException thrown|" + "After dispatch|" - + "ASYNC_STARTED_dispatchTest10|" + "IsAsyncSupported=true|" - + "IsAsyncStarted=false|" + "DispatcherType=ASYNC"); + if(ServletTestUtil.SUPPORT_CROSS_CONTEXT) { + TEST_PROPS.get().setProperty(SEARCH_STRING, + "ASYNC_NOT_STARTED_negativeDispatchTest9|" + "IsAsyncSupported=true|" + + "IsAsyncStarted=false|" + "DispatcherType=REQUEST|" + + "Before dispatch|" + "dispatch return|" + "dispatch again|" + + "dispatch() called again|" + + "Expected IllegalStateException thrown|" + "After dispatch|" + + "ASYNC_STARTED_dispatchTest10|" + "IsAsyncSupported=true|" + + "IsAsyncStarted=false|" + "DispatcherType=ASYNC"); + } else { + TEST_PROPS.get().setProperty(SEARCH_STRING, + "ASYNC_NOT_STARTED_negativeDispatchTest9|" + "IsAsyncSupported=true|" + + "IsAsyncStarted=false|" + "DispatcherType=REQUEST|" + + "Before dispatch|"); + } invoke(); } @@ -1029,14 +1101,21 @@ public void negativeDispatchTest9() throws Exception { @Test public void negativeDispatchTest12() throws Exception { TEST_PROPS.get().setProperty(APITEST, "negativeDispatchTest12"); - TEST_PROPS.get().setProperty(SEARCH_STRING, - "ASYNC_NOT_STARTED_negativeDispatchTest12|" + "IsAsyncSupported=true|" - + "IsAsyncStarted=false|" + "DispatcherType=REQUEST|" - + "Before dispatch|" + "dispatch return|" + "dispatch again|" - + "dispatch(URI) called again|" - + "Expected IllegalStateException thrown|" + "After dispatch|" - + "ASYNC_STARTED_dispatchTest10|" + "IsAsyncSupported=true|" - + "IsAsyncStarted=false|" + "DispatcherType=ASYNC"); + if(ServletTestUtil.SUPPORT_CROSS_CONTEXT) { + TEST_PROPS.get().setProperty(SEARCH_STRING, + "ASYNC_NOT_STARTED_negativeDispatchTest12|" + "IsAsyncSupported=true|" + + "IsAsyncStarted=false|" + "DispatcherType=REQUEST|" + + "Before dispatch|" + "dispatch return|" + "dispatch again|" + + "dispatch(URI) called again|" + + "Expected IllegalStateException thrown|" + "After dispatch|" + + "ASYNC_STARTED_dispatchTest10|" + "IsAsyncSupported=true|" + + "IsAsyncStarted=false|" + "DispatcherType=ASYNC"); + } else { + TEST_PROPS.get().setProperty(SEARCH_STRING, + "ASYNC_NOT_STARTED_negativeDispatchTest12|" + "IsAsyncSupported=true|" + + "IsAsyncStarted=false|" + "DispatcherType=REQUEST|" + + "Before dispatch|"); + } invoke(); } @@ -1060,14 +1139,21 @@ public void negativeDispatchTest12() throws Exception { @Test public void negativeDispatchTest13() throws Exception { TEST_PROPS.get().setProperty(APITEST, "negativeDispatchTest13"); - TEST_PROPS.get().setProperty(SEARCH_STRING, - "ASYNC_NOT_STARTED_negativeDispatchTest13|" + "IsAsyncSupported=true|" - + "IsAsyncStarted=false|" + "DispatcherType=REQUEST|" - + "Before dispatch|" + "dispatch return|" + "dispatch again|" - + "dispatch(URI) called again|" - + "Expected IllegalStateException thrown|" + "After dispatch|" - + "ASYNC_STARTED_dispatchTest10|" + "IsAsyncSupported=true|" - + "IsAsyncStarted=false|" + "DispatcherType=ASYNC"); + if(ServletTestUtil.SUPPORT_CROSS_CONTEXT) { + TEST_PROPS.get().setProperty(SEARCH_STRING, + "ASYNC_NOT_STARTED_negativeDispatchTest13|" + "IsAsyncSupported=true|" + + "IsAsyncStarted=false|" + "DispatcherType=REQUEST|" + + "Before dispatch|" + "dispatch return|" + "dispatch again|" + + "dispatch(URI) called again|" + + "Expected IllegalStateException thrown|" + "After dispatch|" + + "ASYNC_STARTED_dispatchTest10|" + "IsAsyncSupported=true|" + + "IsAsyncStarted=false|" + "DispatcherType=ASYNC"); + } else { + TEST_PROPS.get().setProperty(SEARCH_STRING, + "ASYNC_NOT_STARTED_negativeDispatchTest13|" + "IsAsyncSupported=true|" + + "IsAsyncStarted=false|" + "DispatcherType=REQUEST|" + + "Before dispatch|"); + } invoke(); } @@ -1186,13 +1272,20 @@ public void dispatchAfterCommitTest3() throws Exception { @Test public void dispatchAfterCommitTest4() throws Exception { TEST_PROPS.get().setProperty(APITEST, "dispatchAfterCommitTest4"); - TEST_PROPS.get().setProperty(SEARCH_STRING, - "ASYNC_NOT_STARTED_dispatchAfterCommitTest4|" + "IsAsyncSupported=true|" - + "IsAsyncStarted=false|" + "DispatcherType=REQUEST|" - + "After commmit|" + "Before dispatch|" + "dispatch return|" - + "After dispatch|" + "ASYNC_STARTED_dispatchTest10|" - + "IsAsyncSupported=true|" + "IsAsyncStarted=false|" - + "DispatcherType=ASYNC"); + if(ServletTestUtil.SUPPORT_CROSS_CONTEXT) { + TEST_PROPS.get().setProperty(SEARCH_STRING, + "ASYNC_NOT_STARTED_dispatchAfterCommitTest4|" + "IsAsyncSupported=true|" + + "IsAsyncStarted=false|" + "DispatcherType=REQUEST|" + + "After commmit|" + "Before dispatch|" + "dispatch return|" + + "After dispatch|" + "ASYNC_STARTED_dispatchTest10|" + + "IsAsyncSupported=true|" + "IsAsyncStarted=false|" + + "DispatcherType=ASYNC"); + } else { + TEST_PROPS.get().setProperty(SEARCH_STRING, + "ASYNC_NOT_STARTED_dispatchAfterCommitTest4|" + "IsAsyncSupported=true|" + + "IsAsyncStarted=false|" + "DispatcherType=REQUEST|" + + "After commmit|" + "Before dispatch|"); + } invoke(); } @@ -1211,13 +1304,20 @@ public void dispatchAfterCommitTest4() throws Exception { @Test public void dispatchAfterCommitTest5() throws Exception { TEST_PROPS.get().setProperty(APITEST, "dispatchAfterCommitTest5"); - TEST_PROPS.get().setProperty(SEARCH_STRING, - "ASYNC_NOT_STARTED_dispatchAfterCommitTest5|" + "IsAsyncSupported=true|" - + "IsAsyncStarted=false|" + "DispatcherType=REQUEST|" - + "After commmit|" + "Before dispatch|" + "dispatch return|" - + "After dispatch|" + "ASYNC_STARTED_dispatchTest10|" - + "IsAsyncSupported=true|" + "IsAsyncStarted=false|" - + "DispatcherType=ASYNC"); + if(ServletTestUtil.SUPPORT_CROSS_CONTEXT) { + TEST_PROPS.get().setProperty(SEARCH_STRING, + "ASYNC_NOT_STARTED_dispatchAfterCommitTest5|" + "IsAsyncSupported=true|" + + "IsAsyncStarted=false|" + "DispatcherType=REQUEST|" + + "After commmit|" + "Before dispatch|" + "dispatch return|" + + "After dispatch|" + "ASYNC_STARTED_dispatchTest10|" + + "IsAsyncSupported=true|" + "IsAsyncStarted=false|" + + "DispatcherType=ASYNC"); + } else { + TEST_PROPS.get().setProperty(SEARCH_STRING, + "ASYNC_NOT_STARTED_dispatchAfterCommitTest5|" + "IsAsyncSupported=true|" + + "IsAsyncStarted=false|" + "DispatcherType=REQUEST|" + + "After commmit|" + "Before dispatch|"); + } invoke(); } } diff --git a/tck/tck-runtime/src/main/java/servlet/tck/api/jakarta_servlet/dispatchtest/DispatchTests11.java b/tck/tck-runtime/src/main/java/servlet/tck/api/jakarta_servlet/dispatchtest/DispatchTests11.java index 6d6ae4320..304674315 100644 --- a/tck/tck-runtime/src/main/java/servlet/tck/api/jakarta_servlet/dispatchtest/DispatchTests11.java +++ b/tck/tck-runtime/src/main/java/servlet/tck/api/jakarta_servlet/dispatchtest/DispatchTests11.java @@ -19,15 +19,18 @@ */ package servlet.tck.api.jakarta_servlet.dispatchtest; -import java.io.IOException; -import java.lang.reflect.InvocationTargetException; -import java.lang.reflect.Method; - import jakarta.servlet.AsyncContext; import jakarta.servlet.GenericServlet; +import jakarta.servlet.ServletContext; import jakarta.servlet.ServletException; import jakarta.servlet.ServletRequest; import jakarta.servlet.ServletResponse; +import servlet.tck.common.util.ServletTestUtil; + +import java.io.IOException; +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Method; + public class DispatchTests11 extends GenericServlet { @@ -84,10 +87,12 @@ public void dispatchTest11(ServletRequest request, ServletResponse response) AsyncContext ac = request.startAsync(); response.getWriter() .println("Before second dispatch=" + System.currentTimeMillis()); - ac.dispatch( - request.getServletContext().getContext(DispatchTestServlet.getDispatcherContextRoot()), - "/DispatchTests?testname=dispatchTest"); + ServletContext context = request.getServletContext().getContext(DispatchTestServlet.getDispatcherContextRoot()); + if(context != null || ServletTestUtil.SUPPORT_CROSS_CONTEXT) { + ac.dispatch(context, "/DispatchTests?testname=dispatchTest"); + } + // we admit cross context not supported and so validate it response.getWriter() - .println("second dispatch return=" + System.currentTimeMillis()); + .println("second dispatch return=" + System.currentTimeMillis()); } } diff --git a/tck/tck-runtime/src/main/java/servlet/tck/api/jakarta_servlet/dispatchtest/DispatchTests12.java b/tck/tck-runtime/src/main/java/servlet/tck/api/jakarta_servlet/dispatchtest/DispatchTests12.java index b7aff82b2..ba1000ddf 100644 --- a/tck/tck-runtime/src/main/java/servlet/tck/api/jakarta_servlet/dispatchtest/DispatchTests12.java +++ b/tck/tck-runtime/src/main/java/servlet/tck/api/jakarta_servlet/dispatchtest/DispatchTests12.java @@ -23,11 +23,8 @@ import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; -import jakarta.servlet.AsyncContext; -import jakarta.servlet.GenericServlet; -import jakarta.servlet.ServletException; -import jakarta.servlet.ServletRequest; -import jakarta.servlet.ServletResponse; +import jakarta.servlet.*; +import servlet.tck.common.util.ServletTestUtil; public class DispatchTests12 extends GenericServlet { @@ -84,9 +81,10 @@ public void dispatchTest12(ServletRequest request, ServletResponse response) AsyncContext ac = request.startAsync(request, response); response.getWriter() .println("Before second dispatch=" + System.currentTimeMillis()); - ac.dispatch( - request.getServletContext().getContext(DispatchTestServlet.getDispatcherContextRoot()), - "/DispatchTests?testname=dispatchTest"); + ServletContext servletContext = request.getServletContext().getContext(DispatchTestServlet.getDispatcherContextRoot()); + if(servletContext!=null || ServletTestUtil.SUPPORT_CROSS_CONTEXT) { + ac.dispatch(servletContext, "/DispatchTests?testname=dispatchTest"); + } response.getWriter() .println("second dispatch return=" + System.currentTimeMillis()); } diff --git a/tck/tck-runtime/src/main/java/servlet/tck/api/jakarta_servlet_http/httpsessionx/ExpireHttpSession.java b/tck/tck-runtime/src/main/java/servlet/tck/api/jakarta_servlet_http/httpsessionx/ExpireHttpSession.java index fc54ecdbf..6fdf8c3a2 100644 --- a/tck/tck-runtime/src/main/java/servlet/tck/api/jakarta_servlet_http/httpsessionx/ExpireHttpSession.java +++ b/tck/tck-runtime/src/main/java/servlet/tck/api/jakarta_servlet_http/httpsessionx/ExpireHttpSession.java @@ -38,7 +38,7 @@ public void service(HttpServletRequest request, HttpServletResponse response) ServletTestUtil.printResult(pw, true); } else { pw.println( - "From expireHttpSession: Test Failed. Session didnot expire as expected."); + "From expireHttpSession: Test Failed. Session did not expire as expected."); ServletTestUtil.printResult(pw, false); } } diff --git a/tck/tck-runtime/src/main/java/servlet/tck/api/jakarta_servlet_http/httpsessionx/TestServlet.java b/tck/tck-runtime/src/main/java/servlet/tck/api/jakarta_servlet_http/httpsessionx/TestServlet.java index c4e407aa7..ff42cd4a2 100644 --- a/tck/tck-runtime/src/main/java/servlet/tck/api/jakarta_servlet_http/httpsessionx/TestServlet.java +++ b/tck/tck-runtime/src/main/java/servlet/tck/api/jakarta_servlet_http/httpsessionx/TestServlet.java @@ -44,10 +44,15 @@ public void getNewSessionx(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { ServletContext servletContext = getServletContext() .getContext("/servlet_jsh_httpsessionx2_web"); - RequestDispatcher rd = servletContext - .getRequestDispatcher("/getNewSession"); + if(servletContext!=null || ServletTestUtil.SUPPORT_CROSS_CONTEXT) { + RequestDispatcher rd = servletContext + .getRequestDispatcher("/getNewSession"); + + rd.include(request, response); + } else { + response.getWriter().println("Test PASSED"); + } - rd.include(request, response); } public void setMaxInactiveIntervalTest(HttpServletRequest request, @@ -100,30 +105,41 @@ public void setMaxInactiveIntervalxiTest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { ServletContext servletContext = getServletContext() .getContext("/servlet_jsh_httpsessionx2_web"); - RequestDispatcher rd = servletContext - .getRequestDispatcher("/setMaxInterval"); + if(servletContext!=null || ServletTestUtil.SUPPORT_CROSS_CONTEXT) { + RequestDispatcher rd = servletContext + .getRequestDispatcher("/setMaxInterval"); - rd.include(request, response); + rd.include(request, response); + } else { + response.getWriter().println("Test PASSED"); + } } public void setMaxInactiveIntervalxfTest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { ServletContext servletContext = getServletContext() .getContext("/servlet_jsh_httpsessionx2_web"); - RequestDispatcher rd = servletContext - .getRequestDispatcher("/setMaxInterval"); - - rd.forward(request, response); + if(servletContext!=null || ServletTestUtil.SUPPORT_CROSS_CONTEXT) { + RequestDispatcher rd = servletContext + .getRequestDispatcher("/setMaxInterval"); + rd.forward(request, response); + } else { + response.getWriter().println("Test PASSED"); + } } public void expireHttpSessionxriTest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { ServletContext servletContext = getServletContext() .getContext("/servlet_jsh_httpsessionx2_web"); - RequestDispatcher rd = servletContext - .getRequestDispatcher("/expireHttpSession"); + if(servletContext!=null || ServletTestUtil.SUPPORT_CROSS_CONTEXT) { + RequestDispatcher rd = servletContext + .getRequestDispatcher("/expireHttpSession"); - rd.include(request, response); + rd.include(request, response); + } else { + response.getWriter().println("Test PASSED"); + } } public void expireHttpSessionxrfTest(HttpServletRequest request, @@ -131,10 +147,14 @@ public void expireHttpSessionxrfTest(HttpServletRequest request, ServletContext servletContext = getServletContext() .getContext("/servlet_jsh_httpsessionx2_web"); - RequestDispatcher rd = servletContext - .getRequestDispatcher("/expireHttpSession"); + if(servletContext!=null || ServletTestUtil.SUPPORT_CROSS_CONTEXT) { + RequestDispatcher rd = servletContext + .getRequestDispatcher("/expireHttpSession"); - rd.forward(request, response); + rd.forward(request, response); + } else { + response.getWriter().println("Test PASSED"); + } } public void invalidateSessionTest(HttpServletRequest request, @@ -162,9 +182,13 @@ public void invalidateSessionxTest(HttpServletRequest request, ServletContext servletContext = getServletContext() .getContext("/servlet_jsh_httpsessionx2_web"); - RequestDispatcher rd = servletContext - .getRequestDispatcher("/invalidateHttpSession"); + if(servletContext!=null || ServletTestUtil.SUPPORT_CROSS_CONTEXT) { + RequestDispatcher rd = servletContext + .getRequestDispatcher("/invalidateHttpSession"); - rd.include(request, response); + rd.include(request, response); + } else { + response.getWriter().println("Test PASSED"); + } } } diff --git a/tck/tck-runtime/src/main/java/servlet/tck/common/util/ServletTestUtil.java b/tck/tck-runtime/src/main/java/servlet/tck/common/util/ServletTestUtil.java index 69ba95cf6..2ea4068fd 100644 --- a/tck/tck-runtime/src/main/java/servlet/tck/common/util/ServletTestUtil.java +++ b/tck/tck-runtime/src/main/java/servlet/tck/common/util/ServletTestUtil.java @@ -43,6 +43,8 @@ public class ServletTestUtil { private static Logger LOGGER = LoggerFactory.getLogger(ServletTestUtil.class); + public static boolean SUPPORT_CROSS_CONTEXT = Boolean.parseBoolean(System.getProperty("servlet.tck.support.crossContext", "true")); + /** * Private as this class contains only public static methods. */ @@ -177,8 +179,7 @@ public static boolean checkArrayList(ArrayList al, String[] values, Arrays.sort(values); int len = al.size(); for (int i = 0; i < len; i++) { - Object val = null; - val = (String) al.get(i); + Object val = (String) al.get(i); LOGGER.debug("[ServletTestUtil] val= {}", val); if (!allowDuplicates) { if (foundValues.contains(val)) { @@ -193,7 +194,6 @@ public static boolean checkArrayList(ArrayList al, String[] values, if ((Arrays.binarySearch(values, val) < 0) && (enforceSizes)) { LOGGER.info("[ServletTestUtil] Value '{}' not found.", val); valuesFound = false; - continue; } }