[webbeans-commits] Webbeans SVN: r998 - in ri/trunk: webbeans-ri/src/main/java/org/jboss/webbeans/introspector and 1 other directories.

webbeans-commits at lists.jboss.org webbeans-commits at lists.jboss.org
Thu Jan 15 18:18:46 EST 2009


Author: pete.muir at jboss.org
Date: 2009-01-15 18:18:46 -0500 (Thu, 15 Jan 2009)
New Revision: 998

Modified:
   ri/trunk/webbeans-api/src/main/java/javax/webbeans/ApplicationScoped.java
   ri/trunk/webbeans-api/src/main/java/javax/webbeans/Dependent.java
   ri/trunk/webbeans-api/src/main/java/javax/webbeans/RequestScoped.java
   ri/trunk/webbeans-api/src/main/java/javax/webbeans/SessionScoped.java
   ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/AnnotatedItem.java
   ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/ForwardingAnnotatedItem.java
   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/AbstractAnnotatedMember.java
   ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/jlr/AbstractAnnotatedType.java
   ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/jlr/AnnotatedAnnotationImpl.java
   ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/jlr/AnnotatedConstructorImpl.java
   ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/jlr/AnnotatedFieldImpl.java
   ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/jlr/AnnotatedMethodImpl.java
Log:
Initial work to support inheritance of type level metadata

Modified: ri/trunk/webbeans-api/src/main/java/javax/webbeans/ApplicationScoped.java
===================================================================
--- ri/trunk/webbeans-api/src/main/java/javax/webbeans/ApplicationScoped.java	2009-01-15 23:17:45 UTC (rev 997)
+++ ri/trunk/webbeans-api/src/main/java/javax/webbeans/ApplicationScoped.java	2009-01-15 23:18:46 UTC (rev 998)
@@ -23,6 +23,7 @@
 import static java.lang.annotation.RetentionPolicy.RUNTIME;
 
 import java.lang.annotation.Documented;
+import java.lang.annotation.Inherited;
 import java.lang.annotation.Retention;
 import java.lang.annotation.Target;
 
@@ -38,6 +39,7 @@
 @Retention(RUNTIME)
 @Documented
 @ScopeType
