Author: hlship
Date: Fri Oct  7 18:41:18 2011
New Revision: 1180149

URL: http://svn.apache.org/viewvc?rev=1180149&view=rev
Log:
Be careful about which inner classes are added to the load list
Without the checks, inner classes (such as java.util.Map$Entry) could be added 
as loaded by the reloading class loader, rather than delegated to the parent 
class loader

Modified:
    
tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/AbstractReloadableObjectCreator.java

Modified: 
tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/AbstractReloadableObjectCreator.java
URL: 
http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/AbstractReloadableObjectCreator.java?rev=1180149&r1=1180148&r2=1180149&view=diff
==============================================================================
--- 
tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/AbstractReloadableObjectCreator.java
 (original)
+++ 
tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/AbstractReloadableObjectCreator.java
 Fri Oct  7 18:41:18 2011
@@ -221,7 +221,12 @@ public abstract class AbstractReloadable
             @Override
             public void visitInnerClass(String name, String outerName, String 
innerName, int access)
             {
-                add(PlasticInternalUtils.toClassName(name));
+                // Anonymous inner classes show the outerName as null. Nested 
classes show the outer name as
+                // the internal name of the containing class.
+                if (outerName == null || 
classesToLoad.contains(PlasticInternalUtils.toClassName(outerName)))
+                {
+                    add(PlasticInternalUtils.toClassName(name));
+                }
             }
         };
 


Reply via email to