[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