Author: markt
Date: Tue Feb 23 22:07:00 2016
New Revision: 1731974
URL: http://svn.apache.org/viewvc?rev=1731974&view=rev
Log:
Partial fix for BZ 47214.
Refactor anonymous inner classes into named inner classes when they are
referenced by name from elsewhere.
Modified:
tomcat/trunk/java/org/apache/catalina/core/ApplicationContextFacade.java
tomcat/trunk/java/org/apache/catalina/core/AsyncContextImpl.java
tomcat/trunk/java/org/apache/catalina/security/SecurityClassLoad.java
Modified:
tomcat/trunk/java/org/apache/catalina/core/ApplicationContextFacade.java
URL:
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/core/ApplicationContextFacade.java?rev=1731974&r1=1731973&r2=1731974&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/core/ApplicationContextFacade.java
(original)
+++ tomcat/trunk/java/org/apache/catalina/core/ApplicationContextFacade.java
Tue Feb 23 22:07:00 2016
@@ -858,12 +858,8 @@ public class ApplicationContextFacade im
InvocationTargetException {
if (SecurityUtil.isPackageProtectionEnabled()){
- return AccessController.doPrivileged(new
PrivilegedExceptionAction<Object>(){
- @Override
- public Object run() throws IllegalAccessException,
InvocationTargetException{
- return method.invoke(context, params);
- }
- });
+ return AccessController.doPrivileged(
+ new PrivilegedExecuteMethod(method, context, params));
} else {
return method.invoke(context, params);
}
@@ -895,4 +891,23 @@ public class ApplicationContextFacade im
throw realException;
}
+
+
+ private static class PrivilegedExecuteMethod implements
PrivilegedExceptionAction<Object> {
+
+ private final Method method;
+ private final ApplicationContext context;
+ private final Object[] params;
+
+ public PrivilegedExecuteMethod(Method method, ApplicationContext
context, Object[] params) {
+ this.method = method;
+ this.context = context;
+ this.params = params;
+ }
+
+ @Override
+ public Object run() throws Exception {
+ return method.invoke(context, params);
+ }
+ }
}
Modified: tomcat/trunk/java/org/apache/catalina/core/AsyncContextImpl.java
URL:
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/core/AsyncContextImpl.java?rev=1731974&r1=1731973&r2=1731974&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/core/AsyncContextImpl.java (original)
+++ tomcat/trunk/java/org/apache/catalina/core/AsyncContextImpl.java Tue Feb 23
22:07:00 2016
@@ -221,20 +221,8 @@ public class AsyncContextImpl implements
(AsyncDispatcher) requestDispatcher;
final ServletRequest servletRequest = getRequest();
final ServletResponse servletResponse = getResponse();
- 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();
}
@@ -579,4 +567,33 @@ public class AsyncContextImpl implements
coyoteRequest.action(ActionCode.DISPATCH_EXECUTE, null);
}
}
+
+
+ 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 x) {
+ //log.error("Async.dispatch",x);
+ throw new RuntimeException(x);
+ }
+ }
+
+ }
}
Modified: tomcat/trunk/java/org/apache/catalina/security/SecurityClassLoad.java
URL:
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/security/SecurityClassLoad.java?rev=1731974&r1=1731973&r2=1731974&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/security/SecurityClassLoad.java
(original)
+++ tomcat/trunk/java/org/apache/catalina/security/SecurityClassLoad.java Tue
Feb 23 22:07:00 2016
@@ -61,7 +61,7 @@ public final class SecurityClassLoad {
"AccessLogAdapter");
loader.loadClass
(basePackage +
- "ApplicationContextFacade$1");
+ "ApplicationContextFacade$PrivilegedExecuteMethod");
loader.loadClass
(basePackage +
"ApplicationDispatcher$PrivilegedForward");
@@ -76,10 +76,10 @@ public final class SecurityClassLoad {
"AsyncContextImpl");
loader.loadClass
(basePackage +
- "AsyncContextImpl$DebugException");
+ "AsyncContextImpl$AsyncRunnable");
loader.loadClass
(basePackage +
- "AsyncContextImpl$1");
+ "AsyncContextImpl$DebugException");
loader.loadClass
(basePackage +
"AsyncListenerWrapper");
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]