+ at Inherited
 public @interface ApplicationScoped
 {
 

Modified: ri/trunk/webbeans-api/src/main/java/javax/webbeans/Dependent.java
===================================================================
--- ri/trunk/webbeans-api/src/main/java/javax/webbeans/Dependent.java	2009-01-15 23:17:45 UTC (rev 997)
+++ ri/trunk/webbeans-api/src/main/java/javax/webbeans/Dependent.java	2009-01-15 23:18:46 UTC (rev 998)
@@ -23,6 +23,7 @@
 import static java.lang.annotation.RetentionPolicy.RUNTIME;
 
 import java.lang.annotation.Documented;
+import java.lang.annotation.Inherited;
 import java.lang.annotation.Retention;
 import java.lang.annotation.Target;
 
@@ -37,6 +38,7 @@
 @Retention(RUNTIME)
 @Documented
 @ScopeType(normal = false)
+ at Inherited
 public @interface Dependent
 {
 }

Modified: ri/trunk/webbeans-api/src/main/java/javax/webbeans/RequestScoped.java
===================================================================
--- ri/trunk/webbeans-api/src/main/java/javax/webbeans/RequestScoped.java	2009-01-15 23:17:45 UTC (rev 997)
+++ ri/trunk/webbeans-api/src/main/java/javax/webbeans/RequestScoped.java	2009-01-15 23:18:46 UTC (rev 998)
@@ -23,6 +23,7 @@
 import static java.lang.annotation.RetentionPolicy.RUNTIME;
 
 import java.lang.annotation.Documented;
+import java.lang.annotation.Inherited;
 import java.lang.annotation.Retention;
 import java.lang.annotation.Target;
 
@@ -37,6 +38,7 @@
 @Retention(RUNTIME)
 @Documented
 @ScopeType
+ at Inherited
 public @interface RequestScoped
 {
 }

Modified: ri/trunk/webbeans-api/src/main/java/javax/webbeans/SessionScoped.java
===================================================================
--- ri/trunk/webbeans-api/src/main/java/javax/webbeans/SessionScoped.java	2009-01-15 23:17:45 UTC (rev 997)
+++ ri/trunk/webbeans-api/src/main/java/javax/webbeans/SessionScoped.java	2009-01-15 23:18:46 UTC (rev 998)
@@ -23,6 +23,7 @@
 import static java.lang.annotation.RetentionPolicy.RUNTIME;
 
 import java.lang.annotation.Documented;
+import java.lang.annotation.Inherited;
 import java.lang.annotation.Retention;
 import java.lang.annotation.Target;
 
@@ -37,6 +38,7 @@
 @Retention(RUNTIME)
 @Documented
 @ScopeType(passivating = true)
+ at Inherited
 public @interface SessionScoped
 {
 }

Modified: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/AnnotatedItem.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/AnnotatedItem.java	2009-01-15 23:17:45 UTC (rev 997)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/AnnotatedItem.java	2009-01-15 23:18:46 UTC (rev 998)
@@ -59,6 +59,16 @@
     *         are no matches.
     */
    public Set<Annotation> getMetaAnnotations(Class<? extends Annotation> metaAnnotationType);
+   
+   /**
+    * Gets all annotations which are declared on this annotated item 
+    * with the given meta annotation type
+    * 
+    * @param The meta annotation to match
+    * @return A set of matching meta-annotations. Returns an empty set if there
+    *         are no matches.
+    */
+   public Set<Annotation> getDeclaredMetaAnnotations(Class<? extends Annotation> metaAnnotationType);
 
    /**
     * Gets all annotations which are annotated with the given meta annotation

Modified: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/ForwardingAnnotatedItem.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/ForwardingAnnotatedItem.java	2009-01-15 23:17:45 UTC (rev 997)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/ForwardingAnnotatedItem.java	2009-01-15 23:18:46 UTC (rev 998)
@@ -184,6 +184,11 @@
    {
       return delegate().toString();
    }
+   
+   public Set<Annotation> getDeclaredMetaAnnotations(Class<? extends Annotation> metaAnnotationType)
+   {
+      return delegate().getDeclaredMetaAnnotations(metaAnnotationType);
+   }
 
    /**
     * Gets the annotated item

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	2009-01-15 23:17:45 UTC (rev 997)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/jlr/AbstractAnnotatedItem.java	2009-01-15 23:18:46 UTC (rev 998)
@@ -169,6 +169,17 @@
    {
       return buildAnnotationMap(element.getAnnotations());
    }
+   
+   /**
+    * Static helper method for building annotation map from an annotated element
+    * 
+    * @param element The element to examine
+    * @return The annotation map
+    */
+   protected static AnnotationMap buildDeclaredAnnotationMap(AnnotatedElement element)
+   {
+      return buildAnnotationMap(element.getDeclaredAnnotations());
+   }
 
    /**
     * Builds the annotation map (annotation type -> annotation)
@@ -193,6 +204,14 @@
    private final MetaAnnotationMap metaAnnotationMap;
    // The set of all annotations on the item
    private final Set<Annotation> annotationSet;
+   
+   // The annotation map (annotation type -> annotation) of the item
+   private final AnnotationMap declaredAnnotationMap;
+   // The meta-annotation map (annotation type -> set of annotations containing
+   // meta-annotation) of the item
+   private final MetaAnnotationMap declaredMetaAnnotationMap;
+   // The set of all annotations on the item
+   private final Set<Annotation> declaredAnnotationSet;
 
    /**
     * Constructor
@@ -203,7 +222,7 @@
     * @param annotationMap A map of annotation to register
     * 
     */
-   public AbstractAnnotatedItem(AnnotationMap annotationMap)
+   public AbstractAnnotatedItem(AnnotationMap annotationMap, AnnotationMap declaredAnnotationMap)
    {
       if (annotationMap == null)
       {
@@ -224,7 +243,32 @@
          }
          annotationSet.add(annotation);
       }
+      
+      if (declaredAnnotationMap == null)
+      {
+         throw new NullPointerException("declaredAnnotationMap cannot be null");
+      }
+      this.declaredAnnotationMap = declaredAnnotationMap;
+      this.declaredAnnotationSet = new HashSet<Annotation>();
+      this.declaredMetaAnnotationMap = new MetaAnnotationMap();
+      for (Annotation annotation : declaredAnnotationMap.values())
+      {
+         for (Annotation metaAnnotation : annotation.annotationType().getAnnotations())
+         {
+            // Only map meta-annotations we are interested in
+            if (MAPPED_METAANNOTATIONS.contains(metaAnnotation.annotationType()))
+            {
+               declaredMetaAnnotationMap.put(metaAnnotation.annotationType(), annotation);
+            }
+         }
+         declaredAnnotationSet.add(annotation);
+      }
    }
+   
+   public AbstractAnnotatedItem(AnnotationMap annotationMap)
+   {
+      this(annotationMap, annotationMap);
+   }
 
    /**
     * Gets the annotation for a given annotation type.
@@ -252,6 +296,11 @@
    {
       return Collections.unmodifiableSet(metaAnnotationMap.get(metaAnnotationType));
    }
+   
+   public Set<Annotation> getDeclaredMetaAnnotations(Class<? extends Annotation> metaAnnotationType)
+   {
+      return Collections.unmodifiableSet(metaAnnotationMap.get(metaAnnotationType));
+   }
 
    /**
     * Gets (as an array) the set of annotations that contain a given annotation

Modified: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/jlr/AbstractAnnotatedMember.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/jlr/AbstractAnnotatedMember.java	2009-01-15 23:17:45 UTC (rev 997)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/jlr/AbstractAnnotatedMember.java	2009-01-15 23:18:46 UTC (rev 998)
@@ -104,9 +104,9 @@
     * 
     * @param annotationMap The annotation map
     */
