[jboss-cvs] JBossAS SVN: r103818 - projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/plugins/javassist.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Mon Apr 12 07:29:25 EDT 2010


Author: kabir.khan at jboss.com
Date: 2010-04-12 07:29:24 -0400 (Mon, 12 Apr 2010)
New Revision: 103818

Modified:
   projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/plugins/javassist/JavassistConstructorInfo.java
   projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/plugins/javassist/JavassistFieldInfo.java
   projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/plugins/javassist/JavassistMethodInfo.java
   projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/plugins/javassist/JavassistTypeInfo.java
   projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/plugins/javassist/JavassistUtil.java
Log:
[JBREFLECT-5] Fix the classloaders used

Modified: projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/plugins/javassist/JavassistConstructorInfo.java
===================================================================
--- projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/plugins/javassist/JavassistConstructorInfo.java	2010-04-12 11:15:55 UTC (rev 103817)
+++ projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/plugins/javassist/JavassistConstructorInfo.java	2010-04-12 11:29:24 UTC (rev 103818)
@@ -254,7 +254,7 @@
    {
       try
       {
-         ctConstructor.setExceptionTypes(JavassistUtil.toCtClass(exceptions));
+         ctConstructor.setExceptionTypes(JavassistUtil.toCtClass(typeInfo.getCtClass().getClassPool(), exceptions));
       }
       catch (NotFoundException e)
       {
@@ -288,7 +288,7 @@
       {
          try
          {
-            ctConstructor.addParameter(JavassistUtil.toCtClass(p));
+            ctConstructor.addParameter(JavassistUtil.toCtClass(typeInfo.getCtClass().getClassPool(), p));
          }
          catch (CannotCompileException e)
          {

Modified: projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/plugins/javassist/JavassistFieldInfo.java
===================================================================
--- projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/plugins/javassist/JavassistFieldInfo.java	2010-04-12 11:15:55 UTC (rev 103817)
+++ projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/plugins/javassist/JavassistFieldInfo.java	2010-04-12 11:29:24 UTC (rev 103818)
@@ -222,7 +222,7 @@
    
    public void setType(String type)
    {
-      ctField.setType(JavassistUtil.toCtClass(type));
+      ctField.setType(JavassistUtil.toCtClass(typeInfo.getCtClass().getClassPool(), type));
       typeInfo.clearFieldCache();
    }   
 }

Modified: projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/plugins/javassist/JavassistMethodInfo.java
===================================================================
--- projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/plugins/javassist/JavassistMethodInfo.java	2010-04-12 11:15:55 UTC (rev 103817)
+++ projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/plugins/javassist/JavassistMethodInfo.java	2010-04-12 11:29:24 UTC (rev 103818)
@@ -301,7 +301,7 @@
       typeInfo.clearMethodCache();
       try
       {
-         ctMethod.setExceptionTypes(JavassistUtil.toCtClass(exceptions));
+         ctMethod.setExceptionTypes(JavassistUtil.toCtClass(typeInfo.getCtClass().getClassPool(), exceptions));
       }
       catch (NotFoundException e)
       {
@@ -340,7 +340,7 @@
       {
          try
          {
-            ctMethod.addParameter(JavassistUtil.toCtClass(p));
+            ctMethod.addParameter(JavassistUtil.toCtClass(typeInfo.getCtClass().getClassPool(), p));
          }
          catch (CannotCompileException e)
          {

Modified: projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/plugins/javassist/JavassistTypeInfo.java
===================================================================
--- projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/plugins/javassist/JavassistTypeInfo.java	2010-04-12 11:15:55 UTC (rev 103817)
+++ projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/plugins/javassist/JavassistTypeInfo.java	2010-04-12 11:29:24 UTC (rev 103818)
@@ -1042,8 +1042,8 @@
    {
       try
       {
-         CtConstructor constructor = CtNewConstructor.make(JavassistUtil.toCtClass(parameters), 
-               JavassistUtil.toCtClass(exceptions), ctClass);
+         CtConstructor constructor = CtNewConstructor.make(JavassistUtil.toCtClass(ctClass.getClassPool(), parameters), 
+               JavassistUtil.toCtClass(ctClass.getClassPool(), exceptions), ctClass);
          constructor.setModifiers(modifiers);
          return new JavassistConstructorInfo(factory, this, constructor);
       }
@@ -1074,8 +1074,8 @@
    {
       try
       {
-         CtConstructor constructor = CtNewConstructor.make(JavassistUtil.toCtClass(parameters), 
-               JavassistUtil.toCtClass(exceptions), body.getBody(), ctClass);
+         CtConstructor constructor = CtNewConstructor.make(JavassistUtil.toCtClass(ctClass.getClassPool(), parameters), 
+               JavassistUtil.toCtClass(ctClass.getClassPool(), exceptions), body.getBody(), ctClass);
          constructor.setModifiers(modifiers);
          return new JavassistConstructorInfo(factory, this, constructor);
       }
@@ -1105,7 +1105,7 @@
    {
       try
       {
-         CtField field = new CtField(JavassistUtil.toCtClass(type), fieldName, ctClass);
+         CtField field = new CtField(JavassistUtil.toCtClass(ctClass.getClassPool(), type), fieldName, ctClass);
          field.setModifiers(modifiers);
          return new JavassistFieldInfo(factory, this, field);
       }
@@ -1147,8 +1147,8 @@
    {
       try
       {
-         CtMethod method = CtNewMethod.make(modifiers, JavassistUtil.toCtClass(returnType),
-               methodName, JavassistUtil.toCtClass(parameters), JavassistUtil.toCtClass(exceptions),
+         CtMethod method = CtNewMethod.make(modifiers, JavassistUtil.toCtClass(ctClass.getClassPool(), returnType),
+               methodName, JavassistUtil.toCtClass(ctClass.getClassPool(), parameters), JavassistUtil.toCtClass(ctClass.getClassPool(), exceptions),
                new InsertBeforeJavassistBody("{}").getBody(), ctClass);
          return new JavassistMethodInfo(factory, this, method);
       }
@@ -1179,8 +1179,8 @@
    {
       try
       {
-         CtMethod method = CtNewMethod.make(modifiers, JavassistUtil.toCtClass(returnType),
-               methodName, JavassistUtil.toCtClass(parameters), JavassistUtil.toCtClass(exceptions),
+         CtMethod method = CtNewMethod.make(modifiers, JavassistUtil.toCtClass(ctClass.getClassPool(), returnType),
+               methodName, JavassistUtil.toCtClass(ctClass.getClassPool(), parameters), JavassistUtil.toCtClass(ctClass.getClassPool(), exceptions),
                body.getBody(), ctClass);
          return new JavassistMethodInfo(factory, this, method);
       }

Modified: projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/plugins/javassist/JavassistUtil.java
===================================================================
--- projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/plugins/javassist/JavassistUtil.java	2010-04-12 11:15:55 UTC (rev 103817)
+++ projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/plugins/javassist/JavassistUtil.java	2010-04-12 11:29:24 UTC (rev 103818)
@@ -36,20 +36,31 @@
  * A JavassistUtil.
  * 
  * @author <a href="mailto:stale.pedersen at jboss.org">Stale W. Pedersen</a>
+ * @author <a href="mailto:kabir.khan at jboss.org">Kabir Khan</a>
  * @version $Revision: 1.1 $
  */
 public class JavassistUtil
 {
-   static ClassPool pool = ClassPool.getDefault();
-   static ClassLoader loader = JavassistUtil.class.getClassLoader();
-
+   private static void debug(CtClass ct, String msg)
+   {
+      if (ct.getName().endsWith("ManagedConnectionFactoryDeploymentMetaData"))
+      {
+         System.out.println(msg);
+      }
+   }
+   
    public static Class<?> ctClassToClass(CtClass ct)
    {
+      debug(ct, "=========================");
+      debug(ct, System.identityHashCode(ct) + " m=" + ct.isModified() + " f=" + ct.isFrozen() + " cp=" + ct.getClassPool());
+
       if(ct.isModified())
       {
          try
          {
+            debug(ct, "Modified to class (1a)");
             ct.toClass();
+            debug(ct, "Modified to class (1b)");
          }
          catch (CannotCompileException e)
          {
@@ -80,11 +91,11 @@
                sb.append(((CtPrimitiveType)ct).getDescriptor());
                try
                {
-                  return loader.loadClass(sb.toString());
+                  return getClassLoader(ct).loadClass(sb.toString());
                }
                catch(ClassNotFoundException cnfe)
                {
-                  return Class.forName(sb.toString(), false, loader);
+                  return Class.forName(sb.toString(), false, getClassLoader(ct));
                }
             }
             else
@@ -94,7 +105,8 @@
          }
          else
          {
-            return loader.loadClass(ct.getName());
+            debug(ct, "Loading class (2)");
+            return getClassLoader(ct).loadClass(ct.getName());
          }
       }
       catch (NotFoundException e)
@@ -105,6 +117,16 @@
       {
          try
          {
+            try
+            {
+               //Debug only
+               getClassLoader(ct).loadClass(ct.getName());
+            }
+            catch(Exception ex)
+            {
+               
+            }
+            debug(ct, "toClass (3)");
             return ct.toClass();
          }
          catch (CannotCompileException e1)
@@ -114,7 +136,7 @@
       }
    }
    
-   public static CtClass toCtClass(String name)
+   public static CtClass toCtClass(ClassPool pool, String name)
    {
       try
       {
@@ -126,14 +148,14 @@
       }
    }
    
-   public static CtClass[] toCtClass(String[] names)
+   public static CtClass[] toCtClass(ClassPool pool, String[] names)
    {
       if(names == null)
          return new CtClass[0];
       CtClass[] classes = new CtClass[names.length];
       for(int i=0; i < names.length; i++)
       {
-         classes[i] = toCtClass(names[i]);
+         classes[i] = toCtClass(pool, names[i]);
       }
       return classes;
    }
@@ -176,6 +198,14 @@
    static ClassLoader getClassLoader(CtClass ctClass)
    {
       ClassPool pool = ctClass.getClassPool();
-      return (pool != null) ? pool.getClassLoader() : null;
+      ClassLoader loader = null;
+      if (pool != null)
+         loader = pool.getClassLoader();
+      
+      if (loader == null)
+         loader = SecurityActions.getContextClassLoader();
+      
+      return loader;
    }
+   
 }




More information about the jboss-cvs-commits mailing list