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

Reply via email to