[jboss-cvs] JBossAS SVN: r70870 - projects/jboss-mdr/trunk/src/main/org/jboss/annotation/factory.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Fri Mar 14 10:30:40 EDT 2008
Author: kabir.khan at jboss.com
Date: 2008-03-14 10:30:40 -0400 (Fri, 14 Mar 2008)
New Revision: 70870
Modified:
projects/jboss-mdr/trunk/src/main/org/jboss/annotation/factory/AnnotationCreator.java
Log:
[JBMDR-12] Use the passed in classloader. If none is passed in use the TCL
Modified: projects/jboss-mdr/trunk/src/main/org/jboss/annotation/factory/AnnotationCreator.java
===================================================================
--- projects/jboss-mdr/trunk/src/main/org/jboss/annotation/factory/AnnotationCreator.java 2008-03-14 13:28:52 UTC (rev 70869)
+++ projects/jboss-mdr/trunk/src/main/org/jboss/annotation/factory/AnnotationCreator.java 2008-03-14 14:30:40 UTC (rev 70870)
@@ -58,6 +58,7 @@
private Class<?> annotation;
private Class<?> type;
public Object typeValue;
+ private ClassLoader loader;
static final AnnotationValidator defaultAnnotationReader;
static
@@ -83,10 +84,18 @@
}
+ public AnnotationCreator(Class<?> annotation, Class<?> type, ClassLoader loader)
+ {
+ this.type = type;
+ this.annotation = annotation;
+ this.loader = loader;
+ }
+
public AnnotationCreator(Class<?> annotation, Class<?> type)
{
this.type = type;
this.annotation = annotation;
+ this.loader = Thread.currentThread().getContextClassLoader();
}
@@ -158,7 +167,6 @@
}
else
{
- ClassLoader loader = Thread.currentThread().getContextClassLoader();
typeValue = Class.forName(classname, false, loader);
}
}
@@ -199,7 +207,7 @@
if (index == -1) throw new RuntimeException("Enum must be fully qualified: " + node.getValue());
String className = node.getValue().substring(0, index);
String en = node.getValue().substring(index + 1);
- Class<?> enumClass = Thread.currentThread().getContextClassLoader().loadClass(className);
+ Class<?> enumClass = loader.loadClass(className);
if (enumClass.getSuperclass().getName().equals("java.lang.Enum"))
{
@@ -266,7 +274,7 @@
for (int i = 0; i < size; i++)
{
- AnnotationCreator creator = new AnnotationCreator(annotation, baseType);
+ AnnotationCreator creator = new AnnotationCreator(annotation, baseType, loader);
node.jjtGetChild(i).jjtAccept(creator, null);
Array.set(typeValue, i, creator.typeValue);
}
@@ -277,7 +285,7 @@
{
try
{
- Class<?> subAnnotation = Thread.currentThread().getContextClassLoader().loadClass(node.getIdentifier());
+ Class<?> subAnnotation = loader.loadClass(node.getIdentifier());
typeValue = createAnnotation(node, subAnnotation);
}
catch (Exception e)
@@ -337,9 +345,9 @@
public static Object createAnnotation(ASTAnnotation node, Class<?> annotation, ClassLoader cl) throws Exception
{
HashMap<String, Object> map = new HashMap<String, Object>();
+ ClassLoader loader = (cl != null) ? cl : Thread.currentThread().getContextClassLoader();
if (annotation == null)
{
- ClassLoader loader = (cl != null) ? cl : Thread.currentThread().getContextClassLoader();
annotation = loader.loadClass(node.getIdentifier());
}
@@ -349,7 +357,7 @@
if (contained instanceof ASTSingleMemberValue)
{
Class<?> type = getMemberType(annotation, "value");
- AnnotationCreator creator = new AnnotationCreator(annotation, type);
+ AnnotationCreator creator = new AnnotationCreator(annotation, type, loader);
contained.jjtAccept(creator, "value");
map.put("value", creator.typeValue);
}
@@ -360,7 +368,7 @@
{
ASTMemberValuePair member = (ASTMemberValuePair) pairs.jjtGetChild(i);
Class<?> type = getMemberType(annotation, member.getIdentifier().getValue());
- AnnotationCreator creator = new AnnotationCreator(annotation, type);
+ AnnotationCreator creator = new AnnotationCreator(annotation, type, loader);
member.jjtAccept(creator, null);
map.put(member.getIdentifier().getValue(), creator.typeValue);
}
More information about the jboss-cvs-commits
mailing list