[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