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 2019/07/10 12:00:39 UTC

[tomcat] branch 7.0.x updated: Align AsyncContextImpl with 8.5.x

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

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


The following commit(s) were added to refs/heads/7.0.x by this push:
     new c2b6147  Align AsyncContextImpl with 8.5.x
c2b6147 is described below

commit c2b6147a6d22a55618b2db88bfe2f732fc8663d9
Author: Mark Thomas <ma...@apache.org>
AuthorDate: Wed Jul 10 13:00:30 2019 +0100

    Align AsyncContextImpl with 8.5.x
    
    Spacing, improved i18n, simplify code, remove anonymous inner classes,
    obtain InstanceManager directly from the Context
---
 .../org/apache/catalina/core/AsyncContextImpl.java | 110 ++++++++++-----------
 .../apache/catalina/core/LocalStrings.properties   |  17 +---
 .../catalina/core/LocalStrings_es.properties       |  12 ---
 .../catalina/core/LocalStrings_fr.properties       |  27 +++--
 .../catalina/core/LocalStrings_ja.properties       |  12 ---
 .../catalina/security/SecurityClassLoad.java       |  63 +++++-------
 6 files changed, 90 insertions(+), 151 deletions(-)

diff --git a/java/org/apache/catalina/core/AsyncContextImpl.java b/java/org/apache/catalina/core/AsyncContextImpl.java
index 15c6610..bba05e9 100644
--- a/java/org/apache/catalina/core/AsyncContextImpl.java
+++ b/java/org/apache/catalina/core/AsyncContextImpl.java
@@ -21,9 +21,7 @@ import java.lang.reflect.InvocationTargetException;
 import java.security.AccessController;
 import java.security.PrivilegedAction;
 import java.util.ArrayList;
-import java.util.HashMap;
 import java.util.List;
-import java.util.Map;
 import java.util.concurrent.atomic.AtomicBoolean;
 
 import javax.naming.NamingException;
@@ -50,16 +48,11 @@ import org.apache.coyote.AsyncContextCallback;
 import org.apache.coyote.RequestInfo;
 import org.apache.juli.logging.Log;
 import org.apache.juli.logging.LogFactory;
-import org.apache.tomcat.InstanceManager;
 import org.apache.tomcat.util.ExceptionUtils;
 import org.apache.tomcat.util.res.StringManager;
 import org.apache.tomcat.util.security.PrivilegedGetTccl;
 import org.apache.tomcat.util.security.PrivilegedSetTccl;
