[jboss-cvs] JBossAS SVN: r105757 - projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/plugins/bytecode.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Mon Jun 7 08:25:51 EDT 2010
Author: kabir.khan at jboss.com
Date: 2010-06-07 08:25:51 -0400 (Mon, 07 Jun 2010)
New Revision: 105757
Modified:
projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/plugins/bytecode/BytecodeTypeInfoFactoryImpl.java
projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/plugins/bytecode/ClassLoaderFinder.java
Log:
[JBREFLECT-125] Handle primitives when looking up classloader
Modified: projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/plugins/bytecode/BytecodeTypeInfoFactoryImpl.java
===================================================================
--- projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/plugins/bytecode/BytecodeTypeInfoFactoryImpl.java 2010-06-07 05:57:29 UTC (rev 105756)
+++ projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/plugins/bytecode/BytecodeTypeInfoFactoryImpl.java 2010-06-07 12:25:51 UTC (rev 105757)
@@ -49,6 +49,7 @@
import org.jboss.reflect.plugins.EnumConstantInfoImpl;
import org.jboss.reflect.plugins.GenericsUtil;
import org.jboss.reflect.plugins.TypeVariableAware;
+import org.jboss.reflect.plugins.bytecode.bytes.BytecodePrimitive;
import org.jboss.reflect.plugins.bytecode.bytes.ClassBytes;
import org.jboss.reflect.plugins.bytecode.bytes.ClassBytesFactory;
import org.jboss.reflect.plugins.bytecode.bytes.FieldBytes;
@@ -103,7 +104,7 @@
{
if (finder == null)
{
- this.finder = ClassLoaderFinder.Default.INSTANCE;
+ this.finder = ClassLoaderFinder.LoadClass.INSTANCE;
return;
}
this.finder = finder;
@@ -121,6 +122,11 @@
if (start > 0 || end < name.length() - 1)
name = name.substring(0, end + 1);
+
+ BytecodePrimitive primitive = BytecodePrimitive.valueOf(name);
+ if (primitive != null)
+ return SecurityActions.getSystemClassLoader();
+
return finder.getLoaderForClass(initiating, name);
}
Modified: projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/plugins/bytecode/ClassLoaderFinder.java
===================================================================
--- projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/plugins/bytecode/ClassLoaderFinder.java 2010-06-07 05:57:29 UTC (rev 105756)
+++ projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/plugins/bytecode/ClassLoaderFinder.java 2010-06-07 12:25:51 UTC (rev 105757)
@@ -41,9 +41,8 @@
/**
* Singleton default implementation of ClassLoaderFinder suitable for use
* in simple/flat classloading environments
- *
*/
- class Default implements ClassLoaderFinder
+ public class Default implements ClassLoaderFinder
{
public static Default INSTANCE = new Default();
@@ -56,4 +55,37 @@
return initiating;
}
}
+
+ /**
+ * Singleton default implementation of ClassLoaderFinder suitable for use
+ * in complex classloading environments. It loads the class
+ */
+ public class LoadClass implements ClassLoaderFinder
+ {
+ public static LoadClass INSTANCE = new LoadClass();
+
+ private LoadClass()
+ {
+
+ }
+
+ public ClassLoader getLoaderForClass(ClassLoader initiating, String name)
+ {
+ try
+ {
+ Class<?> clazz = SecurityActions.loadClass(initiating, name);;
+ ClassLoader loader = SecurityActions.getClassLoader(clazz);
+ if (loader == null)
+ loader = SecurityActions.getSystemClassLoader();;
+ return loader;
+ }
+ catch (ClassNotFoundException e)
+ {
+ if (name.endsWith(".package-info"))
+ return null;
+ // AutoGenerated
+ throw new RuntimeException(e);
+ }
+ }
+ }
}
More information about the jboss-cvs-commits
mailing list