diff --git a/appserver/tests/appserv-tests/devtests/web/servlet-4.0/addJspFile/WebTest.java b/appserver/tests/appserv-tests/devtests/web/servlet-4.0/addJspFile/WebTest.java
index f4f0ad8..614781f 100644
--- a/appserver/tests/appserv-tests/devtests/web/servlet-4.0/addJspFile/WebTest.java
+++ b/appserver/tests/appserv-tests/devtests/web/servlet-4.0/addJspFile/WebTest.java
@@ -38,7 +38,7 @@
         port = Integer.parseInt(args[1]);
         contextRoot = args[2];
     }
-    
+
     public static void main(String[] args) {
         stat.addDescription("Unit test for ServletContext.addJspFile");
         WebTest webTest = new WebTest(args);
diff --git a/appserver/tests/appserv-tests/devtests/web/servlet-4.0/addJspFile/build.properties b/appserver/tests/appserv-tests/devtests/web/servlet-4.0/addJspFile/build.properties
index f924757..2084051 100644
--- a/appserver/tests/appserv-tests/devtests/web/servlet-4.0/addJspFile/build.properties
+++ b/appserver/tests/appserv-tests/devtests/web/servlet-4.0/addJspFile/build.properties
@@ -15,9 +15,9 @@
     SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
 
 -->
- 
+
 
 <property name="module" value="web"/>
-<property name="appname" value="${module}-servlet-4.0-add-jsp-file"/>         
+<property name="appname" value="${module}-servlet-4.0-add-jsp-file"/>        \u0020
 <property name="assemble" value="${build.classes.dir}/archive"/>
 <property name="contextroot" value="/${appname}"/>
diff --git a/appserver/tests/appserv-tests/devtests/web/servlet-4.0/addJspFile/build.xml b/appserver/tests/appserv-tests/devtests/web/servlet-4.0/addJspFile/build.xml
index 84b8d6d..9b7fbd9 100644
--- a/appserver/tests/appserv-tests/devtests/web/servlet-4.0/addJspFile/build.xml
+++ b/appserver/tests/appserv-tests/devtests/web/servlet-4.0/addJspFile/build.xml
@@ -39,7 +39,7 @@
         <fileset dir="." includes="*.class"/>
       </delete>
     </target>
-    
+
     <target name="compile" depends="clean">
         <antcall target="compile-common">
             <param name="src" value="servlet"/>
@@ -47,10 +47,10 @@
     </target>
 
     <target name="build" depends="compile">
-        <property name="hasWebclient" value="yes"/> 
+        <property name="hasWebclient" value="yes"/>
         <antcall target="webclient-war-common">
             <param name="hasWebclient" value="yes"/>
-            <param name="webclient.war.classes" value="**/*.class"/> 
+            <param name="webclient.war.classes" value="**/*.class"/>
         </antcall>
 
         <javac srcdir="." includes="WebTest.java">
@@ -59,10 +59,10 @@
                 <pathelement location="${env.APS_HOME}/lib/webtest.jar"/>
             </classpath>
         </javac>
-    </target> 
+    </target>
 
     <target name="build-publish-war" depends="build, publish-war-common" />
-    
+
     <target name="re-deploy" depends="init-common">
         <antcall target="deploy-war-common"/>
     </target>
@@ -70,7 +70,7 @@
     <target name="deploy" depends="init-common">
         <antcall target="deploy-war-common"/>
     </target>
-    
+
     <target name="run" depends="init-common">
         <java classname="WebTest" fork="true">
           <sysproperty key="S1AS_HOME" value="${env.S1AS_HOME}"/>
@@ -86,10 +86,10 @@
          </classpath>
         </java>
     </target>
- 
+
     <target name="undeploy" depends="init-common">
         <antcall target="undeploy-war-common"/>
-    </target>   
+    </target>
 
     <target name="usage">
         <antcall target="usage-common"/>
diff --git a/appserver/tests/appserv-tests/devtests/web/servlet-4.0/compositeTrailerSupplier/WebTest.java b/appserver/tests/appserv-tests/devtests/web/servlet-4.0/compositeTrailerSupplier/WebTest.java
index bc5078a..eddbd15 100644
--- a/appserver/tests/appserv-tests/devtests/web/servlet-4.0/compositeTrailerSupplier/WebTest.java
+++ b/appserver/tests/appserv-tests/devtests/web/servlet-4.0/compositeTrailerSupplier/WebTest.java
@@ -42,7 +42,7 @@
         port = Integer.parseInt(args[1]);
         contextRoot = args[2];
     }
-    
+
     public static void main(String[] args) {
         stat.addDescription("Unit test for composite trailer supplier");
         WebTest webTest = new WebTest(args);
@@ -85,7 +85,7 @@
             }
             String contentType = httpResponse.getHeader("Content-Type");
             System.out.println("--> headers = " + httpResponse.getHeaders());
-            
+
             String result = new StringBuilder(httpResponse.getBody().trim())
                 .append('|')
                 .append(httpResponse.getTrailerFields().get("bar1")) // trailer field
@@ -96,7 +96,7 @@
             System.out.println("--> result = " + result);
 
             if  (!EXPECTED_RESPONSE.equals(result)) {
-                throw new Exception("Wrong response. Expected: " + 
+                throw new Exception("Wrong response. Expected: " +
                     EXPECTED_RESPONSE + ", received: " + result);
             }
         }
diff --git a/appserver/tests/appserv-tests/devtests/web/servlet-4.0/compositeTrailerSupplier/build.properties b/appserver/tests/appserv-tests/devtests/web/servlet-4.0/compositeTrailerSupplier/build.properties
index 8753341..6e21a0f 100644
--- a/appserver/tests/appserv-tests/devtests/web/servlet-4.0/compositeTrailerSupplier/build.properties
+++ b/appserver/tests/appserv-tests/devtests/web/servlet-4.0/compositeTrailerSupplier/build.properties
@@ -15,9 +15,9 @@
     SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
 
 -->
- 
+
 
 <property name="module" value="web"/>
-<property name="appname" value="${module}-servlet-4.0-composite-trailer-supplier"/>         
+<property name="appname" value="${module}-servlet-4.0-composite-trailer-supplier"/>        \u0020
 <property name="assemble" value="${build.classes.dir}/archive"/>
 <property name="contextroot" value="/${appname}"/>
diff --git a/appserver/tests/appserv-tests/devtests/web/servlet-4.0/compositeTrailerSupplier/build.xml b/appserver/tests/appserv-tests/devtests/web/servlet-4.0/compositeTrailerSupplier/build.xml
index 78d7c39..3aedb9d 100644
--- a/appserver/tests/appserv-tests/devtests/web/servlet-4.0/compositeTrailerSupplier/build.xml
+++ b/appserver/tests/appserv-tests/devtests/web/servlet-4.0/compositeTrailerSupplier/build.xml
@@ -37,7 +37,7 @@
         <fileset dir="." includes="*.class"/>
       </delete>
     </target>
-       
+
     <target name="compile" depends="clean">
         <antcall target="compile-common">
             <param name="src" value="servlet"/>
@@ -45,10 +45,10 @@
     </target>
 
     <target name="build" depends="compile">
-        <property name="hasWebclient" value="yes"/> 
+        <property name="hasWebclient" value="yes"/>
         <antcall target="webclient-war-common">
             <param name="hasWebclient" value="yes"/>
-            <param name="webclient.war.classes" value="**/*.class"/> 
+            <param name="webclient.war.classes" value="**/*.class"/>
         </antcall>
         <javac srcdir="." includes="WebTest.java">
             <classpath>
@@ -56,10 +56,10 @@
                 <pathelement location="${env.APS_HOME}/lib/webtest.jar"/>
             </classpath>
         </javac>
-    </target> 
+    </target>
 
     <target name="build-publish-war" depends="build, publish-war-common" />
-    
+
     <target name="re-deploy" depends="init-common">
         <antcall target="deploy-war-common"/>
     </target>
@@ -67,7 +67,7 @@
     <target name="deploy" depends="init-common">
         <antcall target="deploy-war-common"/>
     </target>
-    
+
     <target name="run" depends="init-common">
         <java classname="WebTest" fork="true">
           <sysproperty key="S1AS_HOME" value="${env.S1AS_HOME}"/>
@@ -83,10 +83,10 @@
          </classpath>
         </java>
     </target>
- 
+
     <target name="undeploy" depends="init-common">
         <antcall target="undeploy-war-common"/>
-    </target>   
+    </target>
 
     <target name="usage">
         <antcall target="usage-common"/>
diff --git a/appserver/tests/appserv-tests/devtests/web/servlet-4.0/contextCharEncoding/WebTest.java b/appserver/tests/appserv-tests/devtests/web/servlet-4.0/contextCharEncoding/WebTest.java
index 36728f0..957390c 100644
--- a/appserver/tests/appserv-tests/devtests/web/servlet-4.0/contextCharEncoding/WebTest.java
+++ b/appserver/tests/appserv-tests/devtests/web/servlet-4.0/contextCharEncoding/WebTest.java
@@ -44,7 +44,7 @@
         port = Integer.parseInt(args[1]);
         contextRoot = args[2];
     }
-    
+
     public static void main(String[] args) {
         stat.addDescription("Unit test for ServletContext#setRequest/ResponseCharacterEncoding");
         WebTest webTest = new WebTest(args);
@@ -90,7 +90,7 @@
             String line = httpResponse.getBody(charset).trim();
             System.out.println("--> line = " + line);
             if  (!EXPECTED_RESPONSE.equals(line)) {
-                throw new Exception("Wrong response. Expected: " + 
+                throw new Exception("Wrong response. Expected: " +
                     EXPECTED_RESPONSE + ", received: " + line);
             }
         }
diff --git a/appserver/tests/appserv-tests/devtests/web/servlet-4.0/contextCharEncoding/build.properties b/appserver/tests/appserv-tests/devtests/web/servlet-4.0/contextCharEncoding/build.properties
index c4a4215..cb6e37d 100644
--- a/appserver/tests/appserv-tests/devtests/web/servlet-4.0/contextCharEncoding/build.properties
+++ b/appserver/tests/appserv-tests/devtests/web/servlet-4.0/contextCharEncoding/build.properties
@@ -15,10 +15,10 @@
     SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
 
 -->
- 
+
 
 <property name="module" value="web"/>
-<property name="appname" value="${module}-servlet-4.0-context-char-encoding"/>         
+<property name="appname" value="${module}-servlet-4.0-context-char-encoding"/>        \u0020
 <property name="assemble" value="${build.classes.dir}/archive"/>
 <property name="contextroot" value="/${appname}"/>
 <property name="web.xml" value="descriptor/web.xml"/>
diff --git a/appserver/tests/appserv-tests/devtests/web/servlet-4.0/contextCharEncoding/build.xml b/appserver/tests/appserv-tests/devtests/web/servlet-4.0/contextCharEncoding/build.xml
index 78d7c39..3aedb9d 100644
--- a/appserver/tests/appserv-tests/devtests/web/servlet-4.0/contextCharEncoding/build.xml
+++ b/appserver/tests/appserv-tests/devtests/web/servlet-4.0/contextCharEncoding/build.xml
@@ -37,7 +37,7 @@
         <fileset dir="." includes="*.class"/>
       </delete>
     </target>
-       
+
     <target name="compile" depends="clean">
         <antcall target="compile-common">
             <param name="src" value="servlet"/>
@@ -45,10 +45,10 @@
     </target>
 
     <target name="build" depends="compile">
-        <property name="hasWebclient" value="yes"/> 
+        <property name="hasWebclient" value="yes"/>
         <antcall target="webclient-war-common">
             <param name="hasWebclient" value="yes"/>
-            <param name="webclient.war.classes" value="**/*.class"/> 
+            <param name="webclient.war.classes" value="**/*.class"/>
         </antcall>
         <javac srcdir="." includes="WebTest.java">
             <classpath>
@@ -56,10 +56,10 @@
                 <pathelement location="${env.APS_HOME}/lib/webtest.jar"/>
             </classpath>
         </javac>
-    </target> 
+    </target>
 
     <target name="build-publish-war" depends="build, publish-war-common" />
-    
+
     <target name="re-deploy" depends="init-common">
         <antcall target="deploy-war-common"/>
     </target>
@@ -67,7 +67,7 @@
     <target name="deploy" depends="init-common">
         <antcall target="deploy-war-common"/>
     </target>
-    
+
     <target name="run" depends="init-common">
         <java classname="WebTest" fork="true">
           <sysproperty key="S1AS_HOME" value="${env.S1AS_HOME}"/>
@@ -83,10 +83,10 @@
          </classpath>
         </java>
     </target>
- 
+
     <target name="undeploy" depends="init-common">
         <antcall target="undeploy-war-common"/>
-    </target>   
+    </target>
 
     <target name="usage">
         <antcall target="usage-common"/>
diff --git a/appserver/tests/appserv-tests/devtests/web/servlet-4.0/defaultContextPath/WebTest.java b/appserver/tests/appserv-tests/devtests/web/servlet-4.0/defaultContextPath/WebTest.java
index 3a6fc72..6ba7e4f 100644
--- a/appserver/tests/appserv-tests/devtests/web/servlet-4.0/defaultContextPath/WebTest.java
+++ b/appserver/tests/appserv-tests/devtests/web/servlet-4.0/defaultContextPath/WebTest.java
@@ -36,7 +36,7 @@
         host = args[0];
         port = Integer.parseInt(args[1]);
     }
