This is an automated email from the ASF dual-hosted git repository. markt pushed a commit to branch 8.5.x in repository https://gitbox.apache.org/repos/asf/tomcat.git
The following commit(s) were added to refs/heads/8.5.x by this push: new cadaf9d Align AsyncCotextImpl with master cadaf9d is described below commit cadaf9d0957db86e76af629fecf2da3314b57198 Author: Mark Thomas <ma...@apache.org> AuthorDate: Wed Jul 10 12:34:48 2019 +0100 Align AsyncCotextImpl with master Improved i18n, use of ReflectiveOperationException, refactoring to remove local InstanceManager reference --- .../org/apache/catalina/core/AsyncContextImpl.java | 47 ++++++---------------- .../apache/catalina/core/LocalStrings.properties | 5 +++ .../catalina/core/LocalStrings_fr.properties | 15 ++++++- 3 files changed, 31 insertions(+), 36 deletions(-) diff --git a/java/org/apache/catalina/core/AsyncContextImpl.java b/java/org/apache/catalina/core/AsyncContextImpl.java index 51198b2..4621644 100644 --- a/java/org/apache/catalina/core/AsyncContextImpl.java +++ b/java/org/apache/catalina/core/AsyncContextImpl.java @@ -19,9 +19,7 @@ package org.apache.catalina.core; import java.io.IOException; import java.nio.charset.StandardCharsets; 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; @@ -47,7 +45,6 @@ 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.buf.UDecoder; import org.apache.tomcat.util.res.StringManager; @@ -78,7 +75,6 @@ public class AsyncContextImpl implements AsyncContext, AsyncContextCallback { private long timeout = -1; private AsyncEvent event = null; private volatile Request request; - private volatile InstanceManager instanceManager; public AsyncContextImpl(Request request) { if (log.isDebugEnabled()) { @@ -108,8 +104,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 { @@ -137,8 +133,8 @@ 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( @@ -275,10 +271,9 @@ public class AsyncContextImpl implements AsyncContext, AsyncContextCallback { check(); T listener = null; try { - listener = (T) getInstanceManager().newInstance(clazz.getName(), - clazz.getClassLoader()); - } catch (InstantiationException | IllegalAccessException | NamingException | - ClassNotFoundException e) { + listener = (T) context.getInstanceManager().newInstance( + clazz.getName(), clazz.getClassLoader()); + } catch (ReflectiveOperationException | NamingException e) { ServletException se = new ServletException(e); throw se; } catch (Exception e) { @@ -297,7 +292,6 @@ public class AsyncContextImpl implements AsyncContext, AsyncContextCallback { dispatch = null; event = null; hasOriginalRequestAndResponse = true; - instanceManager = null; listeners.clear(); request = null; clearServletRequestResponse(); @@ -338,8 +332,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); } } } @@ -416,8 +410,8 @@ public class AsyncContextImpl implements AsyncContext, AsyncContextCallback { 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); } } } @@ -508,20 +502,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 @@ -584,9 +564,8 @@ public class AsyncContextImpl implements AsyncContext, AsyncContextCallback { request.getCoyoteRequest().action(ActionCode.ASYNC_DISPATCHED, null); try { applicationDispatcher.dispatch(servletRequest, servletResponse); - }catch (Exception x) { - //log.error("Async.dispatch",x); - throw new RuntimeException(x); + } 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 5d74093..ff89a88 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 diff --git a/java/org/apache/catalina/core/LocalStrings_fr.properties b/java/org/apache/catalina/core/LocalStrings_fr.properties index b0773aa..0405e55 100644 --- a/java/org/apache/catalina/core/LocalStrings_fr.properties +++ b/java/org/apache/catalina/core/LocalStrings_fr.properties @@ -23,8 +23,19 @@ applicationDispatcher.forward.ise=Impossible d''utiliser faire-suivre (forward) applicationDispatcher.isUnavailable=La servlet [{0}] est actuellement indisponible applicationDispatcher.serviceException="Servlet.service()" pour la servlet [{0}] a lancé une exception -filterChain.filter=L''exécution du filtre (Filter) a lancé une exception -filterChain.servlet=L''exécution de la servlet a lancé une exception +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 + +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 --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org