You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tapestry.apache.org by hl...@apache.org on 2011/10/07 20:41:19 UTC

svn commit: r1180149 - /tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/AbstractReloadableObjectCreator.java

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));
+                }
             }
         };