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;
Show replies by date