[jboss-cvs] JBossAS SVN: r83416 - in projects/aop/trunk/aop/src/main/java/org/jboss/aop: instrument and 1 other directory.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Mon Jan 26 12:36:00 EST 2009
Author: kabir.khan at jboss.com
Date: 2009-01-26 12:35:59 -0500 (Mon, 26 Jan 2009)
New Revision: 83416
Modified:
projects/aop/trunk/aop/src/main/java/org/jboss/aop/classpool/AOPClassPool.java
projects/aop/trunk/aop/src/main/java/org/jboss/aop/instrument/TransformerCommon.java
Log:
[JBAOP-666] Keep track of generated classes, otherwise we get into trouble with the isFrozen() callback when creating nested classes
Modified: projects/aop/trunk/aop/src/main/java/org/jboss/aop/classpool/AOPClassPool.java
===================================================================
--- projects/aop/trunk/aop/src/main/java/org/jboss/aop/classpool/AOPClassPool.java 2009-01-26 15:07:22 UTC (rev 83415)
+++ projects/aop/trunk/aop/src/main/java/org/jboss/aop/classpool/AOPClassPool.java 2009-01-26 17:35:59 UTC (rev 83416)
@@ -114,6 +114,11 @@
if (logger.isTraceEnabled()) logger.trace(this + " creating pool for loader " + cl + " searchStrategy:" + this.searchStrategy + " isTemp:" + isTemp);
}
+ public void registerGeneratedClass(String className)
+ {
+ generatedClasses.put(className, className);
+ }
+
public void close()
{
super.close();
@@ -149,7 +154,7 @@
if (dynamic)
{
if (trace) logger.trace(this + " registering dynamic class " + classname);
- generatedClasses.put(classname, classname);
+ registerGeneratedClass(classname);
String resourcename = getResourceName(classname);
localResources.put(resourcename, Boolean.TRUE);
}
Modified: projects/aop/trunk/aop/src/main/java/org/jboss/aop/instrument/TransformerCommon.java
===================================================================
--- projects/aop/trunk/aop/src/main/java/org/jboss/aop/instrument/TransformerCommon.java 2009-01-26 15:07:22 UTC (rev 83415)
+++ projects/aop/trunk/aop/src/main/java/org/jboss/aop/instrument/TransformerCommon.java 2009-01-26 17:35:59 UTC (rev 83416)
@@ -40,6 +40,7 @@
import javassist.NotFoundException;
import org.jboss.aop.AspectManager;
+import org.jboss.aop.classpool.AOPClassPool;
import org.jboss.aop.standalone.Compiler;
/**
@@ -215,8 +216,16 @@
*/
public static CtClass makeNestedClass(CtClass outer, String name, boolean isStatic) throws CannotCompileException
{
- CtClass inner = outer.makeNestedClass(name, true);
- return inner;
+ try
+ {
+ registerGeneratedClass(outer.getClassPool(), outer.getName() + "$" + name);
+ CtClass inner = outer.makeNestedClass(name, true);
+ return inner;
+ }
+ catch (Exception e)
+ {
+ throw new CannotCompileException("Error creating " + name + " in " + outer.getName(),e);
+ }
}
/**
@@ -224,6 +233,7 @@
*/
public static CtClass makeClass(ClassPool pool, String name)
{
+ registerGeneratedClass(pool, name);
return pool.makeClass(name);
}
@@ -232,9 +242,22 @@
*/
public static CtClass makeClass(ClassPool pool, String name, CtClass superClass)
{
+ registerGeneratedClass(pool, name);
return pool.makeClass(name, superClass);
}
+ private static void registerGeneratedClass(ClassPool pool, String name)
+ {
+ try
+ {
+ ((AOPClassPool)pool).registerGeneratedClass(name);
+ }
+ catch(ClassCastException e)
+ {
+
+ }
+ }
+
private interface ToClassAction
{
Class<?> toClass(CtClass clazz, ClassLoader loader, ProtectionDomain pd)
More information about the jboss-cvs-commits
mailing list