-   public AbstractAnnotatedMember(AnnotationMap annotationMap, Member member)
+   public AbstractAnnotatedMember(AnnotationMap annotationMap, AnnotationMap declaredAnnotationMap, Member member)
    {
-      super(annotationMap);
+      super(annotationMap, declaredAnnotationMap);
       name = member.getName();
    }
 

Modified: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/jlr/AbstractAnnotatedType.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/jlr/AbstractAnnotatedType.java	2009-01-15 23:17:45 UTC (rev 997)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/jlr/AbstractAnnotatedType.java	2009-01-15 23:18:46 UTC (rev 998)
@@ -44,9 +44,9 @@
     * 
     * @param annotationMap The annotation map
     */
-   public AbstractAnnotatedType(AnnotationMap annotationMap, Class<T> type)
+   public AbstractAnnotatedType(AnnotationMap annotationMap, AnnotationMap declaredAnnotationMap, Class<T> type)
    {
-      super(annotationMap);
+      super(annotationMap, declaredAnnotationMap);
       this.name = type.getName();
       if (type.getSuperclass() != null)
       {
@@ -57,6 +57,11 @@
          this.superclass = null;
       }
    }
+   
+   public AbstractAnnotatedType(AnnotationMap annotationMap, Class<T> type)
+   {
+      this(annotationMap, annotationMap, type);
+   }
 
    /**
     * Indicates if the type is static

Modified: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/jlr/AnnotatedAnnotationImpl.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/jlr/AnnotatedAnnotationImpl.java	2009-01-15 23:17:45 UTC (rev 997)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/jlr/AnnotatedAnnotationImpl.java	2009-01-15 23:18:46 UTC (rev 998)
@@ -106,7 +106,7 @@
     */
    public AnnotatedAnnotationImpl(Class<T> annotationType)
    {
-      super(buildAnnotationMap(annotationType), annotationType);
+      super(buildAnnotationMap(annotationType), buildDeclaredAnnotationMap(annotationType), annotationType);
       this.clazz = annotationType;
       members = new HashSet<AnnotatedMethod<?>>();
       annotatedMembers = new AnnotatedMemberMap();

Modified: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/jlr/AnnotatedConstructorImpl.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/jlr/AnnotatedConstructorImpl.java	2009-01-15 23:17:45 UTC (rev 997)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/jlr/AnnotatedConstructorImpl.java	2009-01-15 23:18:46 UTC (rev 998)
@@ -75,7 +75,7 @@
     */
    public AnnotatedConstructorImpl(Constructor<T> constructor, AnnotatedType<T> declaringClass)
    {
-      super(buildAnnotationMap(constructor), constructor);
+      super(buildAnnotationMap(constructor), buildDeclaredAnnotationMap(constructor), constructor);
       this.constructor = constructor;
       this.declaringClass = declaringClass;
 

Modified: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/jlr/AnnotatedFieldImpl.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/jlr/AnnotatedFieldImpl.java	2009-01-15 23:17:45 UTC (rev 997)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/jlr/AnnotatedFieldImpl.java	2009-01-15 23:18:46 UTC (rev 998)
@@ -60,7 +60,7 @@
     */
    public AnnotatedFieldImpl(Field field, AnnotatedType<?> declaringClass)
    {
-      super(buildAnnotationMap(field), field);
+      super(buildAnnotationMap(field), buildDeclaredAnnotationMap(field), field);
       this.field = field;
       field.setAccessible(true);
       this.declaringClass = declaringClass;

Modified: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/jlr/AnnotatedMethodImpl.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/jlr/AnnotatedMethodImpl.java	2009-01-15 23:17:45 UTC (rev 997)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/jlr/AnnotatedMethodImpl.java	2009-01-15 23:18:46 UTC (rev 998)
@@ -77,7 +77,7 @@
    @SuppressWarnings("unchecked")
    public AnnotatedMethodImpl(Method method, AnnotatedType<?> declaringClass)
    {
-      super(buildAnnotationMap(method), method);
+      super(buildAnnotationMap(method), buildDeclaredAnnotationMap(method), method);
       this.method = method;
       this.declaringClass = declaringClass;
       if (method.getGenericReturnType() instanceof ParameterizedType)




More information about the weld-commits mailing list