Author: markt
Date: Tue Nov 5 23:06:33 2013
New Revision: 1539180
URL: http://svn.apache.org/r1539180
Log:
Review of r1539036 by Nick Williams.
copyWithoutTransformers(), as defined in the interface
InstrumentableClassLoader, returns a ClassLoader. The start() method is not
defined in ClassLoader, it is specific to WebappClassLoader. Furthermore, code
calling copyWithoutTransformers() won't have access to WebappClassLoader to
call start() reflectively if a SecurityManager is enabled.
So, the copyWithoutTransformers() method needs to call start() before it
returns the copied class loader. Otherwise, it will be useless to JPA providers
and the like.
Modified:
tomcat/trunk/java/org/apache/catalina/loader/WebappClassLoader.java
tomcat/trunk/test/org/apache/catalina/loader/TestWebappClassLoaderWeaving.java
Modified: tomcat/trunk/java/org/apache/catalina/loader/WebappClassLoader.java
URL:
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/loader/WebappClassLoader.java?rev=1539180&r1=1539179&r2=1539180&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/loader/WebappClassLoader.java
(original)
+++ tomcat/trunk/java/org/apache/catalina/loader/WebappClassLoader.java Tue Nov
5 23:06:33 2013
@@ -700,6 +700,12 @@ public class WebappClassLoader extends U
result.permissionList.addAll(this.permissionList);
result.loaderPC.putAll(this.loaderPC);
+ try {
+ result.start();
+ } catch (LifecycleException e) {
+ throw new IllegalStateException(e);
+ }
+
return result;
}
Modified:
tomcat/trunk/test/org/apache/catalina/loader/TestWebappClassLoaderWeaving.java
URL:
http://svn.apache.org/viewvc/tomcat/trunk/test/org/apache/catalina/loader/TestWebappClassLoaderWeaving.java?rev=1539180&r1=1539179&r2=1539180&view=diff
==============================================================================
---
tomcat/trunk/test/org/apache/catalina/loader/TestWebappClassLoaderWeaving.java
(original)
+++
tomcat/trunk/test/org/apache/catalina/loader/TestWebappClassLoaderWeaving.java
Tue Nov 5 23:06:33 2013
@@ -251,8 +251,6 @@ public class TestWebappClassLoaderWeavin
assertEquals("The second result is not correct.", "Hello, Weaver #2!",
result);
WebappClassLoader copiedLoader = this.loader.copyWithoutTransformers();
- // class loader needs to be started to populate URLs
- copiedLoader.start();
result = invokeDoMethodOnClass(copiedLoader, "TesterNeverWeavedClass");
assertEquals("The third result is not correct.", "This will never be
weaved.", result);
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]