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 2010/09/01 02:02:06 UTC
svn commit: r991405 -
/tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/AbstractReloadableObjectCreator.java
Author: hlship
Date: Wed Sep 1 00:02:06 2010
New Revision: 991405
URL: http://svn.apache.org/viewvc?rev=991405&view=rev
Log:
TAP5-1188: Clean up and streamline code, make sure all inner classes (including inner interfaces) are loaded by the reloading 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=991405&r1=991404&r2=991405&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 Wed Sep 1 00:02:06 2010
@@ -232,8 +232,36 @@ public abstract class AbstractReloadable
{
logger.debug(String.format("BEGIN Analyzing %s", className));
+ analyze(pool, className);
+
+ trackClassFileChanges(className);
+
+ logger.debug(String.format(" END Analyzing %s", className));
+ }
+
+ private void analyze(ClassPool pool, String className) throws NotFoundException, CannotCompileException
+ {
CtClass ctClass = pool.get(className);
+ CtClass[] nestedClasses = ctClass.getNestedClasses();
+
+ for (CtClass nc : nestedClasses)
+ {
+ add(nc.getName());
+ }
+
+ // CtClass[] interfaces = ctClass.getInterfaces();
+ //
+ // for (CtClass i : interfaces)
+ // {
+ // String interfaceName = i.getName();
+ //
+ // if (isInnerClass(interfaceName))
+ // {
+ // add(interfaceName);
+ // }
+ // }
+
ctClass.instrument(new ExprEditor()
{
public void edit(ConstructorCall c) throws CannotCompileException
@@ -256,23 +284,7 @@ public abstract class AbstractReloadable
if (url != null && url.getProtocol().equals("file"))
add(cn);
}
-
- public void edit(NewExpr e) throws CannotCompileException
- {
- String newInstanceClassName = e.getClassName();
-
- if (classesToLoad.contains(newInstanceClassName))
- return;
-
- if (isInnerClass(newInstanceClassName))
- add(newInstanceClassName);
- }
-
});
-
- trackClassFileChanges(className);
-
- logger.debug(String.format(" END Analyzing %s", className));
}
private void trackClassFileChanges(String className)