[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