-    
+
     public static void main(String[] args) {
         stat.addDescription("Unit test for default-context-path setting in web.xml");
         WebTest webTest = new WebTest(args);
@@ -44,8 +44,8 @@
         stat.printSummary(TEST_NAME);
     }
 
-    public void doTest() {     
-        try { 
+    public void doTest() {
+        try {
             invokeJsp();
             stat.addStatus(TEST_NAME, stat.PASS);
         } catch (Exception ex) {
diff --git a/appserver/tests/appserv-tests/devtests/web/servlet-4.0/defaultContextPath/build.properties b/appserver/tests/appserv-tests/devtests/web/servlet-4.0/defaultContextPath/build.properties
index 629caf9..b9404b4 100644
--- a/appserver/tests/appserv-tests/devtests/web/servlet-4.0/defaultContextPath/build.properties
+++ b/appserver/tests/appserv-tests/devtests/web/servlet-4.0/defaultContextPath/build.properties
@@ -15,7 +15,7 @@
     SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
 
 -->
- 
+
 
 <property name="module" value="web"/>
 <property name="appname" value="${module}-servlet-4.0-default-context-path"/>
diff --git a/appserver/tests/appserv-tests/devtests/web/servlet-4.0/defaultContextPath/build.xml b/appserver/tests/appserv-tests/devtests/web/servlet-4.0/defaultContextPath/build.xml
index ca48582..fc5ba8c 100644
--- a/appserver/tests/appserv-tests/devtests/web/servlet-4.0/defaultContextPath/build.xml
+++ b/appserver/tests/appserv-tests/devtests/web/servlet-4.0/defaultContextPath/build.xml
@@ -39,7 +39,7 @@
         <fileset dir="." includes="*.class"/>
       </delete>
     </target>
-       
+
     <target name="compile" depends="clean">
         <antcall target="compile-common">
             <param name="src" value="servlet"/>
@@ -47,10 +47,10 @@
     </target>
 
     <target name="build" depends="compile">
-        <property name="hasWebclient" value="yes"/> 
+        <property name="hasWebclient" value="yes"/>
         <antcall target="webclient-war-common">
             <param name="hasWebclient" value="yes"/>
-            <param name="webclient.war.classes" value="**/*.class"/> 
+            <param name="webclient.war.classes" value="**/*.class"/>
         </antcall>
 
         <javac srcdir="." includes="WebTest.java">
@@ -59,14 +59,14 @@
                 <pathelement location="${env.APS_HOME}/lib/webtest.jar"/>
             </classpath>
         </javac>
-    </target> 
-    
+    </target>
+
     <target name="build-publish-war" depends="build, publish-war-common" />
 
     <target name="deploy" depends="init-common">
         <antcall target="deploy-war-no-context-root"/>
     </target>
-    
+
     <target name="run" depends="init-common">
         <java classname="WebTest" fork="true">
           <sysproperty key="S1AS_HOME" value="${env.S1AS_HOME}"/>
@@ -81,10 +81,10 @@
          </classpath>
         </java>
     </target>
- 
+
     <target name="undeploy" depends="init-common">
         <antcall target="undeploy-war-common"/>
-    </target>   
+    </target>
 
     <target name="usage">
         <antcall target="usage-common"/>
diff --git a/appserver/tests/appserv-tests/devtests/web/servlet-4.0/defaultContextPathEar/WebTest.java b/appserver/tests/appserv-tests/devtests/web/servlet-4.0/defaultContextPathEar/WebTest.java
index 3ac3190..95bd169 100644
--- a/appserver/tests/appserv-tests/devtests/web/servlet-4.0/defaultContextPathEar/WebTest.java
+++ b/appserver/tests/appserv-tests/devtests/web/servlet-4.0/defaultContextPathEar/WebTest.java
@@ -36,7 +36,7 @@
         host = args[0];
         port = Integer.parseInt(args[1]);
     }
-    
+
     public static void main(String[] args) {
         stat.addDescription("Unit test for default-context-path setting in web.xml in an ear file");
         WebTest webTest = new WebTest(args);
@@ -44,8 +44,8 @@
         stat.printSummary(TEST_NAME);
     }
 
-    public void doTest() {     
-        try { 
+    public void doTest() {
+        try {
             invokeJsp();
             stat.addStatus(TEST_NAME, stat.PASS);
         } catch (Exception ex) {
diff --git a/appserver/tests/appserv-tests/devtests/web/servlet-4.0/defaultContextPathEar/build.properties b/appserver/tests/appserv-tests/devtests/web/servlet-4.0/defaultContextPathEar/build.properties
index dbbe7d4..b1eb3c9 100644
--- a/appserver/tests/appserv-tests/devtests/web/servlet-4.0/defaultContextPathEar/build.properties
+++ b/appserver/tests/appserv-tests/devtests/web/servlet-4.0/defaultContextPathEar/build.properties
@@ -15,7 +15,7 @@
     SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
 
 -->
- 
+
 
 <property name="module" value="web"/>
 <property name="appname" value="${module}-servlet-4.0-default-context-path-ear"/>
diff --git a/appserver/tests/appserv-tests/devtests/web/servlet-4.0/defaultContextPathEar/build.xml b/appserver/tests/appserv-tests/devtests/web/servlet-4.0/defaultContextPathEar/build.xml
index 17a54c6..24180b6 100644
--- a/appserver/tests/appserv-tests/devtests/web/servlet-4.0/defaultContextPathEar/build.xml
+++ b/appserver/tests/appserv-tests/devtests/web/servlet-4.0/defaultContextPathEar/build.xml
@@ -39,7 +39,7 @@
         <fileset dir="." includes="*.class"/>
       </delete>
     </target>
-       
+
     <target name="compile" depends="clean">
         <antcall target="compile-common">
             <param name="src" value="servlet"/>
@@ -65,12 +65,12 @@
         <jar destfile="${assemble.dir}/${appname}App.ear">
             <fileset dir="${assemble.dir}" includes="*.war"/>
         </jar>
-    </target> 
-    
+    </target>
+
     <target name="deploy" depends="init-common">
         <antcall target="deploy-common"/>
     </target>
-    
+
     <target name="run" depends="init-common">
         <java classname="WebTest" fork="true">
           <sysproperty key="S1AS_HOME" value="${env.S1AS_HOME}"/>
@@ -85,10 +85,10 @@
          </classpath>
         </java>
     </target>
- 
+
     <target name="undeploy" depends="init-common">
         <antcall target="undeploy-common"/>
-    </target>   
+    </target>
 
     <target name="usage">
         <antcall target="usage-common"/>
diff --git a/appserver/tests/appserv-tests/devtests/web/servlet-4.0/mappingDiscovery/WebTest.java b/appserver/tests/appserv-tests/devtests/web/servlet-4.0/mappingDiscovery/WebTest.java
index 54cf040..0d27c90 100644
--- a/appserver/tests/appserv-tests/devtests/web/servlet-4.0/mappingDiscovery/WebTest.java
+++ b/appserver/tests/appserv-tests/devtests/web/servlet-4.0/mappingDiscovery/WebTest.java
@@ -42,9 +42,9 @@
         contextRoot = args[2];
         appName = args[3];
         serverLog = args[4];
-        
+
     }
-    
+
     public static void main(String[] args) {
 
         stat.addDescription("Unit test for mapping discovery");
@@ -57,12 +57,12 @@
             boolean extensionMatch = webTest.run("GET", 200, false, "/foo.Issue73", ".*ServletC.MappingImpl\\{matchValue=foo.*pattern=\\*\\.Issue73.*servletName=ServletC.*mappingMatch=EXTENSION\\}.*FORWARD_MAPPING: null.*INCLUDE_MAPPING: null.*ASYNC_MAPPING: null.*");
             boolean pathMatch = webTest.run("GET", 200, false, "/path/foo", ".*ServletC.MappingImpl\\{matchValue=foo.*pattern=/path/\\*.*servletName=ServletC.*mappingMatch=PATH\\}.*FORWARD_MAPPING: null.*INCLUDE_MAPPING: null.*ASYNC_MAPPING: null.*");
 
-            stat.addStatus(TEST_NAME + "-simple", ((contextRootMatch && 
+            stat.addStatus(TEST_NAME + "-simple", ((contextRootMatch &&
                     defaultMatch &&
-                    exactMatch && 
+                    exactMatch &&
                     extensionMatch &&
                     pathMatch)? stat.PASS : stat.FAIL));
-            
+
             boolean asyncMatch1 = webTest.run("GET", 200, false, "/AAsyncDispatchToC", ".*ServletC.MappingImpl\\{matchValue=AAsyncDispatchToC.*pattern=/AAsyncDispatchToC.*servletName=AAsyncDispatchToC,.*mappingMatch=EXACT\\}.*FORWARD_MAPPING: null.*INCLUDE_MAPPING: null.*ASYNC_MAPPING:.*MappingImpl\\{matchValue=AAsyncDispatchToC.*pattern=/AAsyncDispatchToC.*servletName=AAsyncDispatchToC.*mappingMatch=EXACT}.*");
 
             boolean asyncMatch2 = webTest.run("GET", 200, false, "/BIncludeDispatchServletNamedDispatcher", ".*In.ServletC.MappingImpl\\{matchValue=BIncludeDispatchServletNamedDispatcher,.pattern=/BIncludeDispatchServletNamedDispatcher,.servletName=BIncludeDispatchServletNamedDispatcher,.mappingMatch=EXACT\\}.*FORWARD_MAPPING:.null.*INCLUDE_MAPPING:.null.*ASYNC_MAPPING:.MappingImpl\\{matchValue=BIncludeDispatchServletNamedDispatcher,.pattern=/BIncludeDispatchServletNamedDispatcher,.servletName=BIncludeDispatchServletNamedDispatcher,.mappingMatch=EXACT\\}.*");
@@ -70,18 +70,18 @@
             stat.addStatus(TEST_NAME + "-async",
                            asyncMatch1 &&
                            asyncMatch2 ? stat.PASS : stat.FAIL);
-            
+
             boolean forwardMatch1 = webTest.run("GET", 200, false, "/AForwardToB", ".*ServletC.MappingImpl\\{matchValue=ServletC,.*pattern=/ServletC,.*servletName=ServletC,.*mappingMatch=EXACT\\}.*FORWARD_MAPPING:.MappingImpl\\{matchValue=AForwardToB,.pattern=/AForwardToB,.servletName=AForwardToB,.mappingMatch=EXACT\\}.*INCLUDE_MAPPING:.null.*ASYNC_MAPPING:.null.*");
             boolean forwardMatch2 = webTest.run("GET", 200, false, "/BForwardToC", ".*ServletC.MappingImpl\\{matchValue=ServletC,.*pattern=/ServletC,.*servletName=ServletC,.*mappingMatch=EXACT\\}.*FORWARD_MAPPING:.MappingImpl\\{matchValue=BForwardToC,.pattern=/BForwardToC,.servletName=BForwardToC,.mappingMatch=EXACT\\}.*INCLUDE_MAPPING:.null.*ASYNC_MAPPING:.null.*");
 
             stat.addStatus(TEST_NAME + "-forward", ((forwardMatch1 &&
                     forwardMatch2)? stat.PASS : stat.FAIL));
-            
+
             boolean includeMatch1 = webTest.run("GET", 200, false, "/AIncludesB", ".*AIncludesB.MappingImpl\\{matchValue=AIncludesB,.pattern=/AIncludesB,.servletName=AIncludesB,.mappingMatch=EXACT\\}.*FORWARD_MAPPING:.null.*INCLUDE_MAPPING:.null.*In.BIncludesC.MappingImpl\\{matchValue=AIncludesB,.pattern=/AIncludesB,.servletName=AIncludesB,.mappingMatch=EXACT\\}.*FORWARD_MAPPING:.null.*INCLUDE_MAPPING:.MappingImpl\\{matchValue=BIncludesC,.pattern=/BIncludesC,.servletName=BIncludesC,.mappingMatch=EXACT\\}.*In.ServletC.MappingImpl\\{matchValue=AIncludesB,.pattern=/AIncludesB,.servletName=AIncludesB,.mappingMatch=EXACT\\}.*FORWARD_MAPPING:.null.*INCLUDE_MAPPING:.MappingImpl\\{matchValue=ServletC,.pattern=/ServletC,.servletName=ServletC,.mappingMatch=EXACT\\}.*ASYNC_MAPPING:.null.*");
             boolean includeMatch2 = webTest.run("GET", 200, false, "/BIncludesC", ".*In.BIncludesC.MappingImpl\\{matchValue=BIncludesC,.pattern=/BIncludesC,.servletName=BIncludesC,.mappingMatch=EXACT\\}.*.FORWARD_MAPPING:.null.*.INCLUDE_MAPPING:.null.*In.ServletC.MappingImpl\\{matchValue=BIncludesC,.pattern=/BIncludesC,.servletName=BIncludesC,.mappingMatch=EXACT\\}.*.FORWARD_MAPPING:.null.*.INCLUDE_MAPPING:.MappingImpl\\{matchValue=ServletC,.pattern=/ServletC,.servletName=ServletC,.mappingMatch=EXACT\\}.*.ASYNC_MAPPING:.null.*");
             stat.addStatus(TEST_NAME + "-include", ((includeMatch1 &&
                     includeMatch2)? stat.PASS : stat.FAIL));
-            
+
             boolean boundsMatch1 = webTest.run("GET", 200, false, "/a/foo", ".*");
             boolean boundsMatch2 = webTest.run("GET", 200, false, "/f", ".*");
             stat.addStatus(TEST_NAME + "-bounds", ((boundsMatch1 && boundsMatch2)? stat.PASS : stat.FAIL));
@@ -91,14 +91,14 @@
             boolean namedDispatchMatch2 = webTest.run("GET", 200, false, "/BIncludeCNamedDispatcher", ".*In.ServletC.MappingImpl\\{matchValue=BIncludeCNamedDispatcher,.pattern=/BIncludeCNamedDispatcher,.servletName=BIncludeCNamedDispatcher,.mappingMatch=EXACT\\}</p><p>.FORWARD_MAPPING:.null</p><p>.INCLUDE_MAPPING:.null</p><p>.ASYNC_MAPPING:.null.*");
 
             stat.addStatus(TEST_NAME + "-namedDispatch", ((namedDispatchMatch1 && namedDispatchMatch2)? stat.PASS : stat.FAIL));
-            
-            
+
+
         } catch( Exception ex) {
             ex.printStackTrace();
             stat.addStatus(TEST_NAME, stat.FAIL);
         }
 
-    	stat.printSummary();
+        stat.printSummary();
     }
 
     private boolean run(String method,
@@ -108,7 +108,7 @@
                 host(host).port(port).build()) {
             httpClient.request().path(path).method(method).build().send();
             HttpResponse httpResponse = httpClient.getHttpResponse();
-            
+
             int code = httpResponse.getStatus();
             boolean ok = (code == status);
             if (checkOKStatusOnly) {
@@ -116,7 +116,7 @@
             }
             BufferedReader bis = null;
             String line = null;
-            
+
             try {
                 bis = new BufferedReader(new StringReader(httpResponse.getBody()));
                 line = bis.readLine();
@@ -124,7 +124,7 @@
                 ok = line.matches(matchRegex);
                 System.out.println("matches: " + ok);
             } catch( Exception ex){
-                ex.printStackTrace();   
+                ex.printStackTrace();
                 throw new Exception("Test UNPREDICTED-FAILURE");
             } finally {
                 try {
@@ -135,9 +135,9 @@
                     // ignore
                 }
             }
-            
+
             return ok;
         }
     }
-    
+
 }
diff --git a/appserver/tests/appserv-tests/devtests/web/servlet-4.0/mappingDiscovery/build.properties b/appserver/tests/appserv-tests/devtests/web/servlet-4.0/mappingDiscovery/build.properties
index aaaa42f..0d13d07 100644
--- a/appserver/tests/appserv-tests/devtests/web/servlet-4.0/mappingDiscovery/build.properties
+++ b/appserver/tests/appserv-tests/devtests/web/servlet-4.0/mappingDiscovery/build.properties
@@ -15,7 +15,7 @@
     SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
 
 -->
- 
+
 
 <property name="module" value="web"/>
 <property name="appname" value="${module}-servlet-4.0-mapping-discovery"/>
diff --git a/appserver/tests/appserv-tests/devtests/web/servlet-4.0/mappingDiscovery/build.xml b/appserver/tests/appserv-tests/devtests/web/servlet-4.0/mappingDiscovery/build.xml
index fef7251..04f26a8 100644
--- a/appserver/tests/appserv-tests/devtests/web/servlet-4.0/mappingDiscovery/build.xml
+++ b/appserver/tests/appserv-tests/devtests/web/servlet-4.0/mappingDiscovery/build.xml
@@ -35,7 +35,7 @@
       <antcall target="clean-common"/>
       <delete file="WebTest.class"/>
     </target>
-       
+
     <target name="compile" depends="clean">
         <antcall target="compile-common">
             <param name="src" value="servlet"/>
@@ -46,10 +46,10 @@
     </target>
 
     <target name="build" depends="compile">
-        <property name="hasWebclient" value="yes"/> 
+        <property name="hasWebclient" value="yes"/>
         <antcall target="webclient-war-common">
             <param name="hasWebclient" value="yes"/>
-            <param name="webclient.war.classes" value="**/*.class"/> 
+            <param name="webclient.war.classes" value="**/*.class"/>
         </antcall>
 
         <javac srcdir="." includes="WebTest.java">
@@ -59,14 +59,14 @@
             </classpath>
         </javac>
 
-    </target> 
+    </target>
 
     <target name="build-publish-war" depends="build, publish-war-common" />
-    
+
     <target name="deploy" depends="init-common">
         <antcall target="deploy-war-common"/>
     </target>
-    
+
     <target name="run" depends="init-common">
         <java classname="WebTest" fork="true">
             <sysproperty key="S1AS_HOME" value="${env.S1AS_HOME}"/>
diff --git a/appserver/tests/appserv-tests/devtests/web/servlet-4.0/mappingDiscovery/descriptor/web.xml b/appserver/tests/appserv-tests/devtests/web/servlet-4.0/mappingDiscovery/descriptor/web.xml
index 4e33b33..50c693a 100644
--- a/appserver/tests/appserv-tests/devtests/web/servlet-4.0/mappingDiscovery/descriptor/web.xml
+++ b/appserver/tests/appserv-tests/devtests/web/servlet-4.0/mappingDiscovery/descriptor/web.xml
@@ -56,7 +56,7 @@
         <servlet-name>BIncludesC</servlet-name>
         <url-pattern>/BIncludesC</url-pattern>
     </servlet-mapping>
-    
+
     <!-- async cases -->
     <servlet>
         <servlet-name>AAsyncDispatchToC</servlet-name>
@@ -112,5 +112,5 @@
         <url-pattern>/a/*</url-pattern>
         <url-pattern>//*</url-pattern>
     </servlet-mapping>
-    
+
 </web-app>
diff --git a/appserver/tests/appserv-tests/devtests/web/servlet-4.0/mappingDiscovery/servlet/AAsyncDispatchToC.java b/appserver/tests/appserv-tests/devtests/web/servlet-4.0/mappingDiscovery/servlet/AAsyncDispatchToC.java
index 9770aa2..03ea566 100644
--- a/appserver/tests/appserv-tests/devtests/web/servlet-4.0/mappingDiscovery/servlet/AAsyncDispatchToC.java
+++ b/appserver/tests/appserv-tests/devtests/web/servlet-4.0/mappingDiscovery/servlet/AAsyncDispatchToC.java
@@ -37,17 +37,17 @@
     protected void processRequest(HttpServletRequest request, HttpServletResponse response)
             throws ServletException, IOException {
         AsyncContext asyncContext = request.startAsync();
-        
-        request.getServletContext().log(this.getClass().getSimpleName() + " getHttpServletMapping: " 
+
+        request.getServletContext().log(this.getClass().getSimpleName() + " getHttpServletMapping: "
                 + request.getHttpServletMapping());
         HttpServletMapping forwardMapping = (HttpServletMapping) request.getAttribute(RequestDispatcher.FORWARD_MAPPING);
-        request.getServletContext().log(this.getClass().getSimpleName() + " FORWARD_MAPPING attribute: " 
+        request.getServletContext().log(this.getClass().getSimpleName() + " FORWARD_MAPPING attribute: "
                 + forwardMapping);
         HttpServletMapping includeMapping = (HttpServletMapping) request.getAttribute(RequestDispatcher.INCLUDE_MAPPING);
-        request.getServletContext().log(this.getClass().getSimpleName() + " INCLUDE_MAPPING attribute: " 
+        request.getServletContext().log(this.getClass().getSimpleName() + " INCLUDE_MAPPING attribute: "
                 + includeMapping);
         HttpServletMapping asyncMapping = (HttpServletMapping) request.getAttribute(AsyncContext.ASYNC_MAPPING);
-        request.getServletContext().log(this.getClass().getSimpleName() + " ASYNC_MAPPING attribute: " 
+        request.getServletContext().log(this.getClass().getSimpleName() + " ASYNC_MAPPING attribute: "
                 + asyncMapping);
         asyncContext.dispatch("/ServletC");
     }
diff --git a/appserver/tests/appserv-tests/devtests/web/servlet-4.0/mappingDiscovery/servlet/AForwardToB.java b/appserver/tests/appserv-tests/devtests/web/servlet-4.0/mappingDiscovery/servlet/AForwardToB.java
index f87be65..90ae2c0 100644
--- a/appserver/tests/appserv-tests/devtests/web/servlet-4.0/mappingDiscovery/servlet/AForwardToB.java
+++ b/appserver/tests/appserv-tests/devtests/web/servlet-4.0/mappingDiscovery/servlet/AForwardToB.java
@@ -37,16 +37,16 @@
      */
     protected void processRequest(HttpServletRequest request, HttpServletResponse response)
             throws ServletException, IOException {
-        request.getServletContext().log(this.getClass().getSimpleName() + " getHttpServletMapping: " 
+        request.getServletContext().log(this.getClass().getSimpleName() + " getHttpServletMapping: "
                 + request.getHttpServletMapping());
         HttpServletMapping forwardMapping = (HttpServletMapping) request.getAttribute(RequestDispatcher.FORWARD_MAPPING);
-        request.getServletContext().log(this.getClass().getSimpleName() + " FORWARD_MAPPING attribute: " 
+        request.getServletContext().log(this.getClass().getSimpleName() + " FORWARD_MAPPING attribute: "
                 + forwardMapping);
         HttpServletMapping includeMapping = (HttpServletMapping) request.getAttribute(RequestDispatcher.INCLUDE_MAPPING);
-        request.getServletContext().log(this.getClass().getSimpleName() + " INCLUDE_MAPPING attribute: " 
+        request.getServletContext().log(this.getClass().getSimpleName() + " INCLUDE_MAPPING attribute: "
                 + includeMapping);
         HttpServletMapping asyncMapping = (HttpServletMapping) request.getAttribute(AsyncContext.ASYNC_MAPPING);
-        request.getServletContext().log(this.getClass().getSimpleName() + " ASYNC_MAPPING attribute: " 
+        request.getServletContext().log(this.getClass().getSimpleName() + " ASYNC_MAPPING attribute: "
                 + asyncMapping);
         RequestDispatcher rd = request.getRequestDispatcher("/BForwardToC");
         rd.forward(request, response);
diff --git a/appserver/tests/appserv-tests/devtests/web/servlet-4.0/mappingDiscovery/servlet/AIncludesB.java b/appserver/tests/appserv-tests/devtests/web/servlet-4.0/mappingDiscovery/servlet/AIncludesB.java
index 13d4a9f..c3219ad 100644
--- a/appserver/tests/appserv-tests/devtests/web/servlet-4.0/mappingDiscovery/servlet/AIncludesB.java
+++ b/appserver/tests/appserv-tests/devtests/web/servlet-4.0/mappingDiscovery/servlet/AIncludesB.java
@@ -44,17 +44,17 @@
             out.print("<!DOCTYPE html>");
             out.print("<html>");
             out.print("<head>");
-            out.print("<title>Servlet AIncludesB</title>");            
+            out.print("<title>Servlet AIncludesB</title>");
             out.print("</head>");
             out.print("<body>");
             out.print("<h1>Servlet AIncludesB at " + request.getContextPath() + "</h1>");
-            request.getServletContext().log(this.getClass().getSimpleName() + " getHttpServletMapping: " 
+            request.getServletContext().log(this.getClass().getSimpleName() + " getHttpServletMapping: "
                     + request.getHttpServletMapping());
             HttpServletMapping forwardMapping = (HttpServletMapping) request.getAttribute(RequestDispatcher.FORWARD_MAPPING);
-            request.getServletContext().log(this.getClass().getSimpleName() + " FORWARD_MAPPING attribute: " 
+            request.getServletContext().log(this.getClass().getSimpleName() + " FORWARD_MAPPING attribute: "
                     + forwardMapping);
             HttpServletMapping includeMapping = (HttpServletMapping) request.getAttribute(RequestDispatcher.INCLUDE_MAPPING);
-            request.getServletContext().log(this.getClass().getSimpleName() + " INCLUDE_MAPPING attribute: " 
+            request.getServletContext().log(this.getClass().getSimpleName() + " INCLUDE_MAPPING attribute: "
                     + includeMapping);
             out.print("<p> In " + this.getClass().getSimpleName() + " " + request.getHttpServletMapping() + "</p>");
             out.print("<p> FORWARD_MAPPING: " + forwardMapping + "</p>");
diff --git a/appserver/tests/appserv-tests/devtests/web/servlet-4.0/mappingDiscovery/servlet/BForwardToC.java b/appserver/tests/appserv-tests/devtests/web/servlet-4.0/mappingDiscovery/servlet/BForwardToC.java
index c934db6..2adf4ee 100644
--- a/appserver/tests/appserv-tests/devtests/web/servlet-4.0/mappingDiscovery/servlet/BForwardToC.java
+++ b/appserver/tests/appserv-tests/devtests/web/servlet-4.0/mappingDiscovery/servlet/BForwardToC.java
@@ -37,16 +37,16 @@
      */
     protected void processRequest(HttpServletRequest request, HttpServletResponse response)
             throws ServletException, IOException {
-        request.getServletContext().log(this.getClass().getSimpleName() + " " 
+        request.getServletContext().log(this.getClass().getSimpleName() + " "
                 + request.getHttpServletMapping());
         HttpServletMapping forwardMapping = (HttpServletMapping) request.getAttribute(RequestDispatcher.FORWARD_MAPPING);
-        request.getServletContext().log(this.getClass().getSimpleName() + " FORWARD_MAPPING attribute: " 
+        request.getServletContext().log(this.getClass().getSimpleName() + " FORWARD_MAPPING attribute: "
                 + forwardMapping);
         HttpServletMapping includeMapping = (HttpServletMapping) request.getAttribute(RequestDispatcher.INCLUDE_MAPPING);
-        request.getServletContext().log(this.getClass().getSimpleName() + " INCLUDE_MAPPING attribute: " 
+        request.getServletContext().log(this.getClass().getSimpleName() + " INCLUDE_MAPPING attribute: "
                 + includeMapping);
         HttpServletMapping asyncMapping = (HttpServletMapping) request.getAttribute(AsyncContext.ASYNC_MAPPING);
-        request.getServletContext().log(this.getClass().getSimpleName() + " ASYNC_MAPPING attribute: " 
+        request.getServletContext().log(this.getClass().getSimpleName() + " ASYNC_MAPPING attribute: "
                 + asyncMapping);
         RequestDispatcher rd = request.getRequestDispatcher("/ServletC");
         rd.forward(request, response);
diff --git a/appserver/tests/appserv-tests/devtests/web/servlet-4.0/mappingDiscovery/servlet/BForwardToCNamedDispatcher.java b/appserver/tests/appserv-tests/devtests/web/servlet-4.0/mappingDiscovery/servlet/BForwardToCNamedDispatcher.java
index 7371975..71a5b4f 100644
--- a/appserver/tests/appserv-tests/devtests/web/servlet-4.0/mappingDiscovery/servlet/BForwardToCNamedDispatcher.java
+++ b/appserver/tests/appserv-tests/devtests/web/servlet-4.0/mappingDiscovery/servlet/BForwardToCNamedDispatcher.java
@@ -37,16 +37,16 @@
      */
     protected void processRequest(HttpServletRequest request, HttpServletResponse response)
             throws ServletException, IOException {
-        request.getServletContext().log(this.getClass().getSimpleName() + " " 
+        request.getServletContext().log(this.getClass().getSimpleName() + " "
                 + request.getHttpServletMapping());
         HttpServletMapping forwardMapping = (HttpServletMapping) request.getAttribute(RequestDispatcher.FORWARD_MAPPING);
-        request.getServletContext().log(this.getClass().getSimpleName() + " FORWARD_MAPPING attribute: " 
+        request.getServletContext().log(this.getClass().getSimpleName() + " FORWARD_MAPPING attribute: "
                 + forwardMapping);
         HttpServletMapping includeMapping = (HttpServletMapping) request.getAttribute(RequestDispatcher.INCLUDE_MAPPING);
-        request.getServletContext().log(this.getClass().getSimpleName() + " INCLUDE_MAPPING attribute: " 
+        request.getServletContext().log(this.getClass().getSimpleName() + " INCLUDE_MAPPING attribute: "
                 + includeMapping);
         HttpServletMapping asyncMapping = (HttpServletMapping) request.getAttribute(AsyncContext.ASYNC_MAPPING);
-        request.getServletContext().log(this.getClass().getSimpleName() + " ASYNC_MAPPING attribute: " 
+        request.getServletContext().log(this.getClass().getSimpleName() + " ASYNC_MAPPING attribute: "
                 + asyncMapping);
         RequestDispatcher rd = request.getServletContext().getNamedDispatcher("ServletC");
         rd.forward(request, response);
diff --git a/appserver/tests/appserv-tests/devtests/web/servlet-4.0/mappingDiscovery/servlet/BIncludeCNamedDispatcher.java b/appserver/tests/appserv-tests/devtests/web/servlet-4.0/mappingDiscovery/servlet/BIncludeCNamedDispatcher.java
index 4579c0d..c65712f 100644
--- a/appserver/tests/appserv-tests/devtests/web/servlet-4.0/mappingDiscovery/servlet/BIncludeCNamedDispatcher.java
+++ b/appserver/tests/appserv-tests/devtests/web/servlet-4.0/mappingDiscovery/servlet/BIncludeCNamedDispatcher.java
@@ -37,16 +37,16 @@
      */
     protected void processRequest(HttpServletRequest request, HttpServletResponse response)
             throws ServletException, IOException {
-        request.getServletContext().log(this.getClass().getSimpleName() + " " 
+        request.getServletContext().log(this.getClass().getSimpleName() + " "
                 + request.getHttpServletMapping());
         HttpServletMapping forwardMapping = (HttpServletMapping) request.getAttribute(RequestDispatcher.FORWARD_MAPPING);
-        request.getServletContext().log(this.getClass().getSimpleName() + " FORWARD_MAPPING attribute: " 
+        request.getServletContext().log(this.getClass().getSimpleName() + " FORWARD_MAPPING attribute: "
                 + forwardMapping);
         HttpServletMapping includeMapping = (HttpServletMapping) request.getAttribute(RequestDispatcher.INCLUDE_MAPPING);
-        request.getServletContext().log(this.getClass().getSimpleName() + " INCLUDE_MAPPING attribute: " 
+        request.getServletContext().log(this.getClass().getSimpleName() + " INCLUDE_MAPPING attribute: "
                 + includeMapping);
         HttpServletMapping asyncMapping = (HttpServletMapping) request.getAttribute(AsyncContext.ASYNC_MAPPING);
-        request.getServletContext().log(this.getClass().getSimpleName() + " ASYNC_MAPPING attribute: " 
+        request.getServletContext().log(this.getClass().getSimpleName() + " ASYNC_MAPPING attribute: "
                 + asyncMapping);
         RequestDispatcher rd = request.getServletContext().getNamedDispatcher("ServletC");
         rd.include(request, response);
diff --git a/appserver/tests/appserv-tests/devtests/web/servlet-4.0/mappingDiscovery/servlet/BIncludeDispatchServletNamedDispatcher.java b/appserver/tests/appserv-tests/devtests/web/servlet-4.0/mappingDiscovery/servlet/BIncludeDispatchServletNamedDispatcher.java
index 0ff75b5..787f75d 100644
--- a/appserver/tests/appserv-tests/devtests/web/servlet-4.0/mappingDiscovery/servlet/BIncludeDispatchServletNamedDispatcher.java
+++ b/appserver/tests/appserv-tests/devtests/web/servlet-4.0/mappingDiscovery/servlet/BIncludeDispatchServletNamedDispatcher.java
@@ -37,16 +37,16 @@
      */
     protected void processRequest(HttpServletRequest request, HttpServletResponse response)
             throws ServletException, IOException {
-        request.getServletContext().log(this.getClass().getSimpleName() + " " 
+        request.getServletContext().log(this.getClass().getSimpleName() + " "
                 + request.getHttpServletMapping());
         HttpServletMapping forwardMapping = (HttpServletMapping) request.getAttribute(RequestDispatcher.FORWARD_MAPPING);
-        request.getServletContext().log(this.getClass().getSimpleName() + " FORWARD_MAPPING attribute: " 
+        request.getServletContext().log(this.getClass().getSimpleName() + " FORWARD_MAPPING attribute: "
                 + forwardMapping);
         HttpServletMapping includeMapping = (HttpServletMapping) request.getAttribute(RequestDispatcher.INCLUDE_MAPPING);
-        request.getServletContext().log(this.getClass().getSimpleName() + " INCLUDE_MAPPING attribute: " 
+        request.getServletContext().log(this.getClass().getSimpleName() + " INCLUDE_MAPPING attribute: "
                 + includeMapping);
         HttpServletMapping asyncMapping = (HttpServletMapping) request.getAttribute(AsyncContext.ASYNC_MAPPING);
-        request.getServletContext().log(this.getClass().getSimpleName() + " ASYNC_MAPPING attribute: " 
+        request.getServletContext().log(this.getClass().getSimpleName() + " ASYNC_MAPPING attribute: "
                 + asyncMapping);
         RequestDispatcher rd = request.getServletContext().getNamedDispatcher("fa5raP");
         rd.include(request, response);
diff --git a/appserver/tests/appserv-tests/devtests/web/servlet-4.0/mappingDiscovery/servlet/BIncludesC.java b/appserver/tests/appserv-tests/devtests/web/servlet-4.0/mappingDiscovery/servlet/BIncludesC.java
index 9abc7ca..2075eab 100644
--- a/appserver/tests/appserv-tests/devtests/web/servlet-4.0/mappingDiscovery/servlet/BIncludesC.java
+++ b/appserver/tests/appserv-tests/devtests/web/servlet-4.0/mappingDiscovery/servlet/BIncludesC.java
@@ -41,13 +41,13 @@
         PrintWriter out = response.getWriter();
         try {
             /* TODO output your page here. You may use following sample code. */
-            request.getServletContext().log(this.getClass().getSimpleName() + " " 
+            request.getServletContext().log(this.getClass().getSimpleName() + " "
                     + request.getHttpServletMapping());
             HttpServletMapping forwardMapping = (HttpServletMapping) request.getAttribute(RequestDispatcher.FORWARD_MAPPING);
-            request.getServletContext().log(this.getClass().getSimpleName() + " FORWARD_MAPPING attribute: " 
+            request.getServletContext().log(this.getClass().getSimpleName() + " FORWARD_MAPPING attribute: "
                     + forwardMapping);
             HttpServletMapping includeMapping = (HttpServletMapping) request.getAttribute(RequestDispatcher.INCLUDE_MAPPING);
-            request.getServletContext().log(this.getClass().getSimpleName() + " INCLUDE_MAPPING attribute: " 
+            request.getServletContext().log(this.getClass().getSimpleName() + " INCLUDE_MAPPING attribute: "
                     + includeMapping);
             out.print("<p> In " + this.getClass().getSimpleName() + " " + request.getHttpServletMapping() + "</p>");
             out.print("<p> FORWARD_MAPPING: " + forwardMapping + "</p>");
diff --git a/appserver/tests/appserv-tests/devtests/web/servlet-4.0/mappingDiscovery/servlet/DispatchServlet.java b/appserver/tests/appserv-tests/devtests/web/servlet-4.0/mappingDiscovery/servlet/DispatchServlet.java
index be850ad..43ec1a1 100644
--- a/appserver/tests/appserv-tests/devtests/web/servlet-4.0/mappingDiscovery/servlet/DispatchServlet.java
+++ b/appserver/tests/appserv-tests/devtests/web/servlet-4.0/mappingDiscovery/servlet/DispatchServlet.java
@@ -27,18 +27,18 @@
 public class DispatchServlet extends HttpServlet {
 
   public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException{
-          request.getServletContext().log(this.getClass().getSimpleName() + " " 
+          request.getServletContext().log(this.getClass().getSimpleName() + " "
                                           + request.getHttpServletMapping());
           HttpServletMapping forwardMapping = (HttpServletMapping) request.getAttribute(RequestDispatcher.FORWARD_MAPPING);
-          request.getServletContext().log(this.getClass().getSimpleName() + " FORWARD_MAPPING attribute: " 
+          request.getServletContext().log(this.getClass().getSimpleName() + " FORWARD_MAPPING attribute: "
                                           + forwardMapping);
           HttpServletMapping includeMapping = (HttpServletMapping) request.getAttribute(RequestDispatcher.INCLUDE_MAPPING);
-          request.getServletContext().log(this.getClass().getSimpleName() + " INCLUDE_MAPPING attribute: " 
+          request.getServletContext().log(this.getClass().getSimpleName() + " INCLUDE_MAPPING attribute: "
                                           + includeMapping);
           HttpServletMapping asyncMapping = (HttpServletMapping) request.getAttribute(AsyncContext.ASYNC_MAPPING);
-          request.getServletContext().log(this.getClass().getSimpleName() + " ASYNC_MAPPING attribute: " 
+          request.getServletContext().log(this.getClass().getSimpleName() + " ASYNC_MAPPING attribute: "
                                           + asyncMapping);
-          
+
     AsyncContext asyncContext = request.startAsync();
     asyncContext.setTimeout(0);
     asyncContext.dispatch("/ServletC");
diff --git a/appserver/tests/appserv-tests/devtests/web/servlet-4.0/mappingDiscovery/servlet/ServletC.java b/appserver/tests/appserv-tests/devtests/web/servlet-4.0/mappingDiscovery/servlet/ServletC.java
index 23aad83..b1ab795 100644
--- a/appserver/tests/appserv-tests/devtests/web/servlet-4.0/mappingDiscovery/servlet/ServletC.java
+++ b/appserver/tests/appserv-tests/devtests/web/servlet-4.0/mappingDiscovery/servlet/ServletC.java
@@ -41,16 +41,16 @@
         PrintWriter out = response.getWriter();
         try {
             /* TODO output your page here. You may use following sample code. */
-            request.getServletContext().log(this.getClass().getSimpleName() + " " 
+            request.getServletContext().log(this.getClass().getSimpleName() + " "
                     + request.getHttpServletMapping());
             HttpServletMapping forwardMapping = (HttpServletMapping) request.getAttribute(RequestDispatcher.FORWARD_MAPPING);
-            request.getServletContext().log(this.getClass().getSimpleName() + " FORWARD_MAPPING attribute: " 
+            request.getServletContext().log(this.getClass().getSimpleName() + " FORWARD_MAPPING attribute: "
                     + forwardMapping);
             HttpServletMapping includeMapping = (HttpServletMapping) request.getAttribute(RequestDispatcher.INCLUDE_MAPPING);
-            request.getServletContext().log(this.getClass().getSimpleName() + " INCLUDE_MAPPING attribute: " 
+            request.getServletContext().log(this.getClass().getSimpleName() + " INCLUDE_MAPPING attribute: "
                     + includeMapping);
             HttpServletMapping asyncMapping = (HttpServletMapping) request.getAttribute(AsyncContext.ASYNC_MAPPING);
-            request.getServletContext().log(this.getClass().getSimpleName() + " ASYNC_MAPPING attribute: " 
+            request.getServletContext().log(this.getClass().getSimpleName() + " ASYNC_MAPPING attribute: "
                     + asyncMapping);
             out.print("<p> In " + this.getClass().getSimpleName() + " " + request.getHttpServletMapping() + "</p>");
             out.print("<p> FORWARD_MAPPING: " + forwardMapping + "</p>");
diff --git a/appserver/tests/appserv-tests/devtests/web/servlet-4.0/pushArbitraryMethod/WebTest.java b/appserver/tests/appserv-tests/devtests/web/servlet-4.0/pushArbitraryMethod/WebTest.java
index 87f7f21..332f601 100644
--- a/appserver/tests/appserv-tests/devtests/web/servlet-4.0/pushArbitraryMethod/WebTest.java
+++ b/appserver/tests/appserv-tests/devtests/web/servlet-4.0/pushArbitraryMethod/WebTest.java
@@ -43,7 +43,7 @@
         port = Integer.parseInt(args[1]);
         contextRoot = args[2];
     }
-    
+
     public static void main(String[] args) {
         stat.addDescription("Unit test for http2 push arbitrary method");
         WebTest webTest = new WebTest(args);
diff --git a/appserver/tests/appserv-tests/devtests/web/servlet-4.0/pushArbitraryMethod/build.properties b/appserver/tests/appserv-tests/devtests/web/servlet-4.0/pushArbitraryMethod/build.properties
index 9445c10..10f358d 100644
--- a/appserver/tests/appserv-tests/devtests/web/servlet-4.0/pushArbitraryMethod/build.properties
+++ b/appserver/tests/appserv-tests/devtests/web/servlet-4.0/pushArbitraryMethod/build.properties
@@ -15,7 +15,7 @@
     SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
 
 -->
- 
+
 
 <property name="module" value="web"/>
 <property name="appname" value="${module}-servlet-4.0-push-arbitrary-method"/>
diff --git a/appserver/tests/appserv-tests/devtests/web/servlet-4.0/pushArbitraryMethod/build.xml b/appserver/tests/appserv-tests/devtests/web/servlet-4.0/pushArbitraryMethod/build.xml
index 6d8561d..ea74b2c 100644
--- a/appserver/tests/appserv-tests/devtests/web/servlet-4.0/pushArbitraryMethod/build.xml
+++ b/appserver/tests/appserv-tests/devtests/web/servlet-4.0/pushArbitraryMethod/build.xml
@@ -39,7 +39,7 @@
           <fileset dir="." includes="*.class"/>
       </delete>
     </target>
-       
+
     <target name="compile" depends="clean">
         <antcall target="compile-common">
             <param name="src" value="servlet"/>
@@ -57,7 +57,7 @@
                 <pathelement location="${env.APS_HOME}/lib/webtest.jar"/>
             </classpath>
         </javac>
-    </target> 
+    </target>
 
     <target name="deploy" depends="init-common">
         <antcall target="deploy-war-common"/>
@@ -82,7 +82,7 @@
 
     <target name="undeploy" depends="init-common">
         <antcall target="undeploy-war-common"/>
-    </target>   
+    </target>
 
     <target name="usage">
         <antcall target="usage-common"/>
diff --git a/appserver/tests/appserv-tests/devtests/web/servlet-4.0/pushArbitraryMethod/servlet/test/FooMethodServlet.java b/appserver/tests/appserv-tests/devtests/web/servlet-4.0/pushArbitraryMethod/servlet/test/FooMethodServlet.java
index cd1a6c8..67da9f0 100644
--- a/appserver/tests/appserv-tests/devtests/web/servlet-4.0/pushArbitraryMethod/servlet/test/FooMethodServlet.java
+++ b/appserver/tests/appserv-tests/devtests/web/servlet-4.0/pushArbitraryMethod/servlet/test/FooMethodServlet.java
@@ -32,7 +32,7 @@
 
 @WebServlet(urlPatterns="/foo/*")
 public class FooMethodServlet extends HttpServlet {
-        
+
     @Override
     protected void service(HttpServletRequest req, HttpServletResponse res)
             throws IOException, ServletException {
@@ -53,6 +53,6 @@
             }
             res.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
             return;
-            
+
     }
 }
diff --git a/appserver/tests/appserv-tests/devtests/web/servlet-4.0/pushArbitraryMethod/servlet/test/TestServlet.java b/appserver/tests/appserv-tests/devtests/web/servlet-4.0/pushArbitraryMethod/servlet/test/TestServlet.java
index 35a38e4..ff7473c 100644
--- a/appserver/tests/appserv-tests/devtests/web/servlet-4.0/pushArbitraryMethod/servlet/test/TestServlet.java
+++ b/appserver/tests/appserv-tests/devtests/web/servlet-4.0/pushArbitraryMethod/servlet/test/TestServlet.java
@@ -58,7 +58,7 @@
              * cookie: [375 bytes were stripped]
              * referer: https://localhost:8181/web-servlet-4.0-push-arbitrary-method/test
              */
-            
+
         PushBuilder pushBuilder = req.newPushBuilder().
             method("FOO").
             path("foo/my.css");
diff --git a/appserver/tests/appserv-tests/devtests/web/servlet-4.0/pushAuthorization/WebTest.java b/appserver/tests/appserv-tests/devtests/web/servlet-4.0/pushAuthorization/WebTest.java
index e00c99e..c461755 100644
--- a/appserver/tests/appserv-tests/devtests/web/servlet-4.0/pushAuthorization/WebTest.java
+++ b/appserver/tests/appserv-tests/devtests/web/servlet-4.0/pushAuthorization/WebTest.java
@@ -45,7 +45,7 @@
         port = Integer.parseInt(args[1]);
         contextRoot = args[2];
     }
-    
+
     public static void main(String[] args) {
         stat.addDescription("Unit test for http2 push static file");
         WebTest webTest = new WebTest(args);
diff --git a/appserver/tests/appserv-tests/devtests/web/servlet-4.0/pushAuthorization/build.properties b/appserver/tests/appserv-tests/devtests/web/servlet-4.0/pushAuthorization/build.properties
index 140b97a..6085e62 100644
--- a/appserver/tests/appserv-tests/devtests/web/servlet-4.0/pushAuthorization/build.properties
+++ b/appserver/tests/appserv-tests/devtests/web/servlet-4.0/pushAuthorization/build.properties
@@ -15,7 +15,7 @@
     SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
 
 -->
- 
+
 
 <property name="module" value="web"/>
 <property name="appname" value="${module}-servlet-4.0-push-authorization"/>
diff --git a/appserver/tests/appserv-tests/devtests/web/servlet-4.0/pushAuthorization/build.xml b/appserver/tests/appserv-tests/devtests/web/servlet-4.0/pushAuthorization/build.xml
index e2cdfc0..972c0d1 100644
--- a/appserver/tests/appserv-tests/devtests/web/servlet-4.0/pushAuthorization/build.xml
+++ b/appserver/tests/appserv-tests/devtests/web/servlet-4.0/pushAuthorization/build.xml
@@ -53,7 +53,7 @@
             <param name="user" value="${testuser}"/>
         </antcall>
     </target>
-       
+
     <target name="compile" depends="clean">
         <antcall target="compile-common">
             <param name="src" value="servlet"/>
@@ -71,7 +71,7 @@
                 <pathelement location="${env.APS_HOME}/lib/webtest.jar"/>
             </classpath>
         </javac>
-    </target> 
+    </target>
 
     <target name="deploy" depends="init-common">
         <antcall target="deploy-war-common"/>
@@ -96,7 +96,7 @@
 
     <target name="undeploy" depends="init-common">
         <antcall target="undeploy-war-common"/>
-    </target>   
+    </target>
 
     <target name="usage">
         <antcall target="usage-common"/>
diff --git a/appserver/tests/appserv-tests/devtests/web/servlet-4.0/pushCacheable/WebTest.java b/appserver/tests/appserv-tests/devtests/web/servlet-4.0/pushCacheable/WebTest.java
index 17b7354..4aa3c9e 100644
--- a/appserver/tests/appserv-tests/devtests/web/servlet-4.0/pushCacheable/WebTest.java
+++ b/appserver/tests/appserv-tests/devtests/web/servlet-4.0/pushCacheable/WebTest.java
@@ -43,7 +43,7 @@
         port = Integer.parseInt(args[1]);
         contextRoot = args[2];
     }
-    
+
     public static void main(String[] args) {
         stat.addDescription("Unit test for http2 push cacheable");
         WebTest webTest = new WebTest(args);
@@ -52,7 +52,7 @@
     }
 
     public void doTest() {
-        try { 
+        try {
             invoke();
             stat.addStatus(TEST_NAME, stat.PASS);
         } catch (Exception ex) {
diff --git a/appserver/tests/appserv-tests/devtests/web/servlet-4.0/pushCacheable/build.properties b/appserver/tests/appserv-tests/devtests/web/servlet-4.0/pushCacheable/build.properties
index d113ace..8e728b8 100644
--- a/appserver/tests/appserv-tests/devtests/web/servlet-4.0/pushCacheable/build.properties
+++ b/appserver/tests/appserv-tests/devtests/web/servlet-4.0/pushCacheable/build.properties
@@ -15,7 +15,7 @@
     SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
 
 -->
- 
+
 
 <property name="module" value="web"/>
 <property name="appname" value="${module}-servlet-4.0-push-cacheable"/>
diff --git a/appserver/tests/appserv-tests/devtests/web/servlet-4.0/pushCacheable/build.xml b/appserver/tests/appserv-tests/devtests/web/servlet-4.0/pushCacheable/build.xml
index 831745f..7f4fa1c 100644
--- a/appserver/tests/appserv-tests/devtests/web/servlet-4.0/pushCacheable/build.xml
+++ b/appserver/tests/appserv-tests/devtests/web/servlet-4.0/pushCacheable/build.xml
@@ -39,7 +39,7 @@
           <fileset dir="." includes="*.class"/>
       </delete>
     </target>
-       
+
     <target name="compile" depends="clean">
         <antcall target="compile-common">
             <param name="src" value="servlet"/>
@@ -57,7 +57,7 @@
                 <pathelement location="${env.APS_HOME}/lib/webtest.jar"/>
             </classpath>
         </javac>
-    </target> 
+    </target>
 
     <target name="deploy" depends="init-common">
         <antcall target="deploy-war-common"/>
@@ -82,7 +82,7 @@
 
     <target name="undeploy" depends="init-common">
         <antcall target="undeploy-war-common"/>
-    </target>   
+    </target>
 
     <target name="usage">
         <antcall target="usage-common"/>
diff --git a/appserver/tests/appserv-tests/devtests/web/servlet-4.0/pushDynamic/WebTest.java b/appserver/tests/appserv-tests/devtests/web/servlet-4.0/pushDynamic/WebTest.java
index 49c0c22..919edc3 100644
--- a/appserver/tests/appserv-tests/devtests/web/servlet-4.0/pushDynamic/WebTest.java
+++ b/appserver/tests/appserv-tests/devtests/web/servlet-4.0/pushDynamic/WebTest.java
@@ -43,7 +43,7 @@
         port = Integer.parseInt(args[1]);
         contextRoot = args[2];
     }
-    
+
     public static void main(String[] args) {
         stat.addDescription("Unit test for http2 push dynamic file");
         WebTest webTest = new WebTest(args);
diff --git a/appserver/tests/appserv-tests/devtests/web/servlet-4.0/pushDynamic/build.properties b/appserver/tests/appserv-tests/devtests/web/servlet-4.0/pushDynamic/build.properties
index d3bdba9..9c285ce 100644
--- a/appserver/tests/appserv-tests/devtests/web/servlet-4.0/pushDynamic/build.properties
+++ b/appserver/tests/appserv-tests/devtests/web/servlet-4.0/pushDynamic/build.properties
@@ -15,7 +15,7 @@
     SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
 
 -->
- 
+
 
 <property name="module" value="web"/>
 <property name="appname" value="${module}-servlet-4.0-push-dynamic"/>
diff --git a/appserver/tests/appserv-tests/devtests/web/servlet-4.0/pushDynamic/build.xml b/appserver/tests/appserv-tests/devtests/web/servlet-4.0/pushDynamic/build.xml
index 6d8561d..ea74b2c 100644
--- a/appserver/tests/appserv-tests/devtests/web/servlet-4.0/pushDynamic/build.xml
+++ b/appserver/tests/appserv-tests/devtests/web/servlet-4.0/pushDynamic/build.xml
@@ -39,7 +39,7 @@
           <fileset dir="." includes="*.class"/>
       </delete>
     </target>
-       
+
     <target name="compile" depends="clean">
         <antcall target="compile-common">
             <param name="src" value="servlet"/>
@@ -57,7 +57,7 @@
                 <pathelement location="${env.APS_HOME}/lib/webtest.jar"/>
             </classpath>
         </javac>
-    </target> 
+    </target>
 
     <target name="deploy" depends="init-common">
         <antcall target="deploy-war-common"/>
@@ -82,7 +82,7 @@
 
     <target name="undeploy" depends="init-common">
         <antcall target="undeploy-war-common"/>
-    </target>   
+    </target>
 
     <target name="usage">
         <antcall target="usage-common"/>
diff --git a/appserver/tests/appserv-tests/devtests/web/servlet-4.0/pushDynamic/servlet/test/NOTfacesServlet.java b/appserver/tests/appserv-tests/devtests/web/servlet-4.0/pushDynamic/servlet/test/NOTfacesServlet.java
index f069065..c8e4c64 100644
--- a/appserver/tests/appserv-tests/devtests/web/servlet-4.0/pushDynamic/servlet/test/NOTfacesServlet.java
+++ b/appserver/tests/appserv-tests/devtests/web/servlet-4.0/pushDynamic/servlet/test/NOTfacesServlet.java
@@ -56,7 +56,7 @@
                             req.getServletContext().log("Should have ln parameter.  Does not.");
                             res.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
                             return;
-                            
+
                     }
             }
             res.getWriter().println("foo: bar");
diff --git a/appserver/tests/appserv-tests/devtests/web/servlet-4.0/pushDynamic/servlet/test/TestServlet.java b/appserver/tests/appserv-tests/devtests/web/servlet-4.0/pushDynamic/servlet/test/TestServlet.java
index 26dfd7b..7305f62 100644
--- a/appserver/tests/appserv-tests/devtests/web/servlet-4.0/pushDynamic/servlet/test/TestServlet.java
+++ b/appserver/tests/appserv-tests/devtests/web/servlet-4.0/pushDynamic/servlet/test/TestServlet.java
@@ -46,7 +46,7 @@
         pushBuilder = req.newPushBuilder().
             path("/web-servlet-4.0-push-dynamic/NOTfaces/javax.faces.resource/parameterMapFailure.js?ln=resources");
         pushBuilder.push();
-        
+
         res.getWriter().println("<html><head><title>HTTP2 Test</title><link rel=\"stylesheet\" href=\"/web-servlet-4.0-push-dynamic/NOTfaces/javax.faces.resource/style.css\"><script type=\"text/javascript\" src=\"/web-servlet-4.0-push-dynamic/NOTfaces/javax.faces.resource/jsf.js?ln=javax.faces\"></script><script type=\"text/javascript\" src=\"/web-servlet-4.0-push-dynamic/NOTfaces/javax.faces.resource/parameterMapFailure.js?ln=resources\"></script></head><body>Hello</body></html>");
     }
 }
diff --git a/appserver/tests/appserv-tests/devtests/web/servlet-4.0/pushQueryString/WebTest.java b/appserver/tests/appserv-tests/devtests/web/servlet-4.0/pushQueryString/WebTest.java
index 839f97d..66224e3 100644
--- a/appserver/tests/appserv-tests/devtests/web/servlet-4.0/pushQueryString/WebTest.java
+++ b/appserver/tests/appserv-tests/devtests/web/servlet-4.0/pushQueryString/WebTest.java
@@ -43,7 +43,7 @@
         port = Integer.parseInt(args[1]);
         contextRoot = args[2];
     }
-    
+
     public static void main(String[] args) {
         stat.addDescription("Unit test for http2 push query string");
         WebTest webTest = new WebTest(args);
@@ -52,7 +52,7 @@
     }
 
     public void doTest() {
-        try { 
+        try {
             invoke();
             stat.addStatus(TEST_NAME, stat.PASS);
         } catch (Exception ex) {
diff --git a/appserver/tests/appserv-tests/devtests/web/servlet-4.0/pushQueryString/build.properties b/appserver/tests/appserv-tests/devtests/web/servlet-4.0/pushQueryString/build.properties
index 8a90eaf..22143d6 100644
--- a/appserver/tests/appserv-tests/devtests/web/servlet-4.0/pushQueryString/build.properties
+++ b/appserver/tests/appserv-tests/devtests/web/servlet-4.0/pushQueryString/build.properties
@@ -15,7 +15,7 @@
     SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
 
 -->
- 
+
 
 <property name="module" value="web"/>
 <property name="appname" value="${module}-servlet-4.0-push-query-string"/>
diff --git a/appserver/tests/appserv-tests/devtests/web/servlet-4.0/pushQueryString/build.xml b/appserver/tests/appserv-tests/devtests/web/servlet-4.0/pushQueryString/build.xml
index 831745f..7f4fa1c 100644
--- a/appserver/tests/appserv-tests/devtests/web/servlet-4.0/pushQueryString/build.xml
+++ b/appserver/tests/appserv-tests/devtests/web/servlet-4.0/pushQueryString/build.xml
@@ -39,7 +39,7 @@
           <fileset dir="." includes="*.class"/>
       </delete>
     </target>
-       
+
     <target name="compile" depends="clean">
         <antcall target="compile-common">
             <param name="src" value="servlet"/>
@@ -57,7 +57,7 @@
                 <pathelement location="${env.APS_HOME}/lib/webtest.jar"/>
             </classpath>
         </javac>
-    </target> 
+    </target>
 
     <target name="deploy" depends="init-common">
         <antcall target="deploy-war-common"/>
@@ -82,7 +82,7 @@
 
     <target name="undeploy" depends="init-common">
         <antcall target="undeploy-war-common"/>
-    </target>   
+    </target>
 
     <target name="usage">
         <antcall target="usage-common"/>
diff --git a/appserver/tests/appserv-tests/devtests/web/servlet-4.0/pushStatic/WebTest.java b/appserver/tests/appserv-tests/devtests/web/servlet-4.0/pushStatic/WebTest.java
index 213690d..6d44f31 100644
--- a/appserver/tests/appserv-tests/devtests/web/servlet-4.0/pushStatic/WebTest.java
+++ b/appserver/tests/appserv-tests/devtests/web/servlet-4.0/pushStatic/WebTest.java
@@ -43,7 +43,7 @@
         port = Integer.parseInt(args[1]);
         contextRoot = args[2];
     }
-    
+
     public static void main(String[] args) {
         stat.addDescription("Unit test for http2 push static file");
         WebTest webTest = new WebTest(args);
diff --git a/appserver/tests/appserv-tests/devtests/web/servlet-4.0/pushStatic/build.properties b/appserver/tests/appserv-tests/devtests/web/servlet-4.0/pushStatic/build.properties
index 7c1192b..f19ec38 100644
--- a/appserver/tests/appserv-tests/devtests/web/servlet-4.0/pushStatic/build.properties
+++ b/appserver/tests/appserv-tests/devtests/web/servlet-4.0/pushStatic/build.properties
@@ -15,7 +15,7 @@
     SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
 
 -->
- 
+
 
 <property name="module" value="web"/>
 <property name="appname" value="${module}-servlet-4.0-push-static"/>
diff --git a/appserver/tests/appserv-tests/devtests/web/servlet-4.0/pushStatic/build.xml b/appserver/tests/appserv-tests/devtests/web/servlet-4.0/pushStatic/build.xml
index 831745f..7f4fa1c 100644
--- a/appserver/tests/appserv-tests/devtests/web/servlet-4.0/pushStatic/build.xml
+++ b/appserver/tests/appserv-tests/devtests/web/servlet-4.0/pushStatic/build.xml
@@ -39,7 +39,7 @@
           <fileset dir="." includes="*.class"/>
       </delete>
     </target>
-       
+
     <target name="compile" depends="clean">
         <antcall target="compile-common">
             <param name="src" value="servlet"/>
@@ -57,7 +57,7 @@
                 <pathelement location="${env.APS_HOME}/lib/webtest.jar"/>
             </classpath>
         </javac>
-    </target> 
+    </target>
 
     <target name="deploy" depends="init-common">
         <antcall target="deploy-war-common"/>
@@ -82,7 +82,7 @@
 
     <target name="undeploy" depends="init-common">
         <antcall target="undeploy-war-common"/>
-    </target>   
+    </target>
 
     <target name="usage">
         <antcall target="usage-common"/>
diff --git a/appserver/tests/appserv-tests/devtests/web/servlet-4.0/reqResEncoding/WebTest.java b/appserver/tests/appserv-tests/devtests/web/servlet-4.0/reqResEncoding/WebTest.java
index 869ac98..8fccc06 100644
--- a/appserver/tests/appserv-tests/devtests/web/servlet-4.0/reqResEncoding/WebTest.java
+++ b/appserver/tests/appserv-tests/devtests/web/servlet-4.0/reqResEncoding/WebTest.java
@@ -44,7 +44,7 @@
         port = Integer.parseInt(args[1]);
         contextRoot = args[2];
     }
-    
+
     public static void main(String[] args) {
         stat.addDescription("Unit test for request-character-encoding, response-character-encoding in web.xml");
         WebTest webTest = new WebTest(args);
@@ -90,7 +90,7 @@
             String line = httpResponse.getBody(charset).trim();
             System.out.println("--> line = " + line);
             if  (!EXPECTED_RESPONSE.equals(line)) {
-                throw new Exception("Wrong response. Expected: " + 
+                throw new Exception("Wrong response. Expected: " +
                     EXPECTED_RESPONSE + ", received: " + line);
             }
         }
diff --git a/appserver/tests/appserv-tests/devtests/web/servlet-4.0/reqResEncoding/build.properties b/appserver/tests/appserv-tests/devtests/web/servlet-4.0/reqResEncoding/build.properties
index 2aea8fd..dc8f68f 100644
--- a/appserver/tests/appserv-tests/devtests/web/servlet-4.0/reqResEncoding/build.properties
+++ b/appserver/tests/appserv-tests/devtests/web/servlet-4.0/reqResEncoding/build.properties
@@ -15,10 +15,10 @@
     SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
 
 -->
- 
+
 
 <property name="module" value="web"/>
-<property name="appname" value="${module}-servlet-4.0-req-res-encoding"/>         
+<property name="appname" value="${module}-servlet-4.0-req-res-encoding"/>        \u0020
 <property name="assemble" value="${build.classes.dir}/archive"/>
 <property name="contextroot" value="/${appname}"/>
 <property name="web.xml" value="descriptor/web.xml"/>
diff --git a/appserver/tests/appserv-tests/devtests/web/servlet-4.0/reqResEncoding/build.xml b/appserver/tests/appserv-tests/devtests/web/servlet-4.0/reqResEncoding/build.xml
index 78d7c39..3aedb9d 100644
--- a/appserver/tests/appserv-tests/devtests/web/servlet-4.0/reqResEncoding/build.xml
+++ b/appserver/tests/appserv-tests/devtests/web/servlet-4.0/reqResEncoding/build.xml
@@ -37,7 +37,7 @@
         <fileset dir="." includes="*.class"/>
       </delete>
     </target>
-       
+
     <target name="compile" depends="clean">
         <antcall target="compile-common">
             <param name="src" value="servlet"/>
@@ -45,10 +45,10 @@
     </target>
 
     <target name="build" depends="compile">
-        <property name="hasWebclient" value="yes"/> 
+        <property name="hasWebclient" value="yes"/>
         <antcall target="webclient-war-common">
             <param name="hasWebclient" value="yes"/>
-            <param name="webclient.war.classes" value="**/*.class"/> 
+            <param name="webclient.war.classes" value="**/*.class"/>
         </antcall>
         <javac srcdir="." includes="WebTest.java">
             <classpath>
@@ -56,10 +56,10 @@
                 <pathelement location="${env.APS_HOME}/lib/webtest.jar"/>
             </classpath>
         </javac>
-    </target> 
+    </target>
 
     <target name="build-publish-war" depends="build, publish-war-common" />
-    
+
     <target name="re-deploy" depends="init-common">
         <antcall target="deploy-war-common"/>
     </target>
@@ -67,7 +67,7 @@
     <target name="deploy" depends="init-common">
         <antcall target="deploy-war-common"/>
     </target>
-    
+
     <target name="run" depends="init-common">
         <java classname="WebTest" fork="true">
           <sysproperty key="S1AS_HOME" value="${env.S1AS_HOME}"/>
@@ -83,10 +83,10 @@
          </classpath>
         </java>
     </target>
- 
+
     <target name="undeploy" depends="init-common">
         <antcall target="undeploy-war-common"/>
-    </target>   
+    </target>
 
     <target name="usage">
         <antcall target="usage-common"/>
diff --git a/appserver/tests/appserv-tests/devtests/web/servlet-4.0/reqResEncodingGFWebxml/WebTest.java b/appserver/tests/appserv-tests/devtests/web/servlet-4.0/reqResEncodingGFWebxml/WebTest.java
index b2decec..5bb8ef5 100644
--- a/appserver/tests/appserv-tests/devtests/web/servlet-4.0/reqResEncodingGFWebxml/WebTest.java
+++ b/appserver/tests/appserv-tests/devtests/web/servlet-4.0/reqResEncodingGFWebxml/WebTest.java
@@ -46,7 +46,7 @@
         port = Integer.parseInt(args[1]);
         contextRoot = args[2];
     }
-    
+
     public static void main(String[] args) {
         stat.addDescription("Unit test for request-character-encoding, response-character-encoding in web.xml and parameter-encoding in glassfish-web.xml");
         WebTest webTest = new WebTest(args);
@@ -91,12 +91,12 @@
             String line = httpResponse.getBody(charset).trim();
             System.out.println("--> line = " + line);
             if (!JCHARSET_RESPONSE.equals(charset)) {
-                throw new Exception("Wrong Content-Type charset. Expected: " + 
+                throw new Exception("Wrong Content-Type charset. Expected: " +
                     JCHARSET_RESPONSE + ", received: " + charset);
             }
-            
+
             if  (!EXPECTED_RESPONSE.equals(line)) {
-                throw new Exception("Wrong response. Expected: " + 
+                throw new Exception("Wrong response. Expected: " +
                     EXPECTED_RESPONSE + ", received: " + line);
             }
         }
@@ -124,12 +124,12 @@
             String line = httpResponse.getBody(charset).trim();
             System.out.println("--> line = " + line);
             if (!JCHARSET_RESPONSE.equals(charset)) {
-                throw new Exception("Wrong Content-Type charset. Expected: " + 
+                throw new Exception("Wrong Content-Type charset. Expected: " +
                     JCHARSET_RESPONSE + ", received: " + charset);
             }
-            
+
             if  (!EXPECTED_RESPONSE.equals(line)) {
-                throw new Exception("Wrong response. Expected: " + 
+                throw new Exception("Wrong response. Expected: " +
                     EXPECTED_RESPONSE + ", received: " + line);
             }
         }
diff --git a/appserver/tests/appserv-tests/devtests/web/servlet-4.0/reqResEncodingGFWebxml/build.properties b/appserver/tests/appserv-tests/devtests/web/servlet-4.0/reqResEncodingGFWebxml/build.properties
index 312914c..5009847 100644
--- a/appserver/tests/appserv-tests/devtests/web/servlet-4.0/reqResEncodingGFWebxml/build.properties
+++ b/appserver/tests/appserv-tests/devtests/web/servlet-4.0/reqResEncodingGFWebxml/build.properties
@@ -16,10 +16,10 @@
     SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
 
 -->
- 
+
 
 <property name="module" value="web"/>
-<property name="appname" value="${module}-servlet-4.0-req-res-encoding-gfwebxml"/>         
+<property name="appname" value="${module}-servlet-4.0-req-res-encoding-gfwebxml"/>        \u0020
 <property name="assemble" value="${build.classes.dir}/archive"/>
 <property name="contextroot" value="/${appname}"/>
 <property name="web.xml" value="descriptor/web.xml"/>
diff --git a/appserver/tests/appserv-tests/devtests/web/servlet-4.0/reqResEncodingGFWebxml/build.xml b/appserver/tests/appserv-tests/devtests/web/servlet-4.0/reqResEncodingGFWebxml/build.xml
index d8fffcf..39bb534 100644
--- a/appserver/tests/appserv-tests/devtests/web/servlet-4.0/reqResEncodingGFWebxml/build.xml
+++ b/appserver/tests/appserv-tests/devtests/web/servlet-4.0/reqResEncodingGFWebxml/build.xml
@@ -38,7 +38,7 @@
         <fileset dir="." includes="*.class"/>
       </delete>
     </target>
-       
+
     <target name="compile" depends="clean">
         <antcall target="compile-common">
             <param name="src" value="servlet"/>
@@ -46,10 +46,10 @@
     </target>
 
     <target name="build" depends="compile">
-        <property name="hasWebclient" value="yes"/> 
+        <property name="hasWebclient" value="yes"/>
         <antcall target="webclient-war-common">
             <param name="hasWebclient" value="yes"/>
-            <param name="webclient.war.classes" value="**/*.class"/> 
+            <param name="webclient.war.classes" value="**/*.class"/>
         </antcall>
         <javac srcdir="." includes="WebTest.java">
             <classpath>
@@ -57,10 +57,10 @@
                 <pathelement location="${env.APS_HOME}/lib/webtest.jar"/>
             </classpath>
         </javac>
-    </target> 
+    </target>
 
     <target name="build-publish-war" depends="build, publish-war-common" />
-    
+
     <target name="re-deploy" depends="init-common">
         <antcall target="deploy-war-common"/>
     </target>
@@ -68,7 +68,7 @@
     <target name="deploy" depends="init-common">
         <antcall target="deploy-war-common"/>
     </target>
-    
+
     <target name="run" depends="init-common">
         <java classname="WebTest" fork="true">
           <jvmarg value="-Djava.endorsed.dirs=${env.S1AS_HOME}/modules/endorsed"/>
@@ -85,10 +85,10 @@
          </classpath>
         </java>
     </target>
- 
+
     <target name="undeploy" depends="init-common">
         <antcall target="undeploy-war-common"/>
-    </target>   
+    </target>
 
     <target name="usage">
         <antcall target="usage-common"/>
diff --git a/appserver/tests/appserv-tests/devtests/web/servlet-4.0/setSessionTimeout/WebTest.java b/appserver/tests/appserv-tests/devtests/web/servlet-4.0/setSessionTimeout/WebTest.java
index a29bcaf..77798be 100644
--- a/appserver/tests/appserv-tests/devtests/web/servlet-4.0/setSessionTimeout/WebTest.java
+++ b/appserver/tests/appserv-tests/devtests/web/servlet-4.0/setSessionTimeout/WebTest.java
@@ -38,7 +38,7 @@
         port = Integer.parseInt(args[1]);
         contextRoot = args[2];
     }
-    
+
     public static void main(String[] args) {
         stat.addDescription("Unit test for ServletContext.setSessionTimeout()");
         WebTest webTest = new WebTest(args);
@@ -47,7 +47,7 @@
     }
 
     public void doTest() {
-        try { 
+        try {
             invoke();
             stat.addStatus(TEST_NAME, stat.PASS);
         } catch (Exception ex) {
@@ -83,7 +83,7 @@
             String line = httpResponse.getBody().trim();
             System.out.println("--> line = " + line);
             if  (!EXPECTED_RESPONSE.equals(line)) {
-                throw new Exception("Wrong response. Expected: " + 
+                throw new Exception("Wrong response. Expected: " +
                     EXPECTED_RESPONSE + ", received: " + line);
             }
         }
diff --git a/appserver/tests/appserv-tests/devtests/web/servlet-4.0/setSessionTimeout/build.properties b/appserver/tests/appserv-tests/devtests/web/servlet-4.0/setSessionTimeout/build.properties
index d9669ce..c8dcbd6 100644
--- a/appserver/tests/appserv-tests/devtests/web/servlet-4.0/setSessionTimeout/build.properties
+++ b/appserver/tests/appserv-tests/devtests/web/servlet-4.0/setSessionTimeout/build.properties
@@ -15,7 +15,7 @@
     SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
 
 -->
- 
+
 
 <property name="module" value="web"/>
 <property name="appname" value="${module}-servlet-4.0-set-session-timeout"/>
diff --git a/appserver/tests/appserv-tests/devtests/web/servlet-4.0/setSessionTimeout/build.xml b/appserver/tests/appserv-tests/devtests/web/servlet-4.0/setSessionTimeout/build.xml
index 229d336..75668c2 100644
--- a/appserver/tests/appserv-tests/devtests/web/servlet-4.0/setSessionTimeout/build.xml
+++ b/appserver/tests/appserv-tests/devtests/web/servlet-4.0/setSessionTimeout/build.xml
@@ -45,10 +45,10 @@
     </target>
 
     <target name="build" depends="compile">
-        <property name="hasWebclient" value="yes"/> 
+        <property name="hasWebclient" value="yes"/>
         <antcall target="webclient-war-common">
             <param name="hasWebclient" value="yes"/>
-            <param name="webclient.war.classes" value="**/*.class"/> 
+            <param name="webclient.war.classes" value="**/*.class"/>
         </antcall>
 
         <javac srcdir="." includes="WebTest.java">
@@ -58,10 +58,10 @@
             </classpath>
         </javac>
 
-    </target> 
+    </target>
 
     <target name="build-publish-war" depends="build, publish-war-common" />
-    
+
     <target name="re-deploy" depends="init-common">
         <antcall target="deploy-war-common"/>
     </target>
@@ -69,7 +69,7 @@
     <target name="deploy" depends="init-common">
         <antcall target="deploy-war-common"/>
     </target>
-    
+
     <target name="run" depends="init-common">
         <java classname="WebTest" fork="true">
           <sysproperty key="S1AS_HOME" value="${env.S1AS_HOME}"/>
@@ -85,10 +85,10 @@
          </classpath>
         </java>
     </target>
- 
+
     <target name="undeploy" depends="init-common">
         <antcall target="undeploy-war-common"/>
-    </target>   
+    </target>
 
     <target name="usage">
         <antcall target="usage-common"/>
diff --git a/appserver/tests/appserv-tests/devtests/web/servlet-4.0/setSessionTimeout/servlet/test/MyObject.java b/appserver/tests/appserv-tests/devtests/web/servlet-4.0/setSessionTimeout/servlet/test/MyObject.java
index b7eaf9a..99cb835 100644
--- a/appserver/tests/appserv-tests/devtests/web/servlet-4.0/setSessionTimeout/servlet/test/MyObject.java
+++ b/appserver/tests/appserv-tests/devtests/web/servlet-4.0/setSessionTimeout/servlet/test/MyObject.java
@@ -26,18 +26,18 @@
      * Notifies the object that it is being bound to a session, and
      * identifies the session.
      *
-     * @param event The event that identifies the session 
+     * @param event The event that identifies the session
      */
     @Override
     public void valueBound(HttpSessionBindingEvent event) {
         // do nothing
     }
-    
+
     /*
      * Notifies the object that it is being unbound from a session, and
      * identifies the session.
      *
-     * @param event The event that identifies the session 
+     * @param event The event that identifies the session
      */
     @Override
     public void valueUnbound(HttpSessionBindingEvent event) {
diff --git a/appserver/tests/appserv-tests/devtests/web/servlet-4.0/trailer/WebTest.java b/appserver/tests/appserv-tests/devtests/web/servlet-4.0/trailer/WebTest.java
index 0c78f9b..503b16e 100644
--- a/appserver/tests/appserv-tests/devtests/web/servlet-4.0/trailer/WebTest.java
+++ b/appserver/tests/appserv-tests/devtests/web/servlet-4.0/trailer/WebTest.java
@@ -42,7 +42,7 @@
         port = Integer.parseInt(args[1]);
         contextRoot = args[2];
     }
-    
+
     public static void main(String[] args) {
         stat.addDescription("Unit test for trailer");
         WebTest webTest = new WebTest(args);
@@ -85,7 +85,7 @@
             }
             String contentType = httpResponse.getHeader("Content-Type");
             System.out.println("--> headers = " + httpResponse.getHeaders());
-            
+
             String result = new StringBuilder(httpResponse.getBody().trim())
                 .append('|')
                 .append(httpResponse.getTrailerFields().get("bar1")) // trailer field
@@ -96,7 +96,7 @@
             System.out.println("--> result = " + result);
 
             if  (!EXPECTED_RESPONSE.equals(result)) {
-                throw new Exception("Wrong response. Expected: " + 
+                throw new Exception("Wrong response. Expected: " +
                     EXPECTED_RESPONSE + ", received: " + result);
             }
         }
diff --git a/appserver/tests/appserv-tests/devtests/web/servlet-4.0/trailer/build.properties b/appserver/tests/appserv-tests/devtests/web/servlet-4.0/trailer/build.properties
index 67e297d..c98b183 100644
--- a/appserver/tests/appserv-tests/devtests/web/servlet-4.0/trailer/build.properties
+++ b/appserver/tests/appserv-tests/devtests/web/servlet-4.0/trailer/build.properties
@@ -15,9 +15,9 @@
     SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
 
 -->
- 
+
 
 <property name="module" value="web"/>
-<property name="appname" value="${module}-servlet-4.0-trailer"/>         
+<property name="appname" value="${module}-servlet-4.0-trailer"/>        \u0020
 <property name="assemble" value="${build.classes.dir}/archive"/>
 <property name="contextroot" value="/${appname}"/>
diff --git a/appserver/tests/appserv-tests/devtests/web/servlet-4.0/trailer/build.xml b/appserver/tests/appserv-tests/devtests/web/servlet-4.0/trailer/build.xml
index 78d7c39..3aedb9d 100644
--- a/appserver/tests/appserv-tests/devtests/web/servlet-4.0/trailer/build.xml
+++ b/appserver/tests/appserv-tests/devtests/web/servlet-4.0/trailer/build.xml
@@ -37,7 +37,7 @@
         <fileset dir="." includes="*.class"/>
       </delete>
     </target>
-       
+
     <target name="compile" depends="clean">
         <antcall target="compile-common">
             <param name="src" value="servlet"/>
@@ -45,10 +45,10 @@
     </target>
 
     <target name="build" depends="compile">
-        <property name="hasWebclient" value="yes"/> 
+        <property name="hasWebclient" value="yes"/>
         <antcall target="webclient-war-common">
             <param name="hasWebclient" value="yes"/>
-            <param name="webclient.war.classes" value="**/*.class"/> 
+            <param name="webclient.war.classes" value="**/*.class"/>
         </antcall>
         <javac srcdir="." includes="WebTest.java">
             <classpath>
@@ -56,10 +56,10 @@
                 <pathelement location="${env.APS_HOME}/lib/webtest.jar"/>
             </classpath>
         </javac>
-    </target> 
+    </target>
 
     <target name="build-publish-war" depends="build, publish-war-common" />
-    
+
     <target name="re-deploy" depends="init-common">
         <antcall target="deploy-war-common"/>
     </target>
@@ -67,7 +67,7 @@
     <target name="deploy" depends="init-common">
         <antcall target="deploy-war-common"/>
     </target>
-    
+
     <target name="run" depends="init-common">
         <java classname="WebTest" fork="true">
           <sysproperty key="S1AS_HOME" value="${env.S1AS_HOME}"/>
@@ -83,10 +83,10 @@
          </classpath>
         </java>
     </target>
- 
+
     <target name="undeploy" depends="init-common">
         <antcall target="undeploy-war-common"/>
-    </target>   
+    </target>
 
     <target name="usage">
         <antcall target="usage-common"/>
