Author: hlship
Date: Fri Jun 20 11:14:56 2008
New Revision: 670014

URL: http://svn.apache.org/viewvc?rev=670014&view=rev
Log:
TAPESTRY-2468: A deadlock related to class loading (and creation) can occur

Modified:
    
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ComponentInstantiatorSourceImpl.java

Modified: 
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ComponentInstantiatorSourceImpl.java
URL: 
http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ComponentInstantiatorSourceImpl.java?rev=670014&r1=670013&r2=670014&view=diff
==============================================================================
--- 
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ComponentInstantiatorSourceImpl.java
 (original)
+++ 
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ComponentInstantiatorSourceImpl.java
 Fri Jun 20 11:14:56 2008
@@ -72,8 +72,19 @@
             super(parent, classPool);
         }
 
+        /**
+         * Determines if the class name represents a component class from a 
controlled package.  If so,
+         * super.findClass() will load it and transform it. Returns null if 
not in a controlled package, allowing the
+         * parent class loader to do the work.
+         * <p/>
+         * This method is synchronized to <em>attempt</em> to address 
TAPESTRY-2468.
+         *
+         * @param className
+         * @return the loaded transformed Class, or null to force a load of 
the class from the parent class loader
+         * @throws ClassNotFoundException
+         */
         @Override
-        protected Class findClass(String className) throws 
ClassNotFoundException
+        protected synchronized Class findClass(String className) throws 
ClassNotFoundException
         {
             if (inControlledPackage(className)) return 
super.findClass(className);
 


Reply via email to