[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