You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by ma...@apache.org on 2024/02/04 16:23:56 UTC

(tomcat) 03/03: Code clean-up - formatting. No functional change.

This is an automated email from the ASF dual-hosted git repository.

markt pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/tomcat.git

commit 2ae15d80acecf2d8eb048d8d8c4239ad3ffe5925
Author: Mark Thomas <ma...@apache.org>
AuthorDate: Sun Feb 4 16:23:22 2024 +0000

    Code clean-up - formatting. No functional change.
---
 java/org/apache/catalina/startup/Bootstrap.java    |   98 +-
 java/org/apache/catalina/startup/Catalina.java     |  218 ++--
 .../catalina/startup/CatalinaProperties.java       |    4 +-
 .../catalina/startup/CertificateCreateRule.java    |   11 +-
 .../catalina/startup/ClassLoaderFactory.java       |  101 +-
 .../catalina/startup/ConnectorCreateRule.java      |   35 +-
 java/org/apache/catalina/startup/Constants.java    |   20 +-
 .../org/apache/catalina/startup/ContextConfig.java |  658 +++++-------
 .../apache/catalina/startup/ContextRuleSet.java    |  191 ++--
 .../startup/CopyParentClassLoaderRule.java         |   15 +-
 .../catalina/startup/CredentialHandlerRuleSet.java |   38 +-
 java/org/apache/catalina/startup/EngineConfig.java |   10 +-
 .../org/apache/catalina/startup/EngineRuleSet.java |   74 +-
 java/org/apache/catalina/startup/ExpandWar.java    |  105 +-
 .../org/apache/catalina/startup/FailedContext.java | 1130 +++++++++++++++-----
 .../apache/catalina/startup/HomesUserDatabase.java |    5 +-
 java/org/apache/catalina/startup/HostConfig.java   |  386 +++----
 java/org/apache/catalina/startup/HostRuleSet.java  |   79 +-
 .../catalina/startup/LifecycleListenerRule.java    |   33 +-
 .../catalina/startup/ListenerCreateRule.java       |   19 +-
 .../org/apache/catalina/startup/NamingRuleSet.java |   64 +-
 .../catalina/startup/PasswdUserDatabase.java       |    4 +-
 java/org/apache/catalina/startup/RealmRuleSet.java |   31 +-
 .../startup/SafeForkJoinWorkerThreadFactory.java   |    8 +-
 .../apache/catalina/startup/SetNextNamingRule.java |   29 +-
 java/org/apache/catalina/startup/Tomcat.java       |  547 ++++------
 java/org/apache/catalina/startup/Tool.java         |   78 +-
 java/org/apache/catalina/startup/UserConfig.java   |   32 +-
 java/org/apache/catalina/startup/UserDatabase.java |    3 +-
 .../catalina/startup/VersionLoggerListener.java    |   49 +-
 .../apache/catalina/startup/WebAnnotationSet.java  |   82 +-
 .../catalina/startup/WebappServiceLoader.java      |   44 +-
 32 files changed, 2098 insertions(+), 2103 deletions(-)

diff --git a/java/org/apache/catalina/startup/Bootstrap.java b/java/org/apache/catalina/startup/Bootstrap.java
index dfe35fd682..8b2cc67444 100644
--- a/java/org/apache/catalina/startup/Bootstrap.java
+++ b/java/org/apache/catalina/startup/Bootstrap.java
@@ -35,13 +35,11 @@ import org.apache.juli.logging.Log;
 import org.apache.juli.logging.LogFactory;
 
 /**
- * Bootstrap loader for Catalina.  This application constructs a class loader
- * for use in loading the Catalina internal classes (by accumulating all of the
- * JAR files found in the "server" directory under "catalina.home"), and
- * starts the regular execution of the container.  The purpose of this
- * roundabout approach is to keep the Catalina internal classes (and any
- * other classes they depend on, such as an XML parser) out of the system
- * class path and therefore not visible to application level classes.
+ * Bootstrap loader for Catalina. This application constructs a class loader for use in loading the Catalina internal
+ * classes (by accumulating all of the JAR files found in the "server" directory under "catalina.home"), and starts the
+ * regular execution of the container. The purpose of this roundabout approach is to keep the Catalina internal classes
+ * (and any other classes they depend on, such as an XML parser) out of the system class path and therefore not visible
+ * to application level classes.
  *
  * @author Craig R. McClanahan
  * @author Remy Maucherat
@@ -104,8 +102,7 @@ public final class Bootstrap {
         }
 
         catalinaHomeFile = homeFile;
-        System.setProperty(
-                Constants.CATALINA_HOME_PROP, catalinaHomeFile.getPath());
+        System.setProperty(Constants.CATALINA_HOME_PROP, catalinaHomeFile.getPath());
 
         // Then base
         String base = System.getProperty(Constants.CATALINA_BASE_PROP);
@@ -120,8 +117,7 @@ public final class Bootstrap {
             }
             catalinaBaseFile = baseFile;
         }
-        System.setProperty(
-                Constants.CATALINA_BASE_PROP, catalinaBaseFile.getPath());
+        System.setProperty(Constants.CATALINA_BASE_PROP, catalinaBaseFile.getPath());
     }
 
     // -------------------------------------------------------------- Variables
@@ -184,8 +180,7 @@ public final class Bootstrap {
 
             // Local repository
             if (repository.endsWith("*.jar")) {
-                repository = repository.substring
-                    (0, repository.length() - "*.jar".length());
+                repository = repository.substring(0, repository.length() - "*.jar".length());
                 repositories.add(new Repository(repository, RepositoryType.GLOB));
             } else if (repository.endsWith(".jar")) {
                 repositories.add(new Repository(repository, RepositoryType.JAR));
@@ -202,6 +197,7 @@ public final class Bootstrap {
      * System property replacement in the given string.
      *
      * @param str The original string
+     *
      * @return the modified string
      */
     protected String replace(String str) {
@@ -246,6 +242,7 @@ public final class Bootstrap {
 
     /**
      * Initialize daemon.
+     *
      * @throws Exception Fatal initialization error
      */
     public void init() throws Exception {
@@ -270,8 +267,7 @@ public final class Bootstrap {
         paramTypes[0] = Class.forName("java.lang.ClassLoader");
         Object paramValues[] = new Object[1];
         paramValues[0] = sharedLoader;
-        Method method =
-            startupInstance.getClass().getMethod(methodName, paramTypes);
+        Method method = startupInstance.getClass().getMethod(methodName, paramTypes);
         method.invoke(startupInstance, paramValues);
 
         catalinaDaemon = startupInstance;
@@ -287,7 +283,7 @@ public final class Bootstrap {
         String methodName = "load";
         Object param[];
         Class<?> paramTypes[];
-        if (arguments==null || arguments.length==0) {
+        if (arguments == null || arguments.length == 0) {
             paramTypes = null;
             param = null;
         } else {
@@ -296,8 +292,7 @@ public final class Bootstrap {
             param = new Object[1];
             param[0] = arguments;
         }
-        Method method =
-            catalinaDaemon.getClass().getMethod(methodName, paramTypes);
+        Method method = catalinaDaemon.getClass().getMethod(methodName, paramTypes);
         if (log.isDebugEnabled()) {
             log.debug("Calling startup class " + method);
         }
@@ -321,7 +316,9 @@ public final class Bootstrap {
 
     /**
      * Load the Catalina daemon.
+     *
      * @param arguments Initialization arguments
+     *
      * @throws Exception Fatal initialization error
      */
     public void init(String[] arguments) throws Exception {
@@ -333,6 +330,7 @@ public final class Bootstrap {
 
     /**
      * Start the Catalina daemon.
+     *
      * @throws Exception Fatal start error
      */
     public void start() throws Exception {
@@ -340,36 +338,39 @@ public final class Bootstrap {
             init();
         }
 
-        Method method = catalinaDaemon.getClass().getMethod("start", (Class [])null);
-        method.invoke(catalinaDaemon, (Object [])null);
+        Method method = catalinaDaemon.getClass().getMethod("start", (Class[]) null);
+        method.invoke(catalinaDaemon, (Object[]) null);
     }
 
 
     /**
      * Stop the Catalina Daemon.
+     *
      * @throws Exception Fatal stop error
      */
     public void stop() throws Exception {
-        Method method = catalinaDaemon.getClass().getMethod("stop", (Class []) null);
-        method.invoke(catalinaDaemon, (Object []) null);
+        Method method = catalinaDaemon.getClass().getMethod("stop", (Class[]) null);
+        method.invoke(catalinaDaemon, (Object[]) null);
     }
 
 
     /**
      * Stop the standalone server.
+     *
      * @throws Exception Fatal stop error
      */
     public void stopServer() throws Exception {
 
-        Method method =
-            catalinaDaemon.getClass().getMethod("stopServer", (Class []) null);
-        method.invoke(catalinaDaemon, (Object []) null);
+        Method method = catalinaDaemon.getClass().getMethod("stopServer", (Class[]) null);
+        method.invoke(catalinaDaemon, (Object[]) null);
     }
 
 
-   /**
+    /**
      * Stop the standalone server.
+     *
      * @param arguments Command line arguments
+     *
      * @throws Exception Fatal stop error
      */
     public void stopServer(String[] arguments) throws Exception {
@@ -385,35 +386,33 @@ public final class Bootstrap {
             param = new Object[1];
             param[0] = arguments;
         }
-        Method method =
-            catalinaDaemon.getClass().getMethod("stopServer", paramTypes);
+        Method method = catalinaDaemon.getClass().getMethod("stopServer", paramTypes);
         method.invoke(catalinaDaemon, param);
     }
 
 
     /**
      * Set flag.
+     *
      * @param await <code>true</code> if the daemon should block
+     *
      * @throws Exception Reflection error
      */
-    public void setAwait(boolean await)
-        throws Exception {
+    public void setAwait(boolean await) throws Exception {
 
         Class<?> paramTypes[] = new Class[1];
         paramTypes[0] = Boolean.TYPE;
         Object paramValues[] = new Object[1];
         paramValues[0] = Boolean.valueOf(await);
-        Method method =
-            catalinaDaemon.getClass().getMethod("setAwait", paramTypes);
+        Method method = catalinaDaemon.getClass().getMethod("setAwait", paramTypes);
         method.invoke(catalinaDaemon, paramValues);
     }
 
     public boolean getAwait() throws Exception {
         Class<?> paramTypes[] = new Class[0];
         Object paramValues[] = new Object[0];
-        Method method =
-            catalinaDaemon.getClass().getMethod("getAwait", paramTypes);
-        Boolean b=(Boolean)method.invoke(catalinaDaemon, paramValues);
+        Method method = catalinaDaemon.getClass().getMethod("getAwait", paramTypes);
+        Boolean b = (Boolean) method.invoke(catalinaDaemon, paramValues);
         return b.booleanValue();
     }
 
@@ -429,8 +428,7 @@ public final class Bootstrap {
 
 
     /**
-     * Main method and entry point when starting Tomcat via the provided
-     * scripts.
+     * Main method and entry point when starting Tomcat via the provided scripts.
      *
      * @param args Command line arguments to be processed
      */
@@ -489,8 +487,7 @@ public final class Bootstrap {
             }
         } catch (Throwable t) {
             // Unwrap the Exception for clearer error reporting
-            if (t instanceof InvocationTargetException &&
-                    t.getCause() != null) {
+            if (t instanceof InvocationTargetException && t.getCause() != null) {
                 t = t.getCause();
             }
             handleThrowable(t);
@@ -501,8 +498,9 @@ public final class Bootstrap {
 
 
     /**
-     * Obtain the name of configured home (binary) directory. Note that home and
-     * base may be the same (and are by default).
+     * Obtain the name of configured home (binary) directory. Note that home and base may be the same (and are by
+     * default).
+     *
      * @return the catalina home
      */
     public static String getCatalinaHome() {
@@ -511,9 +509,9 @@ public final class Bootstrap {
 
 
     /**
-     * Obtain the name of the configured base (instance) directory. Note that
-     * home and base may be the same (and are by default). If this is not set
-     * the value returned by {@link #getCatalinaHome()} will be used.
+     * Obtain the name of the configured base (instance) directory. Note that home and base may be the same (and are by
+     * default). If this is not set the value returned by {@link #getCatalinaHome()} will be used.
+     *
      * @return the catalina base
      */
     public static String getCatalinaBase() {
@@ -522,8 +520,8 @@ public final class Bootstrap {
 
 
     /**
-     * Obtain the configured home (binary) directory. Note that home and
-     * base may be the same (and are by default).
+     * Obtain the configured home (binary) directory. Note that home and base may be the same (and are by default).
+     *
      * @return the catalina home as a file
      */
     public static File getCatalinaHomeFile() {
@@ -532,9 +530,9 @@ public final class Bootstrap {
 
 
     /**
-     * Obtain the configured base (instance) directory. Note that
-     * home and base may be the same (and are by default). If this is not set
-     * the value returned by {@link #getCatalinaHomeFile()} will be used.
+     * Obtain the configured base (instance) directory. Note that home and base may be the same (and are by default). If
+     * this is not set the value returned by {@link #getCatalinaHomeFile()} will be used.
+     *
      * @return the catalina base as a file
      */
     public static File getCatalinaBaseFile() {
@@ -591,7 +589,7 @@ public final class Bootstrap {
                 // been configured.
                 throw new IllegalArgumentException(
                         "The double quote [\"] character can only be used to quote paths. It must " +
-                        "not appear in a path. This loader path is not valid: [" + value + "]");
+                                "not appear in a path. This loader path is not valid: [" + value + "]");
             } else {
                 // Not quoted - NO-OP
             }
diff --git a/java/org/apache/catalina/startup/Catalina.java b/java/org/apache/catalina/startup/Catalina.java
index 23481b5b1e..aec402a13c 100644
--- a/java/org/apache/catalina/startup/Catalina.java
+++ b/java/org/apache/catalina/startup/Catalina.java
@@ -54,18 +54,16 @@ import org.xml.sax.InputSource;
 
 
 /**
- * Startup/Shutdown shell program for Catalina.  The following command line
- * options are recognized:
+ * Startup/Shutdown shell program for Catalina. The following command line options are recognized:
  * <ul>
- * <li><b>-config {pathname}</b> - Set the pathname of the configuration file
- *     to be processed.  If a relative path is specified, it will be
- *     interpreted as relative to the directory pathname specified by the
- *     "catalina.base" system property.   [conf/server.xml]</li>
- * <li><b>-help</b>      - Display usage information.</li>
- * <li><b>-nonaming</b>  - Disable naming support.</li>
+ * <li><b>-config {pathname}</b> - Set the pathname of the configuration file to be processed. If a relative path is
+ * specified, it will be interpreted as relative to the directory pathname specified by the "catalina.base" system
+ * property. [conf/server.xml]</li>
+ * <li><b>-help</b> - Display usage information.</li>
+ * <li><b>-nonaming</b> - Disable naming support.</li>
  * <li><b>configtest</b> - Try to test the config</li>
- * <li><b>start</b>      - Start an instance of Catalina.</li>
- * <li><b>stop</b>       - Stop the currently running instance of Catalina.</li>
+ * <li><b>start</b> - Start an instance of Catalina.</li>
+ * <li><b>stop</b> - Stop the currently running instance of Catalina.</li>
  * </ul>
  *
  * @author Craig R. McClanahan
@@ -77,8 +75,7 @@ public class Catalina {
     /**
      * The string manager for this package.
      */
-    protected static final StringManager sm =
-        StringManager.getManager(Constants.Package);
+    protected static final StringManager sm = StringManager.getManager(Constants.Package);
 
     public static final String SERVER_XML = "conf/server.xml";
 
@@ -98,8 +95,7 @@ public class Catalina {
     /**
      * The shared extensions class loader for this server.
      */
-    protected ClassLoader parentClassLoader =
-        Catalina.class.getClassLoader();
+    protected ClassLoader parentClassLoader = Catalina.class.getClassLoader();
 
 
     /**
@@ -135,8 +131,7 @@ public class Catalina {
     /**
      * Rethrow exceptions on init failure.
      */
-    protected boolean throwOnInitFailure =
-            Boolean.getBoolean("org.apache.catalina.startup.EXIT_ON_INIT_FAILURE");
+    protected boolean throwOnInitFailure = Boolean.getBoolean("org.apache.catalina.startup.EXIT_ON_INIT_FAILURE");
 
 
     /**
@@ -239,8 +234,7 @@ public class Catalina {
 
 
     /**
-     * @return <code>true</code> if an exception should be thrown if an error
-     * occurs during server init
+     * @return <code>true</code> if an exception should be thrown if an error occurs during server init
      */
     public boolean getThrowOnInitFailure() {
         return throwOnInitFailure;
@@ -249,6 +243,7 @@ public class Catalina {
 
     /**
      * Set the behavior regarding errors that could occur during server init.
+     *
      * @param throwOnInitFailure the new flag value
      */
     public void setThrowOnInitFailure(boolean throwOnInitFailure) {
@@ -314,6 +309,7 @@ public class Catalina {
      * Process the specified command line arguments.
      *
      * @param args Command line arguments to process
+     *
      * @return <code>true</code> if we should continue processing
      */
     protected boolean arguments(String args[]) {
@@ -368,6 +364,7 @@ public class Catalina {
 
     /**
      * Return a File object representing our configuration file.
+     *
      * @return the main configuration file
      */
     protected File configFile() {
@@ -383,6 +380,7 @@ public class Catalina {
 
     /**
      * Create and configure the Digester we will be using for startup.
+     *
      * @return the main digester to parse server.xml
      */
     protected Digester createStartDigester() {
@@ -390,7 +388,7 @@ public class Catalina {
         Digester digester = new Digester();
         digester.setValidating(false);
         digester.setRulesValidation(true);
-        Map<Class<?>, List<String>> fakeAttributes = new HashMap<>();
+        Map<Class<?>,List<String>> fakeAttributes = new HashMap<>();
         // Ignore className on all elements
         List<String> objectAttrs = new ArrayList<>();
         objectAttrs.add("className");
@@ -407,107 +405,75 @@ public class Catalina {
         digester.setUseContextClassLoader(true);
 
         // Configure the actions we will be using
-        digester.addObjectCreate("Server",
-                                 "org.apache.catalina.core.StandardServer",
-                                 "className");
+        digester.addObjectCreate("Server", "org.apache.catalina.core.StandardServer", "className");
         digester.addSetProperties("Server");
-        digester.addSetNext("Server",
-                            "setServer",
-                            "org.apache.catalina.Server");
+        digester.addSetNext("Server", "setServer", "org.apache.catalina.Server");
 
-        digester.addObjectCreate("Server/GlobalNamingResources",
-                                 "org.apache.catalina.deploy.NamingResourcesImpl");
+        digester.addObjectCreate("Server/GlobalNamingResources", "org.apache.catalina.deploy.NamingResourcesImpl");
         digester.addSetProperties("Server/GlobalNamingResources");
-        digester.addSetNext("Server/GlobalNamingResources",
-                            "setGlobalNamingResources",
-                            "org.apache.catalina.deploy.NamingResourcesImpl");
+        digester.addSetNext("Server/GlobalNamingResources", "setGlobalNamingResources",
+                "org.apache.catalina.deploy.NamingResourcesImpl");
 
-        digester.addRule("Server/Listener",
-                new ListenerCreateRule(null, "className"));
+        digester.addRule("Server/Listener", new ListenerCreateRule(null, "className"));
         digester.addSetProperties("Server/Listener");
-        digester.addSetNext("Server/Listener",
-                            "addLifecycleListener",
-                            "org.apache.catalina.LifecycleListener");
+        digester.addSetNext("Server/Listener", "addLifecycleListener", "org.apache.catalina.LifecycleListener");
 
-        digester.addObjectCreate("Server/Service",
-                                 "org.apache.catalina.core.StandardService",
-                                 "className");
+        digester.addObjectCreate("Server/Service", "org.apache.catalina.core.StandardService", "className");
         digester.addSetProperties("Server/Service");
-        digester.addSetNext("Server/Service",
-                            "addService",
-                            "org.apache.catalina.Service");
+        digester.addSetNext("Server/Service", "addService", "org.apache.catalina.Service");
 
-        digester.addObjectCreate("Server/Service/Listener",
-                                 null, // MUST be specified in the element
-                                 "className");
+        digester.addObjectCreate("Server/Service/Listener", null, // MUST be specified in the element
+                "className");
         digester.addSetProperties("Server/Service/Listener");
-        digester.addSetNext("Server/Service/Listener",
-                            "addLifecycleListener",
-                            "org.apache.catalina.LifecycleListener");
-
-        //Executor
-        digester.addObjectCreate("Server/Service/Executor",
-                         "org.apache.catalina.core.StandardThreadExecutor",
-                         "className");
+        digester.addSetNext("Server/Service/Listener", "addLifecycleListener", "org.apache.catalina.LifecycleListener");
+
+        // Executor
+        digester.addObjectCreate("Server/Service/Executor", "org.apache.catalina.core.StandardThreadExecutor",
+                "className");
         digester.addSetProperties("Server/Service/Executor");
 
-        digester.addSetNext("Server/Service/Executor",
-                            "addExecutor",
-                            "org.apache.catalina.Executor");
+        digester.addSetNext("Server/Service/Executor", "addExecutor", "org.apache.catalina.Executor");
 
-        digester.addRule("Server/Service/Connector",
-                         new ConnectorCreateRule());
+        digester.addRule("Server/Service/Connector", new ConnectorCreateRule());
         digester.addSetProperties("Server/Service/Connector",
-                new String[]{"executor", "sslImplementationName", "protocol"});
-        digester.addSetNext("Server/Service/Connector",
-                            "addConnector",
-                            "org.apache.catalina.connector.Connector");
+                new String[] { "executor", "sslImplementationName", "protocol" });
+        digester.addSetNext("Server/Service/Connector", "addConnector", "org.apache.catalina.connector.Connector");
 
         digester.addRule("Server/Service/Connector", new AddPortOffsetRule());
 
-        digester.addObjectCreate("Server/Service/Connector/SSLHostConfig",
-                                 "org.apache.tomcat.util.net.SSLHostConfig");
+        digester.addObjectCreate("Server/Service/Connector/SSLHostConfig", "org.apache.tomcat.util.net.SSLHostConfig");
         digester.addSetProperties("Server/Service/Connector/SSLHostConfig");
-        digester.addSetNext("Server/Service/Connector/SSLHostConfig",
-                "addSslHostConfig",
+        digester.addSetNext("Server/Service/Connector/SSLHostConfig", "addSslHostConfig",
                 "org.apache.tomcat.util.net.SSLHostConfig");
 
-        digester.addRule("Server/Service/Connector/SSLHostConfig/Certificate",
-                         new CertificateCreateRule());
-        digester.addSetProperties("Server/Service/Connector/SSLHostConfig/Certificate", new String[]{"type"});
-        digester.addSetNext("Server/Service/Connector/SSLHostConfig/Certificate",
-                            "addCertificate",
-                            "org.apache.tomcat.util.net.SSLHostConfigCertificate");
+        digester.addRule("Server/Service/Connector/SSLHostConfig/Certificate", new CertificateCreateRule());
+        digester.addSetProperties("Server/Service/Connector/SSLHostConfig/Certificate", new String[] { "type" });
+        digester.addSetNext("Server/Service/Connector/SSLHostConfig/Certificate", "addCertificate",
+                "org.apache.tomcat.util.net.SSLHostConfigCertificate");
 
         digester.addObjectCreate("Server/Service/Connector/SSLHostConfig/OpenSSLConf",
-                                 "org.apache.tomcat.util.net.openssl.OpenSSLConf");
+                "org.apache.tomcat.util.net.openssl.OpenSSLConf");
         digester.addSetProperties("Server/Service/Connector/SSLHostConfig/OpenSSLConf");
-        digester.addSetNext("Server/Service/Connector/SSLHostConfig/OpenSSLConf",
-                            "setOpenSslConf",
-                            "org.apache.tomcat.util.net.openssl.OpenSSLConf");
+        digester.addSetNext("Server/Service/Connector/SSLHostConfig/OpenSSLConf", "setOpenSslConf",
+                "org.apache.tomcat.util.net.openssl.OpenSSLConf");
 
         digester.addObjectCreate("Server/Service/Connector/SSLHostConfig/OpenSSLConf/OpenSSLConfCmd",
-                                 "org.apache.tomcat.util.net.openssl.OpenSSLConfCmd");
+                "org.apache.tomcat.util.net.openssl.OpenSSLConfCmd");
         digester.addSetProperties("Server/Service/Connector/SSLHostConfig/OpenSSLConf/OpenSSLConfCmd");
-        digester.addSetNext("Server/Service/Connector/SSLHostConfig/OpenSSLConf/OpenSSLConfCmd",
-                            "addCmd",
-                            "org.apache.tomcat.util.net.openssl.OpenSSLConfCmd");
+        digester.addSetNext("Server/Service/Connector/SSLHostConfig/OpenSSLConf/OpenSSLConfCmd", "addCmd",
+                "org.apache.tomcat.util.net.openssl.OpenSSLConfCmd");
 
-        digester.addObjectCreate("Server/Service/Connector/Listener",
-                                 null, // MUST be specified in the element
-                                 "className");
+        digester.addObjectCreate("Server/Service/Connector/Listener", null, // MUST be specified in the element
+                "className");
         digester.addSetProperties("Server/Service/Connector/Listener");
-        digester.addSetNext("Server/Service/Connector/Listener",
-                            "addLifecycleListener",
-                            "org.apache.catalina.LifecycleListener");
+        digester.addSetNext("Server/Service/Connector/Listener", "addLifecycleListener",
+                "org.apache.catalina.LifecycleListener");
 
-        digester.addObjectCreate("Server/Service/Connector/UpgradeProtocol",
-                                  null, // MUST be specified in the element
-                                  "className");
+        digester.addObjectCreate("Server/Service/Connector/UpgradeProtocol", null, // MUST be specified in the element
+                "className");
         digester.addSetProperties("Server/Service/Connector/UpgradeProtocol");
-        digester.addSetNext("Server/Service/Connector/UpgradeProtocol",
-                            "addUpgradeProtocol",
-                            "org.apache.coyote.UpgradeProtocol");
+        digester.addSetNext("Server/Service/Connector/UpgradeProtocol", "addUpgradeProtocol",
+                "org.apache.coyote.UpgradeProtocol");
 
         // Add RuleSets for nested elements
         digester.addRuleSet(new NamingRuleSet("Server/GlobalNamingResources/"));
@@ -518,8 +484,7 @@ public class Catalina {
         digester.addRuleSet(new NamingRuleSet("Server/Service/Engine/Host/Context/"));
 
         // When the 'engine' is found, set the parentClassLoader.
-        digester.addRule("Server/Service/Engine",
-                         new SetParentClassLoaderRule(parentClassLoader));
+        digester.addRule("Server/Service/Engine", new SetParentClassLoaderRule(parentClassLoader));
         addClusterRuleSet(digester, "Server/Service/Engine/Cluster/");
 
         return digester;
@@ -539,17 +504,16 @@ public class Catalina {
             digester.addRuleSet(ruleSet);
         } catch (Exception e) {
             if (log.isDebugEnabled()) {
-                log.debug(sm.getString("catalina.noCluster",
-                        e.getClass().getName() + ": " +  e.getMessage()), e);
+                log.debug(sm.getString("catalina.noCluster", e.getClass().getName() + ": " + e.getMessage()), e);
             } else if (log.isInfoEnabled()) {
-                log.info(sm.getString("catalina.noCluster",
-                        e.getClass().getName() + ": " +  e.getMessage()));
+                log.info(sm.getString("catalina.noCluster", e.getClass().getName() + ": " + e.getMessage()));
             }
         }
     }
 
     /**
      * Create and configure the Digester we will be using for shutdown.
+     *
      * @return the digester to process the stop operation
      */
     protected Digester createStopDigester() {
@@ -559,13 +523,9 @@ public class Catalina {
         digester.setUseContextClassLoader(true);
 
         // Configure the rules we need for shutting down
-        digester.addObjectCreate("Server",
-                                 "org.apache.catalina.core.StandardServer",
-                                 "className");
+        digester.addObjectCreate("Server", "org.apache.catalina.core.StandardServer", "className");
         digester.addSetProperties("Server");
-        digester.addSetNext("Server",
-                            "setServer",
-                            "org.apache.catalina.Server");
+        digester.addSetNext("Server", "setServer", "org.apache.catalina.Server");
 
         return digester;
 
@@ -574,15 +534,16 @@ public class Catalina {
 
     protected void parseServerXml(boolean start) {
         // Set configuration source
-        ConfigFileLoader.setSource(new CatalinaBaseConfigurationSource(Bootstrap.getCatalinaBaseFile(), getConfigFile()));
+        ConfigFileLoader
+                .setSource(new CatalinaBaseConfigurationSource(Bootstrap.getCatalinaBaseFile(), getConfigFile()));
         File file = configFile();
 
         if (useGeneratedCode && !Digester.isGeneratedCodeLoaderSet()) {
             // Load loader
             String loaderClassName = generatedCodePackage + ".DigesterGeneratedCodeLoader";
             try {
-                Digester.GeneratedCodeLoader loader = (Digester.GeneratedCodeLoader)
-                        Catalina.class.getClassLoader().loadClass(loaderClassName).getDeclaredConstructor().newInstance();
+                Digester.GeneratedCodeLoader loader = (Digester.GeneratedCodeLoader) Catalina.class.getClassLoader()
+                        .loadClass(loaderClassName).getDeclaredConstructor().newInstance();
                 Digester.setGeneratedCodeLoader(loader);
             } catch (Exception e) {
                 if (log.isDebugEnabled()) {
@@ -640,8 +601,8 @@ public class Catalina {
                 digester.parse(inputSource);
                 if (generateCode) {
                     generateClassFooter(digester);
-                    try (FileWriter writer = new FileWriter(new File(serverXmlLocation,
-                            start ? "ServerXml.java" : "ServerXmlStop.java"))) {
+                    try (FileWriter writer = new FileWriter(
+                            new File(serverXmlLocation, start ? "ServerXml.java" : "ServerXmlStop.java"))) {
                         writer.write(digester.getGeneratedCode().toString());
                     }
                     digester.endGeneratingCode();
@@ -751,8 +712,9 @@ public class Catalina {
             }
         }
 
-        if(log.isInfoEnabled()) {
-            log.info(sm.getString("catalina.init", Long.toString(TimeUnit.NANOSECONDS.toMillis(System.nanoTime() - t1))));
+        if (log.isInfoEnabled()) {
+            log.info(sm.getString("catalina.init",
+                    Long.toString(TimeUnit.NANOSECONDS.toMillis(System.nanoTime() - t1))));
         }
     }
 
@@ -802,7 +764,8 @@ public class Catalina {
         }
 
         if (log.isInfoEnabled()) {
-            log.info(sm.getString("catalina.startup", Long.toString(TimeUnit.NANOSECONDS.toMillis(System.nanoTime() - t1))));
+            log.info(sm.getString("catalina.startup",
+                    Long.toString(TimeUnit.NANOSECONDS.toMillis(System.nanoTime() - t1))));
         }
 
         if (generateCode) {
@@ -822,8 +785,7 @@ public class Catalina {
             // if JULI's hook completes before the CatalinaShutdownHook()
             LogManager logManager = LogManager.getLogManager();
             if (logManager instanceof ClassLoaderLogManager) {
-                ((ClassLoaderLogManager) logManager).setUseShutdownHook(
-                        false);
+                ((ClassLoaderLogManager) logManager).setUseShutdownHook(false);
             }
         }
 
@@ -849,8 +811,7 @@ public class Catalina {
                 // log messages are not lost
                 LogManager logManager = LogManager.getLogManager();
                 if (logManager instanceof ClassLoaderLogManager) {
-                    ((ClassLoaderLogManager) logManager).setUseShutdownHook(
-                            true);
+                    ((ClassLoaderLogManager) logManager).setUseShutdownHook(true);
                 }
             }
         } catch (Throwable t) {
@@ -863,8 +824,7 @@ public class Catalina {
         try {
             Server s = getServer();
             LifecycleState state = s.getState();
-            if (LifecycleState.STOPPING_PREP.compareTo(state) <= 0
-                    && LifecycleState.DESTROYED.compareTo(state) >= 0) {
+            if (LifecycleState.STOPPING_PREP.compareTo(state) <= 0 && LifecycleState.DESTROYED.compareTo(state) >= 0) {
                 // Nothing to do. stop() was already called
             } else {
                 s.stop();
@@ -912,23 +872,20 @@ public class Catalina {
         } else {
             System.setProperty("catalina.useNaming", "true");
             String value = "org.apache.naming";
-            String oldValue =
-                System.getProperty(javax.naming.Context.URL_PKG_PREFIXES);
+            String oldValue = System.getProperty(javax.naming.Context.URL_PKG_PREFIXES);
             if (oldValue != null) {
                 value = value + ":" + oldValue;
             }
             System.setProperty(javax.naming.Context.URL_PKG_PREFIXES, value);
-            if( log.isDebugEnabled() ) {
+            if (log.isDebugEnabled()) {
                 log.debug("Setting naming prefix=" + value);
             }
-            value = System.getProperty
-                (javax.naming.Context.INITIAL_CONTEXT_FACTORY);
+            value = System.getProperty(javax.naming.Context.INITIAL_CONTEXT_FACTORY);
             if (value == null) {
-                System.setProperty
-                    (javax.naming.Context.INITIAL_CONTEXT_FACTORY,
-                     "org.apache.naming.java.javaURLContextFactory");
+                System.setProperty(javax.naming.Context.INITIAL_CONTEXT_FACTORY,
+                        "org.apache.naming.java.javaURLContextFactory");
             } else {
-                log.debug("INITIAL_CONTEXT_FACTORY already set " + value );
+                log.debug("INITIAL_CONTEXT_FACTORY already set " + value);
             }
         }
     }
@@ -939,7 +896,8 @@ public class Catalina {
         StringBuilder code = new StringBuilder();
         code.append("package ").append(generatedCodePackage).append(';').append(System.lineSeparator());
         code.append("public class ").append(loaderClassName);
-        code.append(" implements org.apache.tomcat.util.digester.Digester.GeneratedCodeLoader {").append(System.lineSeparator());
+        code.append(" implements org.apache.tomcat.util.digester.Digester.GeneratedCodeLoader {")
+                .append(System.lineSeparator());
         code.append("public Object loadGeneratedCode(String className) {").append(System.lineSeparator());
         code.append("switch (className) {").append(System.lineSeparator());
         for (String generatedClassName : Digester.getGeneratedClasses()) {
@@ -1017,8 +975,7 @@ public class Catalina {
 
 
     /**
-     * Rule that sets the parent class loader for the top object on the stack,
-     * which must be a <code>Container</code>.
+     * Rule that sets the parent class loader for the top object on the stack, which must be a <code>Container</code>.
      */
 
     final class SetParentClassLoaderRule extends Rule {
@@ -1032,8 +989,7 @@ public class Catalina {
         ClassLoader parentClassLoader = null;
 
         @Override
-        public void begin(String namespace, String name, Attributes attributes)
-            throws Exception {
+        public void begin(String namespace, String name, Attributes attributes) throws Exception {
 
             if (digester.getLogger().isDebugEnabled()) {
                 digester.getLogger().debug("Setting parent class loader");
diff --git a/java/org/apache/catalina/startup/CatalinaProperties.java b/java/org/apache/catalina/startup/CatalinaProperties.java
index eb144a9e77..1220a87f0c 100644
--- a/java/org/apache/catalina/startup/CatalinaProperties.java
+++ b/java/org/apache/catalina/startup/CatalinaProperties.java
@@ -47,6 +47,7 @@ public class CatalinaProperties {
 
     /**
      * @param name The property name
+     *
      * @return specified property value
      */
     public static String getProperty(String name) {
@@ -89,8 +90,7 @@ public class CatalinaProperties {
 
         if (is == null) {
             try {
-                is = CatalinaProperties.class.getResourceAsStream
-                    ("/org/apache/catalina/startup/catalina.properties");
+                is = CatalinaProperties.class.getResourceAsStream("/org/apache/catalina/startup/catalina.properties");
             } catch (Throwable t) {
                 handleThrowable(t);
             }
diff --git a/java/org/apache/catalina/startup/CertificateCreateRule.java b/java/org/apache/catalina/startup/CertificateCreateRule.java
index 5c305e49c3..a6f176040f 100644
--- a/java/org/apache/catalina/startup/CertificateCreateRule.java
+++ b/java/org/apache/catalina/startup/CertificateCreateRule.java
@@ -45,7 +45,8 @@ public class CertificateCreateRule extends Rule {
 
         StringBuilder code = digester.getGeneratedCode();
         if (code != null) {
-            code.append(SSLHostConfigCertificate.class.getName()).append(' ').append(digester.toVariableName(certificate));
+            code.append(SSLHostConfigCertificate.class.getName()).append(' ')
+                    .append(digester.toVariableName(certificate));
             code.append(" = new ").append(SSLHostConfigCertificate.class.getName());
             code.append('(').append(digester.toVariableName(sslHostConfig));
             code.append(", ").append(Type.class.getName().replace('$', '.')).append('.').append(type).append(");");
@@ -57,11 +58,9 @@ public class CertificateCreateRule extends Rule {
     /**
      * Process the end of this element.
      *
-     * @param namespace the namespace URI of the matching element, or an
-     *   empty string if the parser is not namespace aware or the element has
-     *   no namespace
-     * @param name the local name if the parser is namespace aware, or just
-     *   the element name otherwise
+     * @param namespace the namespace URI of the matching element, or an empty string if the parser is not namespace
+     *                      aware or the element has no namespace
+     * @param name      the local name if the parser is namespace aware, or just the element name otherwise
      */
     @Override
     public void end(String namespace, String name) throws Exception {
diff --git a/java/org/apache/catalina/startup/ClassLoaderFactory.java b/java/org/apache/catalina/startup/ClassLoaderFactory.java
index 1c7d2a3941..cd5a3f4d18 100644
--- a/java/org/apache/catalina/startup/ClassLoaderFactory.java
+++ b/java/org/apache/catalina/startup/ClassLoaderFactory.java
@@ -32,18 +32,16 @@ import org.apache.juli.logging.Log;
 import org.apache.juli.logging.LogFactory;
 
 /**
- * <p>Utility class for building class loaders for Catalina.  The factory
- * method requires the following parameters in order to build a new class
- * loader (with suitable defaults in all cases):</p>
+ * <p>
+ * Utility class for building class loaders for Catalina. The factory method requires the following parameters in order
+ * to build a new class loader (with suitable defaults in all cases):
+ * </p>
  * <ul>
- * <li>A set of directories containing unpacked classes (and resources)
- *     that should be included in the class loader's
- *     repositories.</li>
- * <li>A set of directories containing classes and resources in JAR files.
- *     Each readable JAR file discovered in these directories will be
- *     added to the class loader's repositories.</li>
- * <li><code>ClassLoader</code> instance that should become the parent of
- *     the new class loader.</li>
+ * <li>A set of directories containing unpacked classes (and resources) that should be included in the class loader's
+ * repositories.</li>
+ * <li>A set of directories containing classes and resources in JAR files. Each readable JAR file discovered in these
+ * directories will be added to the class loader's repositories.</li>
+ * <li><code>ClassLoader</code> instance that should become the parent of the new class loader.</li>
  * </ul>
  *
  * @author Craig R. McClanahan
@@ -57,25 +55,20 @@ public final class ClassLoaderFactory {
 
 
     /**
-     * Create and return a new class loader, based on the configuration
-     * defaults and the specified directory paths:
+     * Create and return a new class loader, based on the configuration defaults and the specified directory paths:
+     *
+     * @param unpacked Array of pathnames to unpacked directories that should be added to the repositories of the class
+     *                     loader, or <code>null</code> for no unpacked directories to be considered
+     * @param packed   Array of pathnames to directories containing JAR files that should be added to the repositories
+     *                     of the class loader, or <code>null</code> for no directories of JAR files to be considered
+     * @param parent   Parent class loader for the new class loader, or <code>null</code> for the system class loader.
      *
-     * @param unpacked Array of pathnames to unpacked directories that should
-     *  be added to the repositories of the class loader, or <code>null</code>
-     * for no unpacked directories to be considered
-     * @param packed Array of pathnames to directories containing JAR files
-     *  that should be added to the repositories of the class loader,
-     * or <code>null</code> for no directories of JAR files to be considered
-     * @param parent Parent class loader for the new class loader, or
-     *  <code>null</code> for the system class loader.
      * @return the new class loader
      *
      * @exception Exception if an error occurs constructing the class loader
      */
-    public static ClassLoader createClassLoader(File unpacked[],
-                                                File packed[],
-                                                final ClassLoader parent)
-        throws Exception {
+    public static ClassLoader createClassLoader(File unpacked[], File packed[], final ClassLoader parent)
+            throws Exception {
 
         if (log.isDebugEnabled()) {
             log.debug("Creating new class loader");
@@ -135,21 +128,19 @@ public final class ClassLoaderFactory {
 
 
     /**
-     * Create and return a new class loader, based on the configuration
-     * defaults and the specified directory paths:
+     * Create and return a new class loader, based on the configuration defaults and the specified directory paths:
+     *
+     * @param repositories List of class directories, jar files, jar directories or URLS that should be added to the
+     *                         repositories of the class loader.
+     * @param parent       Parent class loader for the new class loader, or <code>null</code> for the system class
+     *                         loader.
      *
-     * @param repositories List of class directories, jar files, jar directories
-     *                     or URLS that should be added to the repositories of
-     *                     the class loader.
-     * @param parent Parent class loader for the new class loader, or
-     *  <code>null</code> for the system class loader.
      * @return the new class loader
      *
      * @exception Exception if an error occurs constructing the class loader
      */
-    public static ClassLoader createClassLoader(List<Repository> repositories,
-                                                final ClassLoader parent)
-        throws Exception {
+    public static ClassLoader createClassLoader(List<Repository> repositories, final ClassLoader parent)
+            throws Exception {
 
         if (log.isDebugEnabled()) {
             log.debug("Creating new class loader");
@@ -159,7 +150,7 @@ public final class ClassLoaderFactory {
         Set<URL> set = new LinkedHashSet<>();
 
         if (repositories != null) {
-            for (Repository repository : repositories)  {
+            for (Repository repository : repositories) {
                 if (repository.getType() == RepositoryType.URL) {
                     URL url = buildClassLoaderUrl(repository.getLocation());
                     if (log.isDebugEnabled()) {
@@ -178,7 +169,7 @@ public final class ClassLoaderFactory {
                     }
                     set.add(url);
                 } else if (repository.getType() == RepositoryType.JAR) {
-                    File file=new File(repository.getLocation());
+                    File file = new File(repository.getLocation());
                     file = file.getCanonicalFile();
                     if (!validateFile(file, RepositoryType.JAR)) {
                         continue;
@@ -189,14 +180,13 @@ public final class ClassLoaderFactory {
                     }
                     set.add(url);
                 } else if (repository.getType() == RepositoryType.GLOB) {
-                    File directory=new File(repository.getLocation());
+                    File directory = new File(repository.getLocation());
                     directory = directory.getCanonicalFile();
                     if (!validateFile(directory, RepositoryType.GLOB)) {
                         continue;
                     }
                     if (log.isDebugEnabled()) {
-                        log.debug("  Including directory glob "
-                            + directory.getAbsolutePath());
+                        log.debug("  Including directory glob " + directory.getAbsolutePath());
                     }
                     String filenames[] = directory.list();
                     if (filenames == null) {
@@ -213,8 +203,7 @@ public final class ClassLoaderFactory {
                             continue;
                         }
                         if (log.isDebugEnabled()) {
-                            log.debug("    Including glob jar file "
-                                    + file.getAbsolutePath());
+                            log.debug("    Including glob jar file " + file.getAbsolutePath());
                         }
                         URL url = buildClassLoaderUrl(file);
                         set.add(url);
@@ -238,27 +227,23 @@ public final class ClassLoaderFactory {
         }
     }
 
-    private static boolean validateFile(File file,
-            RepositoryType type) throws IOException {
+    private static boolean validateFile(File file, RepositoryType type) throws IOException {
         if (RepositoryType.DIR == type || RepositoryType.GLOB == type) {
             if (!file.isDirectory() || !file.canRead()) {
-                String msg = "Problem with directory [" + file +
-                        "], exists: [" + file.exists() +
-                        "], isDirectory: [" + file.isDirectory() +
-                        "], canRead: [" + file.canRead() + "]";
+                String msg = "Problem with directory [" + file + "], exists: [" + file.exists() + "], isDirectory: [" +
+                        file.isDirectory() + "], canRead: [" + file.canRead() + "]";
 
-                File home = new File (Bootstrap.getCatalinaHome());
+                File home = new File(Bootstrap.getCatalinaHome());
                 home = home.getCanonicalFile();
-                File base = new File (Bootstrap.getCatalinaBase());
+                File base = new File(Bootstrap.getCatalinaBase());
                 base = base.getCanonicalFile();
                 File defaultValue = new File(base, "lib");
 
                 // Existence of ${catalina.base}/lib directory is optional.
                 // Hide the warning if Tomcat runs with separate catalina.home
                 // and catalina.base and that directory is absent.
-                if (!home.getPath().equals(base.getPath())
-                        && file.getPath().equals(defaultValue.getPath())
-                        && !file.exists()) {
+                if (!home.getPath().equals(base.getPath()) && file.getPath().equals(defaultValue.getPath()) &&
+                        !file.exists()) {
                     log.debug(msg);
                 } else {
                     log.warn(msg);
@@ -267,9 +252,8 @@ public final class ClassLoaderFactory {
             }
         } else if (RepositoryType.JAR == type) {
             if (!file.canRead()) {
-                log.warn("Problem with JAR file [" + file +
-                        "], exists: [" + file.exists() +
-                        "], canRead: [" + file.canRead() + "]");
+                log.warn("Problem with JAR file [" + file + "], exists: [" + file.exists() + "], canRead: [" +
+                        file.canRead() + "]");
                 return false;
             }
         }
@@ -278,9 +262,8 @@ public final class ClassLoaderFactory {
 
 
     /*
-     * These two methods would ideally be in the utility class
-     * org.apache.tomcat.util.buf.UriUtil but that class is not visible until
-     * after the class loaders have been constructed.
+     * These two methods would ideally be in the utility class org.apache.tomcat.util.buf.UriUtil but that class is not
+     * visible until after the class loaders have been constructed.
      */
     private static URL buildClassLoaderUrl(String urlString) throws MalformedURLException, URISyntaxException {
         // URLs passed to class loaders may point to directories that contain
diff --git a/java/org/apache/catalina/startup/ConnectorCreateRule.java b/java/org/apache/catalina/startup/ConnectorCreateRule.java
index fbc528f6a8..81d654121d 100644
--- a/java/org/apache/catalina/startup/ConnectorCreateRule.java
+++ b/java/org/apache/catalina/startup/ConnectorCreateRule.java
@@ -45,20 +45,17 @@ public class ConnectorCreateRule extends Rule {
     /**
      * Process the beginning of this element.
      *
-     * @param namespace the namespace URI of the matching element, or an
-     *   empty string if the parser is not namespace aware or the element has
-     *   no namespace
-     * @param name the local name if the parser is namespace aware, or just
-     *   the element name otherwise
+     * @param namespace  the namespace URI of the matching element, or an empty string if the parser is not namespace
+     *                       aware or the element has no namespace
+     * @param name       the local name if the parser is namespace aware, or just the element name otherwise
      * @param attributes The attribute list for this element
      */
     @Override
-    public void begin(String namespace, String name, Attributes attributes)
-            throws Exception {
+    public void begin(String namespace, String name, Attributes attributes) throws Exception {
         Service svc = (Service) digester.peek();
         Executor ex = null;
         String executorName = attributes.getValue("executor");
-        if (executorName != null ) {
+        if (executorName != null) {
             ex = svc.getExecutor(executorName);
         }
         String protocolName = attributes.getValue("protocol");
@@ -95,18 +92,20 @@ public class ConnectorCreateRule extends Rule {
     }
 
     private static void setExecutor(Connector con, Executor ex) throws Exception {
-        Method m = IntrospectionUtils.findMethod(con.getProtocolHandler().getClass(),"setExecutor",new Class[] {java.util.concurrent.Executor.class});
-        if (m!=null) {
-            m.invoke(con.getProtocolHandler(), new Object[] {ex});
-        }else {
+        Method m = IntrospectionUtils.findMethod(con.getProtocolHandler().getClass(), "setExecutor",
+                new Class[] { java.util.concurrent.Executor.class });
+        if (m != null) {
+            m.invoke(con.getProtocolHandler(), new Object[] { ex });
+        } else {
             log.warn(sm.getString("connector.noSetExecutor", con));
         }
     }
 
     private static void setSSLImplementationName(Connector con, String sslImplementationName) throws Exception {
-        Method m = IntrospectionUtils.findMethod(con.getProtocolHandler().getClass(),"setSslImplementationName",new Class[] {String.class});
+        Method m = IntrospectionUtils.findMethod(con.getProtocolHandler().getClass(), "setSslImplementationName",
+                new Class[] { String.class });
         if (m != null) {
-            m.invoke(con.getProtocolHandler(), new Object[] {sslImplementationName});
+            m.invoke(con.getProtocolHandler(), new Object[] { sslImplementationName });
         } else {
             log.warn(sm.getString("connector.noSetSSLImplementationName", con));
         }
@@ -115,11 +114,9 @@ public class ConnectorCreateRule extends Rule {
     /**
      * Process the end of this element.
      *
-     * @param namespace the namespace URI of the matching element, or an
-     *   empty string if the parser is not namespace aware or the element has
-     *   no namespace
-     * @param name the local name if the parser is namespace aware, or just
-     *   the element name otherwise
+     * @param namespace the namespace URI of the matching element, or an empty string if the parser is not namespace
+     *                      aware or the element has no namespace
+     * @param name      the local name if the parser is namespace aware, or just the element name otherwise
      */
     @Override
     public void end(String namespace, String name) throws Exception {
diff --git a/java/org/apache/catalina/startup/Constants.java b/java/org/apache/catalina/startup/Constants.java
index 2b8414264d..1a593803c3 100644
--- a/java/org/apache/catalina/startup/Constants.java
+++ b/java/org/apache/catalina/startup/Constants.java
@@ -17,10 +17,9 @@
 package org.apache.catalina.startup;
 
 /**
- * String constants for the startup package.
- * <br>
- * Note that some values include a leading '/' and that some do not. This is
- * intentional based on how the values are used.
+ * String constants for the startup package. <br>
+ * Note that some values include a leading '/' and that some do not. This is intentional based on how the values are
+ * used.
  *
  * @author Craig R. McClanahan
  */
@@ -38,12 +37,9 @@ public final class Constants {
     public static final String WarTracker = "/META-INF/war-tracker";
 
     /**
-     * A value that points to a non-existent file used to suppress loading the
-     * default web.xml file.
-     *
+     * A value that points to a non-existent file used to suppress loading the default web.xml file.
      * <p>
-     * It is useful when embedding Tomcat, when the default configuration is
-     * done programmatically, e.g. by calling
+     * It is useful when embedding Tomcat, when the default configuration is done programmatically, e.g. by calling
      * <code>Tomcat.initWebappDefaults(context)</code>.
      *
      * @see Tomcat
@@ -51,14 +47,12 @@ public final class Constants {
     public static final String NoDefaultWebXml = "org/apache/catalina/startup/NO_DEFAULT_XML";
 
     /**
-     * Name of the system property containing
-     * the tomcat product installation path
+     * Name of the system property containing the tomcat product installation path
      */
     public static final String CATALINA_HOME_PROP = "catalina.home";
 
     /**
-     * Name of the system property containing
-     * the tomcat instance installation path
+     * Name of the system property containing the tomcat instance installation path
      */
     public static final String CATALINA_BASE_PROP = "catalina.base";
 }
diff --git a/java/org/apache/catalina/startup/ContextConfig.java b/java/org/apache/catalina/startup/ContextConfig.java
index b0ad48594b..62798f31f8 100644
--- a/java/org/apache/catalina/startup/ContextConfig.java
+++ b/java/org/apache/catalina/startup/ContextConfig.java
@@ -116,8 +116,8 @@ import org.xml.sax.InputSource;
 import org.xml.sax.SAXParseException;
 
 /**
- * Startup event listener for a <b>Context</b> that configures the properties
- * of that Context, and the associated defined servlets.
+ * Startup event listener for a <b>Context</b> that configures the properties of that Context, and the associated
+ * defined servlets.
  *
  * @author Craig R. McClanahan
  */
@@ -128,26 +128,23 @@ public class ContextConfig implements LifecycleListener {
     /**
      * The string resources for this package.
      */
-    protected static final StringManager sm =
-        StringManager.getManager(Constants.Package);
+    protected static final StringManager sm = StringManager.getManager(Constants.Package);
 
 
-    protected static final LoginConfig DUMMY_LOGIN_CONFIG =
-        new LoginConfig("NONE", null, null, null);
+    protected static final LoginConfig DUMMY_LOGIN_CONFIG = new LoginConfig("NONE", null, null, null);
 
 
     /**
-     * The set of Authenticators that we know how to configure.  The key is
-     * the name of the implemented authentication method, and the value is
-     * the fully qualified Java class name of the corresponding Valve.
+     * The set of Authenticators that we know how to configure. The key is the name of the implemented authentication
+     * method, and the value is the fully qualified Java class name of the corresponding Valve.
      */
     protected static final Properties authenticators;
 
     static {
         // Load our mapping properties for the standard authenticators
         Properties props = new Properties();
-        try (InputStream is = ContextConfig.class.getClassLoader().getResourceAsStream(
-                "org/apache/catalina/startup/Authenticators.properties")) {
+        try (InputStream is = ContextConfig.class.getClassLoader()
+                .getResourceAsStream("org/apache/catalina/startup/Authenticators.properties")) {
             if (is != null) {
                 props.load(is);
             }
@@ -166,13 +163,11 @@ public class ContextConfig implements LifecycleListener {
     /**
      * Cache of default web.xml fragments per Host
      */
-    protected static final Map<Host,DefaultWebXmlCacheEntry> hostWebXmlCache =
-            new ConcurrentHashMap<>();
+    protected static final Map<Host,DefaultWebXmlCacheEntry> hostWebXmlCache = new ConcurrentHashMap<>();
 
 
     /**
-     * Set used as the value for {@code JavaClassCacheEntry.sciSet} when there
-     * are no SCIs associated with a class.
+     * Set used as the value for {@code JavaClassCacheEntry.sciSet} when there are no SCIs associated with a class.
      */
     private static final Set<ServletContainerInitializer> EMPTY_SCI_SET = Collections.emptySet();
 
@@ -209,8 +204,8 @@ public class ContextConfig implements LifecycleListener {
 
 
     /**
-     * Anti-locking docBase. It is a path to a copy of the web application
-     * in the java.io.tmpdir directory. This path is always an absolute one.
+     * Anti-locking docBase. It is a path to a copy of the web application in the java.io.tmpdir directory. This path is
+     * always an absolute one.
      */
     private File antiLockingDocBase = null;
 
@@ -218,25 +213,20 @@ public class ContextConfig implements LifecycleListener {
     /**
      * Map of ServletContainerInitializer to classes they expressed interest in.
      */
-    protected final Map<ServletContainerInitializer, Set<Class<?>>> initializerClassMap =
-            new LinkedHashMap<>();
+    protected final Map<ServletContainerInitializer,Set<Class<?>>> initializerClassMap = new LinkedHashMap<>();
 
     /**
-     * Map of Types to ServletContainerInitializer that are interested in those
-     * types.
+     * Map of Types to ServletContainerInitializer that are interested in those types.
      */
-    protected final Map<Class<?>, Set<ServletContainerInitializer>> typeInitializerMap =
-            new HashMap<>();
+    protected final Map<Class<?>,Set<ServletContainerInitializer>> typeInitializerMap = new HashMap<>();
 
     /**
-     * Flag that indicates if at least one {@link HandlesTypes} entry is present
-     * that represents an annotation.
+     * Flag that indicates if at least one {@link HandlesTypes} entry is present that represents an annotation.
      */
     protected boolean handlesTypesAnnotations = false;
 
     /**
-     * Flag that indicates if at least one {@link HandlesTypes} entry is present
-     * that represents a non-annotation.
+     * Flag that indicates if at least one {@link HandlesTypes} entry is present that represents a non-annotation.
      */
     protected boolean handlesTypesNonAnnotations = false;
 
@@ -246,8 +236,7 @@ public class ContextConfig implements LifecycleListener {
     /**
      * Obtain the location of the default deployment descriptor.
      *
-     * @return The path to the default web.xml. If not absolute, it is relative
-     *         to CATALINA_BASE.
+     * @return The path to the default web.xml. If not absolute, it is relative to CATALINA_BASE.
      */
     public String getDefaultWebXml() {
         if (defaultWebXml == null) {
@@ -260,8 +249,7 @@ public class ContextConfig implements LifecycleListener {
     /**
      * Set the location of the default deployment descriptor.
      *
-     * @param path The path to the default web.xml. If not absolute, it is
-     *             relative to CATALINA_BASE.
+     * @param path The path to the default web.xml. If not absolute, it is relative to CATALINA_BASE.
      */
     public void setDefaultWebXml(String path) {
         this.defaultWebXml = path;
@@ -271,11 +259,9 @@ public class ContextConfig implements LifecycleListener {
     /**
      * Sets custom mappings of login methods to authenticators.
      *
-     * @param customAuthenticators Custom mappings of login methods to
-     * authenticators
+     * @param customAuthenticators Custom mappings of login methods to authenticators
      */
-    public void setCustomAuthenticators(
-            Map<String,Authenticator> customAuthenticators) {
+    public void setCustomAuthenticators(Map<String,Authenticator> customAuthenticators) {
         this.customAuthenticators = customAuthenticators;
     }
 
@@ -328,21 +314,19 @@ public class ContextConfig implements LifecycleListener {
      */
     protected void applicationAnnotationsConfig() {
 
-        long t1=System.currentTimeMillis();
+        long t1 = System.currentTimeMillis();
 
         WebAnnotationSet.loadApplicationAnnotations(context);
 
-        long t2=System.currentTimeMillis();
+        long t2 = System.currentTimeMillis();
         if (context instanceof StandardContext) {
-            ((StandardContext) context).setStartupTime(t2-t1+
-                    ((StandardContext) context).getStartupTime());
+            ((StandardContext) context).setStartupTime(t2 - t1 + ((StandardContext) context).getStartupTime());
         }
     }
 
 
     /**
-     * Set up an Authenticator automatically if required, and one has not
-     * already been configured.
+     * Set up an Authenticator automatically if required, and one has not already been configured.
      */
     protected void authenticatorConfig() {
 
@@ -366,9 +350,8 @@ public class ContextConfig implements LifecycleListener {
         }
 
         /*
-         * First check to see if there is a custom mapping for the login
-         * method. If so, use it. Otherwise, check if there is a mapping in
-         * org/apache/catalina/startup/Authenticators.properties.
+         * First check to see if there is a custom mapping for the login method. If so, use it. Otherwise, check if
+         * there is a mapping in org/apache/catalina/startup/Authenticators.properties.
          */
         Valve authenticator = null;
         if (customAuthenticators != null) {
@@ -385,8 +368,7 @@ public class ContextConfig implements LifecycleListener {
             // Identify the class name of the Valve we should configure
             String authenticatorName = authenticators.getProperty(loginConfig.getAuthMethod());
             if (authenticatorName == null) {
-                log.error(sm.getString("contextConfig.authenticatorMissing",
-                                 loginConfig.getAuthMethod()));
+                log.error(sm.getString("contextConfig.authenticatorMissing", loginConfig.getAuthMethod()));
                 ok = false;
                 return;
             }
@@ -397,10 +379,7 @@ public class ContextConfig implements LifecycleListener {
                 authenticator = (Valve) authenticatorClass.getConstructor().newInstance();
             } catch (Throwable t) {
                 ExceptionUtils.handleThrowable(t);
-                log.error(sm.getString(
-                                    "contextConfig.authenticatorInstantiate",
-                                    authenticatorName),
-                          t);
+                log.error(sm.getString("contextConfig.authenticatorInstantiate", authenticatorName), t);
                 ok = false;
             }
         }
@@ -410,9 +389,7 @@ public class ContextConfig implements LifecycleListener {
             if (pipeline != null) {
                 pipeline.addValve(authenticator);
                 if (log.isDebugEnabled()) {
-                    log.debug(sm.getString(
-                                    "contextConfig.authenticatorConfigured",
-                                    loginConfig.getAuthMethod()));
+                    log.debug(sm.getString("contextConfig.authenticatorConfigured", loginConfig.getAuthMethod()));
                 }
             }
         }
@@ -420,15 +397,16 @@ public class ContextConfig implements LifecycleListener {
 
 
     /**
-     * Create (if necessary) and return a Digester configured to process the
-     * context configuration descriptor for an application.
+     * Create (if necessary) and return a Digester configured to process the context configuration descriptor for an
+     * application.
+     *
      * @return the digester for context.xml files
      */
     protected Digester createContextDigester() {
         Digester digester = new Digester();
         digester.setValidating(false);
         digester.setRulesValidation(true);
-        Map<Class<?>, List<String>> fakeAttributes = new HashMap<>();
+        Map<Class<?>,List<String>> fakeAttributes = new HashMap<>();
         List<String> objectAttrs = new ArrayList<>();
         objectAttrs.add("className");
         fakeAttributes.put(Object.class, objectAttrs);
@@ -558,6 +536,7 @@ public class ContextConfig implements LifecycleListener {
 
     /**
      * Process the default configuration file, if it exists.
+     *
      * @param digester The digester that will be used for XML parsing
      */
     protected void contextConfig(Digester digester) {
@@ -574,7 +553,7 @@ public class ContextConfig implements LifecycleListener {
 
         // Open the default context.xml file, if it exists
         if (context instanceof StandardContext) {
-            defaultContextXml = ((StandardContext)context).getDefaultContextXml();
+            defaultContextXml = ((StandardContext) context).getDefaultContextXml();
         }
         // set the default if we don't have any overrides
         if (defaultContextXml == null) {
@@ -600,7 +579,8 @@ public class ContextConfig implements LifecycleListener {
                 try (ConfigurationSource.Resource contextXmlResource =
                         ConfigFileLoader.getSource().getResource(defaultContextXml)) {
                     if (generateCode) {
-                        contextXmlJavaSource = getContextXmlJavaSource(contextXmlPackageName, contextXmlSimpleClassName);
+                        contextXmlJavaSource =
+                                getContextXmlJavaSource(contextXmlPackageName, contextXmlSimpleClassName);
                         if (contextXmlJavaSource != null) {
                             digester.startGeneratingCode();
                             generateClassHeader(digester, contextXmlPackageName, contextXmlSimpleClassName);
@@ -641,7 +621,8 @@ public class ContextConfig implements LifecycleListener {
                 try (ConfigurationSource.Resource contextXmlResource =
                         ConfigFileLoader.getSource().getResource(hostContextFile)) {
                     if (generateCode) {
-                        contextXmlJavaSource = getContextXmlJavaSource(contextXmlPackageName, contextXmlSimpleClassName);
+                        contextXmlJavaSource =
+                                getContextXmlJavaSource(contextXmlPackageName, contextXmlSimpleClassName);
                         digester.startGeneratingCode();
                         generateClassHeader(digester, contextXmlPackageName, contextXmlSimpleClassName);
                     }
@@ -700,15 +681,15 @@ public class ContextConfig implements LifecycleListener {
 
     /**
      * Process a context.xml.
-     * @param digester The digester that will be used for XML parsing
+     *
+     * @param digester   The digester that will be used for XML parsing
      * @param contextXml The URL to the context.xml configuration
-     * @param stream The XML resource stream
+     * @param stream     The XML resource stream
      */
     protected void processContextConfig(Digester digester, URL contextXml, InputStream stream) {
 
         if (log.isDebugEnabled()) {
-            log.debug("Processing context [" + context.getName()
-                    + "] configuration file [" + contextXml + "]");
+            log.debug("Processing context [" + context.getName() + "] configuration file [" + contextXml + "]");
         }
 
         InputSource source = null;
@@ -721,8 +702,7 @@ public class ContextConfig implements LifecycleListener {
                 stream = xmlConn.getInputStream();
             }
         } catch (Exception e) {
-            log.error(sm.getString("contextConfig.contextMissing",
-                      contextXml) , e);
+            log.error(sm.getString("contextConfig.contextMissing", contextXml), e);
         }
 
         if (source == null) {
@@ -738,25 +718,20 @@ public class ContextConfig implements LifecycleListener {
             XmlErrorHandler errorHandler = new XmlErrorHandler();
             digester.setErrorHandler(errorHandler);
             digester.parse(source);
-            if (errorHandler.getWarnings().size() > 0 ||
-                    errorHandler.getErrors().size() > 0) {
+            if (errorHandler.getWarnings().size() > 0 || errorHandler.getErrors().size() > 0) {
                 errorHandler.logFindings(log, contextXml.toString());
                 ok = false;
             }
             if (log.isDebugEnabled()) {
-                log.debug("Successfully processed context [" + context.getName()
-                        + "] configuration file [" + contextXml + "]");
+                log.debug("Successfully processed context [" + context.getName() + "] configuration file [" +
+                        contextXml + "]");
             }
         } catch (SAXParseException e) {
-            log.error(sm.getString("contextConfig.contextParse",
-                    context.getName()), e);
-            log.error(sm.getString("contextConfig.defaultPosition",
-                             "" + e.getLineNumber(),
-                             "" + e.getColumnNumber()));
+            log.error(sm.getString("contextConfig.contextParse", context.getName()), e);
+            log.error(sm.getString("contextConfig.defaultPosition", "" + e.getLineNumber(), "" + e.getColumnNumber()));
             ok = false;
         } catch (Exception e) {
-            log.error(sm.getString("contextConfig.contextParse",
-                    context.getName()), e);
+            log.error(sm.getString("contextConfig.contextParse", context.getName()), e);
             ok = false;
         } finally {
             try {
@@ -772,6 +747,7 @@ public class ContextConfig implements LifecycleListener {
 
     /**
      * Adjust docBase.
+     *
      * @throws IOException cannot access the context base path
      */
     protected void fixDocBase() throws IOException {
@@ -810,7 +786,7 @@ public class ContextConfig implements LifecycleListener {
         if (host instanceof StandardHost) {
             unpackWARs = ((StandardHost) host).isUnpackWARs();
             if (unpackWARs && context instanceof StandardContext) {
-                unpackWARs =  ((StandardContext) context).getUnpackWAR();
+                unpackWARs = ((StandardContext) context).getUnpackWAR();
             }
         }
 
@@ -882,8 +858,7 @@ public class ContextConfig implements LifecycleListener {
 
     protected void antiLocking() {
 
-        if ((context instanceof StandardContext)
-                && ((StandardContext) context).getAntiResourceLocking()) {
+        if ((context instanceof StandardContext) && ((StandardContext) context).getAntiResourceLocking()) {
 
             Host host = (Host) context.getParent();
             String docBase = context.getDocBase();
@@ -919,8 +894,7 @@ public class ContextConfig implements LifecycleListener {
             antiLockingDocBase = antiLockingDocBase.getAbsoluteFile();
 
             if (log.isDebugEnabled()) {
-                log.debug("Anti locking context[" + context.getName()
-                        + "] setting docBase to " +
+                log.debug("Anti locking context[" + context.getName() + "] setting docBase to " +
                         antiLockingDocBase.getPath());
             }
 
@@ -963,8 +937,7 @@ public class ContextConfig implements LifecycleListener {
         try {
             fixDocBase();
         } catch (IOException e) {
-            log.error(sm.getString(
-                    "contextConfig.fixDocBase", context.getName()), e);
+            log.error(sm.getString("contextConfig.fixDocBase", context.getName()), e);
         }
 
         antiLocking();
@@ -982,10 +955,8 @@ public class ContextConfig implements LifecycleListener {
         }
 
         if (log.isDebugEnabled()) {
-            log.debug(sm.getString("contextConfig.xmlSettings",
-                    context.getName(),
-                    Boolean.valueOf(context.getXmlValidation()),
-                    Boolean.valueOf(context.getXmlNamespaceAware())));
+            log.debug(sm.getString("contextConfig.xmlSettings", context.getName(),
+                    Boolean.valueOf(context.getXmlValidation()), Boolean.valueOf(context.getXmlNamespaceAware())));
         }
 
         webConfig();
@@ -1162,7 +1133,7 @@ public class ContextConfig implements LifecycleListener {
             return null;
         }
 
-        Service s = ((Engine)c).getService();
+        Service s = ((Engine) c).getService();
 
         if (s == null) {
             return null;
@@ -1172,11 +1143,9 @@ public class ContextConfig implements LifecycleListener {
     }
 
     /**
-     * Validate the usage of security role names in the web application
-     * deployment descriptor.  If any problems are found, issue warning
-     * messages (for backwards compatibility) and add the missing roles.
-     * (To make these problems fatal instead, simply set the <code>ok</code>
-     * instance variable to <code>false</code> as well).
+     * Validate the usage of security role names in the web application deployment descriptor. If any problems are
+     * found, issue warning messages (for backwards compatibility) and add the missing roles. (To make these problems
+     * fatal instead, simply set the <code>ok</code> instance variable to <code>false</code> as well).
      */
     protected void validateSecurityRoles() {
 
@@ -1185,8 +1154,7 @@ public class ContextConfig implements LifecycleListener {
         for (SecurityConstraint constraint : constraints) {
             String roles[] = constraint.findAuthRoles();
             for (String role : roles) {
-                if (!"*".equals(role) &&
-                        !context.findSecurityRole(role)) {
+                if (!"*".equals(role) && !context.findSecurityRole(role)) {
                     log.warn(sm.getString("contextConfig.role.auth", role));
                     context.addSecurityRole(role);
                 }
@@ -1218,52 +1186,43 @@ public class ContextConfig implements LifecycleListener {
     protected File getHostConfigBase() {
         File file = null;
         if (context.getParent() instanceof Host) {
-            file = ((Host)context.getParent()).getConfigBaseFile();
+            file = ((Host) context.getParent()).getConfigBaseFile();
         }
         return file;
     }
 
     /**
-     * Scan the web.xml files that apply to the web application and merge them
-     * using the rules defined in the spec. For the global web.xml files,
-     * where there is duplicate configuration, the most specific level wins. ie
-     * an application's web.xml takes precedence over the host level or global
-     * web.xml file.
+     * Scan the web.xml files that apply to the web application and merge them using the rules defined in the spec. For
+     * the global web.xml files, where there is duplicate configuration, the most specific level wins. ie an
+     * application's web.xml takes precedence over the host level or global web.xml file.
      */
     protected void webConfig() {
         /*
-         * Anything and everything can override the global and host defaults.
-         * This is implemented in two parts:
+         * Anything and everything can override the global and host defaults. This is implemented in two parts:
          *
-         * - Handle as a web fragment that gets added after everything else so
-         *   everything else takes priority
+         * - Handle as a web fragment that gets added after everything else so everything else takes priority
          *
-         * - Mark Servlets as overridable so SCI configuration can replace
-         *   configuration from the defaults
+         * - Mark Servlets as overridable so SCI configuration can replace configuration from the defaults
          */
 
         /*
-         * The rules for annotation scanning are not as clear-cut as one might
-         * think. Tomcat implements the following process:
+         * The rules for annotation scanning are not as clear-cut as one might think. Tomcat implements the following
+         * process:
          *
-         * - As per SRV.1.6.2, Tomcat will scan for annotations regardless of
-         *   which Servlet spec version is declared in web.xml. The EG has
-         *   confirmed this is the expected behaviour.
+         * - As per SRV.1.6.2, Tomcat will scan for annotations regardless of which Servlet spec version is declared in
+         * web.xml. The EG has confirmed this is the expected behaviour.
          *
-         * - As per http://java.net/jira/browse/SERVLET_SPEC-36, if the main
-         *   web.xml is marked as metadata-complete, JARs are still processed
-         *   for SCIs.
+         * - As per http://java.net/jira/browse/SERVLET_SPEC-36, if the main web.xml is marked as metadata-complete,
+         * JARs are still processed for SCIs.
          *
-         * - If metadata-complete=true and an absolute ordering is specified,
-         *   JARs excluded from the ordering are also excluded from the SCI
-         *   processing.
+         * - If metadata-complete=true and an absolute ordering is specified, JARs excluded from the ordering are also
+         * excluded from the SCI processing.
          *
-         * - If an SCI has a @HandlesType annotation then all classes (except
-         *   those in JARs excluded from an absolute ordering) need to be
-         *   scanned to check if they match.
+         * - If an SCI has a @HandlesType annotation then all classes (except those in JARs excluded from an absolute
+         * ordering) need to be scanned to check if they match.
          */
-        WebXmlParser webXmlParser = new WebXmlParser(context.getXmlNamespaceAware(),
-                context.getXmlValidation(), context.getXmlBlockExternal());
+        WebXmlParser webXmlParser = new WebXmlParser(context.getXmlNamespaceAware(), context.getXmlValidation(),
+                context.getXmlBlockExternal());
 
         Set<WebXml> defaults = new HashSet<>();
         defaults.add(getDefaultWebXmlFragment(webXmlParser));
@@ -1291,15 +1250,14 @@ public class ContextConfig implements LifecycleListener {
 
         // Step 2. Order the fragments.
         Set<WebXml> orderedFragments = null;
-        orderedFragments =
-                WebXml.orderWebFragments(webXml, fragments, sContext);
+        orderedFragments = WebXml.orderWebFragments(webXml, fragments, sContext);
 
         // Step 3. Look for ServletContainerInitializer implementations
         if (ok) {
             processServletContainerInitializers();
         }
 
-        if  (!webXml.isMetadataComplete() || typeInitializerMap.size() > 0) {
+        if (!webXml.isMetadataComplete() || typeInitializerMap.size() > 0) {
             // Steps 4 & 5.
             processClasses(webXml, orderedFragments);
         }
@@ -1359,15 +1317,11 @@ public class ContextConfig implements LifecycleListener {
         // Step 11. Apply the ServletContainerInitializer config to the
         // context
         if (ok) {
-            for (Map.Entry<ServletContainerInitializer,
-                    Set<Class<?>>> entry :
-                        initializerClassMap.entrySet()) {
+            for (Map.Entry<ServletContainerInitializer,Set<Class<?>>> entry : initializerClassMap.entrySet()) {
                 if (entry.getValue().isEmpty()) {
-                    context.addServletContainerInitializer(
-                            entry.getKey(), null);
+                    context.addServletContainerInitializer(entry.getKey(), null);
                 } else {
-                    context.addServletContainerInitializer(
-                            entry.getKey(), entry.getValue());
+                    context.addServletContainerInitializer(entry.getKey(), entry.getValue());
                 }
             }
         }
@@ -1378,7 +1332,7 @@ public class ContextConfig implements LifecycleListener {
         // Step 4. Process /WEB-INF/classes for annotations and
         // @HandlesTypes matches
 
-        Map<String, JavaClassCacheEntry> javaClassCache;
+        Map<String,JavaClassCacheEntry> javaClassCache;
 
         if (context.getParallelAnnotationScanning()) {
             javaClassCache = new ConcurrentHashMap<>();
@@ -1387,8 +1341,7 @@ public class ContextConfig implements LifecycleListener {
         }
 
         if (ok) {
-            WebResource[] webResources =
-                    context.getResources().listResources("/WEB-INF/classes");
+            WebResource[] webResources = context.getResources().listResources("/WEB-INF/classes");
 
             for (WebResource webResource : webResources) {
                 // Skip the META-INF directory from any JARs that have been
@@ -1396,8 +1349,7 @@ public class ContextConfig implements LifecycleListener {
                 if ("META-INF".equals(webResource.getName())) {
                     continue;
                 }
-                processAnnotationsWebResource(webResource, webXml,
-                        webXml.isMetadataComplete(), javaClassCache);
+                processAnnotationsWebResource(webResource, webXml, webXml.isMetadataComplete(), javaClassCache);
             }
         }
 
@@ -1406,8 +1358,7 @@ public class ContextConfig implements LifecycleListener {
         // are going to use (remember orderedFragments includes any
         // container fragments)
         if (ok) {
-            processAnnotations(
-                    orderedFragments, webXml.isMetadataComplete(), javaClassCache);
+            processAnnotations(orderedFragments, webXml.isMetadataComplete(), javaClassCache);
         }
 
         // Cache, if used, is no longer required so clear it
@@ -1425,11 +1376,10 @@ public class ContextConfig implements LifecycleListener {
         context.setEffectiveMajorVersion(webxml.getMajorVersion());
         context.setEffectiveMinorVersion(webxml.getMinorVersion());
 
-        for (Entry<String, String> entry : webxml.getContextParams().entrySet()) {
+        for (Entry<String,String> entry : webxml.getContextParams().entrySet()) {
             context.addParameter(entry.getKey(), entry.getValue());
         }
-        context.setDenyUncoveredHttpMethods(
-                webxml.getDenyUncoveredHttpMethods());
+        context.setDenyUncoveredHttpMethods(webxml.getDenyUncoveredHttpMethods());
         context.setDisplayName(webxml.getDisplayName());
         context.setDistributable(webxml.isDistributable());
         for (ContextLocalEjb ejbLocalRef : webxml.getEjbLocalRefs().values()) {
@@ -1457,31 +1407,26 @@ public class ContextConfig implements LifecycleListener {
         for (String listener : webxml.getListeners()) {
             context.addApplicationListener(listener);
         }
-        for (Entry<String, String> entry :
-                webxml.getLocaleEncodingMappings().entrySet()) {
-            context.addLocaleEncodingMappingParameter(entry.getKey(),
-                    entry.getValue());
+        for (Entry<String,String> entry : webxml.getLocaleEncodingMappings().entrySet()) {
+            context.addLocaleEncodingMappingParameter(entry.getKey(), entry.getValue());
         }
         // Prevents IAE
         if (webxml.getLoginConfig() != null) {
             context.setLoginConfig(webxml.getLoginConfig());
         }
-        for (MessageDestinationRef mdr :
-                webxml.getMessageDestinationRefs().values()) {
+        for (MessageDestinationRef mdr : webxml.getMessageDestinationRefs().values()) {
             context.getNamingResources().addMessageDestinationRef(mdr);
         }
 
         // messageDestinations were ignored in Tomcat 6, so ignore here
 
         context.setMetadataComplete(webxml.isMetadataComplete());
-        for (Entry<String, String> entry :
-                webxml.getMimeMappings().entrySet()) {
+        for (Entry<String,String> entry : webxml.getMimeMappings().entrySet()) {
             context.addMimeMapping(entry.getKey(), entry.getValue());
         }
         context.setRequestCharacterEncoding(webxml.getRequestCharacterEncoding());
         // Name is just used for ordering
-        for (ContextResourceEnvRef resource :
-                webxml.getResourceEnvRefs().values()) {
+        for (ContextResourceEnvRef resource : webxml.getResourceEnvRefs().values()) {
             context.getNamingResources().addResourceEnvRef(resource);
         }
         for (ContextResource resource : webxml.getResourceRefs().values()) {
@@ -1489,8 +1434,7 @@ public class ContextConfig implements LifecycleListener {
         }
         context.setResponseCharacterEncoding(webxml.getResponseCharacterEncoding());
         boolean allAuthenticatedUsersIsAppRole =
-                webxml.getSecurityRoles().contains(
-                        SecurityConstraint.ROLE_ALL_AUTHENTICATED_USERS);
+                webxml.getSecurityRoles().contains(SecurityConstraint.ROLE_ALL_AUTHENTICATED_USERS);
         for (SecurityConstraint constraint : webxml.getSecurityConstraints()) {
             if (allAuthenticatedUsersIsAppRole) {
                 constraint.treatAllAuthenticatedUsersAsApplicationRole();
@@ -1519,14 +1463,13 @@ public class ContextConfig implements LifecycleListener {
             }
             wrapper.setName(servlet.getServletName());
             Map<String,String> params = servlet.getParameterMap();
-            for (Entry<String, String> entry : params.entrySet()) {
+            for (Entry<String,String> entry : params.entrySet()) {
                 wrapper.addInitParameter(entry.getKey(), entry.getValue());
             }
             wrapper.setRunAs(servlet.getRunAs());
             Set<SecurityRoleRef> roleRefs = servlet.getSecurityRoleRefs();
             for (SecurityRoleRef roleRef : roleRefs) {
-                wrapper.addSecurityReference(
-                        roleRef.getName(), roleRef.getLink());
+                wrapper.addSecurityReference(roleRef.getName(), roleRef.getLink());
             }
             wrapper.setServletClass(servlet.getServletClass());
             MultipartDef multipartdef = servlet.getMultipartDef();
@@ -1535,38 +1478,32 @@ public class ContextConfig implements LifecycleListener {
                 long maxRequestSize = -1;
                 int fileSizeThreshold = 0;
 
-                if(null != multipartdef.getMaxFileSize()) {
+                if (null != multipartdef.getMaxFileSize()) {
                     maxFileSize = Long.parseLong(multipartdef.getMaxFileSize());
                 }
-                if(null != multipartdef.getMaxRequestSize()) {
+                if (null != multipartdef.getMaxRequestSize()) {
                     maxRequestSize = Long.parseLong(multipartdef.getMaxRequestSize());
                 }
-                if(null != multipartdef.getFileSizeThreshold()) {
+                if (null != multipartdef.getFileSizeThreshold()) {
                     fileSizeThreshold = Integer.parseInt(multipartdef.getFileSizeThreshold());
                 }
 
-                wrapper.setMultipartConfigElement(new MultipartConfigElement(
-                        multipartdef.getLocation(),
-                        maxFileSize,
-                        maxRequestSize,
-                        fileSizeThreshold));
+                wrapper.setMultipartConfigElement(new MultipartConfigElement(multipartdef.getLocation(), maxFileSize,
+                        maxRequestSize, fileSizeThreshold));
             }
             if (servlet.getAsyncSupported() != null) {
-                wrapper.setAsyncSupported(
-                        servlet.getAsyncSupported().booleanValue());
+                wrapper.setAsyncSupported(servlet.getAsyncSupported().booleanValue());
             }
             wrapper.setOverridable(servlet.isOverridable());
             context.addChild(wrapper);
         }
-        for (Entry<String, String> entry :
-                webxml.getServletMappings().entrySet()) {
+        for (Entry<String,String> entry : webxml.getServletMappings().entrySet()) {
             context.addServletMappingDecoded(entry.getKey(), entry.getValue());
         }
         SessionConfig sessionConfig = webxml.getSessionConfig();
         if (sessionConfig != null) {
             if (sessionConfig.getSessionTimeout() != null) {
-                context.setSessionTimeout(
-                        sessionConfig.getSessionTimeout().intValue());
+                context.setSessionTimeout(sessionConfig.getSessionTimeout().intValue());
             }
             SessionCookieConfig scc = context.getServletContext().getSessionCookieConfig();
             scc.setName(sessionConfig.getCookieName());
@@ -1575,8 +1512,7 @@ public class ContextConfig implements LifecycleListener {
                 scc.setAttribute(attribute.getKey(), attribute.getValue());
             }
             if (sessionConfig.getSessionTrackingModes().size() > 0) {
-                context.getServletContext().setSessionTrackingModes(
-                        sessionConfig.getSessionTrackingModes());
+                context.getServletContext().setSessionTrackingModes(sessionConfig.getSessionTrackingModes());
             }
         }
 
@@ -1584,11 +1520,8 @@ public class ContextConfig implements LifecycleListener {
 
         for (String welcomeFile : webxml.getWelcomeFiles()) {
             /*
-             * The following will result in a welcome file of "" so don't add
-             * that to the context
-             * <welcome-file-list>
-             *   <welcome-file/>
-             * </welcome-file-list>
+             * The following will result in a welcome file of "" so don't add that to the context <welcome-file-list>
+             * <welcome-file/> </welcome-file-list>
              */
             if (welcomeFile != null && welcomeFile.length() > 0) {
                 context.addWelcomeFile(welcomeFile);
@@ -1596,8 +1529,7 @@ public class ContextConfig implements LifecycleListener {
         }
 
         // Do this last as it depends on servlets
-        for (JspPropertyGroup jspPropertyGroup :
-                webxml.getJspPropertyGroups()) {
+        for (JspPropertyGroup jspPropertyGroup : webxml.getJspPropertyGroups()) {
             String jspServletName = context.findServletMapping("*.jsp");
             if (jspServletName == null) {
                 jspServletName = "jsp";
@@ -1607,22 +1539,19 @@ public class ContextConfig implements LifecycleListener {
                     context.addServletMappingDecoded(urlPattern, jspServletName, true);
                 }
             } else {
-                if(log.isDebugEnabled()) {
+                if (log.isDebugEnabled()) {
                     for (String urlPattern : jspPropertyGroup.getUrlPatterns()) {
-                        log.debug("Skipping " + urlPattern + " , no servlet " +
-                                jspServletName);
+                        log.debug("Skipping " + urlPattern + " , no servlet " + jspServletName);
                     }
                 }
             }
         }
 
-        for (Entry<String, String> entry :
-                webxml.getPostConstructMethods().entrySet()) {
+        for (Entry<String,String> entry : webxml.getPostConstructMethods().entrySet()) {
             context.addPostConstructMethod(entry.getKey(), entry.getValue());
         }
 
-        for (Entry<String, String> entry :
-            webxml.getPreDestroyMethods().entrySet()) {
+        for (Entry<String,String> entry : webxml.getPreDestroyMethods().entrySet()) {
             context.addPreDestroyMethod(entry.getKey(), entry.getValue());
         }
     }
@@ -1744,8 +1673,7 @@ public class ContextConfig implements LifecycleListener {
                 // This is unusual enough to log
                 log.info(sm.getString("contextConfig.defaultMissing"));
             } else {
-                if (!webXmlParser.parseWebXml(
-                        globalWebXml, webXmlDefaultFragment, false)) {
+                if (!webXmlParser.parseWebXml(globalWebXml, webXmlDefaultFragment, false)) {
                     ok = false;
                 }
             }
@@ -1754,15 +1682,13 @@ public class ContextConfig implements LifecycleListener {
             // Additive apart from welcome pages
             webXmlDefaultFragment.setReplaceWelcomeFiles(true);
 
-            if (!webXmlParser.parseWebXml(
-                    hostWebXml, webXmlDefaultFragment, false)) {
+            if (!webXmlParser.parseWebXml(hostWebXml, webXmlDefaultFragment, false)) {
                 ok = false;
             }
 
             // Don't update the cache if an error occurs
             if (globalTimeStamp != -1 && hostTimeStamp != -1) {
-                entry = new DefaultWebXmlCacheEntry(webXmlDefaultFragment,
-                        globalTimeStamp, hostTimeStamp);
+                entry = new DefaultWebXmlCacheEntry(webXmlDefaultFragment, globalTimeStamp, hostTimeStamp);
                 hostWebXmlCache.put(host, entry);
                 // Add a Lifecycle listener to the Host that will remove it from
                 // the hostWebXmlCache once the Host is destroyed
@@ -1789,32 +1715,29 @@ public class ContextConfig implements LifecycleListener {
         } else {
             jspInitParams = jspServlet.getParameterMap();
         }
-        for (ServletDef servletDef: webXml.getServlets().values()) {
+        for (ServletDef servletDef : webXml.getServlets().values()) {
             if (servletDef.getJspFile() != null) {
                 convertJsp(servletDef, jspInitParams);
             }
         }
     }
 
-    private void convertJsp(ServletDef servletDef,
-            Map<String,String> jspInitParams) {
+    private void convertJsp(ServletDef servletDef, Map<String,String> jspInitParams) {
         servletDef.setServletClass(org.apache.catalina.core.Constants.JSP_SERVLET_CLASS);
         String jspFile = servletDef.getJspFile();
         if ((jspFile != null) && !jspFile.startsWith("/")) {
             if (context.isServlet22()) {
-                if(log.isDebugEnabled()) {
-                    log.debug(sm.getString("contextConfig.jspFile.warning",
-                                       jspFile));
+                if (log.isDebugEnabled()) {
+                    log.debug(sm.getString("contextConfig.jspFile.warning", jspFile));
                 }
                 jspFile = "/" + jspFile;
             } else {
-                throw new IllegalArgumentException
-                    (sm.getString("contextConfig.jspFile.error", jspFile));
+                throw new IllegalArgumentException(sm.getString("contextConfig.jspFile.error", jspFile));
             }
         }
         servletDef.getParameterMap().put("jspFile", jspFile);
         servletDef.setJspFile(null);
-        for (Map.Entry<String, String> initParam: jspInitParams.entrySet()) {
+        for (Map.Entry<String,String> initParam : jspInitParams.entrySet()) {
             servletDef.addInitParameter(initParam.getKey(), initParam.getValue());
         }
     }
@@ -1833,10 +1756,7 @@ public class ContextConfig implements LifecycleListener {
             WebappServiceLoader<ServletContainerInitializer> loader = new WebappServiceLoader<>(context);
             detectedScis = loader.load(ServletContainerInitializer.class);
         } catch (IOException e) {
-            log.error(sm.getString(
-                    "contextConfig.servletContainerInitializerFail",
-                    context.getName()),
-                e);
+            log.error(sm.getString("contextConfig.servletContainerInitializerFail", context.getName()), e);
             ok = false;
             return;
         }
@@ -1849,12 +1769,9 @@ public class ContextConfig implements LifecycleListener {
                 ht = sci.getClass().getAnnotation(HandlesTypes.class);
             } catch (Exception e) {
                 if (log.isDebugEnabled()) {
-                    log.info(sm.getString("contextConfig.sci.debug",
-                            sci.getClass().getName()),
-                            e);
+                    log.info(sm.getString("contextConfig.sci.debug", sci.getClass().getName()), e);
                 } else {
-                    log.info(sm.getString("contextConfig.sci.info",
-                            sci.getClass().getName()));
+                    log.info(sm.getString("contextConfig.sci.info", sci.getClass().getName()));
                 }
                 continue;
             }
@@ -1879,12 +1796,11 @@ public class ContextConfig implements LifecycleListener {
 
 
     /**
-     * Scan JARs that contain web-fragment.xml files that will be used to
-     * configure this application to see if they also contain static resources.
-     * If static resources are found, add them to the context. Resources are
-     * added in web-fragment.xml priority order.
-     * @param fragments The set of fragments that will be scanned for
-     *  static resources
+     * Scan JARs that contain web-fragment.xml files that will be used to configure this application to see if they also
+     * contain static resources. If static resources are found, add them to the context. Resources are added in
+     * web-fragment.xml priority order.
+     *
+     * @param fragments The set of fragments that will be scanned for static resources
      */
     protected void processResourceJARs(Set<WebXml> fragments) {
         for (WebXml fragment : fragments) {
@@ -1897,8 +1813,7 @@ public class ContextConfig implements LifecycleListener {
                         while (entryName != null) {
                             if (entryName.startsWith("META-INF/resources/")) {
                                 context.getResources().createWebResourceSet(
-                                        WebResourceRoot.ResourceSetType.RESOURCE_JAR,
-                                        "/", url, "/META-INF/resources");
+                                        WebResourceRoot.ResourceSetType.RESOURCE_JAR, "/", url, "/META-INF/resources");
                                 break;
                             }
                             jar.nextEntry();
@@ -1909,22 +1824,20 @@ public class ContextConfig implements LifecycleListener {
                     File file = new File(url.toURI());
                     File resources = new File(file, "META-INF/resources/");
                     if (resources.isDirectory()) {
-                        context.getResources().createWebResourceSet(
-                                WebResourceRoot.ResourceSetType.RESOURCE_JAR,
-                                "/", resources.getAbsolutePath(), null, "/");
+                        context.getResources().createWebResourceSet(WebResourceRoot.ResourceSetType.RESOURCE_JAR, "/",
+                                resources.getAbsolutePath(), null, "/");
                     }
                 }
             } catch (IOException | URISyntaxException e) {
-                log.error(sm.getString("contextConfig.resourceJarFail", url,
-                        context.getName()));
+                log.error(sm.getString("contextConfig.resourceJarFail", url, context.getName()));
             }
         }
     }
 
 
     /**
-     * Identify the default web.xml to be used and obtain an input source for
-     * it.
+     * Identify the default web.xml to be used and obtain an input source for it.
+     *
      * @return an input source to the default web.xml
      */
     protected InputSource getGlobalWebXmlSource() {
@@ -1946,8 +1859,8 @@ public class ContextConfig implements LifecycleListener {
 
 
     /**
-     * Identify the host web.xml to be used and obtain an input source for
-     * it.
+     * Identify the host web.xml to be used and obtain an input source for it.
+     *
      * @return an input source to the default per host web.xml
      */
     protected InputSource getHostWebXmlSource() {
@@ -1960,8 +1873,8 @@ public class ContextConfig implements LifecycleListener {
     }
 
     /**
-     * Identify the application web.xml to be used and obtain an input source
-     * for it.
+     * Identify the application web.xml to be used and obtain an input source for it.
+     *
      * @return an input source to the context web.xml
      */
     protected InputSource getContextWebXmlSource() {
@@ -1975,23 +1888,20 @@ public class ContextConfig implements LifecycleListener {
         ServletContext servletContext = context.getServletContext();
         try {
             if (servletContext != null) {
-                altDDName = (String)servletContext.getAttribute(Globals.ALT_DD_ATTR);
+                altDDName = (String) servletContext.getAttribute(Globals.ALT_DD_ATTR);
                 if (altDDName != null) {
                     try {
                         stream = new FileInputStream(altDDName);
                         url = new File(altDDName).toURI().toURL();
                     } catch (FileNotFoundException e) {
-                        log.error(sm.getString("contextConfig.altDDNotFound",
-                                               altDDName));
+                        log.error(sm.getString("contextConfig.altDDNotFound", altDDName));
                     } catch (MalformedURLException e) {
                         log.error(sm.getString("contextConfig.applicationUrl"));
                     }
                 } else {
-                    stream = servletContext.getResourceAsStream
-                        (Constants.ApplicationWebXml);
+                    stream = servletContext.getResourceAsStream(Constants.ApplicationWebXml);
                     try {
-                        url = servletContext.getResource(
-                                Constants.ApplicationWebXml);
+                        url = servletContext.getResource(Constants.ApplicationWebXml);
                     } catch (MalformedURLException e) {
                         log.error(sm.getString("contextConfig.applicationUrl"));
                     }
@@ -2041,10 +1951,10 @@ public class ContextConfig implements LifecycleListener {
 
     /**
      * Utility method to create an input source from the specified XML file.
-     * @param filename  Name of the file (possibly with one or more leading path
-     *                  segments) to read
-     * @param global true if processing a shared resource, false if processing
-     *        a host based resource
+     *
+     * @param filename Name of the file (possibly with one or more leading path segments) to read
+     * @param global   true if processing a shared resource, false if processing a host based resource
+     *
      * @return the input source
      */
     protected InputSource getWebXmlSource(String filename, boolean global) {
@@ -2091,18 +2001,17 @@ public class ContextConfig implements LifecycleListener {
 
 
     /**
-     * Scan /WEB-INF/lib for JARs and for each one found add it and any
-     * /META-INF/web-fragment.xml to the resulting Map. web-fragment.xml files
-     * will be parsed before being added to the map. Every JAR will be added and
-     * <code>null</code> will be used if no web-fragment.xml was found. Any JARs
-     * known not contain fragments will be skipped.
+     * Scan /WEB-INF/lib for JARs and for each one found add it and any /META-INF/web-fragment.xml to the resulting Map.
+     * web-fragment.xml files will be parsed before being added to the map. Every JAR will be added and
+     * <code>null</code> will be used if no web-fragment.xml was found. Any JARs known not contain fragments will be
+     * skipped.
      *
-     * @param application The main web.xml metadata
+     * @param application  The main web.xml metadata
      * @param webXmlParser The parser to use to process the web.xml file
+     *
      * @return A map of JAR name to processed web fragment (if any)
      */
-    protected Map<String,WebXml> processJarsForWebFragments(WebXml application,
-            WebXmlParser webXmlParser) {
+    protected Map<String,WebXml> processJarsForWebFragments(WebXml application, WebXmlParser webXmlParser) {
 
         JarScanner jarScanner = context.getJarScanner();
         boolean delegate = false;
@@ -2111,18 +2020,15 @@ public class ContextConfig implements LifecycleListener {
         }
         boolean parseRequired = true;
         Set<String> absoluteOrder = application.getAbsoluteOrdering();
-        if (absoluteOrder != null && absoluteOrder.isEmpty() &&
-                !context.getXmlValidation()) {
+        if (absoluteOrder != null && absoluteOrder.isEmpty() && !context.getXmlValidation()) {
             // Skip parsing when there is an empty absolute ordering and
             // validation is not enabled
             parseRequired = false;
         }
 
-        FragmentJarScannerCallback callback =
-                new FragmentJarScannerCallback(webXmlParser, delegate, parseRequired);
+        FragmentJarScannerCallback callback = new FragmentJarScannerCallback(webXmlParser, delegate, parseRequired);
 
-        jarScanner.scan(JarScanType.PLUGGABILITY,
-                context.getServletContext(), callback);
+        jarScanner.scan(JarScanType.PLUGGABILITY, context.getServletContext(), callback);
 
         if (!callback.isOk()) {
             ok = false;
@@ -2130,8 +2036,8 @@ public class ContextConfig implements LifecycleListener {
         return callback.getFragments();
     }
 
-    protected void processAnnotations(Set<WebXml> fragments,
-            boolean handlesTypesOnly, Map<String, JavaClassCacheEntry> javaClassCache) {
+    protected void processAnnotations(Set<WebXml> fragments, boolean handlesTypesOnly,
+            Map<String,JavaClassCacheEntry> javaClassCache) {
 
         if (context.getParallelAnnotationScanning()) {
             processAnnotationsInParallel(fragments, handlesTypesOnly, javaClassCache);
@@ -2142,16 +2048,16 @@ public class ContextConfig implements LifecycleListener {
         }
     }
 
-    private void scanWebXmlFragment(boolean handlesTypesOnly, WebXml fragment, Map<String, JavaClassCacheEntry> javaClassCache) {
+    private void scanWebXmlFragment(boolean handlesTypesOnly, WebXml fragment,
+            Map<String,JavaClassCacheEntry> javaClassCache) {
 
         // Only need to scan for @HandlesTypes matches if any of the
         // following are true:
         // - it has already been determined only @HandlesTypes is required
-        //   (e.g. main web.xml has metadata-complete="true"
+        // (e.g. main web.xml has metadata-complete="true"
         // - this fragment is for a container JAR (Servlet 3.1 section 8.1)
         // - this fragment has metadata-complete="true"
-        boolean htOnly = handlesTypesOnly || !fragment.getWebappJar() ||
-                fragment.isMetadataComplete();
+        boolean htOnly = handlesTypesOnly || !fragment.getWebappJar() || fragment.isMetadataComplete();
 
         WebXml annotations = new WebXml();
         // no impact on distributable
@@ -2165,15 +2071,16 @@ public class ContextConfig implements LifecycleListener {
     }
 
     /**
-     * Executable task to scan a segment for annotations. Each task does the
-     * same work as the for loop inside processAnnotations();
+     * Executable task to scan a segment for annotations. Each task does the same work as the for loop inside
+     * processAnnotations();
      */
     private class AnnotationScanTask implements Runnable {
         private final WebXml fragment;
         private final boolean handlesTypesOnly;
-        private Map<String, JavaClassCacheEntry> javaClassCache;
+        private Map<String,JavaClassCacheEntry> javaClassCache;
 
-        private AnnotationScanTask(WebXml fragment, boolean handlesTypesOnly, Map<String, JavaClassCacheEntry> javaClassCache) {
+        private AnnotationScanTask(WebXml fragment, boolean handlesTypesOnly,
+                Map<String,JavaClassCacheEntry> javaClassCache) {
             this.fragment = fragment;
             this.handlesTypesOnly = handlesTypesOnly;
             this.javaClassCache = javaClassCache;
@@ -2187,15 +2094,15 @@ public class ContextConfig implements LifecycleListener {
     }
 
     /**
-     * Parallelized version of processAnnotationsInParallel(). Constructs tasks,
-     * submits them as they're created, then waits for completion.
+     * Parallelized version of processAnnotationsInParallel(). Constructs tasks, submits them as they're created, then
+     * waits for completion.
      *
      * @param fragments        Set of parallelizable scans
      * @param handlesTypesOnly Important parameter for the underlying scan
-     * @param javaClassCache The class cache
+     * @param javaClassCache   The class cache
      */
     protected void processAnnotationsInParallel(Set<WebXml> fragments, boolean handlesTypesOnly,
-                                                Map<String, JavaClassCacheEntry> javaClassCache) {
+            Map<String,JavaClassCacheEntry> javaClassCache) {
         Server s = getServer();
         ExecutorService pool = (s == null) ? null : s.getUtilityExecutor();
         if (pool != null) {
@@ -2219,38 +2126,31 @@ public class ContextConfig implements LifecycleListener {
         }
     }
 
-    protected void processAnnotationsWebResource(WebResource webResource,
-            WebXml fragment, boolean handlesTypesOnly,
+    protected void processAnnotationsWebResource(WebResource webResource, WebXml fragment, boolean handlesTypesOnly,
             Map<String,JavaClassCacheEntry> javaClassCache) {
 
         if (webResource.isDirectory()) {
-            WebResource[] webResources =
-                    webResource.getWebResourceRoot().listResources(
-                            webResource.getWebappPath());
+            WebResource[] webResources = webResource.getWebResourceRoot().listResources(webResource.getWebappPath());
             if (webResources.length > 0) {
                 if (log.isDebugEnabled()) {
-                    log.debug(sm.getString(
-                            "contextConfig.processAnnotationsWebDir.debug",
-                            webResource.getURL()));
+                    log.debug(sm.getString("contextConfig.processAnnotationsWebDir.debug", webResource.getURL()));
                 }
                 for (WebResource r : webResources) {
                     processAnnotationsWebResource(r, fragment, handlesTypesOnly, javaClassCache);
                 }
             }
-        } else if (webResource.isFile() &&
-                webResource.getName().endsWith(".class")) {
+        } else if (webResource.isFile() && webResource.getName().endsWith(".class")) {
             try (InputStream is = webResource.getInputStream()) {
                 processAnnotationsStream(is, fragment, handlesTypesOnly, javaClassCache);
             } catch (IOException | ClassFormatException e) {
-                log.error(sm.getString("contextConfig.inputStreamWebResource",
-                        webResource.getWebappPath()),e);
+                log.error(sm.getString("contextConfig.inputStreamWebResource", webResource.getWebappPath()), e);
             }
         }
     }
 
 
-    protected void processAnnotationsUrl(URL url, WebXml fragment,
-            boolean handlesTypesOnly, Map<String,JavaClassCacheEntry> javaClassCache) {
+    protected void processAnnotationsUrl(URL url, WebXml fragment, boolean handlesTypesOnly,
+            Map<String,JavaClassCacheEntry> javaClassCache) {
         if (url == null) {
             // Nothing to do.
             return;
@@ -2258,26 +2158,23 @@ public class ContextConfig implements LifecycleListener {
             processAnnotationsJar(url, fragment, handlesTypesOnly, javaClassCache);
         } else if ("file".equals(url.getProtocol())) {
             try {
-                processAnnotationsFile(
-                        new File(url.toURI()), fragment, handlesTypesOnly, javaClassCache);
+                processAnnotationsFile(new File(url.toURI()), fragment, handlesTypesOnly, javaClassCache);
             } catch (URISyntaxException e) {
                 log.error(sm.getString("contextConfig.fileUrl", url), e);
             }
         } else {
-            log.error(sm.getString("contextConfig.unknownUrlProtocol",
-                    url.getProtocol(), url));
+            log.error(sm.getString("contextConfig.unknownUrlProtocol", url.getProtocol(), url));
         }
 
     }
 
 
-    protected void processAnnotationsJar(URL url, WebXml fragment,
-            boolean handlesTypesOnly, Map<String,JavaClassCacheEntry> javaClassCache) {
+    protected void processAnnotationsJar(URL url, WebXml fragment, boolean handlesTypesOnly,
+            Map<String,JavaClassCacheEntry> javaClassCache) {
 
         try (Jar jar = JarFactory.newInstance(url)) {
             if (log.isDebugEnabled()) {
-                log.debug(sm.getString(
-                        "contextConfig.processAnnotationsJar.debug", url));
+                log.debug(sm.getString("contextConfig.processAnnotationsJar.debug", url));
             }
 
             jar.nextEntry();
@@ -2287,8 +2184,7 @@ public class ContextConfig implements LifecycleListener {
                     try (InputStream is = jar.getEntryInputStream()) {
                         processAnnotationsStream(is, fragment, handlesTypesOnly, javaClassCache);
                     } catch (IOException | ClassFormatException e) {
-                        log.error(sm.getString("contextConfig.inputStreamJar",
-                                entryName, url),e);
+                        log.error(sm.getString("contextConfig.inputStreamJar", entryName, url), e);
                     }
                 }
                 jar.nextEntry();
@@ -2300,36 +2196,32 @@ public class ContextConfig implements LifecycleListener {
     }
 
 
-    protected void processAnnotationsFile(File file, WebXml fragment,
-            boolean handlesTypesOnly, Map<String,JavaClassCacheEntry> javaClassCache) {
+    protected void processAnnotationsFile(File file, WebXml fragment, boolean handlesTypesOnly,
+            Map<String,JavaClassCacheEntry> javaClassCache) {
 
         if (file.isDirectory()) {
             // Returns null if directory is not readable
             String[] dirs = file.list();
             if (dirs != null) {
                 if (log.isDebugEnabled()) {
-                    log.debug(sm.getString(
-                            "contextConfig.processAnnotationsDir.debug", file));
+                    log.debug(sm.getString("contextConfig.processAnnotationsDir.debug", file));
                 }
                 for (String dir : dirs) {
-                    processAnnotationsFile(
-                            new File(file,dir), fragment, handlesTypesOnly, javaClassCache);
+                    processAnnotationsFile(new File(file, dir), fragment, handlesTypesOnly, javaClassCache);
                 }
             }
         } else if (file.getName().endsWith(".class") && file.canRead()) {
             try (FileInputStream fis = new FileInputStream(file)) {
                 processAnnotationsStream(fis, fragment, handlesTypesOnly, javaClassCache);
             } catch (IOException | ClassFormatException e) {
-                log.error(sm.getString("contextConfig.inputStreamFile",
-                        file.getAbsolutePath()),e);
+                log.error(sm.getString("contextConfig.inputStreamFile", file.getAbsolutePath()), e);
             }
         }
     }
 
 
-    protected void processAnnotationsStream(InputStream is, WebXml fragment,
-            boolean handlesTypesOnly, Map<String,JavaClassCacheEntry> javaClassCache)
-            throws ClassFormatException, IOException {
+    protected void processAnnotationsStream(InputStream is, WebXml fragment, boolean handlesTypesOnly,
+            Map<String,JavaClassCacheEntry> javaClassCache) throws ClassFormatException, IOException {
 
         ClassParser parser = new ClassParser(is);
         JavaClass clazz = parser.parse();
@@ -2351,9 +2243,9 @@ public class ContextConfig implements LifecycleListener {
                 String type = ae.getAnnotationType();
                 if ("Ljakarta/servlet/annotation/WebServlet;".equals(type)) {
                     processAnnotationWebServlet(className, ae, fragment);
-                }else if ("Ljakarta/servlet/annotation/WebFilter;".equals(type)) {
+                } else if ("Ljakarta/servlet/annotation/WebFilter;".equals(type)) {
                     processAnnotationWebFilter(className, ae, fragment);
-                }else if ("Ljakarta/servlet/annotation/WebListener;".equals(type)) {
+                } else if ("Ljakarta/servlet/annotation/WebListener;".equals(type)) {
                     fragment.addListener(className);
                 } else {
                     // Unknown annotation - ignore
@@ -2364,22 +2256,20 @@ public class ContextConfig implements LifecycleListener {
 
 
     /**
-     * For classes packaged with the web application, the class and each
-     * super class needs to be checked for a match with {@link HandlesTypes} or
-     * for an annotation that matches {@link HandlesTypes}.
-     * @param javaClass the class to check
+     * For classes packaged with the web application, the class and each super class needs to be checked for a match
+     * with {@link HandlesTypes} or for an annotation that matches {@link HandlesTypes}.
+     *
+     * @param javaClass      the class to check
      * @param javaClassCache a class cache
      */
-    protected void checkHandlesTypes(JavaClass javaClass,
-            Map<String,JavaClassCacheEntry> javaClassCache) {
+    protected void checkHandlesTypes(JavaClass javaClass, Map<String,JavaClassCacheEntry> javaClassCache) {
 
         // Skip this if we can
         if (typeInitializerMap.size() == 0) {
             return;
         }
 
-        if ((javaClass.getAccessFlags() &
-                org.apache.tomcat.util.bcel.Const.ACC_ANNOTATION) != 0) {
+        if ((javaClass.getAccessFlags() & org.apache.tomcat.util.bcel.Const.ACC_ANNOTATION) != 0) {
             // Skip annotations.
             return;
         }
@@ -2395,10 +2285,8 @@ public class ContextConfig implements LifecycleListener {
                 try {
                     populateSCIsForCacheEntry(entry, javaClassCache);
                 } catch (StackOverflowError soe) {
-                    throw new IllegalStateException(sm.getString(
-                            "contextConfig.annotationsStackOverflow",
-                            context.getName(),
-                            classHierarchyToString(className, entry, javaClassCache)));
+                    throw new IllegalStateException(sm.getString("contextConfig.annotationsStackOverflow",
+                            context.getName(), classHierarchyToString(className, entry, javaClassCache)));
                 }
             }
             if (!entry.getSciSet().isEmpty()) {
@@ -2419,16 +2307,13 @@ public class ContextConfig implements LifecycleListener {
         if (handlesTypesAnnotations) {
             AnnotationEntry[] annotationEntries = javaClass.getAllAnnotationEntries();
             if (annotationEntries != null) {
-                for (Map.Entry<Class<?>, Set<ServletContainerInitializer>> entry :
-                        typeInitializerMap.entrySet()) {
+                for (Map.Entry<Class<?>,Set<ServletContainerInitializer>> entry : typeInitializerMap.entrySet()) {
                     if (entry.getKey().isAnnotation()) {
                         String entryClassName = entry.getKey().getName();
                         for (AnnotationEntry annotationEntry : annotationEntries) {
-                            if (entryClassName.equals(
-                                    getClassName(annotationEntry.getAnnotationType()))) {
+                            if (entryClassName.equals(getClassName(annotationEntry.getAnnotationType()))) {
                                 if (clazz == null) {
-                                    clazz = Introspection.loadClass(
-                                            context, className);
+                                    clazz = Introspection.loadClass(context, className);
                                     if (clazz == null) {
                                         // Can't load the class so no point
                                         // continuing
@@ -2448,8 +2333,8 @@ public class ContextConfig implements LifecycleListener {
     }
 
 
-    private String classHierarchyToString(String className,
-            JavaClassCacheEntry entry, Map<String,JavaClassCacheEntry> javaClassCache) {
+    private String classHierarchyToString(String className, JavaClassCacheEntry entry,
+            Map<String,JavaClassCacheEntry> javaClassCache) {
         JavaClassCacheEntry start = entry;
         StringBuilder msg = new StringBuilder(className);
         msg.append("->");
@@ -2462,7 +2347,7 @@ public class ContextConfig implements LifecycleListener {
             msg.append(parentName);
             msg.append("->");
 
-            count ++;
+            count++;
             parentName = parent.getSuperclassName();
             parent = javaClassCache.get(parentName);
         }
@@ -2488,8 +2373,7 @@ public class ContextConfig implements LifecycleListener {
         }
     }
 
-    private void populateJavaClassCache(String className,
-            Map<String,JavaClassCacheEntry> javaClassCache) {
+    private void populateJavaClassCache(String className, Map<String,JavaClassCacheEntry> javaClassCache) {
         if (!javaClassCache.containsKey(className)) {
             String name = className.replace('.', '/') + ".class";
             try (InputStream is = context.getLoader().getClassLoader().getResourceAsStream(name)) {
@@ -2500,8 +2384,7 @@ public class ContextConfig implements LifecycleListener {
                 JavaClass clazz = parser.parse();
                 populateJavaClassCache(clazz.getClassName(), clazz, javaClassCache);
             } catch (ClassFormatException | IOException e) {
-                log.debug(sm.getString("contextConfig.invalidSciHandlesTypes",
-                        className), e);
+                log.debug(sm.getString("contextConfig.invalidSciHandlesTypes", className), e);
             }
         }
     }
@@ -2512,8 +2395,7 @@ public class ContextConfig implements LifecycleListener {
 
         // Super class
         String superClassName = cacheEntry.getSuperclassName();
-        JavaClassCacheEntry superClassCacheEntry =
-                javaClassCache.get(superClassName);
+        JavaClassCacheEntry superClassCacheEntry = javaClassCache.get(superClassName);
 
         // Avoid an infinite loop with java.lang.Object
         if (cacheEntry.equals(superClassCacheEntry)) {
@@ -2532,8 +2414,7 @@ public class ContextConfig implements LifecycleListener {
 
         // Interfaces
         for (String interfaceName : cacheEntry.getInterfaceNames()) {
-            JavaClassCacheEntry interfaceEntry =
-                    javaClassCache.get(interfaceName);
+            JavaClassCacheEntry interfaceEntry = javaClassCache.get(interfaceName);
             // A null could mean that the class not present in application or
             // that there is nothing of interest. Either way, nothing to do here
             // so move along
@@ -2550,8 +2431,7 @@ public class ContextConfig implements LifecycleListener {
     }
 
     private Set<ServletContainerInitializer> getSCIsForClass(String className) {
-        for (Map.Entry<Class<?>, Set<ServletContainerInitializer>> entry :
-                typeInitializerMap.entrySet()) {
+        for (Map.Entry<Class<?>,Set<ServletContainerInitializer>> entry : typeInitializerMap.entrySet()) {
             Class<?> clazz = entry.getKey();
             if (!clazz.isAnnotation()) {
                 if (clazz.getName().equals(className)) {
@@ -2568,12 +2448,10 @@ public class ContextConfig implements LifecycleListener {
         }
 
         // Assume starts with L, ends with ; and uses / rather than .
-        return internalForm.substring(1,
-                internalForm.length() - 1).replace('/', '.');
+        return internalForm.substring(1, internalForm.length() - 1).replace('/', '.');
     }
 
-    protected void processAnnotationWebServlet(String className,
-            AnnotationEntry ae, WebXml fragment) {
+    protected void processAnnotationWebServlet(String className, AnnotationEntry ae, WebXml fragment) {
         String servletName = null;
         // must search for name s. Spec Servlet API 3.0 - 8.2.3.3.n.ii page 81
         List<ElementValuePair> evps = ae.getElementValuePairs();
@@ -2608,8 +2486,8 @@ public class ContextConfig implements LifecycleListener {
             String name = evp.getNameString();
             if ("value".equals(name) || "urlPatterns".equals(name)) {
                 if (urlPatternsSet) {
-                    throw new IllegalArgumentException(sm.getString(
-                            "contextConfig.urlPatternValue", "WebServlet", className));
+                    throw new IllegalArgumentException(
+                            sm.getString("contextConfig.urlPatternValue", "WebServlet", className));
                 }
                 urlPatternsSet = true;
                 urlPatterns = processAnnotationsStringArray(evp.getValue());
@@ -2631,32 +2509,24 @@ public class ContextConfig implements LifecycleListener {
                 }
             } else if ("asyncSupported".equals(name)) {
                 if (servletDef.getAsyncSupported() == null) {
-                    servletDef.setAsyncSupported(evp.getValue()
-                            .stringifyValue());
+                    servletDef.setAsyncSupported(evp.getValue().stringifyValue());
                 }
             } else if ("loadOnStartup".equals(name)) {
                 if (servletDef.getLoadOnStartup() == null) {
-                    servletDef
-                            .setLoadOnStartup(evp.getValue().stringifyValue());
+                    servletDef.setLoadOnStartup(evp.getValue().stringifyValue());
                 }
             } else if ("initParams".equals(name)) {
-                Map<String, String> initParams = processAnnotationWebInitParams(evp
-                        .getValue());
+                Map<String,String> initParams = processAnnotationWebInitParams(evp.getValue());
                 if (isWebXMLservletDef) {
-                    Map<String, String> webXMLInitParams = servletDef
-                            .getParameterMap();
-                    for (Map.Entry<String, String> entry : initParams
-                            .entrySet()) {
+                    Map<String,String> webXMLInitParams = servletDef.getParameterMap();
+                    for (Map.Entry<String,String> entry : initParams.entrySet()) {
                         if (webXMLInitParams.get(entry.getKey()) == null) {
-                            servletDef.addInitParameter(entry.getKey(), entry
-                                    .getValue());
+                            servletDef.addInitParameter(entry.getKey(), entry.getValue());
                         }
                     }
                 } else {
-                    for (Map.Entry<String, String> entry : initParams
-                            .entrySet()) {
-                        servletDef.addInitParameter(entry.getKey(), entry
-                                .getValue());
+                    for (Map.Entry<String,String> entry : initParams.entrySet()) {
+                        servletDef.addInitParameter(entry.getKey(), entry.getValue());
                     }
                 }
             }
@@ -2675,15 +2545,14 @@ public class ContextConfig implements LifecycleListener {
     }
 
     /**
-     * process filter annotation and merge with existing one!
-     * FIXME: refactoring method too long and has redundant subroutines with
-     *        processAnnotationWebServlet!
+     * process filter annotation and merge with existing one! FIXME: refactoring method too long and has redundant
+     * subroutines with processAnnotationWebServlet!
+     *
      * @param className The filter class name
-     * @param ae The filter annotation
-     * @param fragment The corresponding fragment
+     * @param ae        The filter annotation
+     * @param fragment  The corresponding fragment
      */
-    protected void processAnnotationWebFilter(String className,
-            AnnotationEntry ae, WebXml fragment) {
+    protected void processAnnotationWebFilter(String className, AnnotationEntry ae, WebXml fragment) {
         String filterName = null;
         // must search for name s. Spec Servlet API 3.0 - 8.2.3.3.n.ii page 81
         List<ElementValuePair> evps = ae.getElementValuePairs();
@@ -2720,8 +2589,8 @@ public class ContextConfig implements LifecycleListener {
             String name = evp.getNameString();
             if ("value".equals(name) || "urlPatterns".equals(name)) {
                 if (urlPatternsSet) {
-                    throw new IllegalArgumentException(sm.getString(
-                            "contextConfig.urlPatternValue", "WebFilter", className));
+                    throw new IllegalArgumentException(
+                            sm.getString("contextConfig.urlPatternValue", "WebFilter", className));
                 }
                 urlPatterns = processAnnotationsStringArray(evp.getValue());
                 urlPatternsSet = urlPatterns.length > 0;
@@ -2730,15 +2599,13 @@ public class ContextConfig implements LifecycleListener {
                     filterMap.addURLPattern(urlPattern);
                 }
             } else if ("servletNames".equals(name)) {
-                String[] servletNames = processAnnotationsStringArray(evp
-                        .getValue());
+                String[] servletNames = processAnnotationsStringArray(evp.getValue());
                 servletNamesSet = servletNames.length > 0;
                 for (String servletName : servletNames) {
                     filterMap.addServletName(servletName);
                 }
             } else if ("dispatcherTypes".equals(name)) {
-                String[] dispatcherTypes = processAnnotationsStringArray(evp
-                        .getValue());
+                String[] dispatcherTypes = processAnnotationsStringArray(evp.getValue());
                 dispatchTypesSet = dispatcherTypes.length > 0;
                 for (String dispatcherType : dispatcherTypes) {
                     filterMap.setDispatcher(dispatcherType);
@@ -2761,27 +2628,20 @@ public class ContextConfig implements LifecycleListener {
                 }
             } else if ("asyncSupported".equals(name)) {
                 if (filterDef.getAsyncSupported() == null) {
-                    filterDef
-                            .setAsyncSupported(evp.getValue().stringifyValue());
+                    filterDef.setAsyncSupported(evp.getValue().stringifyValue());
                 }
             } else if ("initParams".equals(name)) {
-                Map<String, String> initParams = processAnnotationWebInitParams(evp
-                        .getValue());
+                Map<String,String> initParams = processAnnotationWebInitParams(evp.getValue());
                 if (isWebXMLfilterDef) {
-                    Map<String, String> webXMLInitParams = filterDef
-                            .getParameterMap();
-                    for (Map.Entry<String, String> entry : initParams
-                            .entrySet()) {
+                    Map<String,String> webXMLInitParams = filterDef.getParameterMap();
+                    for (Map.Entry<String,String> entry : initParams.entrySet()) {
                         if (webXMLInitParams.get(entry.getKey()) == null) {
-                            filterDef.addInitParameter(entry.getKey(), entry
-                                    .getValue());
+                            filterDef.addInitParameter(entry.getKey(), entry.getValue());
                         }
                     }
                 } else {
-                    for (Map.Entry<String, String> entry : initParams
-                            .entrySet()) {
-                        filterDef.addInitParameter(entry.getKey(), entry
-                                .getValue());
+                    for (Map.Entry<String,String> entry : initParams.entrySet()) {
+                        filterDef.addInitParameter(entry.getKey(), entry.getValue());
                     }
                 }
 
@@ -2805,16 +2665,14 @@ public class ContextConfig implements LifecycleListener {
             }
             if (descMap != null) {
                 String[] urlsPatterns = descMap.getURLPatterns();
-                if (urlPatternsSet
-                        && (urlsPatterns == null || urlsPatterns.length == 0)) {
+                if (urlPatternsSet && (urlsPatterns == null || urlsPatterns.length == 0)) {
                     for (String urlPattern : filterMap.getURLPatterns()) {
                         // % decoded (if required) using UTF-8
                         descMap.addURLPattern(urlPattern);
                     }
                 }
                 String[] dispatcherNames = descMap.getDispatcherNames();
-                if (dispatchTypesSet
-                        && (dispatcherNames == null || dispatcherNames.length == 0)) {
+                if (dispatchTypesSet && (dispatcherNames == null || dispatcherNames.length == 0)) {
                     for (String dis : filterMap.getDispatcherNames()) {
                         descMap.setDispatcher(dis);
                     }
@@ -2827,8 +2685,7 @@ public class ContextConfig implements LifecycleListener {
     protected String[] processAnnotationsStringArray(ElementValue ev) {
         List<String> values = new ArrayList<>();
         if (ev instanceof ArrayElementValue) {
-            ElementValue[] arrayValues =
-                ((ArrayElementValue) ev).getElementValuesArray();
+            ElementValue[] arrayValues = ((ArrayElementValue) ev).getElementValuesArray();
             for (ElementValue value : arrayValues) {
                 values.add(value.stringifyValue());
             }
@@ -2838,16 +2695,14 @@ public class ContextConfig implements LifecycleListener {
         return values.toArray(new String[0]);
     }
 
-    protected Map<String,String> processAnnotationWebInitParams(
-            ElementValue ev) {
-        Map<String, String> result = new HashMap<>();
+    protected Map<String,String> processAnnotationWebInitParams(ElementValue ev) {
+        Map<String,String> result = new HashMap<>();
         if (ev instanceof ArrayElementValue) {
-            ElementValue[] arrayValues =
-                ((ArrayElementValue) ev).getElementValuesArray();
+            ElementValue[] arrayValues = ((ArrayElementValue) ev).getElementValuesArray();
             for (ElementValue value : arrayValues) {
                 if (value instanceof AnnotationElementValue) {
-                    List<ElementValuePair> evps = ((AnnotationElementValue) value)
-                            .getAnnotationEntry().getElementValuePairs();
+                    List<ElementValuePair> evps =
+                            ((AnnotationElementValue) value).getAnnotationEntry().getElementValuePairs();
                     String initParamName = null;
                     String initParamValue = null;
                     for (ElementValuePair evp : evps) {
@@ -2871,8 +2726,7 @@ public class ContextConfig implements LifecycleListener {
         private final long globalTimeStamp;
         private final long hostTimeStamp;
 
-        DefaultWebXmlCacheEntry(WebXml webXml, long globalTimeStamp,
-                long hostTimeStamp) {
+        DefaultWebXmlCacheEntry(WebXml webXml, long globalTimeStamp, long hostTimeStamp) {
             this.webXml = webXml;
             this.globalTimeStamp = globalTimeStamp;
             this.hostTimeStamp = hostTimeStamp;
diff --git a/java/org/apache/catalina/startup/ContextRuleSet.java b/java/org/apache/catalina/startup/ContextRuleSet.java
index 2c69b8175a..9fddac53e2 100644
--- a/java/org/apache/catalina/startup/ContextRuleSet.java
+++ b/java/org/apache/catalina/startup/ContextRuleSet.java
@@ -20,8 +20,7 @@ import org.apache.tomcat.util.digester.Digester;
 import org.apache.tomcat.util.digester.RuleSet;
 
 /**
- * <strong>RuleSet</strong> for processing the contents of a
- * Context definition element.
+ * <strong>RuleSet</strong> for processing the contents of a Context definition element.
  *
  * @author Craig R. McClanahan
  */
@@ -44,8 +43,7 @@ public class ContextRuleSet implements RuleSet {
     // ------------------------------------------------------------ Constructor
 
     /**
-     * Construct an instance of this <code>RuleSet</code> with the default
-     * matching pattern prefix.
+     * Construct an instance of this <code>RuleSet</code> with the default matching pattern prefix.
      */
     public ContextRuleSet() {
         this("");
@@ -53,11 +51,9 @@ public class ContextRuleSet implements RuleSet {
 
 
     /**
-     * Construct an instance of this <code>RuleSet</code> with the specified
-     * matching pattern prefix.
+     * Construct an instance of this <code>RuleSet</code> with the specified matching pattern prefix.
      *
-     * @param prefix Prefix for matching pattern rules (including the
-     *  trailing slash character)
+     * @param prefix Prefix for matching pattern rules (including the trailing slash character)
      */
     public ContextRuleSet(String prefix) {
         this(prefix, true);
@@ -65,13 +61,10 @@ public class ContextRuleSet implements RuleSet {
 
 
     /**
-     * Construct an instance of this <code>RuleSet</code> with the specified
-     * matching pattern prefix.
+     * Construct an instance of this <code>RuleSet</code> with the specified matching pattern prefix.
      *
-     * @param prefix Prefix for matching pattern rules (including the
-     *  trailing slash character)
-     * @param create <code>true</code> if the main context instance should be
-     *  created
+     * @param prefix Prefix for matching pattern rules (including the trailing slash character)
+     * @param create <code>true</code> if the main context instance should be created
      */
     public ContextRuleSet(String prefix, boolean create) {
         this.prefix = prefix;
@@ -82,174 +75,128 @@ public class ContextRuleSet implements RuleSet {
     // --------------------------------------------------------- Public Methods
 
     /**
-     * <p>Add the set of Rule instances defined in this RuleSet to the
-     * specified <code>Digester</code> instance, associating them with
-     * our namespace URI (if any).  This method should only be called
-     * by a Digester instance.</p>
+     * <p>
+     * Add the set of Rule instances defined in this RuleSet to the specified <code>Digester</code> instance,
+     * associating them with our namespace URI (if any). This method should only be called by a Digester instance.
+     * </p>
      *
-     * @param digester Digester instance to which the new Rule instances
-     *  should be added.
+     * @param digester Digester instance to which the new Rule instances should be added.
      */
     @Override
     public void addRuleInstances(Digester digester) {
 
         if (create) {
-            digester.addObjectCreate(prefix + "Context",
-                    "org.apache.catalina.core.StandardContext", "className");
+            digester.addObjectCreate(prefix + "Context", "org.apache.catalina.core.StandardContext", "className");
             digester.addSetProperties(prefix + "Context");
         } else {
-            digester.addSetProperties(prefix + "Context", new String[]{"path", "docBase"});
+            digester.addSetProperties(prefix + "Context", new String[] { "path", "docBase" });
         }
 
         if (create) {
             digester.addRule(prefix + "Context",
-                             new LifecycleListenerRule
-                                 ("org.apache.catalina.startup.ContextConfig",
-                                  "configClass"));
-            digester.addSetNext(prefix + "Context",
-                                "addChild",
-                                "org.apache.catalina.Container");
+                    new LifecycleListenerRule("org.apache.catalina.startup.ContextConfig", "configClass"));
+            digester.addSetNext(prefix + "Context", "addChild", "org.apache.catalina.Container");
         }
 
-        digester.addObjectCreate(prefix + "Context/Listener",
-                                 null, // MUST be specified in the element
-                                 "className");
+        digester.addObjectCreate(prefix + "Context/Listener", null, // MUST be specified in the element
+                "className");
         digester.addSetProperties(prefix + "Context/Listener");
-        digester.addSetNext(prefix + "Context/Listener",
-                            "addLifecycleListener",
-                            "org.apache.catalina.LifecycleListener");
+        digester.addSetNext(prefix + "Context/Listener", "addLifecycleListener",
+                "org.apache.catalina.LifecycleListener");
 
-        digester.addObjectCreate(prefix + "Context/Loader",
-                            "org.apache.catalina.loader.WebappLoader",
-                            "className");
+        digester.addObjectCreate(prefix + "Context/Loader", "org.apache.catalina.loader.WebappLoader", "className");
         digester.addSetProperties(prefix + "Context/Loader");
-        digester.addSetNext(prefix + "Context/Loader",
-                            "setLoader",
-                            "org.apache.catalina.Loader");
+        digester.addSetNext(prefix + "Context/Loader", "setLoader", "org.apache.catalina.Loader");
 
-        digester.addObjectCreate(prefix + "Context/Manager",
-                                 "org.apache.catalina.session.StandardManager",
-                                 "className");
+        digester.addObjectCreate(prefix + "Context/Manager", "org.apache.catalina.session.StandardManager",
+                "className");
         digester.addSetProperties(prefix + "Context/Manager");
-        digester.addSetNext(prefix + "Context/Manager",
-                            "setManager",
-                            "org.apache.catalina.Manager");
+        digester.addSetNext(prefix + "Context/Manager", "setManager", "org.apache.catalina.Manager");
 
-        digester.addObjectCreate(prefix + "Context/Manager/Store",
-                                 null, // MUST be specified in the element
-                                 "className");
+        digester.addObjectCreate(prefix + "Context/Manager/Store", null, // MUST be specified in the element
+                "className");
         digester.addSetProperties(prefix + "Context/Manager/Store");
-        digester.addSetNext(prefix + "Context/Manager/Store",
-                            "setStore",
-                            "org.apache.catalina.Store");
+        digester.addSetNext(prefix + "Context/Manager/Store", "setStore", "org.apache.catalina.Store");
 
         digester.addObjectCreate(prefix + "Context/Manager/SessionIdGenerator",
-                                 "org.apache.catalina.util.StandardSessionIdGenerator",
-                                 "className");
+                "org.apache.catalina.util.StandardSessionIdGenerator", "className");
         digester.addSetProperties(prefix + "Context/Manager/SessionIdGenerator");
-        digester.addSetNext(prefix + "Context/Manager/SessionIdGenerator",
-                            "setSessionIdGenerator",
-                            "org.apache.catalina.SessionIdGenerator");
+        digester.addSetNext(prefix + "Context/Manager/SessionIdGenerator", "setSessionIdGenerator",
+                "org.apache.catalina.SessionIdGenerator");
 
         digester.addObjectCreate(prefix + "Context/Parameter",
-                                 "org.apache.tomcat.util.descriptor.web.ApplicationParameter");
+                "org.apache.tomcat.util.descriptor.web.ApplicationParameter");
         digester.addSetProperties(prefix + "Context/Parameter");
-        digester.addSetNext(prefix + "Context/Parameter",
-                            "addApplicationParameter",
-                            "org.apache.tomcat.util.descriptor.web.ApplicationParameter");
+        digester.addSetNext(prefix + "Context/Parameter", "addApplicationParameter",
+                "org.apache.tomcat.util.descriptor.web.ApplicationParameter");
 
         digester.addRuleSet(new RealmRuleSet(prefix + "Context/"));
 
-        digester.addObjectCreate(prefix + "Context/Resources",
-                                 "org.apache.catalina.webresources.StandardRoot",
-                                 "className");
+        digester.addObjectCreate(prefix + "Context/Resources", "org.apache.catalina.webresources.StandardRoot",
+                "className");
         digester.addSetProperties(prefix + "Context/Resources");
-        digester.addSetNext(prefix + "Context/Resources",
-                            "setResources",
-                            "org.apache.catalina.WebResourceRoot");
+        digester.addSetNext(prefix + "Context/Resources", "setResources", "org.apache.catalina.WebResourceRoot");
 
-        digester.addObjectCreate(prefix + "Context/Resources/CacheStrategy",
-                                 null, // MUST be specified in the element
-                                 "className");
+        digester.addObjectCreate(prefix + "Context/Resources/CacheStrategy", null, // MUST be specified in the element
+                "className");
         digester.addSetProperties(prefix + "Context/Resources/CacheStrategy");
-        digester.addSetNext(prefix + "Context/Resources/CacheStrategy",
-                            "setCacheStrategy",
-                            "org.apache.catalina.WebResourceRoot$CacheStrategy");
+        digester.addSetNext(prefix + "Context/Resources/CacheStrategy", "setCacheStrategy",
+                "org.apache.catalina.WebResourceRoot$CacheStrategy");
 
-        digester.addObjectCreate(prefix + "Context/Resources/PreResources",
-                                 null, // MUST be specified in the element
-                                 "className");
+        digester.addObjectCreate(prefix + "Context/Resources/PreResources", null, // MUST be specified in the element
+                "className");
         digester.addSetProperties(prefix + "Context/Resources/PreResources");
-        digester.addSetNext(prefix + "Context/Resources/PreResources",
-                            "addPreResources",
-                            "org.apache.catalina.WebResourceSet");
+        digester.addSetNext(prefix + "Context/Resources/PreResources", "addPreResources",
+                "org.apache.catalina.WebResourceSet");
 
-        digester.addObjectCreate(prefix + "Context/Resources/JarResources",
-                                 null, // MUST be specified in the element
-                                 "className");
+        digester.addObjectCreate(prefix + "Context/Resources/JarResources", null, // MUST be specified in the element
+                "className");
         digester.addSetProperties(prefix + "Context/Resources/JarResources");
-        digester.addSetNext(prefix + "Context/Resources/JarResources",
-                            "addJarResources",
-                            "org.apache.catalina.WebResourceSet");
+        digester.addSetNext(prefix + "Context/Resources/JarResources", "addJarResources",
+                "org.apache.catalina.WebResourceSet");
 
-        digester.addObjectCreate(prefix + "Context/Resources/PostResources",
-                                 null, // MUST be specified in the element
-                                 "className");
+        digester.addObjectCreate(prefix + "Context/Resources/PostResources", null, // MUST be specified in the element
+                "className");
         digester.addSetProperties(prefix + "Context/Resources/PostResources");
-        digester.addSetNext(prefix + "Context/Resources/PostResources",
-                            "addPostResources",
-                            "org.apache.catalina.WebResourceSet");
+        digester.addSetNext(prefix + "Context/Resources/PostResources", "addPostResources",
+                "org.apache.catalina.WebResourceSet");
 
 
         digester.addObjectCreate(prefix + "Context/ResourceLink",
                 "org.apache.tomcat.util.descriptor.web.ContextResourceLink");
         digester.addSetProperties(prefix + "Context/ResourceLink");
         digester.addRule(prefix + "Context/ResourceLink",
-                new SetNextNamingRule("addResourceLink",
-                        "org.apache.tomcat.util.descriptor.web.ContextResourceLink"));
+                new SetNextNamingRule("addResourceLink", "org.apache.tomcat.util.descriptor.web.ContextResourceLink"));
 
-        digester.addObjectCreate(prefix + "Context/Valve",
-                                 null, // MUST be specified in the element
-                                 "className");
+        digester.addObjectCreate(prefix + "Context/Valve", null, // MUST be specified in the element
+                "className");
         digester.addSetProperties(prefix + "Context/Valve");
         digester.addCallMethod(prefix + "Context/Valve/init-param", "addInitParam", 2);
         digester.addCallParam(prefix + "Context/Valve/init-param/param-name", 0);
         digester.addCallParam(prefix + "Context/Valve/init-param/param-value", 1);
-        digester.addSetNext(prefix + "Context/Valve",
-                            "addValve",
-                            "org.apache.catalina.Valve");
+        digester.addSetNext(prefix + "Context/Valve", "addValve", "org.apache.catalina.Valve");
 
-        digester.addCallMethod(prefix + "Context/WatchedResource",
-                               "addWatchedResource", 0);
+        digester.addCallMethod(prefix + "Context/WatchedResource", "addWatchedResource", 0);
 
-        digester.addCallMethod(prefix + "Context/WrapperLifecycle",
-                               "addWrapperLifecycle", 0);
+        digester.addCallMethod(prefix + "Context/WrapperLifecycle", "addWrapperLifecycle", 0);
 
-        digester.addCallMethod(prefix + "Context/WrapperListener",
-                               "addWrapperListener", 0);
+        digester.addCallMethod(prefix + "Context/WrapperListener", "addWrapperListener", 0);
 
-        digester.addObjectCreate(prefix + "Context/JarScanner",
-                                 "org.apache.tomcat.util.scan.StandardJarScanner",
-                                 "className");
+        digester.addObjectCreate(prefix + "Context/JarScanner", "org.apache.tomcat.util.scan.StandardJarScanner",
+                "className");
         digester.addSetProperties(prefix + "Context/JarScanner");
-        digester.addSetNext(prefix + "Context/JarScanner",
-                            "setJarScanner",
-                            "org.apache.tomcat.JarScanner");
+        digester.addSetNext(prefix + "Context/JarScanner", "setJarScanner", "org.apache.tomcat.JarScanner");
 
         digester.addObjectCreate(prefix + "Context/JarScanner/JarScanFilter",
-                                 "org.apache.tomcat.util.scan.StandardJarScanFilter",
-                                 "className");
+                "org.apache.tomcat.util.scan.StandardJarScanFilter", "className");
         digester.addSetProperties(prefix + "Context/JarScanner/JarScanFilter");
-        digester.addSetNext(prefix + "Context/JarScanner/JarScanFilter",
-                            "setJarScanFilter",
-                            "org.apache.tomcat.JarScanFilter");
+        digester.addSetNext(prefix + "Context/JarScanner/JarScanFilter", "setJarScanFilter",
+                "org.apache.tomcat.JarScanFilter");
 
         digester.addObjectCreate(prefix + "Context/CookieProcessor",
-                                 "org.apache.tomcat.util.http.Rfc6265CookieProcessor",
-                                 "className");
+                "org.apache.tomcat.util.http.Rfc6265CookieProcessor", "className");
         digester.addSetProperties(prefix + "Context/CookieProcessor");
-        digester.addSetNext(prefix + "Context/CookieProcessor",
-                            "setCookieProcessor",
-                            "org.apache.tomcat.util.http.CookieProcessor");
+        digester.addSetNext(prefix + "Context/CookieProcessor", "setCookieProcessor",
+                "org.apache.tomcat.util.http.CookieProcessor");
     }
 }
diff --git a/java/org/apache/catalina/startup/CopyParentClassLoaderRule.java b/java/org/apache/catalina/startup/CopyParentClassLoaderRule.java
index a7f4998ef2..e271113fbf 100644
--- a/java/org/apache/catalina/startup/CopyParentClassLoaderRule.java
+++ b/java/org/apache/catalina/startup/CopyParentClassLoaderRule.java
@@ -25,10 +25,8 @@ import org.xml.sax.Attributes;
 
 
 /**
- * Rule that copies the <code>parentClassLoader</code> property from the
- * next-to-top item on the stack (which must be a <code>Container</code>)
- * to the top item on the stack (which must also be a
- * <code>Container</code>).
+ * Rule that copies the <code>parentClassLoader</code> property from the next-to-top item on the stack (which must be a
+ * <code>Container</code>) to the top item on the stack (which must also be a <code>Container</code>).
  *
  * @author Craig R. McClanahan
  */
@@ -56,18 +54,15 @@ public class CopyParentClassLoaderRule extends Rule {
      * @exception Exception if a processing error occurs
      */
     @Override
-    public void begin(String namespace, String name, Attributes attributes)
-        throws Exception {
+    public void begin(String namespace, String name, Attributes attributes) throws Exception {
 
         if (digester.getLogger().isDebugEnabled()) {
             digester.getLogger().debug("Copying parent class loader");
         }
         Container child = (Container) digester.peek(0);
         Object parent = digester.peek(1);
-        Method method =
-            parent.getClass().getMethod("getParentClassLoader", new Class[0]);
-        ClassLoader classLoader =
-            (ClassLoader) method.invoke(parent, new Object[0]);
+        Method method = parent.getClass().getMethod("getParentClassLoader", new Class[0]);
+        ClassLoader classLoader = (ClassLoader) method.invoke(parent, new Object[0]);
         child.setParentClassLoader(classLoader);
 
         StringBuilder code = digester.getGeneratedCode();
diff --git a/java/org/apache/catalina/startup/CredentialHandlerRuleSet.java b/java/org/apache/catalina/startup/CredentialHandlerRuleSet.java
index 68404e718c..4d804f0042 100644
--- a/java/org/apache/catalina/startup/CredentialHandlerRuleSet.java
+++ b/java/org/apache/catalina/startup/CredentialHandlerRuleSet.java
@@ -20,17 +20,15 @@ import org.apache.tomcat.util.digester.Digester;
 import org.apache.tomcat.util.digester.RuleSet;
 
 /**
- * <strong>RuleSet</strong> for processing the contents of a
- * CredentialHandler definition element.  This <code>RuleSet</code> supports
- * CredentialHandler such as the <code>NestedCredentialHandler</code> that used
- * nested CredentialHandlers.
+ * <strong>RuleSet</strong> for processing the contents of a CredentialHandler definition element. This
+ * <code>RuleSet</code> supports CredentialHandler such as the <code>NestedCredentialHandler</code> that used nested
+ * CredentialHandlers.
  */
 public class CredentialHandlerRuleSet implements RuleSet {
 
 
-    private static final int MAX_NESTED_LEVELS = Integer.getInteger(
-            "org.apache.catalina.startup.CredentialHandlerRuleSet.MAX_NESTED_LEVELS",
-            3).intValue();
+    private static final int MAX_NESTED_LEVELS =
+            Integer.getInteger("org.apache.catalina.startup.CredentialHandlerRuleSet.MAX_NESTED_LEVELS", 3).intValue();
 
     // ----------------------------------------------------- Instance Variables
 
@@ -45,8 +43,7 @@ public class CredentialHandlerRuleSet implements RuleSet {
 
 
     /**
-     * Construct an instance of this <code>RuleSet</code> with the default
-     * matching pattern prefix.
+     * Construct an instance of this <code>RuleSet</code> with the default matching pattern prefix.
      */
     public CredentialHandlerRuleSet() {
         this("");
@@ -54,11 +51,9 @@ public class CredentialHandlerRuleSet implements RuleSet {
 
 
     /**
-     * Construct an instance of this <code>RuleSet</code> with the specified
-     * matching pattern prefix.
+     * Construct an instance of this <code>RuleSet</code> with the specified matching pattern prefix.
      *
-     * @param prefix Prefix for matching pattern rules (including the
-     *  trailing slash character)
+     * @param prefix Prefix for matching pattern rules (including the trailing slash character)
      */
     public CredentialHandlerRuleSet(String prefix) {
         this.prefix = prefix;
@@ -69,13 +64,12 @@ public class CredentialHandlerRuleSet implements RuleSet {
 
 
     /**
-     * <p>Add the set of Rule instances defined in this RuleSet to the
-     * specified <code>Digester</code> instance, associating them with
-     * our namespace URI (if any).  This method should only be called
-     * by a Digester instance.</p>
+     * <p>
+     * Add the set of Rule instances defined in this RuleSet to the specified <code>Digester</code> instance,
+     * associating them with our namespace URI (if any). This method should only be called by a Digester instance.
+     * </p>
      *
-     * @param digester Digester instance to which the new Rule instances
-     *  should be added.
+     * @param digester Digester instance to which the new Rule instances should be added.
      */
     @Override
     public void addRuleInstances(Digester digester) {
@@ -85,14 +79,12 @@ public class CredentialHandlerRuleSet implements RuleSet {
                 pattern.append('/');
             }
             pattern.append("CredentialHandler");
-            addRuleInstances(digester, pattern.toString(), i == 0 ? "setCredentialHandler"
-                    : "addCredentialHandler");
+            addRuleInstances(digester, pattern.toString(), i == 0 ? "setCredentialHandler" : "addCredentialHandler");
         }
     }
 
     private void addRuleInstances(Digester digester, String pattern, String methodName) {
-        digester.addObjectCreate(pattern, null /* MUST be specified in the element */,
-                "className");
+        digester.addObjectCreate(pattern, null /* MUST be specified in the element */, "className");
         digester.addSetProperties(pattern);
         digester.addSetNext(pattern, methodName, "org.apache.catalina.CredentialHandler");
     }
diff --git a/java/org/apache/catalina/startup/EngineConfig.java b/java/org/apache/catalina/startup/EngineConfig.java
index 59867a5fbe..2b8b920a3e 100644
--- a/java/org/apache/catalina/startup/EngineConfig.java
+++ b/java/org/apache/catalina/startup/EngineConfig.java
@@ -27,13 +27,12 @@ import org.apache.tomcat.util.res.StringManager;
 
 
 /**
- * Startup event listener for an <b>Engine</b> that configures the properties
- * of that Engine, and the associated defined contexts.
+ * Startup event listener for an <b>Engine</b> that configures the properties of that Engine, and the associated defined
+ * contexts.
  *
  * @author Craig R. McClanahan
  */
-public class EngineConfig
-    implements LifecycleListener {
+public class EngineConfig implements LifecycleListener {
 
 
     private static final Log log = LogFactory.getLog(EngineConfig.class);
@@ -50,8 +49,7 @@ public class EngineConfig
     /**
      * The string resources for this package.
      */
-    protected static final StringManager sm =
-        StringManager.getManager(Constants.Package);
+    protected static final StringManager sm = StringManager.getManager(Constants.Package);
 
 
     // --------------------------------------------------------- Public Methods
diff --git a/java/org/apache/catalina/startup/EngineRuleSet.java b/java/org/apache/catalina/startup/EngineRuleSet.java
index 77805d1d4d..cc548b198e 100644
--- a/java/org/apache/catalina/startup/EngineRuleSet.java
+++ b/java/org/apache/catalina/startup/EngineRuleSet.java
@@ -20,10 +20,8 @@ import org.apache.tomcat.util.digester.Digester;
 import org.apache.tomcat.util.digester.RuleSet;
 
 /**
- * <strong>RuleSet</strong> for processing the contents of a
- * Engine definition element.  This <code>RuleSet</code> does NOT include
- * any rules for nested Host elements, which should be added via instances of
- * <code>HostRuleSet</code>.
+ * <strong>RuleSet</strong> for processing the contents of a Engine definition element. This <code>RuleSet</code> does
+ * NOT include any rules for nested Host elements, which should be added via instances of <code>HostRuleSet</code>.
  *
  * @author Craig R. McClanahan
  */
@@ -40,8 +38,7 @@ public class EngineRuleSet implements RuleSet {
     // ------------------------------------------------------------ Constructor
 
     /**
-     * Construct an instance of this <code>RuleSet</code> with the default
-     * matching pattern prefix.
+     * Construct an instance of this <code>RuleSet</code> with the default matching pattern prefix.
      */
     public EngineRuleSet() {
         this("");
@@ -49,11 +46,9 @@ public class EngineRuleSet implements RuleSet {
 
 
     /**
-     * Construct an instance of this <code>RuleSet</code> with the specified
-     * matching pattern prefix.
+     * Construct an instance of this <code>RuleSet</code> with the specified matching pattern prefix.
      *
-     * @param prefix Prefix for matching pattern rules (including the
-     *  trailing slash character)
+     * @param prefix Prefix for matching pattern rules (including the trailing slash character)
      */
     public EngineRuleSet(String prefix) {
         this.prefix = prefix;
@@ -63,59 +58,44 @@ public class EngineRuleSet implements RuleSet {
     // --------------------------------------------------------- Public Methods
 
     /**
-     * <p>Add the set of Rule instances defined in this RuleSet to the
-     * specified <code>Digester</code> instance, associating them with
-     * our namespace URI (if any).  This method should only be called
-     * by a Digester instance.</p>
+     * <p>
+     * Add the set of Rule instances defined in this RuleSet to the specified <code>Digester</code> instance,
+     * associating them with our namespace URI (if any). This method should only be called by a Digester instance.
+     * </p>
      *
-     * @param digester Digester instance to which the new Rule instances
-     *  should be added.
+     * @param digester Digester instance to which the new Rule instances should be added.
      */
     @Override
     public void addRuleInstances(Digester digester) {
 
-        digester.addObjectCreate(prefix + "Engine",
-                                 "org.apache.catalina.core.StandardEngine",
-                                 "className");
+        digester.addObjectCreate(prefix + "Engine", "org.apache.catalina.core.StandardEngine", "className");
         digester.addSetProperties(prefix + "Engine");
         digester.addRule(prefix + "Engine",
-                         new LifecycleListenerRule
-                         ("org.apache.catalina.startup.EngineConfig",
-                          "engineConfigClass"));
-        digester.addSetNext(prefix + "Engine",
-                            "setContainer",
-                            "org.apache.catalina.Engine");
-
-        //Cluster configuration start
-        digester.addObjectCreate(prefix + "Engine/Cluster",
-                                 null, // MUST be specified in the element
-                                 "className");
+                new LifecycleListenerRule("org.apache.catalina.startup.EngineConfig", "engineConfigClass"));
+        digester.addSetNext(prefix + "Engine", "setContainer", "org.apache.catalina.Engine");
+
+        // Cluster configuration start
+        digester.addObjectCreate(prefix + "Engine/Cluster", null, // MUST be specified in the element
+                "className");
         digester.addSetProperties(prefix + "Engine/Cluster");
-        digester.addSetNext(prefix + "Engine/Cluster",
-                            "setCluster",
-                            "org.apache.catalina.Cluster");
-        //Cluster configuration end
-
-        digester.addObjectCreate(prefix + "Engine/Listener",
-                                 null, // MUST be specified in the element
-                                 "className");
+        digester.addSetNext(prefix + "Engine/Cluster", "setCluster", "org.apache.catalina.Cluster");
+        // Cluster configuration end
+
+        digester.addObjectCreate(prefix + "Engine/Listener", null, // MUST be specified in the element
+                "className");
         digester.addSetProperties(prefix + "Engine/Listener");
-        digester.addSetNext(prefix + "Engine/Listener",
-                            "addLifecycleListener",
-                            "org.apache.catalina.LifecycleListener");
+        digester.addSetNext(prefix + "Engine/Listener", "addLifecycleListener",
+                "org.apache.catalina.LifecycleListener");
 
 
         digester.addRuleSet(new RealmRuleSet(prefix + "Engine/"));
 
-        digester.addObjectCreate(prefix + "Engine/Valve",
-                                 null, // MUST be specified in the element
-                                 "className");
+        digester.addObjectCreate(prefix + "Engine/Valve", null, // MUST be specified in the element
+                "className");
         digester.addSetProperties(prefix + "Engine/Valve");
         digester.addCallMethod(prefix + "Engine/Valve/init-param", "addInitParam", 2);
         digester.addCallParam(prefix + "Engine/Valve/init-param/param-name", 0);
         digester.addCallParam(prefix + "Engine/Valve/init-param/param-value", 1);
-        digester.addSetNext(prefix + "Engine/Valve",
-                            "addValve",
-                            "org.apache.catalina.Valve");
+        digester.addSetNext(prefix + "Engine/Valve", "addValve", "org.apache.catalina.Valve");
     }
 }
diff --git a/java/org/apache/catalina/startup/ExpandWar.java b/java/org/apache/catalina/startup/ExpandWar.java
index 4d7cf78e85..a100dfd2db 100644
--- a/java/org/apache/catalina/startup/ExpandWar.java
+++ b/java/org/apache/catalina/startup/ExpandWar.java
@@ -52,32 +52,26 @@ public class ExpandWar {
     /**
      * The string resources for this package.
      */
-    protected static final StringManager sm =
-        StringManager.getManager(Constants.Package);
+    protected static final StringManager sm = StringManager.getManager(Constants.Package);
 
 
     /**
-     * Expand the WAR file found at the specified URL into an unpacked
-     * directory structure.
+     * Expand the WAR file found at the specified URL into an unpacked directory structure.
      *
-     * @param host Host war is being installed for
-     * @param war URL of the web application archive to be expanded
-     *  (must start with "jar:")
+     * @param host     Host war is being installed for
+     * @param war      URL of the web application archive to be expanded (must start with "jar:")
      * @param pathname Context path name for web application
      *
-     * @exception IllegalArgumentException if this is not a "jar:" URL or if the
-     *            WAR file is invalid
-     * @exception IOException if an input/output error was encountered
-     *  during expansion
+     * @exception IllegalArgumentException if this is not a "jar:" URL or if the WAR file is invalid
+     * @exception IOException              if an input/output error was encountered during expansion
      *
      * @return The absolute path to the expanded directory for the given WAR
      */
-    public static String expand(Host host, URL war, String pathname)
-        throws IOException {
+    public static String expand(Host host, URL war, String pathname) throws IOException {
 
-        /* Obtaining the last modified time opens an InputStream and there is no
-         * explicit close method. We have to obtain and then close the
-         * InputStream to avoid a file leak and the associated locked file.
+        /*
+         * Obtaining the last modified time opens an InputStream and there is no explicit close method. We have to
+         * obtain and then close the InputStream to avoid a file leak and the associated locked file.
          */
         JarURLConnection juc = (JarURLConnection) war.openConnection();
         juc.setUseCaches(false);
@@ -113,7 +107,7 @@ public class ExpandWar {
         }
 
         // Create the new document base directory
-        if(!docBase.mkdir() && !docBase.isDirectory()) {
+        if (!docBase.mkdir() && !docBase.isDirectory()) {
             throw new IOException(sm.getString("expandWar.createFailed", docBase));
         }
 
@@ -136,18 +130,14 @@ public class ExpandWar {
                 if (!expandedFile.getCanonicalFile().toPath().startsWith(canonicalDocBasePath)) {
                     // Trying to expand outside the docBase
                     // Throw an exception to stop the deployment
-                    throw new IllegalArgumentException(
-                            sm.getString("expandWar.illegalPath",war, name,
-                                    expandedFile.getCanonicalPath(),
-                                    canonicalDocBasePath));
+                    throw new IllegalArgumentException(sm.getString("expandWar.illegalPath", war, name,
+                            expandedFile.getCanonicalPath(), canonicalDocBasePath));
                 }
                 int last = name.lastIndexOf('/');
                 if (last >= 0) {
-                    File parent = new File(docBase,
-                                           name.substring(0, last));
+                    File parent = new File(docBase, name.substring(0, last));
                     if (!parent.mkdirs() && !parent.isDirectory()) {
-                        throw new IOException(
-                                sm.getString("expandWar.createFailed", parent));
+                        throw new IOException(sm.getString("expandWar.createFailed", parent));
                     }
                 }
                 if (name.endsWith("/")) {
@@ -156,8 +146,7 @@ public class ExpandWar {
 
                 try (InputStream input = jarFile.getInputStream(jarEntry)) {
                     if (null == input) {
-                        throw new ZipException(sm.getString("expandWar.missingJarEntry",
-                                jarEntry.getName()));
+                        throw new ZipException(sm.getString("expandWar.missingJarEntry", jarEntry.getName()));
                     }
 
                     // Bugzilla 33636
@@ -165,8 +154,7 @@ public class ExpandWar {
                     long lastModified = jarEntry.getTime();
                     if ((lastModified != -1) && (lastModified != 0)) {
                         if (!expandedFile.setLastModified(lastModified)) {
-                            throw new IOException(
-                                    sm.getString("expandWar.lastModifiedFailed", expandedFile));
+                            throw new IOException(sm.getString("expandWar.lastModifiedFailed", expandedFile));
                         }
                     }
                 }
@@ -200,15 +188,12 @@ public class ExpandWar {
     /**
      * Validate the WAR file found at the specified URL.
      *
-     * @param host Host war is being installed for
-     * @param war URL of the web application archive to be validated
-     *  (must start with "jar:")
+     * @param host     Host war is being installed for
+     * @param war      URL of the web application archive to be validated (must start with "jar:")
      * @param pathname Context path name for web application
      *
-     * @exception IllegalArgumentException if this is not a "jar:" URL or if the
-     *            WAR file is invalid
-     * @exception IOException if an input/output error was encountered
-     *            during validation
+     * @exception IllegalArgumentException if this is not a "jar:" URL or if the WAR file is invalid
+     * @exception IOException              if an input/output error was encountered during validation
      */
     public static void validate(Host host, URL war, String pathname) throws IOException {
 
@@ -227,10 +212,8 @@ public class ExpandWar {
                 if (!expandedFile.getCanonicalFile().toPath().startsWith(canonicalDocBasePath)) {
                     // Entry located outside the docBase
                     // Throw an exception to stop the deployment
-                    throw new IllegalArgumentException(
-                            sm.getString("expandWar.illegalPath",war, name,
-                                    expandedFile.getCanonicalPath(),
-                                    canonicalDocBasePath));
+                    throw new IllegalArgumentException(sm.getString("expandWar.illegalPath", war, name,
+                            expandedFile.getCanonicalPath(), canonicalDocBasePath));
                 }
             }
         } catch (IOException e) {
@@ -242,8 +225,9 @@ public class ExpandWar {
     /**
      * Copy the specified file or directory to the destination.
      *
-     * @param src File object representing the source
+     * @param src  File object representing the source
      * @param dest File object representing the destination
+     *
      * @return <code>true</code> if the copy was successful
      */
     public static boolean copy(File src, File dest) {
@@ -291,10 +275,11 @@ public class ExpandWar {
 
 
     /**
-     * Delete the specified directory, including all of its contents and
-     * sub-directories recursively. Any failure will be logged.
+     * Delete the specified directory, including all of its contents and sub-directories recursively. Any failure will
+     * be logged.
      *
      * @param dir File object representing the directory to be deleted
+     *
      * @return <code>true</code> if the deletion was successful
      */
     public static boolean delete(File dir) {
@@ -304,12 +289,11 @@ public class ExpandWar {
 
 
     /**
-     * Delete the specified directory, including all of its contents and
-     * sub-directories recursively.
+     * Delete the specified directory, including all of its contents and sub-directories recursively.
+     *
+     * @param dir        File object representing the directory to be deleted
+     * @param logFailure <code>true</code> if failure to delete the resource should be logged
      *
-     * @param dir File object representing the directory to be deleted
-     * @param logFailure <code>true</code> if failure to delete the resource
-     *                   should be logged
      * @return <code>true</code> if the deletion was successful
      */
     public static boolean delete(File dir, boolean logFailure) {
@@ -324,18 +308,18 @@ public class ExpandWar {
             }
         }
         if (logFailure && !result) {
-            log.error(sm.getString(
-                    "expandWar.deleteFailed", dir.getAbsolutePath()));
+            log.error(sm.getString("expandWar.deleteFailed", dir.getAbsolutePath()));
         }
         return result;
     }
 
 
     /**
-     * Delete the specified directory, including all of its contents and
-     * sub-directories recursively. Any failure will be logged.
+     * Delete the specified directory, including all of its contents and sub-directories recursively. Any failure will
+     * be logged.
      *
      * @param dir File object representing the directory to be deleted
+     *
      * @return <code>true</code> if the deletion was successful
      */
     public static boolean deleteDir(File dir) {
@@ -344,12 +328,11 @@ public class ExpandWar {
 
 
     /**
-     * Delete the specified directory, including all of its contents and
-     * sub-directories recursively.
+     * Delete the specified directory, including all of its contents and sub-directories recursively.
+     *
+     * @param dir        File object representing the directory to be deleted
+     * @param logFailure <code>true</code> if failure to delete the resource should be logged
      *
-     * @param dir File object representing the directory to be deleted
-     * @param logFailure <code>true</code> if failure to delete the resource
-     *                   should be logged
      * @return <code>true</code> if the deletion was successful
      */
     public static boolean deleteDir(File dir, boolean logFailure) {
@@ -375,8 +358,7 @@ public class ExpandWar {
         }
 
         if (logFailure && !result) {
-            log.error(sm.getString(
-                    "expandWar.deleteFailed", dir.getAbsolutePath()));
+            log.error(sm.getString("expandWar.deleteFailed", dir.getAbsolutePath()));
         }
 
         return result;
@@ -387,13 +369,12 @@ public class ExpandWar {
      * Expand the specified input stream into the specified file.
      *
      * @param input InputStream to be copied
-     * @param file The file to be created
+     * @param file  The file to be created
      *
      * @exception IOException if an input/output error occurs
      */
     private static void expand(InputStream input, File file) throws IOException {
-        try (BufferedOutputStream output =
-                new BufferedOutputStream(new FileOutputStream(file))) {
+        try (BufferedOutputStream output = new BufferedOutputStream(new FileOutputStream(file))) {
             byte buffer[] = new byte[2048];
             while (true) {
                 int n = input.read(buffer);
diff --git a/java/org/apache/catalina/startup/FailedContext.java b/java/org/apache/catalina/startup/FailedContext.java
index a2bff8fa0b..e323e589d2 100644
--- a/java/org/apache/catalina/startup/FailedContext.java
+++ b/java/org/apache/catalina/startup/FailedContext.java
@@ -65,58 +65,89 @@ import org.apache.tomcat.util.http.CookieProcessor;
 import org.apache.tomcat.util.res.StringManager;
 
 /**
- * An implementation of {@link Context} that is used as a place-holder for
- * deployed applications when their deployment fails and a Context instance
- * (usually {@link org.apache.catalina.core.StandardContext} but may be any
- * Context implementation) cannot be created.
+ * An implementation of {@link Context} that is used as a place-holder for deployed applications when their deployment
+ * fails and a Context instance (usually {@link org.apache.catalina.core.StandardContext} but may be any Context
+ * implementation) cannot be created.
  */
 public class FailedContext extends LifecycleMBeanBase implements Context {
 
-    protected static final StringManager sm =
-            StringManager.getManager(Constants.Package);
+    protected static final StringManager sm = StringManager.getManager(Constants.Package);
 
 
     // --------------------- Methods that need to work even for a failed context
 
     private URL configFile;
+
     @Override
-    public URL getConfigFile() { return configFile; }
+    public URL getConfigFile() {
+        return configFile;
+    }
+
     @Override
-    public void setConfigFile(URL configFile) { this.configFile = configFile; }
+    public void setConfigFile(URL configFile) {
+        this.configFile = configFile;
+    }
 
 
     private String docBase;
+
     @Override
-    public String getDocBase() { return docBase; }
-    @Override
-    public void setDocBase(String docBase) { this.docBase = docBase; }
+    public String getDocBase() {
+        return docBase;
+    }
 
+    @Override
+    public void setDocBase(String docBase) {
+        this.docBase = docBase;
+    }
 
 
     private String name = null;
+
     @Override
-    public String getName() { return name; }
+    public String getName() {
+        return name;
+    }
+
     @Override
-    public void setName(String name) { this.name = name; }
+    public void setName(String name) {
+        this.name = name;
+    }
 
 
     private Container parent;
+
     @Override
-    public Container getParent() { return parent; }
+    public Container getParent() {
+        return parent;
+    }
+
     @Override
-    public void setParent(Container parent) { this.parent = parent; }
+    public void setParent(Container parent) {
+        this.parent = parent;
+    }
 
 
     private String path = null;
+
     @Override
-    public String getPath() { return path; }
+    public String getPath() {
+        return path;
+    }
+
     @Override
-    public void setPath(String path) { this.path = path; }
+    public void setPath(String path) {
+        this.path = path;
+    }
 
 
     private String webappVersion = null;
+
     @Override
-    public String getWebappVersion() { return webappVersion; }
+    public String getWebappVersion() {
+        return webappVersion;
+    }
+
     @Override
     public void setWebappVersion(String webappVersion) {
         this.webappVersion = webappVersion;
@@ -172,8 +203,7 @@ public class FailedContext extends LifecycleMBeanBase implements Context {
     @Override
     protected String getObjectNameKeyProperties() {
 
-        StringBuilder keyProperties =
-            new StringBuilder("j2eeType=WebModule,name=//");
+        StringBuilder keyProperties = new StringBuilder("j2eeType=WebModule,name=//");
 
         String hostname = getParent().getName();
         if (hostname == null) {
@@ -196,8 +226,7 @@ public class FailedContext extends LifecycleMBeanBase implements Context {
 
     @Override
     protected void startInternal() throws LifecycleException {
-        throw new LifecycleException(
-                sm.getString("failedContext.start", getName()));
+        throw new LifecycleException(sm.getString("failedContext.start", getName()));
     }
 
 
@@ -210,21 +239,40 @@ public class FailedContext extends LifecycleMBeanBase implements Context {
 
     // Only need to read these
     @Override
-    public void addWatchedResource(String name) { /* NO-OP */ }
+    public void addWatchedResource(String name) {
+        // NO-OP
+    }
+
     @Override
-    public String[] findWatchedResources() { return new String[0]; }
+    public String[] findWatchedResources() {
+        return new String[0];
+    }
+
     @Override
-    public void removeWatchedResource(String name) { /* NO-OP */ }
+    public void removeWatchedResource(String name) {
+        // NO-OP
+    }
 
 
     @Override
-    public void addChild(Container child) { /* NO-OP */ }
+    public void addChild(Container child) {
+        // NO-OP
+    }
+
     @Override
-    public Container findChild(String name) { return null; }
+    public Container findChild(String name) {
+        return null;
+    }
+
     @Override
-    public Container[] findChildren() { return new Container[0]; }
+    public Container[] findChildren() {
+        return new Container[0];
+    }
+
     @Override
-    public void removeChild(Container child) { /* NO-OP */ }
+    public void removeChild(Container child) {
+        // NO-OP
+    }
 
     @Override
     public String toString() {
@@ -233,512 +281,985 @@ public class FailedContext extends LifecycleMBeanBase implements Context {
 
     // -------------------------------------------- All NO-OPs beyond this point
     @Override
-    public Loader getLoader() { return null; }
+    public Loader getLoader() {
+        return null;
+    }
+
     @Override
-    public void setLoader(Loader loader) { /* NO-OP */ }
+    public void setLoader(Loader loader) {
+        // NO-OP
+    }
 
     @Override
-    public Log getLogger() { return null; }
+    public Log getLogger() {
+        return null;
+    }
 
     @Override
-    public String getLogName() { return null; }
+    public String getLogName() {
+        return null;
+    }
 
     @Override
-    public Manager getManager() { return null; }
+    public Manager getManager() {
+        return null;
+    }
+
     @Override
-    public void setManager(Manager manager) { /* NO-OP */ }
+    public void setManager(Manager manager) {
+        // NO-OP
+    }
 
     @Override
-    public Pipeline getPipeline() { return null; }
+    public Pipeline getPipeline() {
+        return null;
+    }
 
     @Override
-    public Cluster getCluster() { return null; }
+    public Cluster getCluster() {
+        return null;
+    }
+
     @Override
-    public void setCluster(Cluster cluster) { /* NO-OP */ }
+    public void setCluster(Cluster cluster) {
+        // NO-OP
+    }
 
     @Override
-    public int getBackgroundProcessorDelay() { return -1; }
+    public int getBackgroundProcessorDelay() {
+        return -1;
+    }
+
     @Override
-    public void setBackgroundProcessorDelay(int delay) { /* NO-OP */ }
+    public void setBackgroundProcessorDelay(int delay) {
+        // NO-OP
+    }
 
     @Override
-    public ClassLoader getParentClassLoader() { return null; }
+    public ClassLoader getParentClassLoader() {
+        return null;
+    }
+
     @Override
-    public void setParentClassLoader(ClassLoader parent) { /* NO-OP */ }
+    public void setParentClassLoader(ClassLoader parent) {
+        // NO-OP
+    }
 
     @Override
-    public Realm getRealm() { return null; }
+    public Realm getRealm() {
+        return null;
+    }
+
     @Override
-    public void setRealm(Realm realm) { /* NO-OP */ }
+    public void setRealm(Realm realm) {
+        // NO-OP
+    }
 
     @Override
-    public WebResourceRoot getResources() { return null; }
+    public WebResourceRoot getResources() {
+        return null;
+    }
+
     @Override
-    public void setResources(WebResourceRoot resources) { /* NO-OP */ }
+    public void setResources(WebResourceRoot resources) {
+        // NO-OP
+    }
 
     @Override
-    public void backgroundProcess() { /* NO-OP */ }
+    public void backgroundProcess() {
+        // NO-OP
+    }
 
     @Override
-    public void addContainerListener(ContainerListener listener) { /* NO-OP */ }
+    public void addContainerListener(ContainerListener listener) {
+        // NO-OP
+    }
+
     @Override
-    public ContainerListener[] findContainerListeners() { return null; }
+    public ContainerListener[] findContainerListeners() {
+        return null;
+    }
+
     @Override
-    public void removeContainerListener(ContainerListener listener) { /* NO-OP */ }
+    public void removeContainerListener(ContainerListener listener) {
+        // NO-OP
+    }
 
     @Override
-    public void addPropertyChangeListener(PropertyChangeListener listener) { /* NO-OP */ }
+    public void addPropertyChangeListener(PropertyChangeListener listener) {
+        // NO-OP
+    }
+
     @Override
-    public void removePropertyChangeListener(PropertyChangeListener listener) { /* NO-OP */ }
+    public void removePropertyChangeListener(PropertyChangeListener listener) {
+        // NO-OP
+    }
 
     @Override
-    public void fireContainerEvent(String type, Object data) { /* NO-OP */ }
+    public void fireContainerEvent(String type, Object data) {
+        // NO-OP
+    }
 
     @Override
-    public void logAccess(Request request, Response response, long time,
-            boolean useDefault) { /* NO-OP */ }
+    public void logAccess(Request request, Response response, long time, boolean useDefault) {
+        // NO-OP
+    }
 
     @Override
-    public AccessLog getAccessLog() { return null; }
+    public AccessLog getAccessLog() {
+        return null;
+    }
 
     @Override
-    public int getStartStopThreads() { return 0; }
+    public int getStartStopThreads() {
+        return 0;
+    }
+
     @Override
-    public void setStartStopThreads(int startStopThreads) { /* NO-OP */ }
+    public void setStartStopThreads(int startStopThreads) {
+        // NO-OP
+    }
 
     @Override
-    public boolean getAllowCasualMultipartParsing() { return false; }
+    public boolean getAllowCasualMultipartParsing() {
+        return false;
+    }
+
     @Override
-    public void setAllowCasualMultipartParsing(
-            boolean allowCasualMultipartParsing) { /* NO-OP */ }
+    public void setAllowCasualMultipartParsing(boolean allowCasualMultipartParsing) {
+        // NO-OP
+    }
 
     @Override
-    public Object[] getApplicationEventListeners() { return null; }
+    public Object[] getApplicationEventListeners() {
+        return null;
+    }
+
     @Override
-    public void setApplicationEventListeners(Object[] listeners) { /* NO-OP */ }
+    public void setApplicationEventListeners(Object[] listeners) {
+        // NO-OP
+    }
 
     @Override
-    public Object[] getApplicationLifecycleListeners() { return null; }
+    public Object[] getApplicationLifecycleListeners() {
+        return null;
+    }
+
     @Override
-    public void setApplicationLifecycleListeners(Object[] listeners) { /* NO-OP */ }
+    public void setApplicationLifecycleListeners(Object[] listeners) {
+        // NO-OP
+    }
 
     @Override
-    public String getCharset(Locale locale) { return null; }
+    public String getCharset(Locale locale) {
+        return null;
+    }
 
     @Override
-    public boolean getConfigured() { return false; }
+    public boolean getConfigured() {
+        return false;
+    }
+
     @Override
-    public void setConfigured(boolean configured) { /* NO-OP */ }
+    public void setConfigured(boolean configured) {
+        // NO-OP
+    }
 
     @Override
-    public boolean getCookies() { return false; }
+    public boolean getCookies() {
+        return false;
+    }
+
     @Override
-    public void setCookies(boolean cookies) { /* NO-OP */ }
+    public void setCookies(boolean cookies) {
+        // NO-OP
+    }
 
     @Override
-    public String getSessionCookieName() { return null; }
+    public String getSessionCookieName() {
+        return null;
+    }
+
     @Override
-    public void setSessionCookieName(String sessionCookieName) { /* NO-OP */ }
+    public void setSessionCookieName(String sessionCookieName) {
+        // NO-OP
+    }
 
     @Override
-    public boolean getUseHttpOnly() { return false; }
+    public boolean getUseHttpOnly() {
+        return false;
+    }
+
     @Override
-    public void setUseHttpOnly(boolean useHttpOnly) { /* NO-OP */ }
+    public void setUseHttpOnly(boolean useHttpOnly) {
+        // NO-OP
+    }
 
     @Override
-    public boolean getUsePartitioned() { return false; }
+    public boolean getUsePartitioned() {
+        return false;
+    }
+
     @Override
-    public void setUsePartitioned(boolean usePartitioned) { /* NO-OP */ }
+    public void setUsePartitioned(boolean usePartitioned) {
+        // NO-OP
+    }
 
     @Override
-    public String getSessionCookieDomain() { return null; }
+    public String getSessionCookieDomain() {
+        return null;
+    }
+
     @Override
-    public void setSessionCookieDomain(String sessionCookieDomain) { /* NO-OP */ }
+    public void setSessionCookieDomain(String sessionCookieDomain) {
+        // NO-OP
+    }
 
     @Override
-    public String getSessionCookiePath() { return null; }
+    public String getSessionCookiePath() {
+        return null;
+    }
+
     @Override
-    public void setSessionCookiePath(String sessionCookiePath) { /* NO-OP */ }
+    public void setSessionCookiePath(String sessionCookiePath) {
+        // NO-OP
+    }
 
     @Override
-    public boolean getSessionCookiePathUsesTrailingSlash() { return false; }
+    public boolean getSessionCookiePathUsesTrailingSlash() {
+        return false;
+    }
+
     @Override
-    public void setSessionCookiePathUsesTrailingSlash(
-            boolean sessionCookiePathUsesTrailingSlash) { /* NO-OP */ }
+    public void setSessionCookiePathUsesTrailingSlash(boolean sessionCookiePathUsesTrailingSlash) {
+        // NO-OP
+    }
 
     @Override
-    public boolean getCrossContext() { return false; }
+    public boolean getCrossContext() {
+        return false;
+    }
+
     @Override
-    public void setCrossContext(boolean crossContext) { /* NO-OP */ }
+    public void setCrossContext(boolean crossContext) {
+        // NO-OP
+    }
 
     @Override
-    public String getAltDDName() { return null; }
+    public String getAltDDName() {
+        return null;
+    }
+
     @Override
-    public void setAltDDName(String altDDName) { /* NO-OP */ }
+    public void setAltDDName(String altDDName) {
+        // NO-OP
+    }
 
     @Override
-    public boolean getDenyUncoveredHttpMethods() { return false; }
+    public boolean getDenyUncoveredHttpMethods() {
+        return false;
+    }
+
     @Override
     public void setDenyUncoveredHttpMethods(boolean denyUncoveredHttpMethods) {
         // NO-OP
     }
 
     @Override
-    public String getDisplayName() { return null; }
-    @Override
-    public void setDisplayName(String displayName) { /* NO-OP */ }
+    public String getDisplayName() {
+        return null;
+    }
 
     @Override
-    public boolean getDistributable() { return false; }
-    @Override
-    public void setDistributable(boolean distributable) { /* NO-OP */ }
+    public void setDisplayName(String displayName) {
+        // NO-OP
+    }
 
     @Override
-    public String getEncodedPath() { return null; }
+    public boolean getDistributable() {
+        return false;
+    }
 
     @Override
-    public boolean getIgnoreAnnotations() { return false; }
-    @Override
-    public void setIgnoreAnnotations(boolean ignoreAnnotations) { /* NO-OP */ }
+    public void setDistributable(boolean distributable) {
+        // NO-OP
+    }
 
     @Override
-    public boolean getMetadataComplete() { return false; }
-    @Override
-    public void setMetadataComplete(boolean metadataComplete) { /* NO-OP */ }
+    public String getEncodedPath() {
+        return null;
+    }
 
     @Override
-    public LoginConfig getLoginConfig() { return null; }
-    @Override
-    public void setLoginConfig(LoginConfig config) { /* NO-OP */ }
+    public boolean getIgnoreAnnotations() {
+        return false;
+    }
 
     @Override
-    public NamingResourcesImpl getNamingResources() { return null; }
-    @Override
-    public void setNamingResources(NamingResourcesImpl namingResources) { /* NO-OP */ }
+    public void setIgnoreAnnotations(boolean ignoreAnnotations) {
+        // NO-OP
+    }
 
     @Override
-    public String getPublicId() { return null; }
-    @Override
-    public void setPublicId(String publicId) { /* NO-OP */ }
+    public boolean getMetadataComplete() {
+        return false;
+    }
 
     @Override
-    public boolean getReloadable() { return false; }
-    @Override
-    public void setReloadable(boolean reloadable) { /* NO-OP */ }
+    public void setMetadataComplete(boolean metadataComplete) {
+        // NO-OP
+    }
 
     @Override
-    public boolean getOverride() { return false; }
-    @Override
-    public void setOverride(boolean override) { /* NO-OP */ }
+    public LoginConfig getLoginConfig() {
+        return null;
+    }
 
     @Override
-    public boolean getPrivileged() { return false; }
-    @Override
-    public void setPrivileged(boolean privileged) { /* NO-OP */ }
+    public void setLoginConfig(LoginConfig config) {
+        // NO-OP
+    }
 
     @Override
-    public ServletContext getServletContext() { return null; }
+    public NamingResourcesImpl getNamingResources() {
+        return null;
+    }
 
     @Override
-    public int getSessionTimeout() { return 0; }
-    @Override
-    public void setSessionTimeout(int timeout) { /* NO-OP */ }
+    public void setNamingResources(NamingResourcesImpl namingResources) {
+        // NO-OP
+    }
 
     @Override
-    public boolean getSwallowAbortedUploads() { return false; }
-    @Override
-    public void setSwallowAbortedUploads(boolean swallowAbortedUploads) { /* NO-OP */ }
+    public String getPublicId() {
+        return null;
+    }
 
     @Override
-    public boolean getSwallowOutput() { return false; }
-    @Override
-    public void setSwallowOutput(boolean swallowOutput) { /* NO-OP */ }
+    public void setPublicId(String publicId) {
+        // NO-OP
+    }
 
     @Override
-    public String getWrapperClass() { return null; }
-    @Override
-    public void setWrapperClass(String wrapperClass) { /* NO-OP */ }
+    public boolean getReloadable() {
+        return false;
+    }
 
     @Override
-    public boolean getXmlNamespaceAware() { return false; }
-    @Override
-    public void setXmlNamespaceAware(boolean xmlNamespaceAware) { /* NO-OP */ }
+    public void setReloadable(boolean reloadable) {
+        // NO-OP
+    }
 
     @Override
-    public boolean getXmlValidation() { return false; }
-    @Override
-    public void setXmlValidation(boolean xmlValidation) { /* NO-OP */ }
+    public boolean getOverride() {
+        return false;
+    }
 
     @Override
-    public boolean getXmlBlockExternal() { return true; }
+    public void setOverride(boolean override) {
+        // NO-OP
+    }
+
     @Override
-    public void setXmlBlockExternal(boolean xmlBlockExternal) { /* NO-OP */ }
+    public boolean getPrivileged() {
+        return false;
+    }
 
     @Override
-    public boolean getTldValidation() { return false; }
+    public void setPrivileged(boolean privileged) {
+        // NO-OP
+    }
+
     @Override
-    public void setTldValidation(boolean tldValidation){ /* NO-OP */ }
+    public ServletContext getServletContext() {
+        return null;
+    }
 
     @Override
-    public JarScanner getJarScanner() { return null; }
+    public int getSessionTimeout() {
+        return 0;
+    }
+
     @Override
-    public void setJarScanner(JarScanner jarScanner) { /* NO-OP */ }
+    public void setSessionTimeout(int timeout) {
+        // NO-OP
+    }
 
     @Override
-    public Authenticator getAuthenticator() { return null; }
+    public boolean getSwallowAbortedUploads() {
+        return false;
+    }
 
     @Override
-    public void setLogEffectiveWebXml(boolean logEffectiveWebXml) { /* NO-OP */ }
+    public void setSwallowAbortedUploads(boolean swallowAbortedUploads) {
+        // NO-OP
+    }
+
     @Override
-    public boolean getLogEffectiveWebXml() { return false; }
+    public boolean getSwallowOutput() {
+        return false;
+    }
 
     @Override
-    public void addApplicationListener(String listener) { /* NO-OP */ }
+    public void setSwallowOutput(boolean swallowOutput) {
+        // NO-OP
+    }
+
     @Override
-    public String[] findApplicationListeners() { return null; }
+    public String getWrapperClass() {
+        return null;
+    }
+
     @Override
-    public void removeApplicationListener(String listener) { /* NO-OP */ }
+    public void setWrapperClass(String wrapperClass) {
+        // NO-OP
+    }
 
     @Override
-    public void addApplicationParameter(ApplicationParameter parameter) { /* NO-OP */ }
+    public boolean getXmlNamespaceAware() {
+        return false;
+    }
+
     @Override
-    public ApplicationParameter[] findApplicationParameters() { return null; }
+    public void setXmlNamespaceAware(boolean xmlNamespaceAware) {
+        // NO-OP
+    }
+
     @Override
-    public void removeApplicationParameter(String name) { /* NO-OP */ }
+    public boolean getXmlValidation() {
+        return false;
+    }
 
     @Override
-    public void addConstraint(SecurityConstraint constraint) { /* NO-OP */ }
+    public void setXmlValidation(boolean xmlValidation) {
+        // NO-OP
+    }
+
     @Override
-    public SecurityConstraint[] findConstraints() { return null; }
+    public boolean getXmlBlockExternal() {
+        return true;
+    }
+
     @Override
-    public void removeConstraint(SecurityConstraint constraint) { /* NO-OP */ }
+    public void setXmlBlockExternal(boolean xmlBlockExternal) {
+        // NO-OP
+    }
 
     @Override
-    public void addErrorPage(ErrorPage errorPage) { /* NO-OP */ }
+    public boolean getTldValidation() {
+        return false;
+    }
+
     @Override
-    public ErrorPage findErrorPage(int errorCode) { return null; }
+    public void setTldValidation(boolean tldValidation) {
+        // NO-OP
+    }
+
     @Override
-    public ErrorPage findErrorPage(Throwable throwable) { return null; }
+    public JarScanner getJarScanner() {
+        return null;
+    }
+
     @Override
-    public ErrorPage[] findErrorPages() { return null; }
+    public void setJarScanner(JarScanner jarScanner) {
+        // NO-OP
+    }
+
     @Override
-    public void removeErrorPage(ErrorPage errorPage) { /* NO-OP */ }
+    public Authenticator getAuthenticator() {
+        return null;
+    }
 
     @Override
-    public void addFilterDef(FilterDef filterDef) { /* NO-OP */ }
+    public void setLogEffectiveWebXml(boolean logEffectiveWebXml) {
+        // NO-OP
+    }
+
     @Override
-    public FilterDef findFilterDef(String filterName) { return null; }
+    public boolean getLogEffectiveWebXml() {
+        return false;
+    }
+
     @Override
-    public FilterDef[] findFilterDefs() { return null; }
+    public void addApplicationListener(String listener) {
+        // NO-OP
+    }
+
     @Override
-    public void removeFilterDef(FilterDef filterDef) { /* NO-OP */ }
+    public String[] findApplicationListeners() {
+        return null;
+    }
 
     @Override
-    public void addFilterMap(FilterMap filterMap) { /* NO-OP */ }
+    public void removeApplicationListener(String listener) {
+        // NO-OP
+    }
+
     @Override
-    public void addFilterMapBefore(FilterMap filterMap) { /* NO-OP */ }
+    public void addApplicationParameter(ApplicationParameter parameter) {
+        // NO-OP
+    }
+
     @Override
-    public FilterMap[] findFilterMaps() { return null; }
+    public ApplicationParameter[] findApplicationParameters() {
+        return null;
+    }
+
     @Override
-    public void removeFilterMap(FilterMap filterMap) { /* NO-OP */ }
+    public void removeApplicationParameter(String name) {
+        // NO-OP
+    }
 
     @Override
-    public void addLocaleEncodingMappingParameter(String locale, String encoding) { /* NO-OP */ }
+    public void addConstraint(SecurityConstraint constraint) {
+        // NO-OP
+    }
 
     @Override
-    public void addMimeMapping(String extension, String mimeType) { /* NO-OP */ }
+    public SecurityConstraint[] findConstraints() {
+        return null;
+    }
+
     @Override
-    public String findMimeMapping(String extension) { return null; }
+    public void removeConstraint(SecurityConstraint constraint) {
+        // NO-OP
+    }
+
     @Override
-    public String[] findMimeMappings() { return null; }
+    public void addErrorPage(ErrorPage errorPage) {
+        // NO-OP
+    }
+
     @Override
-    public void removeMimeMapping(String extension) { /* NO-OP */ }
+    public ErrorPage findErrorPage(int errorCode) {
+        return null;
+    }
 
     @Override
-    public void addParameter(String name, String value) { /* NO-OP */ }
+    public ErrorPage findErrorPage(Throwable throwable) {
+        return null;
+    }
+
     @Override
-    public String findParameter(String name) { return null; }
+    public ErrorPage[] findErrorPages() {
+        return null;
+    }
+
     @Override
-    public String[] findParameters() { return null; }
+    public void removeErrorPage(ErrorPage errorPage) {
+        // NO-OP
+    }
+
     @Override
-    public void removeParameter(String name) { /* NO-OP */ }
+    public void addFilterDef(FilterDef filterDef) {
+        // NO-OP
+    }
 
     @Override
-    public void addRoleMapping(String role, String link) { /* NO-OP */ }
+    public FilterDef findFilterDef(String filterName) {
+        return null;
+    }
+
     @Override
-    public String findRoleMapping(String role) { return null; }
+    public FilterDef[] findFilterDefs() {
+        return null;
+    }
+
     @Override
-    public void removeRoleMapping(String role) { /* NO-OP */ }
+    public void removeFilterDef(FilterDef filterDef) {
+        // NO-OP
+    }
 
     @Override
-    public void addSecurityRole(String role) { /* NO-OP */ }
+    public void addFilterMap(FilterMap filterMap) {
+        // NO-OP
+    }
+
     @Override
-    public boolean findSecurityRole(String role) { return false; }
+    public void addFilterMapBefore(FilterMap filterMap) {
+        // NO-OP
+    }
+
     @Override
-    public String[] findSecurityRoles() { return null; }
+    public FilterMap[] findFilterMaps() {
+        return null;
+    }
+
     @Override
-    public void removeSecurityRole(String role) { /* NO-OP */ }
+    public void removeFilterMap(FilterMap filterMap) {
+        // NO-OP
+    }
 
     @Override
-    public void addServletMappingDecoded(String pattern, String name,
-            boolean jspWildcard) { /* NO-OP */ }
+    public void addLocaleEncodingMappingParameter(String locale, String encoding) {
+        // NO-OP
+    }
+
     @Override
-    public String findServletMapping(String pattern) { return null; }
+    public void addMimeMapping(String extension, String mimeType) {
+        // NO-OP
+    }
+
     @Override
-    public String[] findServletMappings() { return null; }
+    public String findMimeMapping(String extension) {
+        return null;
+    }
+
     @Override
-    public void removeServletMapping(String pattern) { /* NO-OP */ }
+    public String[] findMimeMappings() {
+        return null;
+    }
 
     @Override
-    public void addWelcomeFile(String name) { /* NO-OP */ }
+    public void removeMimeMapping(String extension) {
+        // NO-OP
+    }
+
     @Override
-    public boolean findWelcomeFile(String name) { return false; }
+    public void addParameter(String name, String value) {
+        // NO-OP
+    }
+
     @Override
-    public String[] findWelcomeFiles() { return null; }
+    public String findParameter(String name) {
+        return null;
+    }
+
     @Override
-    public void removeWelcomeFile(String name) { /* NO-OP */ }
+    public String[] findParameters() {
+        return null;
+    }
 
     @Override
-    public void addWrapperLifecycle(String listener) { /* NO-OP */ }
+    public void removeParameter(String name) {
+        // NO-OP
+    }
+
     @Override
-    public String[] findWrapperLifecycles() { return null; }
+    public void addRoleMapping(String role, String link) {
+        // NO-OP
+    }
+
     @Override
-    public void removeWrapperLifecycle(String listener) { /* NO-OP */ }
+    public String findRoleMapping(String role) {
+        return null;
+    }
 
     @Override
-    public void addWrapperListener(String listener) { /* NO-OP */ }
+    public void removeRoleMapping(String role) {
+        // NO-OP
+    }
+
     @Override
-    public String[] findWrapperListeners() { return null; }
+    public void addSecurityRole(String role) {
+        // NO-OP
+    }
+
     @Override
-    public void removeWrapperListener(String listener) { /* NO-OP */ }
+    public boolean findSecurityRole(String role) {
+        return false;
+    }
 
     @Override
-    public InstanceManager createInstanceManager() { return null; }
+    public String[] findSecurityRoles() {
+        return null;
+    }
 
     @Override
-    public Wrapper createWrapper() { return null; }
+    public void removeSecurityRole(String role) {
+        // NO-OP
+    }
 
     @Override
-    public boolean fireRequestInitEvent(ServletRequest request) { return false; }
+    public void addServletMappingDecoded(String pattern, String name, boolean jspWildcard) {
+        // NO-OP
+    }
+
     @Override
-    public boolean fireRequestDestroyEvent(ServletRequest request) { return false; }
+    public String findServletMapping(String pattern) {
+        return null;
+    }
 
     @Override
-    public void reload() { /* NO-OP */ }
+    public String[] findServletMappings() {
+        return null;
+    }
 
     @Override
-    public String getRealPath(String path) { return null; }
+    public void removeServletMapping(String pattern) {
+        // NO-OP
+    }
 
     @Override
-    public int getEffectiveMajorVersion() { return 0; }
+    public void addWelcomeFile(String name) {
+        // NO-OP
+    }
+
     @Override
-    public void setEffectiveMajorVersion(int major) { /* NO-OP */ }
+    public boolean findWelcomeFile(String name) {
+        return false;
+    }
 
     @Override
-    public int getEffectiveMinorVersion() { return 0; }
+    public String[] findWelcomeFiles() {
+        return null;
+    }
+
     @Override
-    public void setEffectiveMinorVersion(int minor) { /* NO-OP */ }
+    public void removeWelcomeFile(String name) {
+        // NO-OP
+    }
 
     @Override
-    public JspConfigDescriptor getJspConfigDescriptor() { return null; }
+    public void addWrapperLifecycle(String listener) {
+        // NO-OP
+    }
 
     @Override
-    public void setJspConfigDescriptor(JspConfigDescriptor descriptor) { /* NO-OP */ }
+    public String[] findWrapperLifecycles() {
+        return null;
+    }
 
     @Override
-    public void addServletContainerInitializer(ServletContainerInitializer sci,
-            Set<Class<?>> classes) { /* NO-OP */ }
+    public void removeWrapperLifecycle(String listener) {
+        // NO-OP
+    }
 
     @Override
-    public boolean getPaused() { return false; }
+    public void addWrapperListener(String listener) {
+        // NO-OP
+    }
 
     @Override
-    public boolean isServlet22() { return false; }
+    public String[] findWrapperListeners() {
+        return null;
+    }
 
     @Override
-    public Set<String> addServletSecurity(
-            ServletRegistration.Dynamic registration,
-            ServletSecurityElement servletSecurityElement) { return null; }
+    public void removeWrapperListener(String listener) {
+        // NO-OP
+    }
 
     @Override
-    public void setResourceOnlyServlets(String resourceOnlyServlets) { /* NO-OP */ }
+    public InstanceManager createInstanceManager() {
+        return null;
+    }
+
     @Override
-    public String getResourceOnlyServlets() { return null; }
+    public Wrapper createWrapper() {
+        return null;
+    }
+
     @Override
-    public boolean isResourceOnlyServlet(String servletName) { return false; }
+    public boolean fireRequestInitEvent(ServletRequest request) {
+        return false;
+    }
 
     @Override
-    public String getBaseName() { return null; }
+    public boolean fireRequestDestroyEvent(ServletRequest request) {
+        return false;
+    }
 
     @Override
-    public void setFireRequestListenersOnForwards(boolean enable) { /* NO-OP */ }
+    public void reload() {
+        // NO-OP
+    }
+
+    @Override
+    public String getRealPath(String path) {
+        return null;
+    }
+
+    @Override
+    public int getEffectiveMajorVersion() {
+        return 0;
+    }
+
     @Override
-    public boolean getFireRequestListenersOnForwards() { return false; }
+    public void setEffectiveMajorVersion(int major) {
+        // NO-OP
+    }
 
     @Override
-    public void setPreemptiveAuthentication(boolean enable) { /* NO-OP */ }
+    public int getEffectiveMinorVersion() {
+        return 0;
+    }
+
     @Override
-    public boolean getPreemptiveAuthentication() { return false; }
+    public void setEffectiveMinorVersion(int minor) {
+        // NO-OP
+    }
 
     @Override
-    public void setSendRedirectBody(boolean enable) { /* NO-OP */ }
+    public JspConfigDescriptor getJspConfigDescriptor() {
+        return null;
+    }
+
     @Override
-    public boolean getSendRedirectBody() { return false; }
+    public void setJspConfigDescriptor(JspConfigDescriptor descriptor) {
+        // NO-OP
+    }
+
+    @Override
+    public void addServletContainerInitializer(ServletContainerInitializer sci, Set<Class<?>> classes) {
+        // NO-OP
+    }
+
+    @Override
+    public boolean getPaused() {
+        return false;
+    }
+
+    @Override
+    public boolean isServlet22() {
+        return false;
+    }
+
+    @Override
+    public Set<String> addServletSecurity(ServletRegistration.Dynamic registration,
+            ServletSecurityElement servletSecurityElement) {
+        return null;
+    }
+
+    @Override
+    public void setResourceOnlyServlets(String resourceOnlyServlets) {
+        // NO-OP
+    }
+
+    @Override
+    public String getResourceOnlyServlets() {
+        return null;
+    }
+
+    @Override
+    public boolean isResourceOnlyServlet(String servletName) {
+        return false;
+    }
+
+    @Override
+    public String getBaseName() {
+        return null;
+    }
+
+    @Override
+    public void setFireRequestListenersOnForwards(boolean enable) {
+        // NO-OP
+    }
+
+    @Override
+    public boolean getFireRequestListenersOnForwards() {
+        return false;
+    }
+
+    @Override
+    public void setPreemptiveAuthentication(boolean enable) {
+        // NO-OP
+    }
+
+    @Override
+    public boolean getPreemptiveAuthentication() {
+        return false;
+    }
+
+    @Override
+    public void setSendRedirectBody(boolean enable) {
+        // NO-OP
+    }
+
+    @Override
+    public boolean getSendRedirectBody() {
+        return false;
+    }
 
     @SuppressWarnings("unused")
-    public synchronized void addValve(Valve valve) { /* NO-OP */ }
+    public synchronized void addValve(Valve valve) {
+        // NO-OP
+    }
 
     @Override
-    public File getCatalinaBase() { return null; }
+    public File getCatalinaBase() {
+        return null;
+    }
 
     @Override
-    public File getCatalinaHome() { return null; }
+    public File getCatalinaHome() {
+        return null;
+    }
 
     @Override
     public void setAddWebinfClassesResources(boolean addWebinfClassesResources) {
         // NO-OP
     }
+
     @Override
-    public boolean getAddWebinfClassesResources() { return false; }
+    public boolean getAddWebinfClassesResources() {
+        return false;
+    }
 
     @Override
-    public void addPostConstructMethod(String clazz, String method) { /* NO-OP */ }
+    public void addPostConstructMethod(String clazz, String method) {
+        // NO-OP
+    }
 
     @Override
-    public void addPreDestroyMethod(String clazz, String method) { /* NO-OP */ }
+    public void addPreDestroyMethod(String clazz, String method) {
+        // NO-OP
+    }
 
     @Override
-    public void removePostConstructMethod(String clazz) { /* NO-OP */ }
+    public void removePostConstructMethod(String clazz) {
+        // NO-OP
+    }
 
     @Override
-    public void removePreDestroyMethod(String clazz) { /* NO-OP */ }
+    public void removePreDestroyMethod(String clazz) {
+        // NO-OP
+    }
 
     @Override
-    public String findPostConstructMethod(String clazz) { return null; }
+    public String findPostConstructMethod(String clazz) {
+        return null;
+    }
 
     @Override
-    public String findPreDestroyMethod(String clazz) { return null; }
+    public String findPreDestroyMethod(String clazz) {
+        return null;
+    }
 
     @Override
-    public Map<String, String> findPostConstructMethods() { return null; }
+    public Map<String,String> findPostConstructMethods() {
+        return null;
+    }
 
     @Override
-    public Map<String, String> findPreDestroyMethods() { return null; }
+    public Map<String,String> findPreDestroyMethods() {
+        return null;
+    }
 
     @Override
-    public InstanceManager getInstanceManager() { return null; }
+    public InstanceManager getInstanceManager() {
+        return null;
+    }
 
     @Override
-    public void setInstanceManager(InstanceManager instanceManager) { /* NO-OP */ }
+    public void setInstanceManager(InstanceManager instanceManager) {
+        // NO-OP
+    }
 
     @Override
-    public void setContainerSciFilter(String containerSciFilter) { /* NO-OP */ }
+    public void setContainerSciFilter(String containerSciFilter) {
+        // NO-OP
+    }
 
     @Override
-    public String getContainerSciFilter() { return null; }
+    public String getContainerSciFilter() {
+        return null;
+    }
 
     @Override
-    public ThreadBindingListener getThreadBindingListener() { return null; }
+    public ThreadBindingListener getThreadBindingListener() {
+        return null;
+    }
 
     @Override
     public void setThreadBindingListener(ThreadBindingListener threadBindingListener) {
@@ -766,13 +1287,19 @@ public class FailedContext extends LifecycleMBeanBase implements Context {
     }
 
     @Override
-    public Object getNamingToken() { return null; }
+    public Object getNamingToken() {
+        return null;
+    }
 
     @Override
-    public void setCookieProcessor(CookieProcessor cookieProcessor) { /* NO-OP */ }
+    public void setCookieProcessor(CookieProcessor cookieProcessor) {
+        // NO-OP
+    }
 
     @Override
-    public CookieProcessor getCookieProcessor() { return null; }
+    public CookieProcessor getCookieProcessor() {
+        return null;
+    }
 
     @Override
     public void setValidateClientProvidedNewSessionId(boolean validateClientProvidedNewSessionId) {
@@ -780,7 +1307,9 @@ public class FailedContext extends LifecycleMBeanBase implements Context {
     }
 
     @Override
-    public boolean getValidateClientProvidedNewSessionId() { return false; }
+    public boolean getValidateClientProvidedNewSessionId() {
+        return false;
+    }
 
     @Override
     public void setMapperContextRootRedirectEnabled(boolean mapperContextRootRedirectEnabled) {
@@ -788,7 +1317,9 @@ public class FailedContext extends LifecycleMBeanBase implements Context {
     }
 
     @Override
-    public boolean getMapperContextRootRedirectEnabled() { return false; }
+    public boolean getMapperContextRootRedirectEnabled() {
+        return false;
+    }
 
     @Override
     public void setMapperDirectoryRedirectEnabled(boolean mapperDirectoryRedirectEnabled) {
@@ -796,64 +1327,113 @@ public class FailedContext extends LifecycleMBeanBase implements Context {
     }
 
     @Override
-    public boolean getMapperDirectoryRedirectEnabled() { return false; }
+    public boolean getMapperDirectoryRedirectEnabled() {
+        return false;
+    }
 
     @Override
-    public void setUseRelativeRedirects(boolean useRelativeRedirects) { /* NO-OP */ }
+    public void setUseRelativeRedirects(boolean useRelativeRedirects) {
+        // NO-OP
+    }
+
     @Override
-    public boolean getUseRelativeRedirects() { return true; }
+    public boolean getUseRelativeRedirects() {
+        return true;
+    }
 
     @Override
-    public void setDispatchersUseEncodedPaths(boolean dispatchersUseEncodedPaths) { /* NO-OP */ }
+    public void setDispatchersUseEncodedPaths(boolean dispatchersUseEncodedPaths) {
+        // NO-OP
+    }
+
     @Override
-    public boolean getDispatchersUseEncodedPaths() { return true; }
+    public boolean getDispatchersUseEncodedPaths() {
+        return true;
+    }
 
     @Override
-    public void setRequestCharacterEncoding(String encoding) { /* NO-OP */ }
+    public void setRequestCharacterEncoding(String encoding) {
+        // NO-OP
+    }
+
     @Override
-    public String getRequestCharacterEncoding() { return null; }
+    public String getRequestCharacterEncoding() {
+        return null;
+    }
 
     @Override
-    public void setResponseCharacterEncoding(String encoding) { /* NO-OP */ }
+    public void setResponseCharacterEncoding(String encoding) {
+        // NO-OP
+    }
+
     @Override
-    public String getResponseCharacterEncoding() { return null; }
+    public String getResponseCharacterEncoding() {
+        return null;
+    }
 
     @Override
-    public void setAllowMultipleLeadingForwardSlashInPath(
-            boolean allowMultipleLeadingForwardSlashInPath) {
+    public void setAllowMultipleLeadingForwardSlashInPath(boolean allowMultipleLeadingForwardSlashInPath) {
         // NO-OP
     }
+
     @Override
-    public boolean getAllowMultipleLeadingForwardSlashInPath() { return false; }
+    public boolean getAllowMultipleLeadingForwardSlashInPath() {
+        return false;
+    }
 
     @Override
-    public void incrementInProgressAsyncCount() { /* NO-OP */ }
+    public void incrementInProgressAsyncCount() {
+        // NO-OP
+    }
+
     @Override
-    public void decrementInProgressAsyncCount() { /* NO-OP */ }
+    public void decrementInProgressAsyncCount() {
+        // NO-OP
+    }
 
     @Override
-    public void setCreateUploadTargets(boolean createUploadTargets) { /* NO-OP */}
+    public void setCreateUploadTargets(boolean createUploadTargets) {
+        /* NO-OP */}
+
     @Override
-    public boolean getCreateUploadTargets() { return false; }
+    public boolean getCreateUploadTargets() {
+        return false;
+    }
 
     @Override
-    public boolean getAlwaysAccessSession() { return false; }
+    public boolean getAlwaysAccessSession() {
+        return false;
+    }
+
     @Override
-    public void setAlwaysAccessSession(boolean alwaysAccessSession) {}
+    public void setAlwaysAccessSession(boolean alwaysAccessSession) {
+    }
 
     @Override
-    public boolean getContextGetResourceRequiresSlash() { return false; }
+    public boolean getContextGetResourceRequiresSlash() {
+        return false;
+    }
+
     @Override
-    public void setContextGetResourceRequiresSlash(boolean contextGetResourceRequiresSlash) {}
+    public void setContextGetResourceRequiresSlash(boolean contextGetResourceRequiresSlash) {
+    }
 
     @Override
-    public boolean getDispatcherWrapsSameObject() { return false; }
+    public boolean getDispatcherWrapsSameObject() {
+        return false;
+    }
+
     @Override
-    public void setDispatcherWrapsSameObject(boolean dispatcherWrapsSameObject) {}
+    public void setDispatcherWrapsSameObject(boolean dispatcherWrapsSameObject) {
+    }
 
     @Override
-    public boolean getParallelAnnotationScanning() { return false; }
+    public boolean getParallelAnnotationScanning() {
+        return false;
+    }
+
     @Override
-    public void setParallelAnnotationScanning(boolean parallelAnnotationScanning) {}
+    public void setParallelAnnotationScanning(boolean parallelAnnotationScanning) {
+    }
 
 }
\ No newline at end of file
diff --git a/java/org/apache/catalina/startup/HomesUserDatabase.java b/java/org/apache/catalina/startup/HomesUserDatabase.java
index a0be2dbc5f..fd8caf78d7 100644
--- a/java/org/apache/catalina/startup/HomesUserDatabase.java
+++ b/java/org/apache/catalina/startup/HomesUserDatabase.java
@@ -23,9 +23,8 @@ import java.util.HashMap;
 import java.util.Map;
 
 /**
- * Concrete implementation of the <code>UserDatabase</code> interface
- * considers all directories in a directory whose pathname is specified
- * to our constructor to be "home" directories for those users.
+ * Concrete implementation of the <code>UserDatabase</code> interface considers all directories in a directory whose
+ * pathname is specified to our constructor to be "home" directories for those users.
  *
  * @author Craig R. McClanahan
  */
diff --git a/java/org/apache/catalina/startup/HostConfig.java b/java/org/apache/catalina/startup/HostConfig.java
index a04e4f3a46..6297968616 100644
--- a/java/org/apache/catalina/startup/HostConfig.java
+++ b/java/org/apache/catalina/startup/HostConfig.java
@@ -66,8 +66,8 @@ import org.apache.tomcat.util.modeler.Registry;
 import org.apache.tomcat.util.res.StringManager;
 
 /**
- * Startup event listener for a <b>Host</b> that configures the properties
- * of that Host, and the associated defined contexts.
+ * Startup event listener for a <b>Host</b> that configures the properties of that Host, and the associated defined
+ * contexts.
  *
  * @author Craig R. McClanahan
  * @author Remy Maucherat
@@ -108,23 +108,20 @@ public class HostConfig implements LifecycleListener {
 
 
     /**
-     * Should we deploy XML Context config files packaged with WAR files and
-     * directories?
+     * Should we deploy XML Context config files packaged with WAR files and directories?
      */
     protected boolean deployXML = false;
 
 
     /**
-     * Should XML files be copied to
-     * $CATALINA_BASE/conf/&lt;engine&gt;/&lt;host&gt; by default when
-     * a web application is deployed?
+     * Should XML files be copied to $CATALINA_BASE/conf/&lt;engine&gt;/&lt;host&gt; by default when a web application
+     * is deployed?
      */
     protected boolean copyXML = false;
 
 
     /**
-     * Should we unpack WAR files when auto-deploying applications in the
-     * <code>appBase</code> directory?
+     * Should we unpack WAR files when auto-deploying applications in the <code>appBase</code> directory?
      */
     protected boolean unpackWARs = false;
 
@@ -132,13 +129,11 @@ public class HostConfig implements LifecycleListener {
     /**
      * Map of deployed applications.
      */
-    protected final Map<String, DeployedApplication> deployed =
-            new ConcurrentHashMap<>();
+    protected final Map<String,DeployedApplication> deployed = new ConcurrentHashMap<>();
 
 
     /**
-     * Set of applications which are being serviced, and shouldn't be
-     * deployed/undeployed/redeployed at the moment.
+     * Set of applications which are being serviced, and shouldn't be deployed/undeployed/redeployed at the moment.
      */
     private Set<String> servicedSet = ConcurrentHashMap.newKeySet();
 
@@ -149,8 +144,7 @@ public class HostConfig implements LifecycleListener {
     private final Object digesterLock = new Object();
 
     /**
-     * The list of Wars in the appBase to be ignored because they are invalid
-     * (e.g. contain /../ sequences).
+     * The list of Wars in the appBase to be ignored because they are invalid (e.g. contain /../ sequences).
      */
     protected final Set<String> invalidWars = new HashSet<>();
 
@@ -216,7 +210,7 @@ public class HostConfig implements LifecycleListener {
      */
     public void setCopyXML(boolean copyXML) {
 
-        this.copyXML= copyXML;
+        this.copyXML = copyXML;
 
     }
 
@@ -278,8 +272,7 @@ public class HostConfig implements LifecycleListener {
 
 
     /**
-     * Add a serviced application to the list and indicates if the application
-     * was already present in the list.
+     * Add a serviced application to the list and indicates if the application was already present in the list.
      *
      * @param name the context name
      *
@@ -295,6 +288,7 @@ public class HostConfig implements LifecycleListener {
 
     /**
      * Removed a serviced application from the list.
+     *
      * @param name the context name
      */
     public void removeServiced(String name) {
@@ -304,9 +298,10 @@ public class HostConfig implements LifecycleListener {
 
     /**
      * Get the instant where an application was deployed.
+     *
      * @param name the context name
-     * @return 0L if no application with that name is deployed, or the instant
-     *  on which the application was deployed
+     *
+     * @return 0L if no application with that name is deployed, or the instant on which the application was deployed
      */
     public long getDeploymentTime(String name) {
         synchronized (host) {
@@ -321,12 +316,12 @@ public class HostConfig implements LifecycleListener {
 
 
     /**
-     * Has the specified application been deployed? Note applications defined
-     * in server.xml will not have been deployed.
+     * Has the specified application been deployed? Note applications defined in server.xml will not have been deployed.
+     *
      * @param name the context name
-     * @return <code>true</code> if the application has been deployed and
-     *  <code>false</code> if the application has not been deployed or does not
-     *  exist
+     *
+     * @return <code>true</code> if the application has been deployed and <code>false</code> if the application has not
+     *             been deployed or does not exist
      */
     public boolean isDeployed(String name) {
         return deployed.containsKey(name);
@@ -338,8 +333,9 @@ public class HostConfig implements LifecycleListener {
 
     /**
      * Create the digester which will be used to parse context config files.
-     * @param contextClassName The class which will be used to create the
-     *  context instance
+     *
+     * @param contextClassName The class which will be used to create the context instance
+     *
      * @return the digester
      */
     protected static Digester createDigester(String contextClassName) {
@@ -367,8 +363,8 @@ public class HostConfig implements LifecycleListener {
 
 
     /**
-     * Get the name of the configBase.
-     * For use with JMX management.
+     * Get the name of the configBase. For use with JMX management.
+     *
      * @return the config base
      */
     public String getConfigBaseName() {
@@ -377,8 +373,7 @@ public class HostConfig implements LifecycleListener {
 
 
     /**
-     * Deploy applications for any directories or WAR files that are found
-     * in our "application root" directory.
+     * Deploy applications for any directories or WAR files that are found in our "application root" directory.
      */
     protected void deployApps() {
         // Migrate legacy Java EE apps from legacyAppBase
@@ -396,12 +391,12 @@ public class HostConfig implements LifecycleListener {
 
 
     /**
-     * Filter the list of application file paths to remove those that match
-     * the regular expression defined by {@link Host#getDeployIgnore()}.
+     * Filter the list of application file paths to remove those that match the regular expression defined by
+     * {@link Host#getDeployIgnore()}.
      *
-     * @param unfilteredAppPaths    The list of application paths to filter
+     * @param unfilteredAppPaths The list of application paths to filter
      *
-     * @return  The filtered list of application paths
+     * @return The filtered list of application paths
      */
     protected String[] filterAppPaths(String[] unfilteredAppPaths) {
         Pattern filter = host.getDeployIgnorePattern();
@@ -430,11 +425,9 @@ public class HostConfig implements LifecycleListener {
 
 
     /**
-     * Deploy applications for any directories or WAR files that are found
-     * in our "application root" directory.
+     * Deploy applications for any directories or WAR files that are found in our "application root" directory.
      * <p>
-     * Note: It is expected that the caller has successfully added the app
-     *       to servicedSet before calling this method.
+     * Note: It is expected that the caller has successfully added the app to servicedSet before calling this method.
      *
      * @param name The context name which should be deployed
      */
@@ -471,8 +464,9 @@ public class HostConfig implements LifecycleListener {
 
     /**
      * Deploy XML context descriptors.
+     *
      * @param configBase The config base
-     * @param files The XML descriptors which should be deployed
+     * @param files      The XML descriptors which should be deployed
      */
     protected void deployDescriptors(File configBase, String[] files) {
 
@@ -520,10 +514,9 @@ public class HostConfig implements LifecycleListener {
     /**
      * Deploy specified context descriptor.
      * <p>
-     * Note: It is expected that the caller has successfully added the app
-     *       to servicedSet before calling this method.
+     * Note: It is expected that the caller has successfully added the app to servicedSet before calling this method.
      *
-     * @param cn The context name
+     * @param cn         The context name
      * @param contextXml The descriptor
      */
     @SuppressWarnings("null") // context is not null
@@ -534,8 +527,8 @@ public class HostConfig implements LifecycleListener {
         long startTime = 0;
         // Assume this is a configuration descriptor and deploy it
         if (log.isInfoEnabled()) {
-           startTime = System.currentTimeMillis();
-           log.info(sm.getString("hostConfig.deployDescriptor", contextXml.getAbsolutePath()));
+            startTime = System.currentTimeMillis();
+            log.info(sm.getString("hostConfig.deployDescriptor", contextXml.getAbsolutePath()));
         }
 
         Context context = null;
@@ -579,23 +572,22 @@ public class HostConfig implements LifecycleListener {
                 // If external docBase, register .xml as redeploy first
                 if (!docBase.getCanonicalFile().toPath().startsWith(host.getAppBaseFile().toPath())) {
                     isExternal = true;
-                    deployedApp.redeployResources.put(
-                            contextXml.getAbsolutePath(), Long.valueOf(contextXml.lastModified()));
-                    deployedApp.redeployResources.put(
-                            docBase.getAbsolutePath(), Long.valueOf(docBase.lastModified()));
+                    deployedApp.redeployResources.put(contextXml.getAbsolutePath(),
+                            Long.valueOf(contextXml.lastModified()));
+                    deployedApp.redeployResources.put(docBase.getAbsolutePath(), Long.valueOf(docBase.lastModified()));
                     if (docBase.getAbsolutePath().toLowerCase(Locale.ENGLISH).endsWith(".war")) {
                         isExternalWar = true;
                     }
                     // Check that a WAR or DIR in the appBase is not 'hidden'
                     File war = new File(host.getAppBaseFile(), cn.getBaseName() + ".war");
                     if (war.exists()) {
-                        log.warn(sm.getString("hostConfig.deployDescriptor.hiddenWar",
-                                contextXml.getAbsolutePath(), war.getAbsolutePath()));
+                        log.warn(sm.getString("hostConfig.deployDescriptor.hiddenWar", contextXml.getAbsolutePath(),
+                                war.getAbsolutePath()));
                     }
                     File dir = new File(host.getAppBaseFile(), cn.getBaseName());
                     if (dir.exists()) {
-                        log.warn(sm.getString("hostConfig.deployDescriptor.hiddenDir",
-                                contextXml.getAbsolutePath(), dir.getAbsolutePath()));
+                        log.warn(sm.getString("hostConfig.deployDescriptor.hiddenDir", contextXml.getAbsolutePath(),
+                                dir.getAbsolutePath()));
                     }
                 } else {
                     log.warn(sm.getString("hostConfig.deployDescriptor.localDocBaseSpecified", docBase));
@@ -631,8 +623,8 @@ public class HostConfig implements LifecycleListener {
             // watched inside it
             if (isExternalWar) {
                 if (unpackWAR) {
-                    deployedApp.redeployResources.put(
-                            expandedDocBase.getAbsolutePath(), Long.valueOf(expandedDocBase.lastModified()));
+                    deployedApp.redeployResources.put(expandedDocBase.getAbsolutePath(),
+                            Long.valueOf(expandedDocBase.lastModified()));
                     addWatchedResources(deployedApp, expandedDocBase.getAbsolutePath(), context);
                 } else {
                     addWatchedResources(deployedApp, null, context);
@@ -642,16 +634,16 @@ public class HostConfig implements LifecycleListener {
                 if (!isExternal) {
                     File warDocBase = new File(expandedDocBase.getAbsolutePath() + ".war");
                     if (warDocBase.exists()) {
-                        deployedApp.redeployResources.put(
-                                warDocBase.getAbsolutePath(), Long.valueOf(warDocBase.lastModified()));
+                        deployedApp.redeployResources.put(warDocBase.getAbsolutePath(),
+                                Long.valueOf(warDocBase.lastModified()));
                     } else {
                         // Trigger a redeploy if a WAR is added
                         deployedApp.redeployResources.put(warDocBase.getAbsolutePath(), Long.valueOf(0));
                     }
                 }
                 if (unpackWAR) {
-                    deployedApp.redeployResources.put(
-                            expandedDocBase.getAbsolutePath(), Long.valueOf(expandedDocBase.lastModified()));
+                    deployedApp.redeployResources.put(expandedDocBase.getAbsolutePath(),
+                            Long.valueOf(expandedDocBase.lastModified()));
                     addWatchedResources(deployedApp, expandedDocBase.getAbsolutePath(), context);
                 } else {
                     addWatchedResources(deployedApp, null, context);
@@ -659,8 +651,8 @@ public class HostConfig implements LifecycleListener {
                 if (!isExternal) {
                     // For external docBases, the context.xml will have been
                     // added above.
-                    deployedApp.redeployResources.put(
-                            contextXml.getAbsolutePath(), Long.valueOf(contextXml.lastModified()));
+                    deployedApp.redeployResources.put(contextXml.getAbsolutePath(),
+                            Long.valueOf(contextXml.lastModified()));
                 }
             }
             // Add the global redeploy resources (which are never deleted) at
@@ -673,16 +665,17 @@ public class HostConfig implements LifecycleListener {
         }
 
         if (log.isInfoEnabled()) {
-            log.info(sm.getString("hostConfig.deployDescriptor.finished",
-                    contextXml.getAbsolutePath(), Long.valueOf(System.currentTimeMillis() - startTime)));
+            log.info(sm.getString("hostConfig.deployDescriptor.finished", contextXml.getAbsolutePath(),
+                    Long.valueOf(System.currentTimeMillis() - startTime)));
         }
     }
 
 
     /**
      * Deploy WAR files.
+     *
      * @param appBase The base path for applications
-     * @param files The WARs to deploy
+     * @param files   The WARs to deploy
      */
     protected void deployWARs(File appBase, String[] files) {
 
@@ -718,8 +711,8 @@ public class HostConfig implements LifecycleListener {
                                 File dir = new File(appBase, cn.getBaseName());
                                 if (dir.exists()) {
                                     if (!app.loggedDirWarning) {
-                                        log.warn(sm.getString("hostConfig.deployWar.hiddenDir",
-                                                dir.getAbsoluteFile(), war.getAbsoluteFile()));
+                                        log.warn(sm.getString("hostConfig.deployWar.hiddenDir", dir.getAbsoluteFile(),
+                                                war.getAbsoluteFile()));
                                         app.loggedDirWarning = true;
                                     }
                                 } else {
@@ -796,10 +789,9 @@ public class HostConfig implements LifecycleListener {
     /**
      * Deploy packed WAR.
      * <p>
-     * Note: It is expected that the caller has successfully added the app
-     *       to servicedSet before calling this method.
+     * Note: It is expected that the caller has successfully added the app to servicedSet before calling this method.
      *
-     * @param cn The context name
+     * @param cn  The context name
      * @param war The WAR file
      */
     protected void deployWAR(ContextName cn, File war) {
@@ -866,8 +858,8 @@ public class HostConfig implements LifecycleListener {
             } else if (!deployThisXML && xmlInWar) {
                 // Block deployment as META-INF/context.xml may contain security
                 // configuration necessary for a secure deployment.
-                log.error(sm.getString("hostConfig.deployDescriptor.blocked",
-                        cn.getPath(), Constants.ApplicationContextXml,
+                log.error(sm.getString("hostConfig.deployDescriptor.blocked", cn.getPath(),
+                        Constants.ApplicationContextXml,
                         new File(host.getConfigBaseFile(), cn.getBaseName() + ".xml")));
             } else {
                 context = (Context) Class.forName(contextClass).getConstructor().newInstance();
@@ -907,12 +899,12 @@ public class HostConfig implements LifecycleListener {
             }
         }
 
-        DeployedApplication deployedApp = new DeployedApplication(
-                cn.getName(), xml.exists() && deployThisXML && copyThisXml);
+        DeployedApplication deployedApp =
+                new DeployedApplication(cn.getName(), xml.exists() && deployThisXML && copyThisXml);
 
         long startTime = 0;
         // Deploy the application in this WAR file
-        if(log.isInfoEnabled()) {
+        if (log.isInfoEnabled()) {
             startTime = System.currentTimeMillis();
             log.info(sm.getString("hostConfig.deployWar", war.getAbsolutePath()));
         }
@@ -969,16 +961,17 @@ public class HostConfig implements LifecycleListener {
         deployed.put(cn.getName(), deployedApp);
 
         if (log.isInfoEnabled()) {
-            log.info(sm.getString("hostConfig.deployWar.finished",
-                    war.getAbsolutePath(), Long.valueOf(System.currentTimeMillis() - startTime)));
+            log.info(sm.getString("hostConfig.deployWar.finished", war.getAbsolutePath(),
+                    Long.valueOf(System.currentTimeMillis() - startTime)));
         }
     }
 
 
     /**
      * Deploy exploded webapps.
+     *
      * @param appBase The base path for applications
-     * @param files The exploded webapps that should be deployed
+     * @param files   The exploded webapps that should be deployed
      */
     protected void deployDirectories(File appBase, String[] files) {
 
@@ -1032,17 +1025,16 @@ public class HostConfig implements LifecycleListener {
     /**
      * Deploy exploded webapp.
      * <p>
-     * Note: It is expected that the caller has successfully added the app
-     *       to servicedSet before calling this method.
+     * Note: It is expected that the caller has successfully added the app to servicedSet before calling this method.
      *
-     * @param cn The context name
+     * @param cn  The context name
      * @param dir The path to the root folder of the webapp
      */
     protected void deployDirectory(ContextName cn, File dir) {
 
         long startTime = 0;
         // Deploy the application in this directory
-        if( log.isInfoEnabled() ) {
+        if (log.isInfoEnabled()) {
             startTime = System.currentTimeMillis();
             log.info(sm.getString("hostConfig.deployDir", dir.getAbsolutePath()));
         }
@@ -1135,9 +1127,9 @@ public class HostConfig implements LifecycleListener {
 
         deployed.put(cn.getName(), deployedApp);
 
-        if( log.isInfoEnabled() ) {
-            log.info(sm.getString("hostConfig.deployDir.finished",
-                    dir.getAbsolutePath(), Long.valueOf(System.currentTimeMillis() - startTime)));
+        if (log.isInfoEnabled()) {
+            log.info(sm.getString("hostConfig.deployDir.finished", dir.getAbsolutePath(),
+                    Long.valueOf(System.currentTimeMillis() - startTime)));
         }
     }
 
@@ -1236,6 +1228,7 @@ public class HostConfig implements LifecycleListener {
      * Check if a webapp is already deployed in this host.
      *
      * @param contextName of the context which will be checked
+     *
      * @return <code>true</code> if the specified deployment exists
      */
     protected boolean deploymentExists(String contextName) {
@@ -1245,14 +1238,15 @@ public class HostConfig implements LifecycleListener {
 
     /**
      * Add watched resources to the specified Context.
-     * @param app HostConfig deployed app
+     *
+     * @param app     HostConfig deployed app
      * @param docBase web app docBase
      * @param context web application context
      */
     protected void addWatchedResources(DeployedApplication app, String docBase, Context context) {
         // FIXME: Feature idea. Add support for patterns (ex: WEB-INF/*,
-        //        WEB-INF/*.xml), where we would only check if at least one
-        //        resource is newer than app.timestamp
+        // WEB-INF/*.xml), where we would only check if at least one
+        // resource is newer than app.timestamp
         File docBaseFile = null;
         if (docBase != null) {
             docBaseFile = new File(docBase);
@@ -1268,34 +1262,28 @@ public class HostConfig implements LifecycleListener {
                     resource = new File(docBaseFile, watchedResource);
                 } else {
                     if (log.isDebugEnabled()) {
-                        log.debug("Ignoring non-existent WatchedResource '" +
-                                resource.getAbsolutePath() + "'");
+                        log.debug("Ignoring non-existent WatchedResource '" + resource.getAbsolutePath() + "'");
                     }
                     continue;
                 }
             }
             if (log.isDebugEnabled()) {
-                log.debug("Watching WatchedResource '" +
-                        resource.getAbsolutePath() + "'");
+                log.debug("Watching WatchedResource '" + resource.getAbsolutePath() + "'");
             }
-            app.reloadResources.put(resource.getAbsolutePath(),
-                    Long.valueOf(resource.lastModified()));
+            app.reloadResources.put(resource.getAbsolutePath(), Long.valueOf(resource.lastModified()));
         }
     }
 
 
     protected void addGlobalRedeployResources(DeployedApplication app) {
         // Redeploy resources processing is hard-coded to never delete this file
-        File hostContextXml =
-                new File(getConfigBaseName(), Constants.HostContextXml);
+        File hostContextXml = new File(getConfigBaseName(), Constants.HostContextXml);
         if (hostContextXml.isFile()) {
-            app.redeployResources.put(hostContextXml.getAbsolutePath(),
-                    Long.valueOf(hostContextXml.lastModified()));
+            app.redeployResources.put(hostContextXml.getAbsolutePath(), Long.valueOf(hostContextXml.lastModified()));
         }
 
         // Redeploy resources in CATALINA_BASE/conf are never deleted
-        File globalContextXml =
-                returnCanonicalPath(Constants.DefaultContextXml);
+        File globalContextXml = returnCanonicalPath(Constants.DefaultContextXml);
         if (globalContextXml.isFile()) {
             app.redeployResources.put(globalContextXml.getAbsolutePath(),
                     Long.valueOf(globalContextXml.lastModified()));
@@ -1306,43 +1294,33 @@ public class HostConfig implements LifecycleListener {
     /**
      * Check resources for redeployment and reloading.
      *
-     * @param app   The web application to check
-     * @param skipFileModificationResolutionCheck
-     *              When checking files for modification should the check that
-     *              requires that any file modification must have occurred at
-     *              least as long ago as the resolution of the file time stamp
-     *              be skipped
+     * @param app                                 The web application to check
+     * @param skipFileModificationResolutionCheck When checking files for modification should the check that requires
+     *                                                that any file modification must have occurred at least as long ago
+     *                                                as the resolution of the file time stamp be skipped
      */
-    protected void checkResources(DeployedApplication app,
-            boolean skipFileModificationResolutionCheck) {
-        String[] resources =
-            app.redeployResources.keySet().toArray(new String[0]);
+    protected void checkResources(DeployedApplication app, boolean skipFileModificationResolutionCheck) {
+        String[] resources = app.redeployResources.keySet().toArray(new String[0]);
         // Offset the current time by the resolution of File.lastModified()
-        long currentTimeWithResolutionOffset =
-                System.currentTimeMillis() - FILE_MODIFICATION_RESOLUTION_MS;
+        long currentTimeWithResolutionOffset = System.currentTimeMillis() - FILE_MODIFICATION_RESOLUTION_MS;
         for (int i = 0; i < resources.length; i++) {
             File resource = new File(resources[i]);
             if (log.isDebugEnabled()) {
-                log.debug("Checking context[" + app.name +
-                        "] redeploy resource " + resource);
+                log.debug("Checking context[" + app.name + "] redeploy resource " + resource);
             }
-            long lastModified =
-                    app.redeployResources.get(resources[i]).longValue();
+            long lastModified = app.redeployResources.get(resources[i]).longValue();
             if (resource.exists() || lastModified == 0) {
                 // File.lastModified() has a resolution of 1s (1000ms). The last
                 // modified time has to be more than 1000ms ago to ensure that
                 // modifications that take place in the same second are not
                 // missed. See Bug 57765.
-                if (resource.lastModified() != lastModified && (!host.getAutoDeploy() ||
-                        resource.lastModified() < currentTimeWithResolutionOffset ||
-                        skipFileModificationResolutionCheck)) {
+                if (resource.lastModified() != lastModified &&
+                        (!host.getAutoDeploy() || resource.lastModified() < currentTimeWithResolutionOffset ||
+                                skipFileModificationResolutionCheck)) {
                     if (resource.isDirectory()) {
                         // No action required for modified directory
-                        app.redeployResources.put(resources[i],
-                                Long.valueOf(resource.lastModified()));
-                    } else if (app.hasDescriptor &&
-                            resource.getName().toLowerCase(
-                                    Locale.ENGLISH).endsWith(".war")) {
+                        app.redeployResources.put(resources[i], Long.valueOf(resource.lastModified()));
+                    } else if (app.hasDescriptor && resource.getName().toLowerCase(Locale.ENGLISH).endsWith(".war")) {
                         // Modified WAR triggers a reload if there is an XML
                         // file present
                         // The only resource that should be deleted is the
@@ -1353,16 +1331,14 @@ public class HostConfig implements LifecycleListener {
                             // This is an expanded directory
                             File docBaseFile = new File(docBase);
                             if (!docBaseFile.isAbsolute()) {
-                                docBaseFile = new File(host.getAppBaseFile(),
-                                        docBase);
+                                docBaseFile = new File(host.getAppBaseFile(), docBase);
                             }
                             reload(app, docBaseFile, resource.getAbsolutePath());
                         } else {
                             reload(app, null, null);
                         }
                         // Update times
-                        app.redeployResources.put(resources[i],
-                                Long.valueOf(resource.lastModified()));
+                        app.redeployResources.put(resources[i], Long.valueOf(resource.lastModified()));
                         app.timestamp = System.currentTimeMillis();
                         boolean unpackWAR = unpackWARs;
                         if (unpackWAR && context instanceof StandardContext) {
@@ -1385,8 +1361,7 @@ public class HostConfig implements LifecycleListener {
             } else {
                 // There is a chance the the resource was only missing
                 // temporarily eg renamed during a text editor save
-                if (resource.exists() ||
-                    !resource.getName().toLowerCase(Locale.ENGLISH).endsWith(".war")) {
+                if (resource.exists() || !resource.getName().toLowerCase(Locale.ENGLISH).endsWith(".war")) {
                     try {
                         Thread.sleep(500);
                     } catch (InterruptedException e1) {
@@ -1416,8 +1391,7 @@ public class HostConfig implements LifecycleListener {
             // modifications that take place in the same second are not
             // missed. See Bug 57765.
             if ((resource.lastModified() != lastModified &&
-                    (!host.getAutoDeploy() ||
-                            resource.lastModified() < currentTimeWithResolutionOffset ||
+                    (!host.getAutoDeploy() || resource.lastModified() < currentTimeWithResolutionOffset ||
                             skipFileModificationResolutionCheck)) ||
                     update) {
                 if (!update) {
@@ -1427,8 +1401,7 @@ public class HostConfig implements LifecycleListener {
                 }
                 // Update times. More than one file may have been updated. We
                 // don't want to trigger a series of reloads.
-                app.reloadResources.put(s,
-                        Long.valueOf(resource.lastModified()));
+                app.reloadResources.put(s, Long.valueOf(resource.lastModified()));
             }
             app.timestamp = System.currentTimeMillis();
         }
@@ -1436,18 +1409,16 @@ public class HostConfig implements LifecycleListener {
 
 
     /*
-     * Note: If either of fileToRemove and newDocBase are null, both will be
-     *       ignored.
+     * Note: If either of fileToRemove and newDocBase are null, both will be ignored.
      */
     private void reload(DeployedApplication app, File fileToRemove, String newDocBase) {
-        if(log.isInfoEnabled()) {
+        if (log.isInfoEnabled()) {
             log.info(sm.getString("hostConfig.reload", app.name));
         }
         Context context = (Context) host.findChild(app.name);
         if (context.getState().isAvailable()) {
             if (fileToRemove != null && newDocBase != null) {
-                context.addLifecycleListener(
-                        new ExpandedDirectoryRemovalListener(fileToRemove, newDocBase));
+                context.addLifecycleListener(new ExpandedDirectoryRemovalListener(fileToRemove, newDocBase));
             }
             // Reload catches and logs exceptions
             context.reload();
@@ -1476,8 +1447,7 @@ public class HostConfig implements LifecycleListener {
             host.removeChild(context);
         } catch (Throwable t) {
             ExceptionUtils.handleThrowable(t);
-            log.warn(sm.getString
-                     ("hostConfig.context.remove", app.name), t);
+            log.warn(sm.getString("hostConfig.context.remove", app.name), t);
         }
         deployed.remove(app.name);
     }
@@ -1526,15 +1496,17 @@ public class HostConfig implements LifecycleListener {
 
 
     /*
-     * Delete any resource that would trigger the automatic deployment code to
-     * re-deploy the application. This means deleting:
+     * Delete any resource that would trigger the automatic deployment code to re-deploy the application. This means
+     * deleting:
+     *
      * - any resource located in the appBase
+     *
      * - any deployment descriptor located under the configBase
+     *
      * - symlinks in the appBase or configBase for either of the above
      */
     private boolean isDeletableResource(DeployedApplication app, File resource) {
-        // The resource may be a file, a directory or a symlink to a file or
-        // directory.
+        // The resource may be a file, a directory or a symlink to a file or directory.
 
         // Check that the resource is absolute. This should always be the case.
         if (!resource.isAbsolute()) {
@@ -1547,8 +1519,7 @@ public class HostConfig implements LifecycleListener {
         try {
             canonicalLocation = resource.getParentFile().getCanonicalPath();
         } catch (IOException e) {
-            log.warn(sm.getString(
-                    "hostConfig.canonicalizing", resource.getParentFile(), app.name), e);
+            log.warn(sm.getString("hostConfig.canonicalizing", resource.getParentFile(), app.name), e);
             return false;
         }
 
@@ -1556,8 +1527,7 @@ public class HostConfig implements LifecycleListener {
         try {
             canonicalAppBase = host.getAppBaseFile().getCanonicalPath();
         } catch (IOException e) {
-            log.warn(sm.getString(
-                    "hostConfig.canonicalizing", host.getAppBaseFile(), app.name), e);
+            log.warn(sm.getString("hostConfig.canonicalizing", host.getAppBaseFile(), app.name), e);
             return false;
         }
 
@@ -1570,13 +1540,11 @@ public class HostConfig implements LifecycleListener {
         try {
             canonicalConfigBase = host.getConfigBaseFile().getCanonicalPath();
         } catch (IOException e) {
-            log.warn(sm.getString(
-                    "hostConfig.canonicalizing", host.getConfigBaseFile(), app.name), e);
+            log.warn(sm.getString("hostConfig.canonicalizing", host.getConfigBaseFile(), app.name), e);
             return false;
         }
 
-        if (canonicalLocation.equals(canonicalConfigBase) &&
-                resource.getName().endsWith(".xml")) {
+        if (canonicalLocation.equals(canonicalConfigBase) && resource.getName().endsWith(".xml")) {
             // Resource is an xml file in the configBase so it may be deleted
             return true;
         }
@@ -1588,7 +1556,7 @@ public class HostConfig implements LifecycleListener {
 
     public void beforeStart() {
         if (host.getCreateDirs()) {
-            File[] dirs = new File[] {host.getAppBaseFile(),host.getConfigBaseFile()};
+            File[] dirs = new File[] { host.getAppBaseFile(), host.getConfigBaseFile() };
             for (File dir : dirs) {
                 if (!dir.mkdirs() && !dir.isDirectory()) {
                     log.error(sm.getString("hostConfig.createDirs", dir));
@@ -1609,17 +1577,14 @@ public class HostConfig implements LifecycleListener {
 
         try {
             ObjectName hostON = host.getObjectName();
-            oname = new ObjectName
-                (hostON.getDomain() + ":type=Deployer,host=" + host.getName());
-            Registry.getRegistry(null, null).registerComponent
-                (this, oname, this.getClass().getName());
+            oname = new ObjectName(hostON.getDomain() + ":type=Deployer,host=" + host.getName());
+            Registry.getRegistry(null, null).registerComponent(this, oname, this.getClass().getName());
         } catch (Exception e) {
             log.warn(sm.getString("hostConfig.jmx.register", oname), e);
         }
 
         if (!host.getAppBaseFile().isDirectory()) {
-            log.error(sm.getString("hostConfig.appBase", host.getName(),
-                    host.getAppBaseFile().getPath()));
+            log.error(sm.getString("hostConfig.appBase", host.getName(), host.getAppBaseFile().getPath()));
             host.setDeployOnStartup(false);
             host.setAutoDeploy(false);
         }
@@ -1680,13 +1645,11 @@ public class HostConfig implements LifecycleListener {
 
 
     /**
-     * Check status of a specific web application and reload, redeploy or deploy
-     * it as necessary. This method is for use with functionality such as
-     * management web applications that upload new/updated web applications and
-     * need to trigger the appropriate action to deploy them. This method
-     * assumes that any uploading/updating has been completed before this method
-     * is called. Any action taken as a result of the checks will complete
-     * before this method returns.
+     * Check status of a specific web application and reload, redeploy or deploy it as necessary. This method is for use
+     * with functionality such as management web applications that upload new/updated web applications and need to
+     * trigger the appropriate action to deploy them. This method assumes that any uploading/updating has been completed
+     * before this method is called. Any action taken as a result of the checks will complete before this method
+     * returns.
      *
      * @param name The name of the web application to check
      */
@@ -1710,8 +1673,8 @@ public class HostConfig implements LifecycleListener {
     }
 
     /**
-     * Check for old versions of applications using parallel deployment that are
-     * now unused (have no active sessions) and undeploy any that are found.
+     * Check for old versions of applications using parallel deployment that are now unused (have no active sessions)
+     * and undeploy any that are found.
      */
     public void checkUndeploy() {
         synchronized (host) {
@@ -1733,8 +1696,7 @@ public class HostConfig implements LifecycleListener {
                     // be a later version
                     Context previousContext = (Context) host.findChild(previous.getName());
                     Context currentContext = (Context) host.findChild(current.getName());
-                    if (previousContext != null && currentContext != null &&
-                            currentContext.getState().isAvailable() &&
+                    if (previousContext != null && currentContext != null && currentContext.getState().isAvailable() &&
                             tryAddServiced(previous.getName())) {
                         try {
                             Manager manager = previousContext.getManager();
@@ -1769,11 +1731,11 @@ public class HostConfig implements LifecycleListener {
     }
 
     /**
-     * Add a new Context to be managed by us.
-     * Entry point for the admin webapp, and other JMX Context controllers.
+     * Add a new Context to be managed by us. Entry point for the admin webapp, and other JMX Context controllers.
+     *
      * @param context The context instance
      */
-    public void manageApp(Context context)  {
+    public void manageApp(Context context) {
 
         String contextName = context.getName();
 
@@ -1781,8 +1743,7 @@ public class HostConfig implements LifecycleListener {
             return;
         }
 
-        DeployedApplication deployedApp =
-                new DeployedApplication(contextName, false);
+        DeployedApplication deployedApp = new DeployedApplication(contextName, false);
 
         // Add the associated docBase to the redeployed list if it's a WAR
         boolean isWar = false;
@@ -1791,8 +1752,7 @@ public class HostConfig implements LifecycleListener {
             if (!docBase.isAbsolute()) {
                 docBase = new File(host.getAppBaseFile(), context.getDocBase());
             }
-            deployedApp.redeployResources.put(docBase.getAbsolutePath(),
-                    Long.valueOf(docBase.lastModified()));
+            deployedApp.redeployResources.put(docBase.getAbsolutePath(), Long.valueOf(docBase.lastModified()));
             if (docBase.getAbsolutePath().toLowerCase(Locale.ENGLISH).endsWith(".war")) {
                 isWar = true;
             }
@@ -1806,8 +1766,7 @@ public class HostConfig implements LifecycleListener {
         }
         if (isWar && unpackWAR) {
             File docBase = new File(host.getAppBaseFile(), context.getBaseName());
-            deployedApp.redeployResources.put(docBase.getAbsolutePath(),
-                        Long.valueOf(docBase.lastModified()));
+            deployedApp.redeployResources.put(docBase.getAbsolutePath(), Long.valueOf(docBase.lastModified()));
             addWatchedResources(deployedApp, docBase.getAbsolutePath(), context);
         } else {
             addWatchedResources(deployedApp, null, context);
@@ -1816,11 +1775,9 @@ public class HostConfig implements LifecycleListener {
     }
 
     /**
-     * Remove a webapp from our control.
-     * Entry point for the admin webapp, and other JMX Context controllers.
+     * Remove a webapp from our control. Entry point for the admin webapp, and other JMX Context controllers.
      * <p>
-     * Note: It is expected that the caller has successfully added the app
-     *       to servicedSet before calling this method.
+     * Note: It is expected that the caller has successfully added the app to servicedSet before calling this method.
      *
      * @param contextName The context name
      */
@@ -1833,8 +1790,7 @@ public class HostConfig implements LifecycleListener {
 
 
     /**
-     * This class represents the state of a deployed application, as well as
-     * the monitored resources.
+     * This class represents the state of a deployed application, as well as the monitored resources.
      */
     protected static class DeployedApplication {
         public DeployedApplication(String name, boolean hasDescriptor) {
@@ -1843,35 +1799,28 @@ public class HostConfig implements LifecycleListener {
         }
 
         /**
-         * Application context path. The assertion is that
-         * (host.getChild(name) != null).
+         * Application context path. The assertion is that (host.getChild(name) != null).
          */
         public final String name;
 
         /**
-         * Does this application have a context.xml descriptor file on the
-         * host's configBase?
+         * Does this application have a context.xml descriptor file on the host's configBase?
          */
         public final boolean hasDescriptor;
 
         /**
-         * Any modification of the specified (static) resources will cause a
-         * redeployment of the application. If any of the specified resources is
-         * removed, the application will be undeployed. Typically, this will
-         * contain resources like the context.xml file, a compressed WAR path.
-         * The value is the last modification time.
+         * Any modification of the specified (static) resources will cause a redeployment of the application. If any of
+         * the specified resources is removed, the application will be undeployed. Typically, this will contain
+         * resources like the context.xml file, a compressed WAR path. The value is the last modification time.
          */
-        public final LinkedHashMap<String, Long> redeployResources =
-                new LinkedHashMap<>();
+        public final LinkedHashMap<String,Long> redeployResources = new LinkedHashMap<>();
 
         /**
-         * Any modification of the specified (static) resources will cause a
-         * reload of the application. This will typically contain resources
-         * such as the web.xml of a webapp, but can be configured to contain
-         * additional descriptors.
-         * The value is the last modification time.
+         * Any modification of the specified (static) resources will cause a reload of the application. This will
+         * typically contain resources such as the web.xml of a webapp, but can be configured to contain additional
+         * descriptors. The value is the last modification time.
          */
-        public final HashMap<String, Long> reloadResources = new HashMap<>();
+        public final HashMap<String,Long> reloadResources = new HashMap<>();
 
         /**
          * Instant where the application was last put in service.
@@ -1879,10 +1828,9 @@ public class HostConfig implements LifecycleListener {
         public long timestamp = System.currentTimeMillis();
 
         /**
-         * In some circumstances, such as when unpackWARs is true, a directory
-         * may be added to the appBase that is ignored. This flag indicates that
-         * the user has been warned so that the warning is not logged on every
-         * run of the auto deployer.
+         * In some circumstances, such as when unpackWARs is true, a directory may be added to the appBase that is
+         * ignored. This flag indicates that the user has been warned so that the warning is not logged on every run of
+         * the auto deployer.
          */
         public boolean loggedDirWarning = false;
     }
@@ -1893,11 +1841,10 @@ public class HostConfig implements LifecycleListener {
         private ContextName cn;
         private File descriptor;
 
-        DeployDescriptor(HostConfig config, ContextName cn,
-                File descriptor) {
+        DeployDescriptor(HostConfig config, ContextName cn, File descriptor) {
             this.config = config;
             this.cn = cn;
-            this.descriptor= descriptor;
+            this.descriptor = descriptor;
         }
 
         @Override
@@ -1981,16 +1928,13 @@ public class HostConfig implements LifecycleListener {
 
 
     /*
-     * The purpose of this class is to provide a way for HostConfig to get
-     * a Context to delete an expanded WAR after the Context stops. This is to
-     * resolve this issue described in Bug 57772. The alternative solutions
-     * require either duplicating a lot of the Context.reload() code in
-     * HostConfig or adding a new reload(boolean) method to Context that allows
-     * the caller to optionally delete any expanded WAR.
+     * The purpose of this class is to provide a way for HostConfig to get a Context to delete an expanded WAR after the
+     * Context stops. This is to resolve this issue described in Bug 57772. The alternative solutions require either
+     * duplicating a lot of the Context.reload() code in HostConfig or adding a new reload(boolean) method to Context
+     * that allows the caller to optionally delete any expanded WAR.
      *
-     * The LifecycleListener approach offers greater flexibility and enables the
-     * behaviour to be changed / extended / removed in future without changing
-     * the Context API.
+     * The LifecycleListener approach offers greater flexibility and enables the behaviour to be changed / extended /
+     * removed in future without changing the Context API.
      */
     private static class ExpandedDirectoryRemovalListener implements LifecycleListener {
 
@@ -1998,11 +1942,9 @@ public class HostConfig implements LifecycleListener {
         private final String newDocBase;
 
         /**
-         * Create a listener that will ensure that any expanded WAR is removed
-         * and the docBase set to the specified WAR.
+         * Create a listener that will ensure that any expanded WAR is removed and the docBase set to the specified WAR.
          *
-         * @param toDelete The file (a directory representing an expanded WAR)
-         *                 to be deleted
+         * @param toDelete   The file (a directory representing an expanded WAR) to be deleted
          * @param newDocBase The new docBase for the Context
          */
         ExpandedDirectoryRemovalListener(File toDelete, String newDocBase) {
diff --git a/java/org/apache/catalina/startup/HostRuleSet.java b/java/org/apache/catalina/startup/HostRuleSet.java
index d8bb36fb0f..82e3676a30 100644
--- a/java/org/apache/catalina/startup/HostRuleSet.java
+++ b/java/org/apache/catalina/startup/HostRuleSet.java
@@ -20,10 +20,8 @@ import org.apache.tomcat.util.digester.Digester;
 import org.apache.tomcat.util.digester.RuleSet;
 
 /**
- * <strong>RuleSet</strong> for processing the contents of a
- * Host definition element.  This <code>RuleSet</code> does NOT include
- * any rules for nested Context which should be added via instances of
- * <code>ContextRuleSet</code>.
+ * <strong>RuleSet</strong> for processing the contents of a Host definition element. This <code>RuleSet</code> does NOT
+ * include any rules for nested Context which should be added via instances of <code>ContextRuleSet</code>.
  *
  * @author Craig R. McClanahan
  */
@@ -40,8 +38,7 @@ public class HostRuleSet implements RuleSet {
     // ------------------------------------------------------------ Constructor
 
     /**
-     * Construct an instance of this <code>RuleSet</code> with the default
-     * matching pattern prefix.
+     * Construct an instance of this <code>RuleSet</code> with the default matching pattern prefix.
      */
     public HostRuleSet() {
         this("");
@@ -49,11 +46,9 @@ public class HostRuleSet implements RuleSet {
 
 
     /**
-     * Construct an instance of this <code>RuleSet</code> with the specified
-     * matching pattern prefix.
+     * Construct an instance of this <code>RuleSet</code> with the specified matching pattern prefix.
      *
-     * @param prefix Prefix for matching pattern rules (including the
-     *  trailing slash character)
+     * @param prefix Prefix for matching pattern rules (including the trailing slash character)
      */
     public HostRuleSet(String prefix) {
         this.prefix = prefix;
@@ -63,63 +58,43 @@ public class HostRuleSet implements RuleSet {
     // --------------------------------------------------------- Public Methods
 
     /**
-     * <p>Add the set of Rule instances defined in this RuleSet to the
-     * specified <code>Digester</code> instance, associating them with
-     * our namespace URI (if any).  This method should only be called
-     * by a Digester instance.</p>
+     * Add the set of Rule instances defined in this RuleSet to the specified <code>Digester</code> instance,
+     * associating them with our namespace URI (if any). This method should only be called by a Digester instance.
      *
-     * @param digester Digester instance to which the new Rule instances
-     *  should be added.
+     * @param digester Digester instance to which the new Rule instances should be added.
      */
     @Override
     public void addRuleInstances(Digester digester) {
 
-        digester.addObjectCreate(prefix + "Host",
-                                 "org.apache.catalina.core.StandardHost",
-                                 "className");
+        digester.addObjectCreate(prefix + "Host", "org.apache.catalina.core.StandardHost", "className");
         digester.addSetProperties(prefix + "Host");
+        digester.addRule(prefix + "Host", new CopyParentClassLoaderRule());
         digester.addRule(prefix + "Host",
-                         new CopyParentClassLoaderRule());
-        digester.addRule(prefix + "Host",
-                         new LifecycleListenerRule
-                         ("org.apache.catalina.startup.HostConfig",
-                          "hostConfigClass"));
-        digester.addSetNext(prefix + "Host",
-                            "addChild",
-                            "org.apache.catalina.Container");
-
-        digester.addCallMethod(prefix + "Host/Alias",
-                               "addAlias", 0);
-
-        //Cluster configuration start
-        digester.addObjectCreate(prefix + "Host/Cluster",
-                                 null, // MUST be specified in the element
-                                 "className");
+                new LifecycleListenerRule("org.apache.catalina.startup.HostConfig", "hostConfigClass"));
+        digester.addSetNext(prefix + "Host", "addChild", "org.apache.catalina.Container");
+
+        digester.addCallMethod(prefix + "Host/Alias", "addAlias", 0);
+
+        // Cluster configuration start
+        digester.addObjectCreate(prefix + "Host/Cluster", null, // MUST be specified in the element
+                "className");
         digester.addSetProperties(prefix + "Host/Cluster");
-        digester.addSetNext(prefix + "Host/Cluster",
-                            "setCluster",
-                            "org.apache.catalina.Cluster");
-        //Cluster configuration end
-
-        digester.addObjectCreate(prefix + "Host/Listener",
-                                 null, // MUST be specified in the element
-                                 "className");
+        digester.addSetNext(prefix + "Host/Cluster", "setCluster", "org.apache.catalina.Cluster");
+        // Cluster configuration end
+
+        digester.addObjectCreate(prefix + "Host/Listener", null, // MUST be specified in the element
+                "className");
         digester.addSetProperties(prefix + "Host/Listener");
-        digester.addSetNext(prefix + "Host/Listener",
-                            "addLifecycleListener",
-                            "org.apache.catalina.LifecycleListener");
+        digester.addSetNext(prefix + "Host/Listener", "addLifecycleListener", "org.apache.catalina.LifecycleListener");
 
         digester.addRuleSet(new RealmRuleSet(prefix + "Host/"));
 
-        digester.addObjectCreate(prefix + "Host/Valve",
-                                 null, // MUST be specified in the element
-                                 "className");
+        digester.addObjectCreate(prefix + "Host/Valve", null, // MUST be specified in the element
+                "className");
         digester.addSetProperties(prefix + "Host/Valve");
         digester.addCallMethod(prefix + "Host/Valve/init-param", "addInitParam", 2);
         digester.addCallParam(prefix + "Host/Valve/init-param/param-name", 0);
         digester.addCallParam(prefix + "Host/Valve/init-param/param-value", 1);
-        digester.addSetNext(prefix + "Host/Valve",
-                            "addValve",
-                            "org.apache.catalina.Valve");
+        digester.addSetNext(prefix + "Host/Valve", "addValve", "org.apache.catalina.Valve");
     }
 }
diff --git a/java/org/apache/catalina/startup/LifecycleListenerRule.java b/java/org/apache/catalina/startup/LifecycleListenerRule.java
index aa94fa9af4..023cf90d8e 100644
--- a/java/org/apache/catalina/startup/LifecycleListenerRule.java
+++ b/java/org/apache/catalina/startup/LifecycleListenerRule.java
@@ -25,17 +25,14 @@ import org.xml.sax.Attributes;
 
 
 /**
- * Rule that creates a new {@link LifecycleListener} and associates it with the
- * top object on the stack which must implement {@link Container}. The
- * implementation class to be used is determined by:
+ * Rule that creates a new {@link LifecycleListener} and associates it with the top object on the stack which must
+ * implement {@link Container}. The implementation class to be used is determined by:
  * <ol>
- * <li>Does the top element on the stack specify an implementation class using
- *     the attribute specified when this rule was created?</li>
- * <li>Does the parent {@link Container} of the {@link Container} on the top of
- *     the stack specify an implementation class using the attribute specified
- *     when this rule was created?</li>
- * <li>Use the default implementation class specified when this rule was
- *     created.</li>
+ * <li>Does the top element on the stack specify an implementation class using the attribute specified when this rule
+ * was created?</li>
+ * <li>Does the parent {@link Container} of the {@link Container} on the top of the stack specify an implementation
+ * class using the attribute specified when this rule was created?</li>
+ * <li>Use the default implementation class specified when this rule was created.</li>
  * </ol>
  */
 public class LifecycleListenerRule extends Rule {
@@ -47,10 +44,9 @@ public class LifecycleListenerRule extends Rule {
     /**
      * Construct a new instance of this Rule.
      *
-     * @param listenerClass Default name of the LifecycleListener
-     *  implementation class to be created
-     * @param attributeName Name of the attribute that optionally
-     *  includes an override name of the LifecycleListener class
+     * @param listenerClass Default name of the LifecycleListener implementation class to be created
+     * @param attributeName Name of the attribute that optionally includes an override name of the LifecycleListener
+     *                          class
      */
     public LifecycleListenerRule(String listenerClass, String attributeName) {
 
@@ -64,8 +60,7 @@ public class LifecycleListenerRule extends Rule {
 
 
     /**
-     * The attribute name of an attribute that can override the
-     * implementation class name.
+     * The attribute name of an attribute that can override the implementation class name.
      */
     private final String attributeName;
 
@@ -87,8 +82,7 @@ public class LifecycleListenerRule extends Rule {
      * @exception Exception if a processing error occurs
      */
     @Override
-    public void begin(String namespace, String name, Attributes attributes)
-        throws Exception {
+    public void begin(String namespace, String name, Attributes attributes) throws Exception {
 
         Container c = (Container) digester.peek();
         Container p = null;
@@ -109,8 +103,7 @@ public class LifecycleListenerRule extends Rule {
 
         // Check the container's parent for the specified attribute
         if (p != null && className == null) {
-            String configClass =
-                (String) IntrospectionUtils.getProperty(p, attributeName);
+            String configClass = (String) IntrospectionUtils.getProperty(p, attributeName);
             if (configClass != null && configClass.length() > 0) {
                 className = configClass;
             }
diff --git a/java/org/apache/catalina/startup/ListenerCreateRule.java b/java/org/apache/catalina/startup/ListenerCreateRule.java
index 0dd3c25fac..6cfb75ceae 100644
--- a/java/org/apache/catalina/startup/ListenerCreateRule.java
+++ b/java/org/apache/catalina/startup/ListenerCreateRule.java
@@ -42,8 +42,7 @@ public class ListenerCreateRule extends ObjectCreateRule {
     }
 
     @Override
-    public void begin(String namespace, String name, Attributes attributes)
-            throws Exception {
+    public void begin(String namespace, String name, Attributes attributes) throws Exception {
         if ("true".equals(attributes.getValue("optional"))) {
             try {
                 super.begin(namespace, name, attributes);
@@ -60,7 +59,8 @@ public class ListenerCreateRule extends ObjectCreateRule {
                 if (code != null) {
                     code.append(OptionalListener.class.getName().replace('$', '.')).append(' ');
                     code.append(digester.toVariableName(instance)).append(" = new ");
-                    code.append(OptionalListener.class.getName().replace('$', '.')).append("(\"").append(className).append("\");");
+                    code.append(OptionalListener.class.getName().replace('$', '.')).append("(\"").append(className)
+                            .append("\");");
                     code.append(System.lineSeparator());
                 }
             }
@@ -71,41 +71,50 @@ public class ListenerCreateRule extends ObjectCreateRule {
 
     public static class OptionalListener implements LifecycleListener {
         protected final String className;
-        protected final HashMap<String, String> properties = new HashMap<>();
+        protected final HashMap<String,String> properties = new HashMap<>();
+
         public OptionalListener(String className) {
             this.className = className;
         }
+
         /**
          * @return the className
          */
         public String getClassName() {
             return className;
         }
+
         @Override
         public void lifecycleEvent(LifecycleEvent event) {
             // Do nothing
         }
+
         /**
          * Return a set of the property keys.
+         *
          * @return the set
          */
         public Set<String> getProperties() {
             return properties.keySet();
         }
+
         /**
          * Return a property from the protocol handler.
          *
          * @param name the property name
+         *
          * @return the property value
          */
         public Object getProperty(String name) {
             return properties.get(name);
         }
+
         /**
          * Set the given property.
          *
-         * @param name the property name
+         * @param name  the property name
          * @param value the property value
+         *
          * @return <code>true</code>
          */
         public boolean setProperty(String name, String value) {
diff --git a/java/org/apache/catalina/startup/NamingRuleSet.java b/java/org/apache/catalina/startup/NamingRuleSet.java
index 3125d886cb..2e6c87937d 100644
--- a/java/org/apache/catalina/startup/NamingRuleSet.java
+++ b/java/org/apache/catalina/startup/NamingRuleSet.java
@@ -20,8 +20,7 @@ import org.apache.tomcat.util.digester.Digester;
 import org.apache.tomcat.util.digester.RuleSet;
 
 /**
- * <strong>RuleSet</strong> for processing the JNDI Enterprise Naming
- * Context resource declaration elements.
+ * <strong>RuleSet</strong> for processing the JNDI Enterprise Naming Context resource declaration elements.
  *
  * @author Craig R. McClanahan
  * @author Remy Maucherat
@@ -39,8 +38,7 @@ public class NamingRuleSet implements RuleSet {
     // ------------------------------------------------------------ Constructor
 
     /**
-     * Construct an instance of this <code>RuleSet</code> with the default
-     * matching pattern prefix.
+     * Construct an instance of this <code>RuleSet</code> with the default matching pattern prefix.
      */
     public NamingRuleSet() {
         this("");
@@ -48,11 +46,9 @@ public class NamingRuleSet implements RuleSet {
 
 
     /**
-     * Construct an instance of this <code>RuleSet</code> with the specified
-     * matching pattern prefix.
+     * Construct an instance of this <code>RuleSet</code> with the specified matching pattern prefix.
      *
-     * @param prefix Prefix for matching pattern rules (including the
-     *  trailing slash character)
+     * @param prefix Prefix for matching pattern rules (including the trailing slash character)
      */
     public NamingRuleSet(String prefix) {
         this.prefix = prefix;
@@ -62,64 +58,48 @@ public class NamingRuleSet implements RuleSet {
     // --------------------------------------------------------- Public Methods
 
     /**
-     * <p>Add the set of Rule instances defined in this RuleSet to the
-     * specified <code>Digester</code> instance, associating them with
-     * our namespace URI (if any).  This method should only be called
-     * by a Digester instance.</p>
+     * Add the set of Rule instances defined in this RuleSet to the specified <code>Digester</code> instance,
+     * associating them with our namespace URI (if any). This method should only be called by a Digester instance.
      *
-     * @param digester Digester instance to which the new Rule instances
-     *  should be added.
+     * @param digester Digester instance to which the new Rule instances should be added.
      */
     @Override
     public void addRuleInstances(Digester digester) {
 
-        digester.addObjectCreate(prefix + "Ejb",
-                                 "org.apache.tomcat.util.descriptor.web.ContextEjb");
+        digester.addObjectCreate(prefix + "Ejb", "org.apache.tomcat.util.descriptor.web.ContextEjb");
         digester.addSetProperties(prefix + "Ejb");
         digester.addRule(prefix + "Ejb",
-                new SetNextNamingRule("addEjb",
-                            "org.apache.tomcat.util.descriptor.web.ContextEjb"));
+                new SetNextNamingRule("addEjb", "org.apache.tomcat.util.descriptor.web.ContextEjb"));
 
-        digester.addObjectCreate(prefix + "Environment",
-                                 "org.apache.tomcat.util.descriptor.web.ContextEnvironment");
+        digester.addObjectCreate(prefix + "Environment", "org.apache.tomcat.util.descriptor.web.ContextEnvironment");
         digester.addSetProperties(prefix + "Environment");
         digester.addRule(prefix + "Environment",
-                            new SetNextNamingRule("addEnvironment",
-                            "org.apache.tomcat.util.descriptor.web.ContextEnvironment"));
+                new SetNextNamingRule("addEnvironment", "org.apache.tomcat.util.descriptor.web.ContextEnvironment"));
 
-        digester.addObjectCreate(prefix + "LocalEjb",
-                                 "org.apache.tomcat.util.descriptor.web.ContextLocalEjb");
+        digester.addObjectCreate(prefix + "LocalEjb", "org.apache.tomcat.util.descriptor.web.ContextLocalEjb");
         digester.addSetProperties(prefix + "LocalEjb");
         digester.addRule(prefix + "LocalEjb",
-                new SetNextNamingRule("addLocalEjb",
-                            "org.apache.tomcat.util.descriptor.web.ContextLocalEjb"));
+                new SetNextNamingRule("addLocalEjb", "org.apache.tomcat.util.descriptor.web.ContextLocalEjb"));
 
-        digester.addObjectCreate(prefix + "Resource",
-                                 "org.apache.tomcat.util.descriptor.web.ContextResource");
+        digester.addObjectCreate(prefix + "Resource", "org.apache.tomcat.util.descriptor.web.ContextResource");
         digester.addSetProperties(prefix + "Resource");
         digester.addRule(prefix + "Resource",
-                new SetNextNamingRule("addResource",
-                            "org.apache.tomcat.util.descriptor.web.ContextResource"));
+                new SetNextNamingRule("addResource", "org.apache.tomcat.util.descriptor.web.ContextResource"));
 
         digester.addObjectCreate(prefix + "ResourceEnvRef",
-            "org.apache.tomcat.util.descriptor.web.ContextResourceEnvRef");
+                "org.apache.tomcat.util.descriptor.web.ContextResourceEnvRef");
         digester.addSetProperties(prefix + "ResourceEnvRef");
-        digester.addRule(prefix + "ResourceEnvRef",
-                new SetNextNamingRule("addResourceEnvRef",
-                            "org.apache.tomcat.util.descriptor.web.ContextResourceEnvRef"));
+        digester.addRule(prefix + "ResourceEnvRef", new SetNextNamingRule("addResourceEnvRef",
+                "org.apache.tomcat.util.descriptor.web.ContextResourceEnvRef"));
 
-        digester.addObjectCreate(prefix + "ServiceRef",
-            "org.apache.tomcat.util.descriptor.web.ContextService");
+        digester.addObjectCreate(prefix + "ServiceRef", "org.apache.tomcat.util.descriptor.web.ContextService");
         digester.addSetProperties(prefix + "ServiceRef");
         digester.addRule(prefix + "ServiceRef",
-                new SetNextNamingRule("addService",
-                            "org.apache.tomcat.util.descriptor.web.ContextService"));
+                new SetNextNamingRule("addService", "org.apache.tomcat.util.descriptor.web.ContextService"));
 
-        digester.addObjectCreate(prefix + "Transaction",
-            "org.apache.tomcat.util.descriptor.web.ContextTransaction");
+        digester.addObjectCreate(prefix + "Transaction", "org.apache.tomcat.util.descriptor.web.ContextTransaction");
         digester.addSetProperties(prefix + "Transaction");
         digester.addRule(prefix + "Transaction",
-                new SetNextNamingRule("setTransaction",
-                            "org.apache.tomcat.util.descriptor.web.ContextTransaction"));
+                new SetNextNamingRule("setTransaction", "org.apache.tomcat.util.descriptor.web.ContextTransaction"));
     }
 }
diff --git a/java/org/apache/catalina/startup/PasswdUserDatabase.java b/java/org/apache/catalina/startup/PasswdUserDatabase.java
index 3cfc9f7fd1..a63284bee3 100644
--- a/java/org/apache/catalina/startup/PasswdUserDatabase.java
+++ b/java/org/apache/catalina/startup/PasswdUserDatabase.java
@@ -28,8 +28,8 @@ import org.apache.juli.logging.LogFactory;
 import org.apache.naming.StringManager;
 
 /**
- * Concrete implementation of the <code>UserDatabase</code> interface
- * that processes the <code>/etc/passwd</code> file on a Unix system.
+ * Concrete implementation of the <code>UserDatabase</code> interface that processes the <code>/etc/passwd</code> file
+ * on a Unix system.
  *
  * @author Craig R. McClanahan
  */
diff --git a/java/org/apache/catalina/startup/RealmRuleSet.java b/java/org/apache/catalina/startup/RealmRuleSet.java
index 9ff7457d79..b7cd432ea0 100644
--- a/java/org/apache/catalina/startup/RealmRuleSet.java
+++ b/java/org/apache/catalina/startup/RealmRuleSet.java
@@ -20,15 +20,13 @@ import org.apache.tomcat.util.digester.Digester;
 import org.apache.tomcat.util.digester.RuleSet;
 
 /**
- * <strong>RuleSet</strong> for processing the contents of a Realm definition
- * element.  This <code>RuleSet</code> supports Realms such as the
- * <code>CombinedRealm</code> that used nested Realms.
+ * <strong>RuleSet</strong> for processing the contents of a Realm definition element. This <code>RuleSet</code>
+ * supports Realms such as the <code>CombinedRealm</code> that used nested Realms.
  */
 public class RealmRuleSet implements RuleSet {
 
-    private static final int MAX_NESTED_REALM_LEVELS = Integer.getInteger(
-            "org.apache.catalina.startup.RealmRuleSet.MAX_NESTED_REALM_LEVELS",
-            3).intValue();
+    private static final int MAX_NESTED_REALM_LEVELS =
+            Integer.getInteger("org.apache.catalina.startup.RealmRuleSet.MAX_NESTED_REALM_LEVELS", 3).intValue();
 
 
     // ----------------------------------------------------- Instance Variables
@@ -42,8 +40,7 @@ public class RealmRuleSet implements RuleSet {
     // ------------------------------------------------------------ Constructor
 
     /**
-     * Construct an instance of this <code>RuleSet</code> with the default
-     * matching pattern prefix.
+     * Construct an instance of this <code>RuleSet</code> with the default matching pattern prefix.
      */
     public RealmRuleSet() {
         this("");
@@ -51,11 +48,9 @@ public class RealmRuleSet implements RuleSet {
 
 
     /**
-     * Construct an instance of this <code>RuleSet</code> with the specified
-     * matching pattern prefix.
+     * Construct an instance of this <code>RuleSet</code> with the specified matching pattern prefix.
      *
-     * @param prefix Prefix for matching pattern rules (including the
-     *  trailing slash character)
+     * @param prefix Prefix for matching pattern rules (including the trailing slash character)
      */
     public RealmRuleSet(String prefix) {
         this.prefix = prefix;
@@ -65,13 +60,10 @@ public class RealmRuleSet implements RuleSet {
     // --------------------------------------------------------- Public Methods
 
     /**
-     * <p>Add the set of Rule instances defined in this RuleSet to the
-     * specified <code>Digester</code> instance, associating them with
-     * our namespace URI (if any).  This method should only be called
-     * by a Digester instance.</p>
+     * Add the set of Rule instances defined in this RuleSet to the specified <code>Digester</code> instance,
+     * associating them with our namespace URI (if any). This method should only be called by a Digester instance.
      *
-     * @param digester Digester instance to which the new Rule instances
-     *  should be added.
+     * @param digester Digester instance to which the new Rule instances should be added.
      */
     @Override
     public void addRuleInstances(Digester digester) {
@@ -86,8 +78,7 @@ public class RealmRuleSet implements RuleSet {
     }
 
     private void addRuleInstances(Digester digester, String pattern, String methodName) {
-        digester.addObjectCreate(pattern, null /* MUST be specified in the element */,
-                "className");
+        digester.addObjectCreate(pattern, null /* MUST be specified in the element */, "className");
         digester.addSetProperties(pattern);
         digester.addSetNext(pattern, methodName, "org.apache.catalina.Realm");
         digester.addRuleSet(new CredentialHandlerRuleSet(pattern + "/"));
diff --git a/java/org/apache/catalina/startup/SafeForkJoinWorkerThreadFactory.java b/java/org/apache/catalina/startup/SafeForkJoinWorkerThreadFactory.java
index 5f16d91b46..719cfefa42 100644
--- a/java/org/apache/catalina/startup/SafeForkJoinWorkerThreadFactory.java
+++ b/java/org/apache/catalina/startup/SafeForkJoinWorkerThreadFactory.java
@@ -21,12 +21,10 @@ import java.util.concurrent.ForkJoinPool.ForkJoinWorkerThreadFactory;
 import java.util.concurrent.ForkJoinWorkerThread;
 
 /**
- * Provides a {@link ForkJoinWorkerThreadFactory} that provides {@link
- * ForkJoinWorkerThread}s that won't trigger memory leaks due to retained
- * references to web application class loaders.
+ * Provides a {@link ForkJoinWorkerThreadFactory} that provides {@link ForkJoinWorkerThread}s that won't trigger memory
+ * leaks due to retained references to web application class loaders.
  * <p>
- * Note: This class must be available on the boot strap class path for it to be
- * visible to {@link ForkJoinPool}.
+ * Note: This class must be available on the boot strap class path for it to be visible to {@link ForkJoinPool}.
  */
 public class SafeForkJoinWorkerThreadFactory implements ForkJoinWorkerThreadFactory {
 
diff --git a/java/org/apache/catalina/startup/SetNextNamingRule.java b/java/org/apache/catalina/startup/SetNextNamingRule.java
index 33d1a6b57a..0fce2ddc75 100644
--- a/java/org/apache/catalina/startup/SetNextNamingRule.java
+++ b/java/org/apache/catalina/startup/SetNextNamingRule.java
@@ -23,12 +23,10 @@ import org.apache.tomcat.util.digester.Rule;
 
 
 /**
- * Rule implementation that calls a method on the (top-1) (parent)
- * object, passing the top object (child) as an argument.  It is
- * commonly used to establish parent-child relationships.
+ * Rule implementation that calls a method on the (top-1) (parent) object, passing the top object (child) as an
+ * argument. It is commonly used to establish parent-child relationships.
  * <p>
- * This rule now supports more flexible method matching by default.
- * It is possible that this may break (some) code
+ * This rule now supports more flexible method matching by default. It is possible that this may break (some) code
  * written against release 1.1.1 or earlier.
  */
 
@@ -42,13 +40,11 @@ public class SetNextNamingRule extends Rule {
      * Construct a "set next" rule with the specified method name.
      *
      * @param methodName Method name of the parent method to call
-     * @param paramType Java class of the parent method's argument
-     *  (if you wish to use a primitive type, specify the corresponding
-     *  Java wrapper class instead, such as <code>java.lang.Boolean</code>
-     *  for a <code>boolean</code> parameter)
+     * @param paramType  Java class of the parent method's argument (if you wish to use a primitive type, specify the
+     *                       corresponding Java wrapper class instead, such as <code>java.lang.Boolean</code> for a
+     *                       <code>boolean</code> parameter)
      */
-    public SetNextNamingRule(String methodName,
-                       String paramType) {
+    public SetNextNamingRule(String methodName, String paramType) {
 
         this.methodName = methodName;
         this.paramType = paramType;
@@ -77,11 +73,9 @@ public class SetNextNamingRule extends Rule {
     /**
      * Process the end of this element.
      *
-     * @param namespace the namespace URI of the matching element, or an
-     *   empty string if the parser is not namespace aware or the element has
-     *   no namespace
-     * @param name the local name if the parser is namespace aware, or just
-     *   the element name otherwise
+     * @param namespace the namespace URI of the matching element, or an empty string if the parser is not namespace
+     *                      aware or the element has no namespace
+     * @param name      the local name if the parser is namespace aware, or just the element name otherwise
      */
     @Override
     public void end(String namespace, String name) throws Exception {
@@ -100,8 +94,7 @@ public class SetNextNamingRule extends Rule {
         }
 
         // Call the specified method
-        IntrospectionUtils.callMethod1(namingResources, methodName,
-                child, paramType, digester.getClassLoader());
+        IntrospectionUtils.callMethod1(namingResources, methodName, child, paramType, digester.getClassLoader());
 
         StringBuilder code = digester.getGeneratedCode();
         if (code != null) {
diff --git a/java/org/apache/catalina/startup/Tomcat.java b/java/org/apache/catalina/startup/Tomcat.java
index 71d8bf1f9e..f1548a594a 100644
--- a/java/org/apache/catalina/startup/Tomcat.java
+++ b/java/org/apache/catalina/startup/Tomcat.java
@@ -86,72 +86,51 @@ import org.apache.tomcat.util.res.StringManager;
 
 /**
  * Minimal tomcat starter for embedding/unit tests.
- *
  * <p>
- * Tomcat supports multiple styles of configuration and
- * startup - the most common and stable is server.xml-based,
+ * Tomcat supports multiple styles of configuration and startup - the most common and stable is server.xml-based,
  * implemented in org.apache.catalina.startup.Bootstrap.
- *
  * <p>
  * This class is for use in apps that embed tomcat.
- *
  * <p>
  * Requirements:
  * <ul>
- *   <li>all tomcat classes and possibly servlets are in the classpath.
- *       (for example all is in one big jar, or in eclipse CP, or in
- *        any other combination)</li>
- *
- *   <li>we need one temporary directory for work files</li>
- *
- *   <li>no config file is required. This class provides methods to
- *       use if you have a webapp with a web.xml file, but it is
- *       optional - you can use your own servlets.</li>
+ * <li>all tomcat classes and possibly servlets are in the classpath. (for example all is in one big jar, or in eclipse
+ * CP, or in any other combination)</li>
+ * <li>we need one temporary directory for work files</li>
+ * <li>no config file is required. This class provides methods to use if you have a webapp with a web.xml file, but it
+ * is optional - you can use your own servlets.</li>
  * </ul>
- *
  * <p>
- * There are a variety of 'add' methods to configure servlets and webapps. These
- * methods, by default, create a simple in-memory security realm and apply it.
- * If you need more complex security processing, you can define a subclass of
+ * There are a variety of 'add' methods to configure servlets and webapps. These methods, by default, create a simple
+ * in-memory security realm and apply it. If you need more complex security processing, you can define a subclass of
  * this class.
- *
  * <p>
- * This class provides a set of convenience methods for configuring web
- * application contexts; all overloads of the method <code>addWebapp()</code>.
- * These methods are equivalent to adding a web application to the Host's
- * appBase (normally the webapps directory). These methods create a Context,
- * configure it with the equivalent of the defaults provided by
- * <code>conf/web.xml</code> (see {@link #initWebappDefaults(String)} for
- * details) and add the Context to a Host. These methods do not use a global
- * default web.xml; rather, they add a {@link LifecycleListener} to configure
- * the defaults. Any WEB-INF/web.xml and META-INF/context.xml packaged with the
- * application will be processed normally. Normal web fragment and
- * {@link jakarta.servlet.ServletContainerInitializer} processing will be applied.
- *
+ * This class provides a set of convenience methods for configuring web application contexts; all overloads of the
+ * method <code>addWebapp()</code>. These methods are equivalent to adding a web application to the Host's appBase
+ * (normally the webapps directory). These methods create a Context, configure it with the equivalent of the defaults
+ * provided by <code>conf/web.xml</code> (see {@link #initWebappDefaults(String)} for details) and add the Context to a
+ * Host. These methods do not use a global default web.xml; rather, they add a {@link LifecycleListener} to configure
+ * the defaults. Any WEB-INF/web.xml and META-INF/context.xml packaged with the application will be processed normally.
+ * Normal web fragment and {@link jakarta.servlet.ServletContainerInitializer} processing will be applied.
  * <p>
- * In complex cases, you may prefer to use the ordinary Tomcat API to create
- * webapp contexts; for example, you might need to install a custom Loader
- * before the call to {@link Host#addChild(Container)}. To replicate the basic
- * behavior of the <code>addWebapp</code> methods, you may want to call two
- * methods of this class: {@link #noDefaultWebXmlPath()} and
- * {@link #getDefaultWebXmlListener()}.
- *
+ * In complex cases, you may prefer to use the ordinary Tomcat API to create webapp contexts; for example, you might
+ * need to install a custom Loader before the call to {@link Host#addChild(Container)}. To replicate the basic behavior
+ * of the <code>addWebapp</code> methods, you may want to call two methods of this class: {@link #noDefaultWebXmlPath()}
+ * and {@link #getDefaultWebXmlListener()}.
  * <p>
- * {@link #getDefaultWebXmlListener()} returns a {@link LifecycleListener} that
- * adds the standard DefaultServlet, JSP processing, and welcome files. If you
- * add this listener, you must prevent Tomcat from applying any standard global
+ * {@link #getDefaultWebXmlListener()} returns a {@link LifecycleListener} that adds the standard DefaultServlet, JSP
+ * processing, and welcome files. If you add this listener, you must prevent Tomcat from applying any standard global
  * web.xml with ...
- *
  * <p>
- * {@link #noDefaultWebXmlPath()} returns a dummy pathname to configure to
- * prevent {@link ContextConfig} from trying to apply a global web.xml file.
- *
+ * {@link #noDefaultWebXmlPath()} returns a dummy pathname to configure to prevent {@link ContextConfig} from trying to
+ * apply a global web.xml file.
  * <p>
- * This class provides a main() and few simple CLI arguments,
- * see setters for doc. It can be used for simple tests and
+ * This class provides a main() and few simple CLI arguments, see setters for doc. It can be used for simple tests and
  * demo.
  *
- * @see <a href="https://gitbox.apache.org/repos/asf?p=tomcat.git;a=blob;f=test/org/apache/catalina/startup/TestTomcat.java">TestTomcat</a>
+ * @see <a href=
+ *          "https://gitbox.apache.org/repos/asf?p=tomcat.git;a=blob;f=test/org/apache/catalina/startup/TestTomcat.java">TestTomcat</a>
+ *
  * @author Costin Manolache
  */
 public class Tomcat {
@@ -163,7 +142,7 @@ public class Tomcat {
     // after Loggers are configured but before they are used. The purpose of
     // this Map is to retain strong references to explicitly configured loggers
     // so that configuration is not lost.
-    private final Map<String, Logger> pinnedLoggers = new HashMap<>();
+    private final Map<String,Logger> pinnedLoggers = new HashMap<>();
 
     protected Server server;
 
@@ -171,9 +150,9 @@ public class Tomcat {
     protected String hostname = "localhost";
     protected String basedir;
 
-    private final Map<String, String> userPass = new HashMap<>();
-    private final Map<String, List<String>> userRoles = new HashMap<>();
-    private final Map<String, Principal> userPrincipals = new HashMap<>();
+    private final Map<String,String> userPass = new HashMap<>();
+    private final Map<String,List<String>> userRoles = new HashMap<>();
+    private final Map<String,Principal> userPrincipals = new HashMap<>();
 
     private boolean addDefaultWebXmlToWebapp = true;
 
@@ -182,22 +161,17 @@ public class Tomcat {
     }
 
     /**
-     * Tomcat requires that the base directory is set because the defaults for
-     * a number of other locations, such as the work directory, are derived from
-     * the base directory. This should be the first method called.
+     * Tomcat requires that the base directory is set because the defaults for a number of other locations, such as the
+     * work directory, are derived from the base directory. This should be the first method called.
      * <p>
-     * If this method is not called then Tomcat will attempt to use these
-     * locations in the following order:
+     * If this method is not called then Tomcat will attempt to use these locations in the following order:
      * <ol>
-     *  <li>if set, the catalina.base system property</li>
-     *  <li>if set, the catalina.home system property</li>
-     *  <li>The user.dir system property (the directory where Java was run from)
-     *      where a directory named tomcat.$PORT will be created. $PORT is the
-     *      value configured via {@link #setPort(int)} which defaults to 8080 if
-     *      not set</li>
+     * <li>if set, the catalina.base system property</li>
+     * <li>if set, the catalina.home system property</li>
+     * <li>The user.dir system property (the directory where Java was run from) where a directory named tomcat.$PORT
+     * will be created. $PORT is the value configured via {@link #setPort(int)} which defaults to 8080 if not set</li>
      * </ol>
-     * The user should ensure that the file permissions for the base directory
-     * are appropriate.
+     * The user should ensure that the file permissions for the base directory are appropriate.
      * <p>
      * TODO: disable work dir if not needed ( no jsp, etc ).
      *
@@ -208,8 +182,8 @@ public class Tomcat {
     }
 
     /**
-     * Set the port for the default connector. The default connector will
-     * only be created if getConnector is called.
+     * Set the port for the default connector. The default connector will only be created if getConnector is called.
+     *
      * @param port The port number
      */
     public void setPort(int port) {
@@ -217,8 +191,8 @@ public class Tomcat {
     }
 
     /**
-     * The the hostname of the default host, default is
-     * 'localhost'.
+     * The the hostname of the default host, default is 'localhost'.
+     *
      * @param s The default host name
      */
     public void setHostname(String s) {
@@ -227,19 +201,15 @@ public class Tomcat {
 
 
     /**
-     * This is equivalent to adding a web application to a Host's appBase
-     * (usually Tomcat's webapps directory). By default, the equivalent of the
-     * default web.xml will be applied to the web application (see
+     * This is equivalent to adding a web application to a Host's appBase (usually Tomcat's webapps directory). By
+     * default, the equivalent of the default web.xml will be applied to the web application (see
      * {@link #initWebappDefaults(String)}). This may be prevented by calling
-     * {@link #setAddDefaultWebXmlToWebapp(boolean)} with {@code false}. Any
-     * <code>WEB-INF/web.xml</code> and <code>META-INF/context.xml</code>
-     * packaged with the application will always be processed and normal web
-     * fragment and {@link jakarta.servlet.ServletContainerInitializer}
-     * processing will always be applied.
+     * {@link #setAddDefaultWebXmlToWebapp(boolean)} with {@code false}. Any <code>WEB-INF/web.xml</code> and
+     * <code>META-INF/context.xml</code> packaged with the application will always be processed and normal web fragment
+     * and {@link jakarta.servlet.ServletContainerInitializer} processing will always be applied.
      *
      * @param contextPath The context mapping to use, "" for root context.
-     * @param docBase     Base directory for the context, for static files. Must
-     *                        exist and be an absolute path.
+     * @param docBase     Base directory for the context, for static files. Must exist and be an absolute path.
      *
      * @return the deployed context
      */
@@ -249,19 +219,17 @@ public class Tomcat {
 
 
     /**
-     * Copy the specified WAR file to the Host's appBase and then call
-     * {@link #addWebapp(String, String)} with the newly copied WAR. The WAR
-     * will <b>NOT</b> be removed from the Host's appBase when the Tomcat
-     * instance stops. Note that {@link ExpandWar} provides utility methods that
-     * may be used to delete the WAR and/or expanded directory if required.
+     * Copy the specified WAR file to the Host's appBase and then call {@link #addWebapp(String, String)} with the newly
+     * copied WAR. The WAR will <b>NOT</b> be removed from the Host's appBase when the Tomcat instance stops. Note that
+     * {@link ExpandWar} provides utility methods that may be used to delete the WAR and/or expanded directory if
+     * required.
      *
-     * @param contextPath   The context mapping to use, "" for root context.
-     * @param source        The location from which the WAR should be copied
+     * @param contextPath The context mapping to use, "" for root context.
+     * @param source      The location from which the WAR should be copied
      *
      * @return The deployed Context
      *
-     * @throws IOException If an I/O error occurs while copying the WAR file
-     *                     from the specified URL to the appBase
+     * @throws IOException If an I/O error occurs while copying the WAR file from the specified URL to the appBase
      */
     public Context addWebapp(String contextPath, URL source) throws IOException {
 
@@ -270,8 +238,8 @@ public class Tomcat {
         // Make sure a conflicting web application has not already been deployed
         Host h = getHost();
         if (h.findChild(cn.getName()) != null) {
-            throw new IllegalArgumentException(sm.getString("tomcat.addWebapp.conflictChild",
-                    source, contextPath, cn.getName()));
+            throw new IllegalArgumentException(
+                    sm.getString("tomcat.addWebapp.conflictChild", source, contextPath, cn.getName()));
         }
 
         // Make sure appBase does not contain a conflicting web application
@@ -279,19 +247,18 @@ public class Tomcat {
         File targetDir = new File(h.getAppBaseFile(), cn.getBaseName());
 
         if (targetWar.exists()) {
-            throw new IllegalArgumentException(sm.getString("tomcat.addWebapp.conflictFile",
-                    source, contextPath, targetWar.getAbsolutePath()));
+            throw new IllegalArgumentException(
+                    sm.getString("tomcat.addWebapp.conflictFile", source, contextPath, targetWar.getAbsolutePath()));
         }
         if (targetDir.exists()) {
-            throw new IllegalArgumentException(sm.getString("tomcat.addWebapp.conflictFile",
-                    source, contextPath, targetDir.getAbsolutePath()));
+            throw new IllegalArgumentException(
+                    sm.getString("tomcat.addWebapp.conflictFile", source, contextPath, targetDir.getAbsolutePath()));
         }
 
         // Should be good to copy the WAR now
         URLConnection uConn = source.openConnection();
 
-        try (InputStream is = uConn.getInputStream();
-                OutputStream os = new FileOutputStream(targetWar)) {
+        try (InputStream is = uConn.getInputStream(); OutputStream os = new FileOutputStream(targetWar)) {
             IOTools.flow(is, os);
         }
 
@@ -300,45 +267,36 @@ public class Tomcat {
 
 
     /**
-     * Add a context - programmatic mode, no default web.xml used. This means
-     * that there is no JSP support (no JSP servlet), no default servlet and
-     * no web socket support unless explicitly enabled via the programmatic
-     * interface. There is also no
-     * {@link jakarta.servlet.ServletContainerInitializer} processing and no
-     * annotation processing. If a
-     * {@link jakarta.servlet.ServletContainerInitializer} is added
-     * programmatically, there will still be no scanning for
-     * {@link jakarta.servlet.annotation.HandlesTypes} matches.
-     *
+     * Add a context - programmatic mode, no default web.xml used. This means that there is no JSP support (no JSP
+     * servlet), no default servlet and no web socket support unless explicitly enabled via the programmatic interface.
+     * There is also no {@link jakarta.servlet.ServletContainerInitializer} processing and no annotation processing. If
+     * a {@link jakarta.servlet.ServletContainerInitializer} is added programmatically, there will still be no scanning
+     * for {@link jakarta.servlet.annotation.HandlesTypes} matches.
      * <p>
      * API calls equivalent with web.xml:
      *
      * <pre>{@code
-     *  // context-param
-     *  ctx.addParameter("name", "value");
+     * // context-param
+     * ctx.addParameter("name", "value");
      *
      *
-     *  // error-page
-     *  ErrorPage ep = new ErrorPage();
-     *  ep.setErrorCode(500);
-     *  ep.setLocation("/error.html");
-     *  ctx.addErrorPage(ep);
+     * // error-page
+     * ErrorPage ep = new ErrorPage();
+     * ep.setErrorCode(500);
+     * ep.setLocation("/error.html");
+     * ctx.addErrorPage(ep);
      *
-     *  ctx.addMimeMapping("ext", "type");
+     * ctx.addMimeMapping("ext", "type");
      * }</pre>
-     *
-     *
      * <p>
-     * Note: If you reload the Context, all your configuration will be lost. If
-     * you need reload support, consider using a LifecycleListener to provide
-     * your configuration.
-     *
+     * Note: If you reload the Context, all your configuration will be lost. If you need reload support, consider using
+     * a LifecycleListener to provide your configuration.
      * <p>
      * TODO: add the rest
      *
      * @param contextPath The context mapping to use, "" for root context.
-     * @param docBase Base directory for the context, for static files.
-     *  Must exist, relative to the server home
+     * @param docBase     Base directory for the context, for static files. Must exist, relative to the server home
+     *
      * @return the deployed context
      */
     public Context addContext(String contextPath, String docBase) {
@@ -347,40 +305,36 @@ public class Tomcat {
 
     /**
      * Equivalent to &lt;servlet&gt;&lt;servlet-name&gt;&lt;servlet-class&gt;.
-     *
      * <p>
-     * In general it is better/faster to use the method that takes a
-     * Servlet as param - this one can be used if the servlet is not
-     * commonly used, and want to avoid loading all deps.
-     * ( for example: jsp servlet )
+     * In general it is better/faster to use the method that takes a Servlet as param - this one can be used if the
+     * servlet is not commonly used, and want to avoid loading all deps. ( for example: jsp servlet ) You can customize
+     * the returned servlet, ex:
+     *
+     * <pre>
+     * wrapper.addInitParameter("name", "value");
+     * </pre>
      *
-     * You can customize the returned servlet, ex:
-     *  <pre>
-     *    wrapper.addInitParameter("name", "value");
-     *  </pre>
+     * @param contextPath  Context to add Servlet to
+     * @param servletName  Servlet name (used in mappings)
+     * @param servletClass The class to be used for the Servlet
      *
-     * @param contextPath   Context to add Servlet to
-     * @param servletName   Servlet name (used in mappings)
-     * @param servletClass  The class to be used for the Servlet
      * @return The wrapper for the servlet
      */
-    public Wrapper addServlet(String contextPath,
-            String servletName,
-            String servletClass) {
+    public Wrapper addServlet(String contextPath, String servletName, String servletClass) {
         Container ctx = getHost().findChild(contextPath);
         return addServlet((Context) ctx, servletName, servletClass);
     }
 
     /**
      * Static version of {@link #addServlet(String, String, String)}
-     * @param ctx           Context to add Servlet to
-     * @param servletName   Servlet name (used in mappings)
-     * @param servletClass  The class to be used for the Servlet
+     *
+     * @param ctx          Context to add Servlet to
+     * @param servletName  Servlet name (used in mappings)
+     * @param servletClass The class to be used for the Servlet
+     *
      * @return The wrapper for the servlet
      */
-    public static Wrapper addServlet(Context ctx,
-                                      String servletName,
-                                      String servletClass) {
+    public static Wrapper addServlet(Context ctx, String servletName, String servletClass) {
         // will do class for name and set init params
         Wrapper sw = ctx.createWrapper();
         if (sw == null) {
@@ -394,30 +348,29 @@ public class Tomcat {
     }
 
     /**
-     * Add an existing Servlet to the context with no class.forName or
-     * initialisation.
-     * @param contextPath   Context to add Servlet to
-     * @param servletName   Servlet name (used in mappings)
-     * @param servlet       The Servlet to add
+     * Add an existing Servlet to the context with no class.forName or initialisation.
+     *
+     * @param contextPath Context to add Servlet to
+     * @param servletName Servlet name (used in mappings)
+     * @param servlet     The Servlet to add
+     *
      * @return The wrapper for the servlet
      */
-    public Wrapper addServlet(String contextPath,
-            String servletName,
-            Servlet servlet) {
+    public Wrapper addServlet(String contextPath, String servletName, Servlet servlet) {
         Container ctx = getHost().findChild(contextPath);
         return addServlet((Context) ctx, servletName, servlet);
     }
 
     /**
      * Static version of {@link #addServlet(String, String, Servlet)}.
-     * @param ctx           Context to add Servlet to
-     * @param servletName   Servlet name (used in mappings)
-     * @param servlet       The Servlet to add
+     *
+     * @param ctx         Context to add Servlet to
+     * @param servletName Servlet name (used in mappings)
+     * @param servlet     The Servlet to add
+     *
      * @return The wrapper for the servlet
      */
-    public static Wrapper addServlet(Context ctx,
-                                      String servletName,
-                                      Servlet servlet) {
+    public static Wrapper addServlet(Context ctx, String servletName, Servlet servlet) {
         // will do class for name and set init params
         Wrapper sw = new ExistingStandardWrapper(servlet);
         sw.setName(servletName);
@@ -428,12 +381,10 @@ public class Tomcat {
 
 
     /**
-     * Initialize the server given the specified configuration source.
-     * The server will be loaded according to the Tomcat configuration
-     * files contained in the source (server.xml, web.xml, context.xml,
-     * SSL certificates, etc).
-     * If no configuration source is specified, it will use the default
-     * locations for these files.
+     * Initialize the server given the specified configuration source. The server will be loaded according to the Tomcat
+     * configuration files contained in the source (server.xml, web.xml, context.xml, SSL certificates, etc). If no
+     * configuration source is specified, it will use the default locations for these files.
+     *
      * @param source The configuration source
      */
     public void init(ConfigurationSource source) {
@@ -441,13 +392,11 @@ public class Tomcat {
     }
 
     /**
-     * Initialize the server given the specified configuration source.
-     * The server will be loaded according to the Tomcat configuration
-     * files contained in the source (server.xml, web.xml, context.xml,
-     * SSL certificates, etc).
-     * If no configuration source is specified, it will use the default
-     * locations for these files.
-     * @param source The configuration source
+     * Initialize the server given the specified configuration source. The server will be loaded according to the Tomcat
+     * configuration files contained in the source (server.xml, web.xml, context.xml, SSL certificates, etc). If no
+     * configuration source is specified, it will use the default locations for these files.
+     *
+     * @param source            The configuration source
      * @param catalinaArguments The arguments that should be passed to Catalina
      */
     public void init(ConfigurationSource source, String[] catalinaArguments) {
@@ -499,8 +448,7 @@ public class Tomcat {
 
 
     /**
-     * Destroy the server. This object cannot be used once this method has been
-     * called.
+     * Destroy the server. This object cannot be used once this method has been called.
      *
      * @throws LifecycleException Destroy error
      */
@@ -511,8 +459,8 @@ public class Tomcat {
     }
 
     /**
-     * Add a user for the in-memory realm. All created apps use this
-     * by default, can be replaced using setRealm().
+     * Add a user for the in-memory realm. All created apps use this by default, can be replaced using setRealm().
+     *
      * @param user The user name
      * @param pass The password
      */
@@ -522,7 +470,9 @@ public class Tomcat {
 
     /**
      * Add a role to a user.
+     *
      * @see #addUser(String, String)
+     *
      * @param user The user name
      * @param role The role name
      */
@@ -534,11 +484,9 @@ public class Tomcat {
     // You can tune individual Tomcat objects, using internal APIs
 
     /**
-     * Get the default HTTP connector that is used by the embedded
-     * Tomcat. It is first configured connector in the service.
-     * If there's no connector defined, it will create and add a default
-     * connector using the port and address specified in this Tomcat
-     * instance, and return it for further customization.
+     * Get the default HTTP connector that is used by the embedded Tomcat. It is first configured connector in the
+     * service. If there's no connector defined, it will create and add a default connector using the port and address
+     * specified in this Tomcat instance, and return it for further customization.
      *
      * @return The connector object
      */
@@ -556,8 +504,8 @@ public class Tomcat {
     }
 
     /**
-     * Set the specified connector in the service, if it is not already
-     * present.
+     * Set the specified connector in the service, if it is not already present.
+     *
      * @param connector The connector instance to add
      */
     public void setConnector(Connector connector) {
@@ -575,8 +523,8 @@ public class Tomcat {
     }
 
     /**
-     * Get the service object. Can be used to add more
-     * connectors and few other global settings.
+     * Get the service object. Can be used to add more connectors and few other global settings.
+     *
      * @return The service
      */
     public Service getService() {
@@ -584,9 +532,8 @@ public class Tomcat {
     }
 
     /**
-     * Sets the current host - all future webapps will
-     * be added to this host. When tomcat starts, the
-     * host will be the default host.
+     * Sets the current host - all future webapps will be added to this host. When tomcat starts, the host will be the
+     * default host.
      *
      * @param host The current host
      */
@@ -618,6 +565,7 @@ public class Tomcat {
 
     /**
      * Access to the engine, for further customization.
+     *
      * @return The engine
      */
     public Engine getEngine() {
@@ -626,7 +574,7 @@ public class Tomcat {
             return service.getContainer();
         }
         Engine engine = new StandardEngine();
-        engine.setName( "Tomcat" );
+        engine.setName("Tomcat");
         engine.setDefaultHost(hostname);
         engine.setRealm(createDefaultRealm());
         service.setContainer(engine);
@@ -634,8 +582,8 @@ public class Tomcat {
     }
 
     /**
-     * Get the server object. You can add listeners and few more
-     * customizations. JNDI is disabled by default.
+     * Get the server object. You can add listeners and few more customizations. JNDI is disabled by default.
+     *
      * @return The Server
      */
     public Server getServer() {
@@ -653,7 +601,7 @@ public class Tomcat {
         // Set configuration source
         ConfigFileLoader.setSource(new CatalinaBaseConfigurationSource(new File(basedir), null));
 
-        server.setPort( -1 );
+        server.setPort(-1);
 
         Service service = new StandardService();
         service.setName("Tomcat");
@@ -662,11 +610,12 @@ public class Tomcat {
     }
 
     /**
-     * @param host The host in which the context will be deployed
+     * @param host        The host in which the context will be deployed
      * @param contextPath The context mapping to use, "" for root context.
-     * @param dir Base directory for the context, for static files.
-     *  Must exist, relative to the server home
+     * @param dir         Base directory for the context, for static files. Must exist, relative to the server home
+     *
      * @return the deployed context
+     *
      * @see #addContext(String, String)
      */
     public Context addContext(Host host, String contextPath, String dir) {
@@ -674,16 +623,16 @@ public class Tomcat {
     }
 
     /**
-     * @param host The host in which the context will be deployed
+     * @param host        The host in which the context will be deployed
      * @param contextPath The context mapping to use, "" for root context.
      * @param contextName The context name
-     * @param dir Base directory for the context, for static files.
-     *  Must exist, relative to the server home
+     * @param dir         Base directory for the context, for static files. Must exist, relative to the server home
+     *
      * @return the deployed context
+     *
      * @see #addContext(String, String)
      */
-    public Context addContext(Host host, String contextPath, String contextName,
-            String dir) {
+    public Context addContext(Host host, String contextPath, String contextName, String dir) {
         silence(host, contextName);
         Context ctx = createContext(host, contextPath);
         ctx.setName(contextName);
@@ -701,20 +650,16 @@ public class Tomcat {
 
 
     /**
-     * This is equivalent to adding a web application to a Host's appBase
-     * (usually Tomcat's webapps directory). By default, the equivalent of the
-     * default web.xml will be applied to the web application (see
+     * This is equivalent to adding a web application to a Host's appBase (usually Tomcat's webapps directory). By
+     * default, the equivalent of the default web.xml will be applied to the web application (see
      * {@link #initWebappDefaults(String)}). This may be prevented by calling
-     * {@link #setAddDefaultWebXmlToWebapp(boolean)} with {@code false}. Any
-     * <code>WEB-INF/web.xml</code> and <code>META-INF/context.xml</code>
-     * packaged with the application will always be processed and normal web
-     * fragment and {@link jakarta.servlet.ServletContainerInitializer} processing
-     * will always be applied.
+     * {@link #setAddDefaultWebXmlToWebapp(boolean)} with {@code false}. Any <code>WEB-INF/web.xml</code> and
+     * <code>META-INF/context.xml</code> packaged with the application will always be processed and normal web fragment
+     * and {@link jakarta.servlet.ServletContainerInitializer} processing will always be applied.
      *
      * @param host        The host in which the context will be deployed
      * @param contextPath The context mapping to use, "" for root context.
-     * @param docBase     Base directory for the context, for static files. Must
-     *                        exist and be an absolute path.
+     * @param docBase     Base directory for the context, for static files. Must exist and be an absolute path.
      *
      * @return the deployed context
      */
@@ -734,28 +679,22 @@ public class Tomcat {
 
 
     /**
-     * This is equivalent to adding a web application to a Host's appBase
-     * (usually Tomcat's webapps directory). By default, the equivalent of the
-     * default web.xml will be applied to the web application (see
+     * This is equivalent to adding a web application to a Host's appBase (usually Tomcat's webapps directory). By
+     * default, the equivalent of the default web.xml will be applied to the web application (see
      * {@link #initWebappDefaults(String)}). This may be prevented by calling
-     * {@link #setAddDefaultWebXmlToWebapp(boolean)} with {@code false}. Any
-     * <code>WEB-INF/web.xml</code> and <code>META-INF/context.xml</code>
-     * packaged with the application will always be processed and normal web
-     * fragment and {@link jakarta.servlet.ServletContainerInitializer} processing
-     * will always be applied.
+     * {@link #setAddDefaultWebXmlToWebapp(boolean)} with {@code false}. Any <code>WEB-INF/web.xml</code> and
+     * <code>META-INF/context.xml</code> packaged with the application will always be processed and normal web fragment
+     * and {@link jakarta.servlet.ServletContainerInitializer} processing will always be applied.
      *
      * @param host        The host in which the context will be deployed
      * @param contextPath The context mapping to use, "" for root context.
-     * @param docBase     Base directory for the context, for static files. Must
-     *                        exist and be an absolute path.
-     * @param config      Custom context configuration helper. Any configuration
-     *                        will be in addition to equivalent of the default
-     *                        web.xml configuration described above.
+     * @param docBase     Base directory for the context, for static files. Must exist and be an absolute path.
+     * @param config      Custom context configuration helper. Any configuration will be in addition to equivalent of
+     *                        the default web.xml configuration described above.
      *
      * @return the deployed context
      */
-    public Context addWebapp(Host host, String contextPath, String docBase,
-            LifecycleListener config) {
+    public Context addWebapp(Host host, String contextPath, String docBase, LifecycleListener config) {
 
         silence(host, contextPath);
 
@@ -786,11 +725,10 @@ public class Tomcat {
     }
 
     /**
-     * Return a listener that provides the required configuration items for JSP
-     * processing. From the standard Tomcat global web.xml. Pass this to
-     * {@link Context#addLifecycleListener(LifecycleListener)} and then pass the
-     * result of {@link #noDefaultWebXmlPath()} to
-     * {@link ContextConfig#setDefaultWebXml(String)}.
+     * Return a listener that provides the required configuration items for JSP processing. From the standard Tomcat
+     * global web.xml. Pass this to {@link Context#addLifecycleListener(LifecycleListener)} and then pass the result of
+     * {@link #noDefaultWebXmlPath()} to {@link ContextConfig#setDefaultWebXml(String)}.
+     *
      * @return a listener object that configures default JSP processing.
      */
     public LifecycleListener getDefaultWebXmlListener() {
@@ -798,9 +736,8 @@ public class Tomcat {
     }
 
     /**
-     * @return a pathname to pass to
-     * {@link ContextConfig#setDefaultWebXml(String)} when using
-     * {@link #getDefaultWebXmlListener()}.
+     * @return a pathname to pass to {@link ContextConfig#setDefaultWebXml(String)} when using
+     *             {@link #getDefaultWebXmlListener()}.
      */
     public String noDefaultWebXmlPath() {
         return Constants.NoDefaultWebXml;
@@ -809,10 +746,10 @@ public class Tomcat {
     // ---------- Helper methods and classes -------------------
 
     /**
-     * Create an in-memory realm. You can replace it for contexts with a real
-     * one. The Realm created here will be added to the Engine by default and
-     * may be replaced at the Engine level or over-ridden (as per normal Tomcat
-     * behaviour) at the Host or Context level.
+     * Create an in-memory realm. You can replace it for contexts with a real one. The Realm created here will be added
+     * to the Engine by default and may be replaced at the Engine level or over-ridden (as per normal Tomcat behaviour)
+     * at the Host or Context level.
+     *
      * @return a realm instance
      */
     protected Realm createDefaultRealm() {
@@ -833,8 +770,7 @@ public class Tomcat {
             if (p == null) {
                 String pass = userPass.get(username);
                 if (pass != null) {
-                    p = new GenericPrincipal(username,
-                            userRoles.get(username));
+                    p = new GenericPrincipal(username, userRoles.get(username));
                     userPrincipals.put(username, p);
                 }
             }
@@ -867,11 +803,9 @@ public class Tomcat {
                 throw new IllegalStateException(sm.getString("tomcat.baseDirMakeFail", baseFile));
             }
             /*
-             * If file permissions were going to be set on the newly created
-             * directory, this is the place to do it. However, even simple
-             * calls such as File.setReadable(boolean,boolean) behaves
-             * differently on different platforms. Therefore, setBaseDir
-             * documents that the user needs to do this.
+             * If file permissions were going to be set on the newly created directory, this is the place to do it.
+             * However, even simple calls such as File.setReadable(boolean,boolean) behaves differently on different
+             * platforms. Therefore, setBaseDir documents that the user needs to do this.
              */
         }
         try {
@@ -898,28 +832,22 @@ public class Tomcat {
             }
             server.setCatalinaHome(homeFile);
         }
-        System.setProperty(Globals.CATALINA_HOME_PROP,
-                server.getCatalinaHome().getPath());
+        System.setProperty(Globals.CATALINA_HOME_PROP, server.getCatalinaHome().getPath());
     }
 
-    static final String[] silences = new String[] {
-        "org.apache.coyote.http11.Http11NioProtocol",
-        "org.apache.catalina.core.StandardService",
-        "org.apache.catalina.core.StandardEngine",
-        "org.apache.catalina.startup.ContextConfig",
-        "org.apache.catalina.core.ApplicationContext",
-        "org.apache.catalina.core.AprLifecycleListener"
-    };
+    static final String[] silences =
+            new String[] { "org.apache.coyote.http11.Http11NioProtocol", "org.apache.catalina.core.StandardService",
+                    "org.apache.catalina.core.StandardEngine", "org.apache.catalina.startup.ContextConfig",
+                    "org.apache.catalina.core.ApplicationContext", "org.apache.catalina.core.AprLifecycleListener" };
 
     private boolean silent = false;
 
     /**
      * Controls if the loggers will be silenced or not.
-     * @param silent    <code>true</code> sets the log level to WARN for the
-     *                  loggers that log information on Tomcat start up. This
-     *                  prevents the usual startup information being logged.
-     *                  <code>false</code> sets the log level to the default
-     *                  level of INFO.
+     *
+     * @param silent <code>true</code> sets the log level to WARN for the loggers that log information on Tomcat start
+     *                   up. This prevents the usual startup information being logged. <code>false</code> sets the log
+     *                   level to the default level of INFO.
      */
     public void setSilent(boolean silent) {
         this.silent = silent;
@@ -947,19 +875,18 @@ public class Tomcat {
 
 
     /**
-     * By default, when calling addWebapp() to create a Context, the settings from
-     * from the default web.xml are added to the context.  Calling this method with
-     * a <code>false</code> value prior to calling addWebapp() allows to opt out of
-     * the default settings. In that event you will need to add the configurations
-     * yourself,  either programmatically or by using web.xml deployment descriptors.
-     * @param addDefaultWebXmlToWebapp <code>false</code> will prevent the class from
-     *                                 automatically adding the default settings when
-     *                                 calling addWebapp().
-     *                                 <code>true</code> will add the default settings
-     *                                 and is the default behavior.
+     * By default, when calling addWebapp() to create a Context, the settings from from the default web.xml are added to
+     * the context. Calling this method with a <code>false</code> value prior to calling addWebapp() allows to opt out
+     * of the default settings. In that event you will need to add the configurations yourself, either programmatically
+     * or by using web.xml deployment descriptors.
+     *
+     * @param addDefaultWebXmlToWebapp <code>false</code> will prevent the class from automatically adding the default
+     *                                     settings when calling addWebapp(). <code>true</code> will add the default
+     *                                     settings and is the default behavior.
+     *
      * @see #addWebapp(Host, String, String, LifecycleListener)
      */
-    public void setAddDefaultWebXmlToWebapp(boolean addDefaultWebXmlToWebapp){
+    public void setAddDefaultWebXmlToWebapp(boolean addDefaultWebXmlToWebapp) {
         this.addDefaultWebXmlToWebapp = addDefaultWebXmlToWebapp;
     }
 
@@ -993,15 +920,13 @@ public class Tomcat {
     }
 
     /**
-     * Create the configured {@link Context} for the given <code>host</code>.
-     * The default constructor of the class that was configured with
-     * {@link StandardHost#setContextClass(String)} will be used
+     * Create the configured {@link Context} for the given <code>host</code>. The default constructor of the class that
+     * was configured with {@link StandardHost#setContextClass(String)} will be used
+     *
+     * @param host host for which the {@link Context} should be created, or <code>null</code> if default host should be
+     *                 used
+     * @param url  path of the webapp which should get the {@link Context}
      *
-     * @param host
-     *            host for which the {@link Context} should be created, or
-     *            <code>null</code> if default host should be used
-     * @param url
-     *            path of the webapp which should get the {@link Context}
      * @return newly created {@link Context}
      */
     private Context createContext(Host host, String url) {
@@ -1017,20 +942,17 @@ public class Tomcat {
             if (defaultContextClass.equals(contextClass)) {
                 return new StandardContext();
             } else {
-                return (Context) Class.forName(contextClass).getConstructor()
-                    .newInstance();
+                return (Context) Class.forName(contextClass).getConstructor().newInstance();
             }
 
-        } catch (ReflectiveOperationException  | IllegalArgumentException | SecurityException e) {
+        } catch (ReflectiveOperationException | IllegalArgumentException | SecurityException e) {
             throw new IllegalArgumentException(sm.getString("tomcat.noContextClass", contextClass, host, url), e);
         }
     }
 
     /**
-     * Enables JNDI naming which is disabled by default. Server must implement
-     * {@link Lifecycle} in order for the {@link NamingContextListener} to be
-     * used.
-     *
+     * Enables JNDI naming which is disabled by default. Server must implement {@link Lifecycle} in order for the
+     * {@link NamingContextListener} to be used.
      */
     public void enableNaming() {
         // Make sure getServer() has been called as that is where naming is
@@ -1041,8 +963,7 @@ public class Tomcat {
         System.setProperty("catalina.useNaming", "true");
 
         String value = "org.apache.naming";
-        String oldValue =
-            System.getProperty(javax.naming.Context.URL_PKG_PREFIXES);
+        String oldValue = System.getProperty(javax.naming.Context.URL_PKG_PREFIXES);
         if (oldValue != null) {
             if (oldValue.contains(value)) {
                 value = oldValue;
@@ -1052,20 +973,17 @@ public class Tomcat {
         }
         System.setProperty(javax.naming.Context.URL_PKG_PREFIXES, value);
 
-        value = System.getProperty
-            (javax.naming.Context.INITIAL_CONTEXT_FACTORY);
+        value = System.getProperty(javax.naming.Context.INITIAL_CONTEXT_FACTORY);
         if (value == null) {
-            System.setProperty
-                (javax.naming.Context.INITIAL_CONTEXT_FACTORY,
-                 "org.apache.naming.java.javaURLContextFactory");
+            System.setProperty(javax.naming.Context.INITIAL_CONTEXT_FACTORY,
+                    "org.apache.naming.java.javaURLContextFactory");
         }
     }
 
 
     /**
-     * Provide default configuration for a context. This is broadly the
-     * programmatic equivalent of the default web.xml and provides the following
-     * features:
+     * Provide default configuration for a context. This is broadly the programmatic equivalent of the default web.xml
+     * and provides the following features:
      * <ul>
      * <li>Default servlet mapped to "/"</li>
      * <li>JSP servlet mapped to "*.jsp" and ""*.jspx"</li>
@@ -1073,10 +991,9 @@ public class Tomcat {
      * <li>MIME mappings (subset of those in conf/web.xml)</li>
      * <li>Welcome files</li>
      * </ul>
-     * TODO: Align the MIME mappings with conf/web.xml - possibly via a common
-     *       file.
+     * TODO: Align the MIME mappings with conf/web.xml - possibly via a common file.
      *
-     * @param contextPath   The path of the context to set the defaults for
+     * @param contextPath The path of the context to set the defaults for
      */
     public void initWebappDefaults(String contextPath) {
         Container ctx = getHost().findChild(contextPath);
@@ -1087,18 +1004,16 @@ public class Tomcat {
     /**
      * Static version of {@link #initWebappDefaults(String)}.
      *
-     * @param ctx   The context to set the defaults for
+     * @param ctx The context to set the defaults for
      */
     public static void initWebappDefaults(Context ctx) {
         // Default servlet
-        Wrapper servlet = addServlet(
-                ctx, "default", "org.apache.catalina.servlets.DefaultServlet");
+        Wrapper servlet = addServlet(ctx, "default", "org.apache.catalina.servlets.DefaultServlet");
         servlet.setLoadOnStartup(1);
         servlet.setOverridable(true);
 
         // JSP servlet (by class name - to avoid loading all deps)
-        servlet = addServlet(
-                ctx, "jsp", "org.apache.jasper.servlet.JspServlet");
+        servlet = addServlet(ctx, "jsp", "org.apache.jasper.servlet.JspServlet");
         servlet.addInitParameter("fork", "false");
         servlet.setLoadOnStartup(3);
         servlet.setOverridable(true);
@@ -1124,14 +1039,13 @@ public class Tomcat {
     /**
      * Add the default MIME type mappings to the provide Context.
      *
-     * @param context The web application to which the default MIME type
-     *                mappings should be added.
+     * @param context The web application to which the default MIME type mappings should be added.
      */
     public static void addDefaultMimeTypeMappings(Context context) {
         Properties defaultMimeMappings = new Properties();
         try (InputStream is = Tomcat.class.getResourceAsStream("MimeTypeMappings.properties")) {
             defaultMimeMappings.load(is);
-            for (Map.Entry<Object, Object>  entry: defaultMimeMappings.entrySet()) {
+            for (Map.Entry<Object,Object> entry : defaultMimeMappings.entrySet()) {
                 context.addMimeMapping((String) entry.getKey(), (String) entry.getValue());
             }
         } catch (IOException e) {
@@ -1142,10 +1056,8 @@ public class Tomcat {
 
     /**
      * Fix startup sequence - required if you don't use web.xml.
-     *
      * <p>
-     * The start() method in context will set 'configured' to false - and
-     * expects a listener to set it back to true.
+     * The start() method in context will set 'configured' to false - and expects a listener to set it back to true.
      */
     public static class FixContextListener implements LifecycleListener {
 
@@ -1173,9 +1085,8 @@ public class Tomcat {
 
 
     /**
-     * Fix reload - required if reloading and using programmatic configuration.
-     * When a context is reloaded, any programmatic configuration is lost. This
-     * listener sets the equivalent of conf/web.xml when the context starts.
+     * Fix reload - required if reloading and using programmatic configuration. When a context is reloaded, any
+     * programmatic configuration is lost. This listener sets the equivalent of conf/web.xml when the context starts.
      */
     public static class DefaultWebXmlListener implements LifecycleListener {
         @Override
@@ -1188,14 +1099,13 @@ public class Tomcat {
 
 
     /**
-     * Helper class for wrapping existing servlets. This disables servlet
-     * lifecycle and normal reloading, but also reduces overhead and provide
-     * more direct control over the servlet.
+     * Helper class for wrapping existing servlets. This disables servlet lifecycle and normal reloading, but also
+     * reduces overhead and provide more direct control over the servlet.
      */
     public static class ExistingStandardWrapper extends StandardWrapper {
         private final Servlet existing;
 
-        public ExistingStandardWrapper( Servlet existing ) {
+        public ExistingStandardWrapper(Servlet existing) {
             this.existing = existing;
             this.asyncSupported = hasAsync(existing);
         }
@@ -1218,18 +1128,22 @@ public class Tomcat {
             }
             return existing;
         }
+
         @Override
         public long getAvailable() {
             return 0;
         }
+
         @Override
         public boolean isUnavailable() {
             return false;
         }
+
         @Override
         public Servlet getServlet() {
             return existing;
         }
+
         @Override
         public String getServletClass() {
             return existing.getClass().getName();
@@ -1276,7 +1190,8 @@ public class Tomcat {
     static {
         // Graal native images don't load any configuration except the VM default
         if (JreCompat.isGraalAvailable()) {
-            try (InputStream is = new FileInputStream(new File(System.getProperty("java.util.logging.config.file", "conf/logging.properties")))) {
+            try (InputStream is = new FileInputStream(
+                    new File(System.getProperty("java.util.logging.config.file", "conf/logging.properties")))) {
                 LogManager.getLogManager().readConfiguration(is);
             } catch (SecurityException | IOException e) {
                 // Ignore, the VM default will be used
@@ -1286,7 +1201,9 @@ public class Tomcat {
 
     /**
      * Main executable method for use with a Maven packager.
+     *
      * @param args the command line arguments
+     *
      * @throws Exception if an error occurs
      */
     public static void main(String[] args) throws Exception {
diff --git a/java/org/apache/catalina/startup/Tool.java b/java/org/apache/catalina/startup/Tool.java
index 3dd2e75aa3..68499c33c8 100644
--- a/java/org/apache/catalina/startup/Tool.java
+++ b/java/org/apache/catalina/startup/Tool.java
@@ -27,42 +27,38 @@ import org.apache.juli.logging.LogFactory;
 
 
 /**
- * General purpose wrapper for command line tools that should execute in an
- * environment with the common class loader environment set up by Catalina.
- * This should be executed from a command line script that conforms to
- * the following requirements:
+ * General purpose wrapper for command line tools that should execute in an environment with the common class loader
+ * environment set up by Catalina. This should be executed from a command line script that conforms to the following
+ * requirements:
  * <ul>
- * <li>Passes the <code>catalina.home</code> system property configured with
- *     the pathname of the Tomcat installation directory.</li>
- * <li>Sets the system classpath to include <code>bootstrap.jar</code> and
- *     <code>$JAVA_HOME/lib/tools.jar</code>.</li>
+ * <li>Passes the <code>catalina.home</code> system property configured with the pathname of the Tomcat installation
+ * directory.</li>
+ * <li>Sets the system classpath to include <code>bootstrap.jar</code> and <code>$JAVA_HOME/lib/tools.jar</code>.</li>
  * </ul>
  * <p>
  * The command line to execute the tool looks like:
+ *
  * <pre>
  *   java -classpath $CLASSPATH org.apache.catalina.startup.Tool \
  *     ${options} ${classname} ${arguments}
  * </pre>
- *
- * <p>with the following replacement contents:
+ * <p>
+ * with the following replacement contents:
  * <ul>
- * <li><strong>${options}</strong> - Command line options for this Tool wrapper.
- *     The following options are supported:
- *     <ul>
- *     <li><em>-ant</em> : Set the <code>ant.home</code> system property
- *         to corresponding to the value of <code>catalina.home</code>
- *         (useful when your command line tool runs Ant).</li>
- *     <li><em>-common</em> : Add <code>common/classes</code> and
- *         <code>common/lib</code> to the class loader repositories.</li>
- *     <li><em>-server</em> : Add <code>server/classes</code> and
- *         <code>server/lib</code> to the class loader repositories.</li>
- *     <li><em>-shared</em> : Add <code>shared/classes</code> and
- *         <code>shared/lib</code> to the class loader repositories.</li>
- *     </ul>
- * <li><strong>${classname}</strong> - Fully qualified Java class name of the
- *     application's main class.</li>
- * <li><strong>${arguments}</strong> - Command line arguments to be passed to
- *     the application's <code>main()</code> method.</li>
+ * <li><strong>${options}</strong> - Command line options for this Tool wrapper. The following options are supported:
+ * <ul>
+ * <li><em>-ant</em> : Set the <code>ant.home</code> system property to corresponding to the value of
+ * <code>catalina.home</code> (useful when your command line tool runs Ant).</li>
+ * <li><em>-common</em> : Add <code>common/classes</code> and <code>common/lib</code> to the class loader
+ * repositories.</li>
+ * <li><em>-server</em> : Add <code>server/classes</code> and <code>server/lib</code> to the class loader
+ * repositories.</li>
+ * <li><em>-shared</em> : Add <code>shared/classes</code> and <code>shared/lib</code> to the class loader
+ * repositories.</li>
+ * </ul>
+ * <li><strong>${classname}</strong> - Fully qualified Java class name of the application's main class.</li>
+ * <li><strong>${arguments}</strong> - Command line arguments to be passed to the application's <code>main()</code>
+ * method.</li>
  * </ul>
  *
  * @author Craig R. McClanahan
@@ -84,8 +80,7 @@ public final class Tool {
     /**
      * The pathname of our installation base directory.
      */
-    private static final String catalinaHome =
-            System.getProperty(Constants.CATALINA_HOME_PROP);
+    private static final String catalinaHome = System.getProperty(Constants.CATALINA_HOME_PROP);
 
 
     /**
@@ -161,28 +156,19 @@ public final class Tool {
             unpacked.add(new File(catalinaHome, "classes"));
             packed.add(new File(catalinaHome, "lib"));
             if (common) {
-                unpacked.add(new File(catalinaHome,
-                                      "common" + File.separator + "classes"));
-                packed.add(new File(catalinaHome,
-                                    "common" + File.separator + "lib"));
+                unpacked.add(new File(catalinaHome, "common" + File.separator + "classes"));
+                packed.add(new File(catalinaHome, "common" + File.separator + "lib"));
             }
             if (server) {
-                unpacked.add(new File(catalinaHome,
-                                      "server" + File.separator + "classes"));
-                packed.add(new File(catalinaHome,
-                                    "server" + File.separator + "lib"));
+                unpacked.add(new File(catalinaHome, "server" + File.separator + "classes"));
+                packed.add(new File(catalinaHome, "server" + File.separator + "lib"));
             }
             if (shared) {
-                unpacked.add(new File(catalinaHome,
-                                      "shared" + File.separator + "classes"));
-                packed.add(new File(catalinaHome,
-                                    "shared" + File.separator + "lib"));
+                unpacked.add(new File(catalinaHome, "shared" + File.separator + "classes"));
+                packed.add(new File(catalinaHome, "shared" + File.separator + "lib"));
             }
-            classLoader =
-                ClassLoaderFactory.createClassLoader
-                (unpacked.toArray(new File[0]),
-                 packed.toArray(new File[0]),
-                 null);
+            classLoader = ClassLoaderFactory.createClassLoader(unpacked.toArray(new File[0]),
+                    packed.toArray(new File[0]), null);
         } catch (Throwable t) {
             Bootstrap.handleThrowable(t);
             log.error("Class loader creation threw exception", t);
diff --git a/java/org/apache/catalina/startup/UserConfig.java b/java/org/apache/catalina/startup/UserConfig.java
index c83fbaaf80..c8e5648c8d 100644
--- a/java/org/apache/catalina/startup/UserConfig.java
+++ b/java/org/apache/catalina/startup/UserConfig.java
@@ -36,16 +36,14 @@ import org.apache.tomcat.util.res.StringManager;
 
 
 /**
- * Startup event listener for a <b>Host</b> that configures Contexts (web
- * applications) for all defined "users" who have a web application in a
- * directory with the specified name in their home directories.  The context
- * path of each deployed application will be set to <code>~xxxxx</code>, where
- * xxxxx is the username of the owning user for that web application
+ * Startup event listener for a <b>Host</b> that configures Contexts (web applications) for all defined "users" who have
+ * a web application in a directory with the specified name in their home directories. The context path of each deployed
+ * application will be set to <code>~xxxxx</code>, where xxxxx is the username of the owning user for that web
+ * application
  *
  * @author Craig R. McClanahan
  */
-public final class UserConfig
-    implements LifecycleListener {
+public final class UserConfig implements LifecycleListener {
 
 
     private static final Log log = LogFactory.getLog(UserConfig.class);
@@ -87,15 +85,13 @@ public final class UserConfig
     /**
      * The string resources for this package.
      */
-    private static final StringManager sm =
-        StringManager.getManager(Constants.Package);
+    private static final StringManager sm = StringManager.getManager(Constants.Package);
 
 
     /**
      * The Java class name of the user database class we should use.
      */
-    private String userClass =
-        "org.apache.catalina.startup.PasswdUserDatabase";
+    private String userClass = "org.apache.catalina.startup.PasswdUserDatabase";
 
     /**
      * A regular expression defining user who deployment is allowed.
@@ -192,6 +188,7 @@ public final class UserConfig
 
     /**
      * Set the user database class name for this component.
+     *
      * @param userClass The user database class name
      */
     public void setUserClass(String userClass) {
@@ -280,8 +277,8 @@ public final class UserConfig
 
 
     /**
-     * Deploy a web application for any user who has a web application present
-     * in a directory with a specified name within their home directory.
+     * Deploy a web application for any user who has a web application present in a directory with a specified name
+     * within their home directory.
      */
     private void deploy() {
 
@@ -325,8 +322,8 @@ public final class UserConfig
 
 
     /**
-     * Deploy a web application for the specified user if they have such an
-     * application in the defined directory within their home directory.
+     * Deploy a web application for the specified user if they have such an application in the defined directory within
+     * their home directory.
      *
      * @param user Username owning the application to be deployed
      * @param home Home directory of this user
@@ -390,8 +387,7 @@ public final class UserConfig
     /**
      * Test allow and deny rules for the provided user.
      *
-     * @return <code>true</code> if this user is allowed to deploy,
-     *         <code>false</code> otherwise
+     * @return <code>true</code> if this user is allowed to deploy, <code>false</code> otherwise
      */
     private boolean isDeployAllowed(String user) {
         if (deny != null && deny.matcher(user).matches()) {
@@ -416,7 +412,7 @@ public final class UserConfig
         DeployUserDirectory(UserConfig config, String user, String home) {
             this.config = config;
             this.user = user;
-            this.home= home;
+            this.home = home;
         }
 
         @Override
diff --git a/java/org/apache/catalina/startup/UserDatabase.java b/java/org/apache/catalina/startup/UserDatabase.java
index 6ba238dafb..0b0d08e5f8 100644
--- a/java/org/apache/catalina/startup/UserDatabase.java
+++ b/java/org/apache/catalina/startup/UserDatabase.java
@@ -21,8 +21,7 @@ import java.util.Enumeration;
 
 
 /**
- * Abstraction of the set of users defined by the operating system on the
- * current server platform.
+ * Abstraction of the set of users defined by the operating system on the current server platform.
  *
  * @author Craig R. McClanahan
  */
diff --git a/java/org/apache/catalina/startup/VersionLoggerListener.java b/java/org/apache/catalina/startup/VersionLoggerListener.java
index 9e92df0339..971baf3280 100644
--- a/java/org/apache/catalina/startup/VersionLoggerListener.java
+++ b/java/org/apache/catalina/startup/VersionLoggerListener.java
@@ -34,8 +34,7 @@ import org.apache.tomcat.util.res.StringManager;
 /**
  * Logs version information on startup.
  * <p>
- * This listener must only be nested within {@link Server} elements and should
- * be the first listener defined.
+ * This listener must only be nested within {@link Server} elements and should be the first listener defined.
  */
 public class VersionLoggerListener implements LifecycleListener {
 
@@ -85,8 +84,7 @@ public class VersionLoggerListener implements LifecycleListener {
     public void lifecycleEvent(LifecycleEvent event) {
         if (Lifecycle.BEFORE_INIT_EVENT.equals(event.getType())) {
             if (!(event.getLifecycle() instanceof Server)) {
-                log.warn(sm.getString("listener.notServer",
-                        event.getLifecycle().getClass().getSimpleName()));
+                log.warn(sm.getString("listener.notServer", event.getLifecycle().getClass().getSimpleName()));
             }
             log();
         }
@@ -94,28 +92,17 @@ public class VersionLoggerListener implements LifecycleListener {
 
 
     private void log() {
-        log.info(sm.getString("versionLoggerListener.serverInfo.server.version",
-                ServerInfo.getServerInfo()));
-        log.info(sm.getString("versionLoggerListener.serverInfo.server.built",
-                ServerInfo.getServerBuilt()));
-        log.info(sm.getString("versionLoggerListener.serverInfo.server.number",
-                ServerInfo.getServerNumber()));
-        log.info(sm.getString("versionLoggerListener.os.name",
-                System.getProperty("os.name")));
-        log.info(sm.getString("versionLoggerListener.os.version",
-                System.getProperty("os.version")));
-        log.info(sm.getString("versionLoggerListener.os.arch",
-                System.getProperty("os.arch")));
-        log.info(sm.getString("versionLoggerListener.java.home",
-                System.getProperty("java.home")));
-        log.info(sm.getString("versionLoggerListener.vm.version",
-                System.getProperty("java.runtime.version")));
-        log.info(sm.getString("versionLoggerListener.vm.vendor",
-                System.getProperty("java.vm.vendor")));
-        log.info(sm.getString("versionLoggerListener.catalina.base",
-                System.getProperty(Constants.CATALINA_BASE_PROP)));
-        log.info(sm.getString("versionLoggerListener.catalina.home",
-                System.getProperty(Constants.CATALINA_HOME_PROP)));
+        log.info(sm.getString("versionLoggerListener.serverInfo.server.version", ServerInfo.getServerInfo()));
+        log.info(sm.getString("versionLoggerListener.serverInfo.server.built", ServerInfo.getServerBuilt()));
+        log.info(sm.getString("versionLoggerListener.serverInfo.server.number", ServerInfo.getServerNumber()));
+        log.info(sm.getString("versionLoggerListener.os.name", System.getProperty("os.name")));
+        log.info(sm.getString("versionLoggerListener.os.version", System.getProperty("os.version")));
+        log.info(sm.getString("versionLoggerListener.os.arch", System.getProperty("os.arch")));
+        log.info(sm.getString("versionLoggerListener.java.home", System.getProperty("java.home")));
+        log.info(sm.getString("versionLoggerListener.vm.version", System.getProperty("java.runtime.version")));
+        log.info(sm.getString("versionLoggerListener.vm.vendor", System.getProperty("java.vm.vendor")));
+        log.info(sm.getString("versionLoggerListener.catalina.base", System.getProperty(Constants.CATALINA_BASE_PROP)));
+        log.info(sm.getString("versionLoggerListener.catalina.home", System.getProperty(Constants.CATALINA_HOME_PROP)));
 
         if (logArgs) {
             List<String> args = ManagementFactory.getRuntimeMXBean().getInputArguments();
@@ -125,18 +112,18 @@ public class VersionLoggerListener implements LifecycleListener {
         }
 
         if (logEnv) {
-            SortedMap<String, String> sortedMap = new TreeMap<>(System.getenv());
-            for (Map.Entry<String, String> e : sortedMap.entrySet()) {
+            SortedMap<String,String> sortedMap = new TreeMap<>(System.getenv());
+            for (Map.Entry<String,String> e : sortedMap.entrySet()) {
                 log.info(sm.getString("versionLoggerListener.env", e.getKey(), e.getValue()));
             }
         }
 
         if (logProps) {
-            SortedMap<String, String> sortedMap = new TreeMap<>();
-            for (Map.Entry<Object, Object> e : System.getProperties().entrySet()) {
+            SortedMap<String,String> sortedMap = new TreeMap<>();
+            for (Map.Entry<Object,Object> e : System.getProperties().entrySet()) {
                 sortedMap.put(String.valueOf(e.getKey()), String.valueOf(e.getValue()));
             }
-            for (Map.Entry<String, String> e : sortedMap.entrySet()) {
+            for (Map.Entry<String,String> e : sortedMap.entrySet()) {
                 log.info(sm.getString("versionLoggerListener.prop", e.getKey(), e.getValue()));
             }
         }
diff --git a/java/org/apache/catalina/startup/WebAnnotationSet.java b/java/org/apache/catalina/startup/WebAnnotationSet.java
index 11581af941..e9f1c8e00c 100644
--- a/java/org/apache/catalina/startup/WebAnnotationSet.java
+++ b/java/org/apache/catalina/startup/WebAnnotationSet.java
@@ -40,9 +40,8 @@ import org.apache.tomcat.util.descriptor.web.MessageDestinationRef;
 import org.apache.tomcat.util.res.StringManager;
 
 /**
- * <strong>AnnotationSet</strong> for processing the annotations of the web
- * application classes (<code>/WEB-INF/classes</code> and
- * <code>/WEB-INF/lib</code>).
+ * <strong>AnnotationSet</strong> for processing the annotations of the web application classes
+ * (<code>/WEB-INF/classes</code> and <code>/WEB-INF/lib</code>).
  */
 public class WebAnnotationSet {
 
@@ -139,9 +138,9 @@ public class WebAnnotationSet {
                 loadFieldsAnnotation(context, clazz);
                 loadMethodsAnnotation(context, clazz);
 
-                /* Process RunAs annotation which can be only on servlets.
-                 * Ref JSR 250, equivalent to the run-as element in
-                 * the deployment descriptor
+                /*
+                 * Process RunAs annotation which can be only on servlets. Ref JSR 250, equivalent to the run-as element
+                 * in the deployment descriptor
                  */
                 RunAs runAs = clazz.getAnnotation(RunAs.class);
                 if (runAs != null) {
@@ -151,8 +150,7 @@ public class WebAnnotationSet {
                 // Process ServletSecurity annotation
                 ServletSecurity servletSecurity = clazz.getAnnotation(ServletSecurity.class);
                 if (servletSecurity != null) {
-                    context.addServletSecurity(
-                            new ApplicationServletRegistration(wrapper, context),
+                    context.addServletSecurity(new ApplicationServletRegistration(wrapper, context),
                             new ServletSecurityElement(servletSecurity));
                 }
             }
@@ -164,19 +162,18 @@ public class WebAnnotationSet {
      * Process the annotations on a context for a given className.
      *
      * @param context The context which will have its annotations processed
-     * @param clazz The class to examine for Servlet annotations
+     * @param clazz   The class to examine for Servlet annotations
      */
-    protected static void loadClassAnnotation(Context context,
-            Class<?> clazz) {
-        /* Process Resource annotation.
-         * Ref JSR 250
+    protected static void loadClassAnnotation(Context context, Class<?> clazz) {
+        /*
+         * Process Resource annotation. Ref JSR 250
          */
         Resource resourceAnnotation = clazz.getAnnotation(Resource.class);
         if (resourceAnnotation != null) {
             addResource(context, resourceAnnotation);
         }
-        /* Process Resources annotation.
-         * Ref JSR 250
+        /*
+         * Process Resources annotation. Ref JSR 250
          */
         Resources resourcesAnnotation = clazz.getAnnotation(Resources.class);
         if (resourcesAnnotation != null && resourcesAnnotation.value() != null) {
@@ -184,9 +181,9 @@ public class WebAnnotationSet {
                 addResource(context, resource);
             }
         }
-        /* Process DeclareRoles annotation.
-         * Ref JSR 250, equivalent to the security-role element in
-         * the deployment descriptor
+        /*
+         * Process DeclareRoles annotation. Ref JSR 250, equivalent to the security-role element in the deployment
+         * descriptor
          */
         DeclareRoles declareRolesAnnotation = clazz.getAnnotation(DeclareRoles.class);
         if (declareRolesAnnotation != null && declareRolesAnnotation.value() != null) {
@@ -221,12 +218,10 @@ public class WebAnnotationSet {
                 Resource annotation = method.getAnnotation(Resource.class);
                 if (annotation != null) {
                     if (!Introspection.isValidSetter(method)) {
-                        throw new IllegalArgumentException(sm.getString(
-                                "webAnnotationSet.invalidInjection"));
+                        throw new IllegalArgumentException(sm.getString("webAnnotationSet.invalidInjection"));
                     }
 
-                    String defaultName = clazz.getName() + SEPARATOR +
-                            Introspection.getPropertyName(method);
+                    String defaultName = clazz.getName() + SEPARATOR + Introspection.getPropertyName(method);
 
                     Class<?> defaultType = (method.getParameterTypes()[0]);
                     addResource(context, annotation, defaultName, defaultType);
@@ -237,11 +232,10 @@ public class WebAnnotationSet {
 
 
     /**
-     * Process a Resource annotation to set up a Resource.
-     * Ref JSR 250, equivalent to the resource-ref,
-     * message-destination-ref, env-ref, resource-env-ref
-     * or service-ref element in the deployment descriptor.
-     * @param context The context which will have its annotations processed
+     * Process a Resource annotation to set up a Resource. Ref JSR 250, equivalent to the resource-ref,
+     * message-destination-ref, env-ref, resource-env-ref or service-ref element in the deployment descriptor.
+     *
+     * @param context    The context which will have its annotations processed
      * @param annotation The annotation that was found
      */
     protected static void addResource(Context context, Resource annotation) {
@@ -249,20 +243,13 @@ public class WebAnnotationSet {
     }
 
 
-    protected static void addResource(Context context, Resource annotation, String defaultName,
-            Class<?> defaultType) {
+    protected static void addResource(Context context, Resource annotation, String defaultName, Class<?> defaultType) {
         String name = getName(annotation, defaultName);
         String type = getType(annotation, defaultType);
 
-        if (type.equals("java.lang.String") ||
-                type.equals("java.lang.Character") ||
-                type.equals("java.lang.Integer") ||
-                type.equals("java.lang.Boolean") ||
-                type.equals("java.lang.Double") ||
-                type.equals("java.lang.Byte") ||
-                type.equals("java.lang.Short") ||
-                type.equals("java.lang.Long") ||
-                type.equals("java.lang.Float")) {
+        if (type.equals("java.lang.String") || type.equals("java.lang.Character") || type.equals("java.lang.Integer") ||
+                type.equals("java.lang.Boolean") || type.equals("java.lang.Double") || type.equals("java.lang.Byte") ||
+                type.equals("java.lang.Short") || type.equals("java.lang.Long") || type.equals("java.lang.Float")) {
 
             // env-entry element
             ContextEnvironment resource = new ContextEnvironment();
@@ -288,14 +275,10 @@ public class WebAnnotationSet {
 
             context.getNamingResources().addService(service);
 
-        } else if (type.equals("javax.sql.DataSource") ||
-                type.equals("javax.jms.ConnectionFactory") ||
-                type.equals("javax.jms.QueueConnectionFactory") ||
-                type.equals("javax.jms.TopicConnectionFactory") ||
-                type.equals("jakarta.mail.Session") ||
-                type.equals("java.net.URL") ||
-                type.equals("javax.resource.cci.ConnectionFactory") ||
-                type.equals("org.omg.CORBA_2_3.ORB") ||
+        } else if (type.equals("javax.sql.DataSource") || type.equals("javax.jms.ConnectionFactory") ||
+                type.equals("javax.jms.QueueConnectionFactory") || type.equals("javax.jms.TopicConnectionFactory") ||
+                type.equals("jakarta.mail.Session") || type.equals("java.net.URL") ||
+                type.equals("javax.resource.cci.ConnectionFactory") || type.equals("org.omg.CORBA_2_3.ORB") ||
                 type.endsWith("ConnectionFactory")) {
 
             // resource-ref element
@@ -317,8 +300,7 @@ public class WebAnnotationSet {
 
             context.getNamingResources().addResource(resource);
 
-        } else if (type.equals("javax.jms.Queue") ||
-                type.equals("javax.jms.Topic")) {
+        } else if (type.equals("javax.jms.Queue") || type.equals("javax.jms.Topic")) {
 
             // message-destination-ref
             MessageDestinationRef resource = new MessageDestinationRef();
@@ -333,9 +315,7 @@ public class WebAnnotationSet {
 
         } else {
             /*
-             * General case. Also used for:
-             * - javax.resource.cci.InteractionSpec
-             * - jakarta.transaction.UserTransaction
+             * General case. Also used for: - javax.resource.cci.InteractionSpec - jakarta.transaction.UserTransaction
              */
 
             // resource-env-ref
diff --git a/java/org/apache/catalina/startup/WebappServiceLoader.java b/java/org/apache/catalina/startup/WebappServiceLoader.java
index 02c36147bc..c58c42bb21 100644
--- a/java/org/apache/catalina/startup/WebappServiceLoader.java
+++ b/java/org/apache/catalina/startup/WebappServiceLoader.java
@@ -40,18 +40,14 @@ import org.apache.catalina.Context;
 import org.apache.tomcat.util.scan.JarFactory;
 
 /**
- * A variation of Java's JAR ServiceLoader that respects exclusion rules for
- * web applications.
+ * A variation of Java's JAR ServiceLoader that respects exclusion rules for web applications.
  * <p>
- * Primarily intended for use loading ServletContainerInitializers as defined
- * by Servlet 8.2.4. This implementation does not attempt lazy loading as the
- * container is required to introspect all implementations discovered.
+ * Primarily intended for use loading ServletContainerInitializers as defined by Servlet 8.2.4. This implementation does
+ * not attempt lazy loading as the container is required to introspect all implementations discovered.
  * <p>
- * If the ServletContext defines ORDERED_LIBS, then only JARs in WEB-INF/lib
- * that are named in that set will be included in the search for
- * provider configuration files; if ORDERED_LIBS is not defined then
- * all JARs will be searched for provider configuration files. Providers
- * defined by resources in the parent ClassLoader will always be returned.
+ * If the ServletContext defines ORDERED_LIBS, then only JARs in WEB-INF/lib that are named in that set will be included
+ * in the search for provider configuration files; if ORDERED_LIBS is not defined then all JARs will be searched for
+ * provider configuration files. Providers defined by resources in the parent ClassLoader will always be returned.
  * <p>
  * Provider classes will be loaded using the context's ClassLoader.
  *
@@ -88,15 +84,15 @@ public class WebappServiceLoader<T> {
 
 
     /**
-     * Load the providers for a service type. Container defined services will be
-     * loaded before application defined services in case the application
-     * depends on a Container provided service. Note that services are always
-     * loaded via the Context (web application) class loader so it is possible
-     * for an application to provide an alternative implementation of what would
-     * normally be a Container provided service.
+     * Load the providers for a service type. Container defined services will be loaded before application defined
+     * services in case the application depends on a Container provided service. Note that services are always loaded
+     * via the Context (web application) class loader so it is possible for an application to provide an alternative
+     * implementation of what would normally be a Container provided service.
      *
      * @param serviceType the type of service to load
+     *
      * @return an unmodifiable collection of service providers
+     *
      * @throws IOException if there was a problem loading any service
      */
     public List<T> load(Class<T> serviceType) throws IOException {
@@ -131,13 +127,13 @@ public class WebappServiceLoader<T> {
         // Obtaining the application provided configuration files is a little
         // more difficult for two reasons:
         // - The web application may employ a custom class loader. Ideally, we
-        //   would use ClassLoader.findResources() but that method is protected.
-        //   We could force custom class loaders to override that method and
-        //   make it public but that would be a new requirement and break
-        //   backwards compatibility for what is an often customised component.
+        // would use ClassLoader.findResources() but that method is protected.
+        // We could force custom class loaders to override that method and
+        // make it public but that would be a new requirement and break
+        // backwards compatibility for what is an often customised component.
         // - If the application web.xml file has defined an order for fragments
-        //   then only those JAR files represented by fragments in that order
-        //   (and arguably WEB-INF/classes) should be scanned for services.
+        // then only those JAR files represented by fragments in that order
+        // (and arguably WEB-INF/classes) should be scanned for services.
         LinkedHashSet<String> applicationServiceClassNames = new LinkedHashSet<>();
 
         // Check to see if the ServletContext has ORDERED_LIBS defined
@@ -209,8 +205,8 @@ public class WebappServiceLoader<T> {
 
     void parseConfigFile(LinkedHashSet<String> servicesFound, URL url) throws IOException {
         try (InputStream is = url.openStream();
-            InputStreamReader in = new InputStreamReader(is, StandardCharsets.UTF_8);
-            BufferedReader reader = new BufferedReader(in)) {
+                InputStreamReader in = new InputStreamReader(is, StandardCharsets.UTF_8);
+                BufferedReader reader = new BufferedReader(in)) {
             String line;
             while ((line = reader.readLine()) != null) {
                 int i = line.indexOf('#');


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org