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

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Tue Jul 6 11:58:23 EDT 2010


Author: kabir.khan at jboss.com
Date: 2010-07-06 11:58:22 -0400 (Tue, 06 Jul 2010)
New Revision: 106452

Modified:
   projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/plugins/ClassInfoImpl.java
   projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/plugins/InheritableAnnotationHolder.java
Log:
[JBREFLECT-132] Take into account that superclass might not always be an instance of InheritableAnnotationHolder

Modified: projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/plugins/ClassInfoImpl.java
===================================================================
--- projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/plugins/ClassInfoImpl.java	2010-07-06 15:51:53 UTC (rev 106451)
+++ projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/plugins/ClassInfoImpl.java	2010-07-06 15:58:22 UTC (rev 106452)
@@ -660,9 +660,9 @@
    }
 
    @Override
-   protected InheritableAnnotationHolder getSuperHolder()
+   protected ClassInfo getSuperHolder()
    {
-      return (ClassInfoImpl) getSuperclass();
+      return getSuperclass();
    }
    
    @Override

Modified: projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/plugins/InheritableAnnotationHolder.java
===================================================================
--- projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/plugins/InheritableAnnotationHolder.java	2010-07-06 15:51:53 UTC (rev 106451)
+++ projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/plugins/InheritableAnnotationHolder.java	2010-07-06 15:58:22 UTC (rev 106452)
@@ -27,6 +27,7 @@
 import java.util.Map;
 
 import org.jboss.reflect.spi.AnnotationValue;
+import org.jboss.reflect.spi.ClassInfo;
 
 /**
  * An annotation holder
@@ -162,7 +163,7 @@
     */
    public void setupAnnotations(AnnotationValue[] annotations)
    {
-      InheritableAnnotationHolder superHolder = getSuperHolder();
+      ClassInfo superHolder = getSuperHolder();
       AnnotationValue[] superAllAnnotations = (superHolder != null) ? superHolder.getAnnotations() : null;
       
       if (annotations != null && annotations.length > 0)
@@ -196,7 +197,23 @@
       {
          if (superHolder != null)
          {
-            allAnnotations = superHolder.getAllAnnotations();
+            if (superHolder instanceof InheritableAnnotationHolder)
+               allAnnotations = ((InheritableAnnotationHolder)superHolder).getAllAnnotations();
+            else
+            {
+               allAnnotations = new HashMap<String, AnnotationValue>(superAllAnnotations.length);
+               if (superAllAnnotations.length == 0)
+               {
+                  for (int i = 0 ; i < superAllAnnotations.length ; i++)
+                  {
+                     AnnotationValue av = superAllAnnotations[i];
+                     if (av.getAnnotationType().isAnnotationPresent(INHERITED_NAME))
+                     {
+                        allAnnotations.put(av.getAnnotationType().getName(), av);
+                     }
+                  }
+               }               
+            }
             allAnnotationsArray = superAllAnnotations;
          }
       }
@@ -207,5 +224,5 @@
     * 
     * @return the super holder
     */
-   protected abstract InheritableAnnotationHolder getSuperHolder();
+   protected abstract ClassInfo getSuperHolder();
 }



More information about the jboss-cvs-commits mailing list