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: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org