[webbeans-commits] Webbeans SVN: r369 - ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/jlr.

webbeans-commits at lists.jboss.org webbeans-commits at lists.jboss.org
Thu Nov 27 02:52:23 EST 2008


Author: nickarls
Date: 2008-11-27 02:52:23 -0500 (Thu, 27 Nov 2008)
New Revision: 369

Modified:
   ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/jlr/AbstractAnnotatedItem.java
Log:
Parse meta-annotation when setting annotation map (remove lazy-loading). Still not filtering, though.

Modified: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/jlr/AbstractAnnotatedItem.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/jlr/AbstractAnnotatedItem.java	2008-11-26 22:51:40 UTC (rev 368)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/jlr/AbstractAnnotatedItem.java	2008-11-27 07:52:23 UTC (rev 369)
@@ -10,9 +10,10 @@
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
-import java.util.Map.Entry;
 
+import javax.webbeans.AnnotationLiteral;
 import javax.webbeans.BindingType;
+import javax.webbeans.Stereotype;
 
 import org.jboss.webbeans.ManagerImpl;
 import org.jboss.webbeans.bindings.CurrentAnnotationLiteral;
@@ -58,10 +59,25 @@
          return delegate;
       }
 
+      @SuppressWarnings("unchecked")
+      @Override
+      public Set<Annotation> get(Object key)
+      {
+         Set<Annotation> annotations = super.get(key);
+         if (annotations == null)
+         {
+            annotations = new HashSet<Annotation>();
+            super.put((Class<? extends Annotation>) key, annotations);
+         }
+         return annotations;
+      }
+
    }
 
    private static final Annotation[] DEFAULT_BINDING_ARRAY = { new CurrentAnnotationLiteral() };
    private static final Set<Annotation> DEFAULT_BINDING = new HashSet<Annotation>(Arrays.asList(DEFAULT_BINDING_ARRAY));
+   private static final Annotation[] MAPPED_METAANNOTATIONS_ARRAY = {};
+   private static final Set<Annotation> MAPPED_METAANNOTATIONS = new HashSet<Annotation>(Arrays.asList(MAPPED_METAANNOTATIONS_ARRAY));
 
    private AnnotationMap annotationMap;
    private MetaAnnotationMap metaAnnotationMap;
@@ -75,8 +91,25 @@
          throw new NullPointerException("annotationMap cannot be null");
       }
       this.annotationMap = annotationMap;
+      buildMetaAnnotationMap(annotationMap);
    }
 
+   private void buildMetaAnnotationMap(AnnotationMap annotationMap)
+   {
+      metaAnnotationMap = new MetaAnnotationMap();
+      for (Annotation annotation : annotationMap.values())
+      {
+         for (Annotation metaAnnotation : annotation.annotationType().getAnnotations())
+         {
+//            TODO: Check with Pete how to fill the array. Make annotation literals for all? 
+//            if (MAPPED_METAANNOTATIONS.contains(metaAnnotation))
+//            {
+               metaAnnotationMap.get(metaAnnotation.annotationType()).add(annotation);
+//            }
+         }
+      }
+   }
+
    protected static AnnotationMap buildAnnotationMap(AnnotatedElement element)
    {
       return buildAnnotationMap(element.getAnnotations());
@@ -111,11 +144,6 @@
 
    public Set<Annotation> getMetaAnnotations(Class<? extends Annotation> metaAnnotationType)
    {
-      if (metaAnnotationMap == null)
-      {
-         metaAnnotationMap = new MetaAnnotationMap();
-      }
-      metaAnnotationMap = populateMetaAnnotationMap(metaAnnotationType, metaAnnotationMap, annotationMap);
       return metaAnnotationMap.get(metaAnnotationType);
    }
 
@@ -144,23 +172,6 @@
       return annotationMap.containsKey(annotatedType);
    }
 
-   protected static <A extends Annotation> MetaAnnotationMap populateMetaAnnotationMap(Class<A> metaAnnotationType, MetaAnnotationMap metaAnnotationMap, AnnotationMap annotationMap)
-   {
-      if (!metaAnnotationMap.containsKey(metaAnnotationType))
-      {
-         Set<Annotation> annotations = new HashSet<Annotation>();
-         for (Entry<Class<? extends Annotation>, Annotation> entry : annotationMap.entrySet())
-         {
-            if (entry.getKey().isAnnotationPresent(metaAnnotationType))
-            {
-               annotations.add(entry.getValue());
-            }
-         }
-         metaAnnotationMap.put(metaAnnotationType, annotations);
-      }
-      return metaAnnotationMap;
-   }
-
    protected AnnotationMap getAnnotationMap()
    {
       return annotationMap;




More information about the weld-commits mailing list