-/**
- *
- * @author fhanik
- *
- */
+
 public class AsyncContextImpl implements AsyncContext, AsyncContextCallback {
 
     private static final Log log = LogFactory.getLog(AsyncContextImpl.class);
@@ -78,14 +71,14 @@ public class AsyncContextImpl implements AsyncContext, AsyncContextCallback {
 
     private volatile ServletRequest servletRequest = null;
     private volatile ServletResponse servletResponse = null;
-    private List<AsyncListenerWrapper> listeners = new ArrayList<AsyncListenerWrapper>();
+    private final List<AsyncListenerWrapper> listeners = new ArrayList<AsyncListenerWrapper>();
     private boolean hasOriginalRequestAndResponse = true;
     private volatile Runnable dispatch = null;
     private Context context = null;
+    // Default of 30000 (30s) is set by the connector
     private long timeout = -1;
     private AsyncEvent event = null;
-    private Request request;
-    private volatile InstanceManager instanceManager;
+    private volatile Request request;
 
     public AsyncContextImpl(Request request) {
         if (log.isDebugEnabled()) {
@@ -105,8 +98,7 @@ public class AsyncContextImpl implements AsyncContext, AsyncContextCallback {
 
     @Override
     public void fireOnComplete() {
-        List<AsyncListenerWrapper> listenersCopy =
-                new ArrayList<AsyncListenerWrapper>();
+        List<AsyncListenerWrapper> listenersCopy = new ArrayList<AsyncListenerWrapper>();
         listenersCopy.addAll(listeners);
 
         ClassLoader oldCL;
@@ -130,8 +122,8 @@ public class AsyncContextImpl implements AsyncContext, AsyncContextCallback {
                     listener.fireOnComplete(event);
                 } catch (Throwable t) {
                     ExceptionUtils.handleThrowable(t);
-                    log.warn("onComplete() failed for listener of type [" +
-                            listener.getClass().getName() + "]", t);
+                    log.warn(sm.getString("asyncContextImpl.onCompleteError",
+                            listener.getClass().getName()), t);
                 }
             }
         } finally {
@@ -166,18 +158,17 @@ public class AsyncContextImpl implements AsyncContext, AsyncContextCallback {
                         listener.fireOnTimeout(event);
                     } catch (Throwable t) {
                         ExceptionUtils.handleThrowable(t);
-                        log.warn("onTimeout() failed for listener of type [" +
-                                listener.getClass().getName() + "]", t);
+                        log.warn(sm.getString("asyncContextImpl.onTimeoutError",
+                                listener.getClass().getName()), t);
                     }
                 }
                 request.getCoyoteRequest().action(
                         ActionCode.ASYNC_IS_TIMINGOUT, result);
-                return !result.get();
             } finally {
                 Thread.currentThread().setContextClassLoader(oldCL);
             }
         }
-        return true;
+        return !result.get();
     }
 
     @Override
@@ -241,20 +232,8 @@ public class AsyncContextImpl implements AsyncContext, AsyncContextCallback {
             // request/response and that in turn may trigger recycling of this
             // object before the in-progress count can be decremented
             final Context context = this.context;
-            Runnable run = new Runnable() {
-                @Override
-                public void run() {
-                    request.getCoyoteRequest().action(ActionCode.ASYNC_DISPATCHED, null);
-                    try {
-                        applicationDispatcher.dispatch(servletRequest, servletResponse);
-                    }catch (Exception x) {
-                        //log.error("Async.dispatch",x);
-                        throw new RuntimeException(x);
-                    }
-                }
-            };
-
-            this.dispatch = run;
+            this.dispatch = new AsyncRunnable(
+                    request, applicationDispatcher, servletRequest, servletResponse);
             this.request.getCoyoteRequest().action(ActionCode.ASYNC_DISPATCH, null);
             clearServletRequestResponse();
             context.decrementInProgressAsyncCount();
@@ -317,8 +296,8 @@ public class AsyncContextImpl implements AsyncContext, AsyncContextCallback {
         check();
         T listener = null;
         try {
-             listener = (T) getInstanceManager().newInstance(clazz.getName(),
-                     clazz.getClassLoader());
+             listener = (T) context.getInstanceManager().newInstance(
+                     clazz.getName(), clazz.getClassLoader());
         } catch (InstantiationException e) {
             ServletException se = new ServletException(e);
             throw se;
@@ -351,7 +330,6 @@ public class AsyncContextImpl implements AsyncContext, AsyncContextCallback {
         dispatch = null;
         event = null;
         hasOriginalRequestAndResponse = true;
-        instanceManager = null;
         listeners.clear();
         request = null;
         clearServletRequestResponse();
@@ -384,8 +362,7 @@ public class AsyncContextImpl implements AsyncContext, AsyncContextCallback {
             this.hasOriginalRequestAndResponse = originalRequestResponse;
             this.event = new AsyncEvent(this, request, response);
 
-            List<AsyncListenerWrapper> listenersCopy =
-                new ArrayList<AsyncListenerWrapper>();
+            List<AsyncListenerWrapper> listenersCopy = new ArrayList<AsyncListenerWrapper>();
             listenersCopy.addAll(listeners);
             listeners.clear();
             for (AsyncListenerWrapper listener : listenersCopy) {
@@ -393,8 +370,8 @@ public class AsyncContextImpl implements AsyncContext, AsyncContextCallback {
                     listener.fireOnStartAsync(event);
                 } catch (Throwable t) {
                     ExceptionUtils.handleThrowable(t);
-                    log.warn("onStartAsync() failed for listener of type [" +
-                            listener.getClass().getName() + "]", t);
+                    log.warn(sm.getString("asyncContextImpl.onStartAsyncError",
+                            listener.getClass().getName()), t);
                 }
             }
         }
@@ -464,16 +441,15 @@ public class AsyncContextImpl implements AsyncContext, AsyncContextCallback {
         if (fireOnError) {
             AsyncEvent errorEvent = new AsyncEvent(event.getAsyncContext(),
                     event.getSuppliedRequest(), event.getSuppliedResponse(), t);
-            List<AsyncListenerWrapper> listenersCopy =
-                    new ArrayList<AsyncListenerWrapper>();
+            List<AsyncListenerWrapper> listenersCopy = new ArrayList<AsyncListenerWrapper>();
             listenersCopy.addAll(listeners);
             for (AsyncListenerWrapper listener : listenersCopy) {
                 try {
                     listener.fireOnError(errorEvent);
                 } catch (Throwable t2) {
                     ExceptionUtils.handleThrowable(t2);
-                    log.warn("onError() failed for listener of type [" +
-                            listener.getClass().getName() + "]", t2);
+                    log.warn(sm.getString("asyncContextImpl.onErrorError",
+                            listener.getClass().getName()), t2);
                 }
             }
         }
@@ -564,20 +540,6 @@ public class AsyncContextImpl implements AsyncContext, AsyncContextCallback {
         }
     }
 
-    private InstanceManager getInstanceManager() {
-        if (instanceManager == null) {
-            if (context instanceof StandardContext) {
-                instanceManager = ((StandardContext)context).getInstanceManager();
-            } else {
-                instanceManager = new DefaultInstanceManager(null,
-                        new HashMap<String, Map<String, String>>(),
-                        context,
-                        getClass().getClassLoader());
-            }
-        }
-        return instanceManager;
-    }
-
     private void check() {
         if (request == null) {
             // AsyncContext has been recycled and should not be being used
@@ -585,14 +547,15 @@ public class AsyncContextImpl implements AsyncContext, AsyncContextCallback {
                     "asyncContextImpl.requestEnded"));
         }
     }
+
     private static class DebugException extends Exception {
         private static final long serialVersionUID = 1L;
     }
 
     private static class RunnableWrapper implements Runnable {
 
-        private Runnable wrapped = null;
-        private Context context = null;
+        private final Runnable wrapped;
+        private final Context context;
 
         public RunnableWrapper(Runnable wrapped, Context ctxt) {
             this.wrapped = wrapped;
@@ -629,6 +592,33 @@ public class AsyncContextImpl implements AsyncContext, AsyncContextCallback {
                 }
             }
         }
+    }
+
+
+    private static class AsyncRunnable implements Runnable {
+
+        private final AsyncDispatcher applicationDispatcher;
+        private final Request request;
+        private final ServletRequest servletRequest;
+        private final ServletResponse servletResponse;
+
+        public AsyncRunnable(Request request, AsyncDispatcher applicationDispatcher,
+                ServletRequest servletRequest, ServletResponse servletResponse) {
+            this.request = request;
+            this.applicationDispatcher = applicationDispatcher;
+            this.servletRequest = servletRequest;
+            this.servletResponse = servletResponse;
+        }
+
+        @Override
+        public void run() {
+            request.getCoyoteRequest().action(ActionCode.ASYNC_DISPATCHED, null);
+            try {
+                applicationDispatcher.dispatch(servletRequest, servletResponse);
+            } catch (Exception e) {
+                throw new RuntimeException(sm.getString("asyncContextImpl.asyncDispachError"), e);
+            }
+        }
 
     }
 }
diff --git a/java/org/apache/catalina/core/LocalStrings.properties b/java/org/apache/catalina/core/LocalStrings.properties
index e92247a..f788a76 100644
--- a/java/org/apache/catalina/core/LocalStrings.properties
+++ b/java/org/apache/catalina/core/LocalStrings.properties
@@ -92,8 +92,13 @@ aprListener.tooLateForSSLEngine=Cannot setSSLEngine: SSL has already been initia
 aprListener.tooLateForSSLRandomSeed=Cannot setSSLRandomSeed: SSL has already been initialized
 aprListener.wrongFIPSMode=Unexpected value of FIPSMode option of AprLifecycleListener: "{0}"
 
+asyncContextImpl.asyncDispachError=Error during asynchronous dispatch
 asyncContextImpl.dispatchingStarted=Asynchronous dispatch operation has already been called. Additional asynchronous dispatch operation within the same asynchronous cycle is not allowed.
 asyncContextImpl.noAsyncDispatcher=The dispatcher returned from the ServletContext does not support asynchronous dispatching
+asyncContextImpl.onCompleteError=onComplete() call failed for listener of type [{0}]
+asyncContextImpl.onErrorError=onError() call failed for listener of type [{0}]
+asyncContextImpl.onStartAsyncError=onStartAsync() call failed for listener of type [{0}]
+asyncContextImpl.onTimeoutError=onTimeout() call failed for listener of type [{0}]
 asyncContextImpl.request.ise=It is illegal to call getRequest() after complete() or any of the dispatch() methods has been called
 asyncContextImpl.requestEnded=The request associated with the AsyncContext has already completed processing.
 asyncContextImpl.response.ise=It is illegal to call getResponse() after complete() or any of the dispatch() methods has been called
@@ -116,21 +121,9 @@ defaultInstanceManager.restrictedListenersResource=Restricted listeners property
 defaultInstanceManager.restrictedServletsResource=Restricted servlets property file not found [{0}]
 defaultInstanceManager.restrictedWrongValue=Wrong value in restricted classes property file [{0}] for class name [{1}]. Expected value: [restricted], actual value: [{2}]
 
-fastEngineMapper.alreadyStarted=FastEngineMapper {0} has already been started
-fastEngineMapper.notStarted=FastEngineMapper {0} has not yet been started
-
 filterChain.filter=Filter execution threw an exception
 filterChain.servlet=Servlet execution threw an exception
 
-httpContextMapper.container=This container is not a StandardContext
-
-httpEngineMapper.container=This container is not a StandardEngine
-
-httpHostMapper.container=This container is not a StandardHost
-
-interceptorValve.alreadyStarted=InterceptorValve has already been started
-interceptorValve.notStarted=InterceptorValve has not yet been started
-
 jreLeakListener.authPolicyFail=Error whilst attempting to prevent memory leak in javax.security.auth.Policy class
 jreLeakListener.classToInitializeFail=Failed to load class {0} during Tomcat start to prevent possible memory leaks.
 jreLeakListener.gcDaemonFail=Failed to trigger creation of the GC Daemon thread during Tomcat start to prevent possible memory leaks. This is expected on non-Sun JVMs.
diff --git a/java/org/apache/catalina/core/LocalStrings_es.properties b/java/org/apache/catalina/core/LocalStrings_es.properties
index 089e4c8..13dcc69 100644
--- a/java/org/apache/catalina/core/LocalStrings_es.properties
+++ b/java/org/apache/catalina/core/LocalStrings_es.properties
@@ -85,21 +85,9 @@ defaultInstanceManager.restrictedFiltersResource=No se ha hallado el fichero de
 defaultInstanceManager.restrictedListenersResources=No se ha hallado el fichero de propiedades restringidas de escuchadores
 defaultInstanceManager.restrictedServletsResource=No se ha hallado el fichero de propiedades restringidas de servlets
 
-fastEngineMapper.alreadyStarted=Ya se ha arrancado el FastEngineMapper {0}
-fastEngineMapper.notStarted=No se ha arrancado aún el FastEngineMapper {0}
-
 filterChain.filter=La ejecución del Filtro lanzó una excepción
 filterChain.servlet=La ejecución del Servlet lanzó una excepción
 
-httpContextMapper.container=Este Contenedor no es un StandardContext
-
-httpEngineMapper.container=Este Contenedor no es un StandardEngine
-
-httpHostMapper.container=Esta Contenedor no es una StandardHost
-
-interceptorValve.alreadyStarted=Ya ha sido arrancada la InterceptorValve
-interceptorValve.notStarted=Aún no ha sido arrancada la InterceptorValve
-
 jreLeakListener.authPolicyFail=Error mientras intentaba prevenir fallos de memoria en javax.security.auth.Policy class
 jreLeakListener.gcDaemonFail=No pude disparar la creación del hilo Daemon GC durante el arranque de Tomcat para prevenir posibles fallos de memoria. Esto es lo esperado en JVMs no Sun.
 jreLeakListener.jarUrlConnCacheFail=No pude desactivar la caché de conexión URL de Jar por defecto
diff --git a/java/org/apache/catalina/core/LocalStrings_fr.properties b/java/org/apache/catalina/core/LocalStrings_fr.properties
index 1807100..089ed31 100644
--- a/java/org/apache/catalina/core/LocalStrings_fr.properties
+++ b/java/org/apache/catalina/core/LocalStrings_fr.properties
@@ -31,24 +31,23 @@ applicationRequest.badRequest=La requête n''est pas une "javax.servlet.ServletR
 applicationResponse.badParent=Impossible de trouver une implémentation réponse parente (parent response)
 applicationResponse.badResponse=La réponse n''est pas une "javax.servlet.ServletResponseWrapper"
 
+asyncContextImpl.asyncDispachError=Erreur lors d'un dispatch asynchrone
+asyncContextImpl.dispatchingStarted=Une opération de dispatch asynchrone a déjà été appelée, plusieurs dispatch au cours d'un même cycle asynchrone n'est pas autorisé
+asyncContextImpl.noAsyncDispatcher=Le Servlet dispatcher retourné par le ServletContext ne supporte pas de dispatch asynchrone
+asyncContextImpl.onCompleteError=L''appel à onComplete() a échoué pour l''écouteur de type [{0}]
+asyncContextImpl.onErrorError=L''appel à onError() a échoué pour l''écouteur de type [{0}]
+asyncContextImpl.onStartAsyncError=L''appel à onStartAsync() a échoué pour l''écouteur de type [{0}]
+asyncContextImpl.onTimeoutError=L''appel à onTimeout() a échoué pour l''écouteur de type [{0}]
+asyncContextImpl.request.ise=Il est illégal d'appeler getRequest() après que complete() ou une autre des méthodes dispatch() ait été appelé
+asyncContextImpl.requestEnded=La requête associée avec l'AsyncContext est déjà terminée
+asyncContextImpl.response.ise=Il est illégal d'appeler getResponse() après que complete() ou n'importe laquelle des méthodes de dispatch a été appelée
+
 containerBase.alreadyStarted=Le conteneur {0} a déjà été démarré
 containerBase.notConfigured=Aucune Valve basique (basic valve) n''a été configurée
 containerBase.notStarted=Le conteneur {0} n''a pas été démarré
 
-fastEngineMapper.alreadyStarted=le "FastEngineMapper" {0} a déjà été démarré
-fastEngineMapper.notStarted=Le "FastEngineMapper" {0} n''a pas encore été démarré
-
-filterChain.filter=L''exécution du filtre (Filter) a lancé une exception
-filterChain.servlet=L''exécution de la servlet a lancé une exception
-
-httpContextMapper.container=Ce conteneur n''est pas un "StandardContext"
-
-httpEngineMapper.container=Ce conteneur n''est pas un "StandardEngine"
-
-httpHostMapper.container=Ce conteneur n''est pas un "StandardHost"
-
-interceptorValve.alreadyStarted=La valve d''interception (InterceptorValve) a déjà été démarrée
-interceptorValve.notStarted=La valve d''interception (InterceptorValve) n''a pas encore été démarrée
+filterChain.filter=L'exécution du filtre (Filter) a lancé une exception
+filterChain.servlet=L'exécution de la servlet a lancé une exception
 
 naming.bindFailed=Echec lors du liage à l''objet: {0}
 naming.invalidEnvEntryType=L''entrée environnement {0} a un type invalide
diff --git a/java/org/apache/catalina/core/LocalStrings_ja.properties b/java/org/apache/catalina/core/LocalStrings_ja.properties
index 50e4632..b454bf5 100644
--- a/java/org/apache/catalina/core/LocalStrings_ja.properties
+++ b/java/org/apache/catalina/core/LocalStrings_ja.properties
@@ -36,21 +36,9 @@ containerBase.alreadyStarted=コンテナ {0} は既に起動されています
 containerBase.notConfigured=基本バルブが設定されていません
 containerBase.notStarted=コンテナ {0} はまだ起動されていません
 
-fastEngineMapper.alreadyStarted=FastEngineMapper {0} は既に起動されています
-fastEngineMapper.notStarted=FastEngineMapper {0} はまだ起動されていません
-
 filterChain.filter=フィルタの実行により例外を投げました
 filterChain.servlet=サーブレットの実行により例外を投げました
 
-httpContextMapper.container=このコンテナはStandardContextではありません
-
-httpEngineMapper.container=このコンテナはStandardEngineではありません
-
-httpHostMapper.container=このコンテナはStandardHostではありません
-
-interceptorValve.alreadyStarted=InterceptorValveは既に起動されています
-interceptorValve.notStarted=InterceptorValveはまだ起動されていません
-
 naming.bindFailed=オブジェクトのバインドに失敗しました: {0}
 naming.invalidEnvEntryType=環境エントリ {0} は無効な型を持っています
 naming.invalidEnvEntryValue=環境エントリ {0} は無効な値を持っています
diff --git a/java/org/apache/catalina/security/SecurityClassLoad.java b/java/org/apache/catalina/security/SecurityClassLoad.java
index ab74100..0ca8205 100644
--- a/java/org/apache/catalina/security/SecurityClassLoad.java
+++ b/java/org/apache/catalina/security/SecurityClassLoad.java
@@ -14,8 +14,6 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-
-
 package org.apache.catalina.security;
 
 /**
@@ -24,12 +22,11 @@ package org.apache.catalina.security;
  * RuntimePermission does not trigger an AccessControlException.
  *
  * @author Glenn L. Nielsen
- * @author Jean-Francois Arcand
  */
 public final class SecurityClassLoad {
 
-    public static void securityClassLoad(ClassLoader loader)
-        throws Exception {
+    public static void securityClassLoad(ClassLoader loader) throws Exception {
+
 
         if( System.getSecurityManager() == null ){
             return;
@@ -49,16 +46,15 @@ public final class SecurityClassLoad {
     }
 
 
-    private static final void loadCorePackage(ClassLoader loader)
-        throws Exception {
+    private static final void loadCorePackage(ClassLoader loader) throws Exception {
         final String basePackage = "org.apache.catalina.core.";
         loader.loadClass(basePackage + "AccessLogAdapter");
         loadAnonymousInnerClasses(loader, basePackage + "ApplicationContextFacade");
         loader.loadClass(basePackage + "ApplicationDispatcher$PrivilegedForward");
         loader.loadClass(basePackage + "ApplicationDispatcher$PrivilegedInclude");
         loader.loadClass(basePackage + "AsyncContextImpl");
+        loader.loadClass(basePackage + "AsyncContextImpl$AsyncRunnable");
         loader.loadClass(basePackage + "AsyncContextImpl$DebugException");
-        loadAnonymousInnerClasses(loader, basePackage + "AsyncContextImpl");
         loader.loadClass(basePackage + "AsyncListenerWrapper");
         loader.loadClass(basePackage + "ContainerBase$PrivilegedAddChild");
         loadAnonymousInnerClasses(loader, basePackage + "DefaultInstanceManager");
@@ -68,28 +64,20 @@ public final class SecurityClassLoad {
     }
 
 
-    private static final void loadLoaderPackage(ClassLoader loader)
-        throws Exception {
+    private static final void loadLoaderPackage(ClassLoader loader) throws Exception {
         final String basePackage = "org.apache.catalina.loader.";
-        loader.loadClass
-            (basePackage +
-             "ResourceEntry");
-        loader.loadClass
-            (basePackage +
-             "WebappClassLoaderBase$PrivilegedFindResourceByName");
+        loader.loadClass(basePackage + "ResourceEntry");
+        loader.loadClass(basePackage + "WebappClassLoaderBase$PrivilegedFindResourceByName");
     }
 
 
-    private static final void loadRealmPackage(ClassLoader loader)
-            throws Exception {
+    private static final void loadRealmPackage(ClassLoader loader) throws Exception {
         final String basePackage = "org.apache.catalina.realm.";
-        loader.loadClass
-            (basePackage + "LockOutRealm$LockRecord");
+        loader.loadClass(basePackage + "LockOutRealm$LockRecord");
     }
 
 
-    private static final void loadServletsPackage(ClassLoader loader)
-            throws Exception {
+    private static final void loadServletsPackage(ClassLoader loader) throws Exception {
         final String basePackage = "org.apache.catalina.servlets.";
         // Avoid a possible memory leak in the DefaultServlet when running with
         // a security manager. The DefaultServlet needs to load an XML parser
@@ -100,8 +88,7 @@ public final class SecurityClassLoad {
     }
 
 
-    private static final void loadSessionPackage(ClassLoader loader)
-        throws Exception {
+    private static final void loadSessionPackage(ClassLoader loader) throws Exception {
         final String basePackage = "org.apache.catalina.session.";
         loader.loadClass(basePackage + "StandardSession");
         loadAnonymousInnerClasses(loader, basePackage + "StandardSession");
@@ -109,8 +96,7 @@ public final class SecurityClassLoad {
     }
 
 
-    private static final void loadUtilPackage(ClassLoader loader)
-        throws Exception {
+    private static final void loadUtilPackage(ClassLoader loader) throws Exception {
         final String basePackage = "org.apache.catalina.util.";
         loader.loadClass(basePackage + "Enumerator");
         loader.loadClass(basePackage + "ParameterMap");
@@ -118,15 +104,13 @@ public final class SecurityClassLoad {
     }
 
 
-    private static final void loadValvesPackage(ClassLoader loader)
-            throws Exception {
-            final String basePackage = "org.apache.catalina.valves.";
-            loader.loadClass(basePackage + "AccessLogValve$3");
-        }
+    private static final void loadValvesPackage(ClassLoader loader) throws Exception {
+        final String basePackage = "org.apache.catalina.valves.";
+        loader.loadClass(basePackage + "AccessLogValve$3");
+    }
 
 
-    private static final void loadCoyotePackage(ClassLoader loader)
-            throws Exception {
+    private static final void loadCoyotePackage(ClassLoader loader) throws Exception {
         final String basePackage = "org.apache.coyote.";
         // Java 6 compiler creates helper *$1 classes because we use switch with an enum
         loadAnonymousInnerClasses(loader, basePackage + "http11.AbstractHttp11Processor");
@@ -137,18 +121,16 @@ public final class SecurityClassLoad {
         loader.loadClass(basePackage + "http11.Constants");
         // Make sure system property is read at this point
         Class<?> clazz = loader.loadClass(basePackage + "Constants");
-        clazz.newInstance();
+        clazz.getConstructor().newInstance();
     }
 
 
-    private static final void loadJavaxPackage(ClassLoader loader)
-        throws Exception {
+    private static final void loadJavaxPackage(ClassLoader loader) throws Exception {
         loader.loadClass("javax.servlet.http.Cookie");
     }
 
 
-    private static final void loadConnectorPackage(ClassLoader loader)
-        throws Exception {
+    private static final void loadConnectorPackage(ClassLoader loader) throws Exception {
         final String basePackage = "org.apache.catalina.connector.";
         loader.loadClass(basePackage + "RequestFacade$GetAttributePrivilegedAction");
         loader.loadClass(basePackage + "RequestFacade$GetParameterMapPrivilegedAction");
@@ -172,8 +154,8 @@ public final class SecurityClassLoad {
         loadAnonymousInnerClasses(loader, basePackage + "Response");
     }
 
-    private static final void loadTomcatPackage(ClassLoader loader)
-        throws Exception {
+
+    private static final void loadTomcatPackage(ClassLoader loader) throws Exception {
         final String basePackage = "org.apache.tomcat.";
         // buf
         loader.loadClass(basePackage + "util.buf.B2CConverter");
@@ -217,4 +199,3 @@ public final class SecurityClassLoad {
         }
     }
 }
-


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