[webbeans-commits] Webbeans SVN: r1135 - ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bootstrap and 4 other directories.
webbeans-commits at lists.jboss.org
webbeans-commits at lists.jboss.org
Tue Jan 20 20:06:31 EST 2009
Author: pete.muir at jboss.org
Date: 2009-01-20 20:06:31 -0500 (Tue, 20 Jan 2009)
New Revision: 1135
Added:
ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/AnnotationStore.java
ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/WrappedAnnotatedField.java
ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/WrappedAnnotatedMethod.java
Removed:
ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/jlr/AnnotationStore.java
Modified:
ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bean/AbstractBean.java
ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bootstrap/BeanDeployer.java
ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/AnnotatedAnnotation.java
ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/AnnotatedClass.java
ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/AnnotatedConstructor.java
ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/AnnotatedField.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/AnnotatedMember.java
ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/AnnotatedMethod.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/ForwardingAnnotatedMember.java
ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/ForwardingAnnotatedType.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/AnnotatedClassImpl.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
ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/jlr/AnnotatedParameterImpl.java
ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/model/MergedStereotypes.java
tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/inheritance/realization/RealizationTest.java
Log:
More specialization support
Modified: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bean/AbstractBean.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bean/AbstractBean.java 2009-01-20 23:32:58 UTC (rev 1134)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bean/AbstractBean.java 2009-01-21 01:06:31 UTC (rev 1135)
@@ -39,7 +39,7 @@
import org.jboss.webbeans.ManagerImpl;
import org.jboss.webbeans.injection.InjectionPointImpl;
import org.jboss.webbeans.introspector.AnnotatedItem;
-import org.jboss.webbeans.introspector.jlr.AnnotationStore.AnnotationMap;
+import org.jboss.webbeans.introspector.AnnotationStore.AnnotationMap;
import org.jboss.webbeans.literal.CurrentLiteral;
import org.jboss.webbeans.log.LogProvider;
import org.jboss.webbeans.log.Logging;
Modified: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bootstrap/BeanDeployer.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bootstrap/BeanDeployer.java 2009-01-20 23:32:58 UTC (rev 1134)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bootstrap/BeanDeployer.java 2009-01-21 01:06:31 UTC (rev 1135)
@@ -9,6 +9,7 @@
import java.util.Set;
import javax.webbeans.BindingType;
+import javax.webbeans.DeploymentType;
import javax.webbeans.Fires;
import javax.webbeans.Initializer;
import javax.webbeans.Observes;
@@ -33,6 +34,8 @@
import org.jboss.webbeans.introspector.AnnotatedField;
import org.jboss.webbeans.introspector.AnnotatedItem;
import org.jboss.webbeans.introspector.AnnotatedMethod;
+import org.jboss.webbeans.introspector.WrappedAnnotatedField;
+import org.jboss.webbeans.introspector.WrappedAnnotatedMethod;
import org.jboss.webbeans.introspector.jlr.AnnotatedClassImpl;
import org.jboss.webbeans.jsf.JSFApiAbstraction;
import org.jboss.webbeans.log.LogProvider;
@@ -109,45 +112,72 @@
manager.getResolver().addInjectionPoints(bean.getAnnotatedInjectionPoints());
- registerProducerMethods(bean, annotatedClass, EMPTY_BINDINGS);
- registerProducerFields(bean, annotatedClass, EMPTY_BINDINGS);
- registerObserverMethods(bean, annotatedClass);
- registerFacades(bean.getAnnotatedInjectionPoints());
+ createProducerMethods(bean, annotatedClass);
+ createProducerFields(bean, annotatedClass);
+ createObserverMethods(bean, annotatedClass);
+ createFacades(bean.getAnnotatedInjectionPoints());
if (annotatedClass.isAnnotationPresent(Realizes.class))
{
- Set<Annotation> extraAnnotations = new HashSet<Annotation>();
- extraAnnotations.addAll(annotatedClass.getDeclaredMetaAnnotations(BindingType.class));
- registerProducerMethods(bean, annotatedClass.getSuperclass(), extraAnnotations);
- registerProducerFields(bean, annotatedClass.getSuperclass(), extraAnnotations);
+ createRealizedProducerMethods(bean, annotatedClass);
+ createRealizedProducerFields(bean, annotatedClass);
}
log.info("Web Bean: " + bean);
}
- private void registerProducerMethods(AbstractClassBean<?> declaringBean, AnnotatedClass<?> annotatedClass, Set<Annotation> extraAnnotations)
+ private void createProducerMethods(AbstractClassBean<?> declaringBean, AnnotatedClass<?> annotatedClass)
{
for (AnnotatedMethod<?> method : annotatedClass.getDeclaredAnnotatedMethods(Produces.class))
{
- ProducerMethodBean<?> bean = ProducerMethodBean.of(method.wrap(extraAnnotations), declaringBean, manager);
- beans.add(bean);
- manager.getResolver().addInjectionPoints(bean.getAnnotatedInjectionPoints());
- registerFacades(bean.getAnnotatedInjectionPoints());
- log.info("Web Bean: " + bean);
+ createProducerMethod(declaringBean, method);
+
}
}
- private void registerProducerFields(AbstractClassBean<?> declaringBean, AnnotatedClass<?> annotatedClass, Set<Annotation> extraAnnotations)
+ private void createProducerMethod(AbstractClassBean<?> declaringBean, AnnotatedMethod<?> annotatedMethod)
{
+ ProducerMethodBean<?> bean = ProducerMethodBean.of(annotatedMethod, declaringBean, manager);
+ beans.add(bean);
+ manager.getResolver().addInjectionPoints(bean.getAnnotatedInjectionPoints());
+ createFacades(bean.getAnnotatedInjectionPoints());
+ log.info("Web Bean: " + bean);
+ }
+
+ private void createRealizedProducerMethods(AbstractClassBean<?> declaringBean, AnnotatedClass<?> realizingClass)
+ {
+ AnnotatedClass<?> realizedClass = realizingClass.getSuperclass();
+ for (AnnotatedMethod<?> realizedMethod : realizedClass.getDeclaredAnnotatedMethods(Produces.class))
+ {
+ createProducerMethod(declaringBean, realizeProducerMethod(realizedMethod, realizingClass));
+ }
+ }
+
+ private void createRealizedProducerFields(AbstractClassBean<?> declaringBean, AnnotatedClass<?> realizingClass)
+ {
+ AnnotatedClass<?> realizedClass = realizingClass.getSuperclass();
+ for (final AnnotatedField<?> realizedField : realizedClass.getDeclaredAnnotatedFields(Produces.class))
+ {
+ createProducerField(declaringBean, realizeProducerField(realizedField, realizingClass));
+ }
+ }
+
+ private void createProducerField(AbstractClassBean<?> declaringBean, AnnotatedField<?> field)
+ {
+ ProducerFieldBean<?> bean = ProducerFieldBean.of(field, declaringBean, manager);
+ beans.add(bean);
+ log.info("Web Bean: " + bean);
+ }
+
+ private void createProducerFields(AbstractClassBean<?> declaringBean, AnnotatedClass<?> annotatedClass)
+ {
for (AnnotatedField<?> field : annotatedClass.getDeclaredAnnotatedFields(Produces.class))
{
- ProducerFieldBean<?> bean = ProducerFieldBean.of(field.wrap(extraAnnotations), declaringBean, manager);
- beans.add(bean);
- log.info("Web Bean: " + bean);
+ createProducerField(declaringBean, field);
}
}
- private void registerObserverMethods(AbstractClassBean<?> declaringBean, AnnotatedClass<?> annotatedClass)
+ private void createObserverMethods(AbstractClassBean<?> declaringBean, AnnotatedClass<?> annotatedClass)
{
for (AnnotatedMethod<?> observerMethod : annotatedClass.getDeclaredMethodsWithAnnotatedParameters(Observes.class))
{
@@ -156,22 +186,22 @@
}
}
- private void registerFacades(Set<AnnotatedItem<?, ?>> injectionPoints)
+ private void createFacades(Set<AnnotatedItem<?, ?>> injectionPoints)
{
for (AnnotatedItem<?, ?> injectionPoint : injectionPoints)
{
if (injectionPoint.isAnnotationPresent(Fires.class))
{
- registerEvent(injectionPoint);
+ createEvent(injectionPoint);
}
if (injectionPoint.isAnnotationPresent(Obtains.class))
{
- registerInstance(injectionPoint);
+ createInstance(injectionPoint);
}
}
}
- private void registerEvent(AnnotatedItem<?, ?> injectionPoint)
+ private void createEvent(AnnotatedItem<?, ?> injectionPoint)
{
// TODO Fix this!
@SuppressWarnings("unchecked")
@@ -180,7 +210,7 @@
log.info("Web Bean: " + bean);
}
- private void registerInstance(AnnotatedItem<?, ?> injectionPoint)
+ private void createInstance(AnnotatedItem<?, ?> injectionPoint)
{
// TODO FIx this
@SuppressWarnings("unchecked")
@@ -223,4 +253,73 @@
return false;
}
}
+
+ private static <T> AnnotatedMethod<T> realizeProducerMethod(final AnnotatedMethod<T> method, final AnnotatedClass<?> realizingClass)
+ {
+ return new WrappedAnnotatedMethod<T>(method, realizingClass.getMetaAnnotations(BindingType.class))
+ {
+
+ @Override
+ public Set<Annotation> getMetaAnnotations(Class<? extends Annotation> metaAnnotationType)
+ {
+ if (metaAnnotationType.equals(DeploymentType.class))
+ {
+ return realizingClass.getMetaAnnotations(DeploymentType.class);
+ }
+ else
+ {
+ return super.getMetaAnnotations(metaAnnotationType);
+ }
+ }
+
+ @Override
+ public Set<Annotation> getDeclaredMetaAnnotations(Class<? extends Annotation> metaAnnotationType)
+ {
+ if (metaAnnotationType.equals(DeploymentType.class))
+ {
+ return realizingClass.getDeclaredMetaAnnotations(DeploymentType.class);
+ }
+ else
+ {
+ return super.getDeclaredMetaAnnotations(metaAnnotationType);
+ }
+ }
+
+ };
+ }
+
+ private static <T> AnnotatedField<T> realizeProducerField(final AnnotatedField<T> field, final AnnotatedClass<?> realizingClass)
+ {
+ return new WrappedAnnotatedField<T>(field, realizingClass.getMetaAnnotations(BindingType.class))
+ {
+
+ @Override
+ public Set<Annotation> getMetaAnnotations(Class<? extends Annotation> metaAnnotationType)
+ {
+ if (metaAnnotationType.equals(DeploymentType.class))
+ {
+ return realizingClass.getMetaAnnotations(DeploymentType.class);
+ }
+ else
+ {
+ return super.getMetaAnnotations(metaAnnotationType);
+ }
+ }
+
+ @Override
+ public Set<Annotation> getDeclaredMetaAnnotations(Class<? extends Annotation> metaAnnotationType)
+ {
+ if (metaAnnotationType.equals(DeploymentType.class))
+ {
+ return realizingClass.getDeclaredMetaAnnotations(DeploymentType.class);
+ }
+ else
+ {
+ return super.getDeclaredMetaAnnotations(metaAnnotationType);
+ }
+ }
+
+ };
+ }
+
}
Modified: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/AnnotatedAnnotation.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/AnnotatedAnnotation.java 2009-01-20 23:32:58 UTC (rev 1134)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/AnnotatedAnnotation.java 2009-01-21 01:06:31 UTC (rev 1135)
@@ -43,6 +43,4 @@
*/
public Set<AnnotatedMethod<?>> getAnnotatedMembers(Class<? extends Annotation> annotationType);
- public AnnotatedAnnotation<T> wrap(Set<Annotation> annotations);
-
}
Modified: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/AnnotatedClass.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/AnnotatedClass.java 2009-01-20 23:32:58 UTC (rev 1134)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/AnnotatedClass.java 2009-01-21 01:06:31 UTC (rev 1135)
@@ -151,7 +151,5 @@
public boolean isNonStaticMemberClass();
public boolean isParameterizedType();
-
- public AnnotatedClass<T> wrap(Set<Annotation> annotations);
}
\ No newline at end of file
Modified: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/AnnotatedConstructor.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/AnnotatedConstructor.java 2009-01-20 23:32:58 UTC (rev 1134)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/AnnotatedConstructor.java 2009-01-21 01:06:31 UTC (rev 1135)
@@ -20,7 +20,6 @@
import java.lang.annotation.Annotation;
import java.lang.reflect.Constructor;
import java.util.List;
-import java.util.Set;
import org.jboss.webbeans.ManagerImpl;
@@ -65,7 +64,5 @@
* @return An abstraction of the declaring class
*/
public AnnotatedType<T> getDeclaringClass();
-
- public AnnotatedConstructor<T> wrap(Set<Annotation> annotations);
}
Modified: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/AnnotatedField.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/AnnotatedField.java 2009-01-20 23:32:58 UTC (rev 1134)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/AnnotatedField.java 2009-01-21 01:06:31 UTC (rev 1135)
@@ -17,9 +17,7 @@
package org.jboss.webbeans.introspector;
-import java.lang.annotation.Annotation;
import java.lang.reflect.Field;
-import java.util.Set;
import javax.webbeans.manager.Manager;
@@ -99,6 +97,4 @@
public boolean isTransient();
- public AnnotatedField<T> wrap(Set<Annotation> annotations);
-
}
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-20 23:32:58 UTC (rev 1134)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/AnnotatedItem.java 2009-01-21 01:06:31 UTC (rev 1135)
@@ -184,6 +184,6 @@
*/
public String getName();
- public AnnotatedItem<T, S> wrap(Set<Annotation> annotations);
+ public AnnotationStore getAnnotationStore();
}
\ No newline at end of file
Modified: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/AnnotatedMember.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/AnnotatedMember.java 2009-01-20 23:32:58 UTC (rev 1134)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/AnnotatedMember.java 2009-01-21 01:06:31 UTC (rev 1135)
@@ -16,9 +16,7 @@
*/
package org.jboss.webbeans.introspector;
-import java.lang.annotation.Annotation;
import java.lang.reflect.Member;
-import java.util.Set;
/**
* AnnotedMember provides enhanced access to an annotated member
*
@@ -30,6 +28,4 @@
public S getMember();
- public AnnotatedMember<T, S> wrap(Set<Annotation> annotations);
-
}
Modified: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/AnnotatedMethod.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/AnnotatedMethod.java 2009-01-20 23:32:58 UTC (rev 1134)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/AnnotatedMethod.java 2009-01-21 01:06:31 UTC (rev 1135)
@@ -130,7 +130,5 @@
public boolean isEquivalent(Method method);
public Method getAnnotatedMethod();
-
- public AnnotatedMethod<T> wrap(Set<Annotation> annotations);
}
Copied: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/AnnotationStore.java (from rev 1134, ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/jlr/AnnotationStore.java)
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/AnnotationStore.java (rev 0)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/AnnotationStore.java 2009-01-21 01:06:31 UTC (rev 1135)
@@ -0,0 +1,315 @@
+package org.jboss.webbeans.introspector;
+
+import static org.jboss.webbeans.introspector.AnnotatedItem.MAPPED_METAANNOTATIONS;
+
+import java.lang.annotation.Annotation;
+import java.lang.reflect.AnnotatedElement;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Map;
+import java.util.Set;
+
+import javax.webbeans.BindingType;
+
+import org.jboss.webbeans.literal.CurrentLiteral;
+import org.jboss.webbeans.util.Strings;
+
+import com.google.common.collect.ForwardingMap;
+
+public class AnnotationStore
+{
+
+ // The array of default binding types
+ private static final Annotation[] DEFAULT_BINDING_ARRAY = { new CurrentLiteral() };
+ // The set of default binding types
+ private static final Set<Annotation> DEFAULT_BINDING = new HashSet<Annotation>(Arrays.asList(DEFAULT_BINDING_ARRAY));
+
+ private static final Annotation[] EMPTY_ANNOTATION_ARRAY = new Annotation[0];
+
+ /**
+ * Represents a mapping from a annotation type to an annotation
+ * implementation
+ */
+ public static class AnnotationMap extends ForwardingMap<Class<? extends Annotation>, Annotation>
+ {
+ private final Map<Class<? extends Annotation>, Annotation> delegate;
+
+ public AnnotationMap()
+ {
+ delegate = new HashMap<Class<? extends Annotation>, Annotation>();
+ }
+
+ @Override
+ protected Map<Class<? extends Annotation>, Annotation> delegate()
+ {
+ return delegate;
+ }
+
+ /**
+ * Gets a string representation of the Map
+ *
+ * @return A string representation
+ */
+ @Override
+ public String toString()
+ {
+ return Strings.mapToString("AnnotationMap (annotation type -> annotation): ", delegate);
+ }
+
+ }
+
+ /**
+ * Represents a mapping from a annotation (meta-annotation) to a set of
+ * annotations
+ *
+ */
+ private static class MetaAnnotationMap extends ForwardingMap<Class<? extends Annotation>, Set<Annotation>>
+ {
+ private final Map<Class<? extends Annotation>, Set<Annotation>> delegate;
+
+ public MetaAnnotationMap()
+ {
+ delegate = new HashMap<Class<? extends Annotation>, Set<Annotation>>();
+ }
+
+ @Override
+ protected Map<Class<? extends Annotation>, Set<Annotation>> delegate()
+ {
+ return delegate;
+ }
+
+ /**
+ * Gets the set of annotations matching the given annotation type
+ *
+ * @param key The meta-annotation to match
+ * @returns The set of matching annotations containing this
+ * meta-annotation
+ */
+ @Override
+ public Set<Annotation> get(Object key)
+ {
+ Set<Annotation> annotations = super.get(key);
+ return annotations != null ? annotations : new HashSet<Annotation>();
+ }
+
+ /**
+ * Adds an annotation under the meta-annotation type key
+ *
+ * @param key The meta-annotation type
+ * @param value The annotation
+ */
+ public void put(Class<? extends Annotation> key, Annotation value)
+ {
+ Set<Annotation> annotations = super.get(key);
+ if (annotations == null)
+ {
+ annotations = new HashSet<Annotation>();
+ super.put(key, annotations);
+ }
+ annotations.add(value);
+ }
+
+ /**
+ * Gets a string representation of the Map
+ *
+ * @return A string representation
+ */
+ @Override
+ public String toString()
+ {
+ return Strings.mapToString("MetaAnnotationMap (annotation type -> annotation set: ", delegate);
+ }
+
+ }
+
+ /**
+ * Builds the annotation map (annotation type -> annotation)
+ *
+ * @param annotations The array of annotations to map
+ * @return The annotation map
+ */
+ protected static AnnotationMap buildAnnotationMap(Annotation[] annotations)
+ {
+ AnnotationMap annotationMap = new AnnotationMap();
+ for (Annotation annotation : annotations)
+ {
+ annotationMap.put(annotation.annotationType(), annotation);
+ }
+ return annotationMap;
+ }
+
+ /**
+ * Builds the annotation map (annotation type -> annotation)
+ *
+ * @param annotations The array of annotations to map
+ * @return The annotation map
+ */
+ protected static AnnotationMap buildAnnotationMap(Iterable<Annotation> annotations)
+ {
+ AnnotationMap annotationMap = new AnnotationMap();
+ for (Annotation annotation : annotations)
+ {
+ annotationMap.put(annotation.annotationType(), annotation);
+ }
+ return annotationMap;
+ }
+
+ /**
+ * Build an AnnotatedItemHelper from a class
+ *
+ * @param annotatedElement
+ * @return
+ */
+ public static AnnotationStore of(AnnotatedElement annotatedElement)
+ {
+ return new AnnotationStore(buildAnnotationMap(annotatedElement.getAnnotations()), buildAnnotationMap(annotatedElement.getDeclaredAnnotations()));
+ }
+
+ public static AnnotationStore of(Annotation[] annotations, Annotation[] declaredAnnotations)
+ {
+ return new AnnotationStore(buildAnnotationMap(annotations), buildAnnotationMap(declaredAnnotations));
+ }
+
+ public static AnnotationStore wrap(AnnotationStore annotationStore, Set<Annotation> annotations, Set<Annotation> declaredAnnotations)
+ {
+ AnnotationMap annotationMap = new AnnotationMap();
+ annotationMap.putAll(buildAnnotationMap(annotations));
+ annotationMap.putAll(annotationStore.getAnnotationMap());
+
+ AnnotationMap declaredAnnotationMap = new AnnotationMap();
+ declaredAnnotationMap.putAll(buildAnnotationMap(declaredAnnotations));
+ declaredAnnotationMap.putAll(annotationStore.getDeclaredAnnotationMap());
+
+ return new AnnotationStore(annotationMap, declaredAnnotationMap);
+ }
+
+ // The annotation map (annotation type -> annotation) of the item
+ private final AnnotationMap annotationMap;
+ // The meta-annotation map (annotation type -> set of annotations containing
+ // meta-annotation) of the item
+ 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
+ *
+ * Also builds the meta-annotation map. Throws a NullPointerException if
+ * trying to register a null map
+ *
+ * @param annotationMap A map of annotation to register
+ *
+ */
+ protected AnnotationStore(AnnotationMap annotationMap, AnnotationMap declaredAnnotationMap)
+ {
+ if (annotationMap == null)
+ {
+ throw new NullPointerException("annotationMap cannot be null");
+ }
+ this.annotationMap = annotationMap;
+ this.annotationSet = new HashSet<Annotation>();
+ this.metaAnnotationMap = new MetaAnnotationMap();
+ for (Annotation annotation : annotationMap.values())
+ {
+ for (Annotation metaAnnotation : annotation.annotationType().getAnnotations())
+ {
+ // Only map meta-annotations we are interested in
+ if (MAPPED_METAANNOTATIONS.contains(metaAnnotation.annotationType()))
+ {
+ metaAnnotationMap.put(metaAnnotation.annotationType(), annotation);
+ }
+ }
+ 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 Set<Annotation> getAnnotations()
+ {
+ return Collections.unmodifiableSet(annotationSet);
+ }
+
+ public Set<Annotation> getMetaAnnotations(Class<? extends Annotation> metaAnnotationType)
+ {
+ return Collections.unmodifiableSet(metaAnnotationMap.get(metaAnnotationType));
+ }
+
+ public Set<Annotation> getDeclaredMetaAnnotations(Class<? extends Annotation> metaAnnotationType)
+ {
+ return Collections.unmodifiableSet(declaredMetaAnnotationMap.get(metaAnnotationType));
+ }
+
+ public Annotation[] getMetaAnnotationsAsArray(Class<? extends Annotation> metaAnnotationType)
+ {
+ return getMetaAnnotations(metaAnnotationType).toArray(EMPTY_ANNOTATION_ARRAY);
+ }
+
+ @Deprecated
+ public Set<Annotation> getBindingTypes()
+ {
+ if (getMetaAnnotations(BindingType.class).size() > 0)
+ {
+ return Collections.unmodifiableSet(getMetaAnnotations(BindingType.class));
+ }
+ else
+ {
+ return Collections.unmodifiableSet(DEFAULT_BINDING);
+ }
+ }
+
+ @Deprecated
+ public Annotation[] getBindingTypesAsArray()
+ {
+ return getBindingTypes().toArray(EMPTY_ANNOTATION_ARRAY);
+ }
+
+ public <A extends Annotation> A getAnnotation(Class<? extends A> annotationType)
+ {
+ return annotationType.cast(annotationMap.get(annotationType));
+ }
+
+ public boolean isAnnotationPresent(Class<? extends Annotation> annotationType)
+ {
+ return annotationMap.containsKey(annotationType);
+ }
+
+ AnnotationMap getAnnotationMap()
+ {
+ return annotationMap;
+ }
+
+ AnnotationMap getDeclaredAnnotationMap()
+ {
+ return declaredAnnotationMap;
+ }
+
+}
Property changes on: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/AnnotationStore.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
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-20 23:32:58 UTC (rev 1134)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/ForwardingAnnotatedItem.java 2009-01-21 01:06:31 UTC (rev 1135)
@@ -45,15 +45,15 @@
*/
public <A extends Annotation> A getAnnotation(Class<? extends A> annotationType)
{
- return delegate().getAnnotation(annotationType);
+ return getAnnotationStore().getAnnotation(annotationType);
}
/**
* @see org.jboss.webbeans.introspector.AnnotatedItem
*/
- public <A extends Annotation> Set<A> getAnnotations()
+ public Set<Annotation> getAnnotations()
{
- return delegate().getAnnotations();
+ return getAnnotationStore().getAnnotations();
}
/**
@@ -61,7 +61,7 @@
*/
public Set<Annotation> getMetaAnnotations(Class<? extends Annotation> metaAnnotationType)
{
- return delegate().getMetaAnnotations(metaAnnotationType);
+ return getAnnotationStore().getMetaAnnotations(metaAnnotationType);
}
/**
@@ -69,23 +69,25 @@
*/
public Annotation[] getMetaAnnotationsAsArray(Class<? extends Annotation> metaAnnotationType)
{
- return delegate().getMetaAnnotationsAsArray(metaAnnotationType);
+ return getAnnotationStore().getMetaAnnotationsAsArray(metaAnnotationType);
}
/**
* @see org.jboss.webbeans.introspector.AnnotatedItem
*/
+ @Deprecated
public Set<Annotation> getBindingTypes()
{
- return delegate().getBindingTypes();
+ return getAnnotationStore().getBindingTypes();
}
/**
* @see org.jboss.webbeans.introspector.AnnotatedItem
*/
+ @Deprecated
public Annotation[] getBindingTypesAsArray()
{
- return delegate().getBindingTypesAsArray();
+ return getAnnotationStore().getBindingTypesAsArray();
}
/**
@@ -109,7 +111,7 @@
*/
public boolean isAnnotationPresent(Class<? extends Annotation> annotationType)
{
- return delegate().isAnnotationPresent(annotationType);
+ return getAnnotationStore().isAnnotationPresent(annotationType);
}
/**
@@ -192,7 +194,7 @@
public Set<Annotation> getDeclaredMetaAnnotations(Class<? extends Annotation> metaAnnotationType)
{
- return delegate().getDeclaredMetaAnnotations(metaAnnotationType);
+ return getAnnotationStore().getDeclaredMetaAnnotations(metaAnnotationType);
}
/**
@@ -202,9 +204,9 @@
*/
protected abstract AnnotatedItem<T, S> delegate();
- public AnnotatedItem<T, S> wrap(Set<Annotation> annotations)
+ public AnnotationStore getAnnotationStore()
{
- throw new UnsupportedOperationException();
+ return delegate().getAnnotationStore();
}
}
Modified: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/ForwardingAnnotatedMember.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/ForwardingAnnotatedMember.java 2009-01-20 23:32:58 UTC (rev 1134)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/ForwardingAnnotatedMember.java 2009-01-21 01:06:31 UTC (rev 1135)
@@ -1,8 +1,6 @@
package org.jboss.webbeans.introspector;
-import java.lang.annotation.Annotation;
import java.lang.reflect.Member;
-import java.util.Set;
public abstract class ForwardingAnnotatedMember<T, S extends Member> extends ForwardingAnnotatedItem<T, S> implements AnnotatedMember<T, S>
{
@@ -15,10 +13,4 @@
return delegate().getMember();
}
- @Override
- public AnnotatedMember<T, S> wrap(Set<Annotation> annotations)
- {
- throw new UnsupportedOperationException();
- }
-
}
Modified: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/ForwardingAnnotatedType.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/ForwardingAnnotatedType.java 2009-01-20 23:32:58 UTC (rev 1134)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/ForwardingAnnotatedType.java 2009-01-21 01:06:31 UTC (rev 1135)
@@ -1,7 +1,5 @@
package org.jboss.webbeans.introspector;
-import java.lang.annotation.Annotation;
-import java.util.Set;
@@ -21,10 +19,4 @@
return delegate().isEquivalent(clazz);
}
- @Override
- public AnnotatedType<T> wrap(Set<Annotation> annotations)
- {
- throw new UnsupportedOperationException();
- }
-
}
Added: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/WrappedAnnotatedField.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/WrappedAnnotatedField.java (rev 0)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/WrappedAnnotatedField.java 2009-01-21 01:06:31 UTC (rev 1135)
@@ -0,0 +1,30 @@
+package org.jboss.webbeans.introspector;
+
+import java.lang.annotation.Annotation;
+import java.util.Set;
+
+public class WrappedAnnotatedField<T> extends ForwardingAnnotatedField<T>
+{
+
+ private final AnnotatedField<T> delegate;
+ private AnnotationStore annotationStore;
+
+ public WrappedAnnotatedField(AnnotatedField<T> field, Set<Annotation> extraAnnotations)
+ {
+ this.delegate = field;
+ this.annotationStore = AnnotationStore.wrap(field.getAnnotationStore(), extraAnnotations, extraAnnotations);
+ }
+
+ @Override
+ protected AnnotatedField<T> delegate()
+ {
+ return delegate;
+ }
+
+ @Override
+ public AnnotationStore getAnnotationStore()
+ {
+ return annotationStore;
+ }
+
+}
Property changes on: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/WrappedAnnotatedField.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Added: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/WrappedAnnotatedMethod.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/WrappedAnnotatedMethod.java (rev 0)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/WrappedAnnotatedMethod.java 2009-01-21 01:06:31 UTC (rev 1135)
@@ -0,0 +1,30 @@
+package org.jboss.webbeans.introspector;
+
+import java.lang.annotation.Annotation;
+import java.util.Set;
+
+public class WrappedAnnotatedMethod<T> extends ForwardingAnnotatedMethod<T>
+{
+
+ private final AnnotatedMethod<T> delegate;
+ private AnnotationStore annotationStore;
+
+ public WrappedAnnotatedMethod(AnnotatedMethod<T> method, Set<Annotation> extraAnnotations)
+ {
+ this.delegate = method;
+ this.annotationStore = AnnotationStore.wrap(method.getAnnotationStore(), extraAnnotations, extraAnnotations);
+ }
+
+ @Override
+ protected AnnotatedMethod<T> delegate()
+ {
+ return delegate;
+ }
+
+ @Override
+ public AnnotationStore getAnnotationStore()
+ {
+ return annotationStore;
+ }
+
+}
Property changes on: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/WrappedAnnotatedMethod.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
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-20 23:32:58 UTC (rev 1134)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/jlr/AbstractAnnotatedItem.java 2009-01-21 01:06:31 UTC (rev 1135)
@@ -23,6 +23,7 @@
import java.util.Set;
import org.jboss.webbeans.introspector.AnnotatedItem;
+import org.jboss.webbeans.introspector.AnnotationStore;
import org.jboss.webbeans.util.Proxies;
import org.jboss.webbeans.util.Reflections;
import org.jboss.webbeans.util.Types;
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-20 23:32:58 UTC (rev 1134)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/jlr/AbstractAnnotatedMember.java 2009-01-21 01:06:31 UTC (rev 1135)
@@ -34,6 +34,7 @@
import org.jboss.webbeans.injection.InjectionPointProvider;
import org.jboss.webbeans.introspector.AnnotatedMember;
import org.jboss.webbeans.introspector.AnnotatedParameter;
+import org.jboss.webbeans.introspector.AnnotationStore;
import org.jboss.webbeans.introspector.ForwardingAnnotatedMember;
import org.jboss.webbeans.util.Reflections;
import org.jboss.webbeans.util.Strings;
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-20 23:32:58 UTC (rev 1134)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/jlr/AbstractAnnotatedType.java 2009-01-21 01:06:31 UTC (rev 1135)
@@ -20,6 +20,7 @@
import java.lang.reflect.Modifier;
import org.jboss.webbeans.introspector.AnnotatedClass;
+import org.jboss.webbeans.introspector.AnnotationStore;
import org.jboss.webbeans.util.Reflections;
/**
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-20 23:32:58 UTC (rev 1134)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/jlr/AnnotatedAnnotationImpl.java 2009-01-21 01:06:31 UTC (rev 1135)
@@ -28,6 +28,7 @@
import org.jboss.webbeans.introspector.AnnotatedAnnotation;
import org.jboss.webbeans.introspector.AnnotatedMethod;
+import org.jboss.webbeans.introspector.AnnotationStore;
import org.jboss.webbeans.util.Strings;
import com.google.common.collect.ForwardingMap;
Modified: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/jlr/AnnotatedClassImpl.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/jlr/AnnotatedClassImpl.java 2009-01-20 23:32:58 UTC (rev 1134)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/jlr/AnnotatedClassImpl.java 2009-01-21 01:06:31 UTC (rev 1135)
@@ -37,6 +37,7 @@
import org.jboss.webbeans.introspector.AnnotatedConstructor;
import org.jboss.webbeans.introspector.AnnotatedField;
import org.jboss.webbeans.introspector.AnnotatedMethod;
+import org.jboss.webbeans.introspector.AnnotationStore;
import org.jboss.webbeans.util.Names;
import org.jboss.webbeans.util.Reflections;
import org.jboss.webbeans.util.Strings;
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-20 23:32:58 UTC (rev 1134)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/jlr/AnnotatedConstructorImpl.java 2009-01-21 01:06:31 UTC (rev 1135)
@@ -32,6 +32,7 @@
import org.jboss.webbeans.introspector.AnnotatedConstructor;
import org.jboss.webbeans.introspector.AnnotatedParameter;
import org.jboss.webbeans.introspector.AnnotatedType;
+import org.jboss.webbeans.introspector.AnnotationStore;
import org.jboss.webbeans.util.Names;
/**
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-20 23:32:58 UTC (rev 1134)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/jlr/AnnotatedFieldImpl.java 2009-01-21 01:06:31 UTC (rev 1135)
@@ -17,17 +17,15 @@
package org.jboss.webbeans.introspector.jlr;
-import java.lang.annotation.Annotation;
import java.lang.reflect.Field;
import java.lang.reflect.ParameterizedType;
import java.lang.reflect.Type;
-import java.util.Set;
import javax.webbeans.manager.Manager;
import org.jboss.webbeans.introspector.AnnotatedField;
import org.jboss.webbeans.introspector.AnnotatedType;
-import org.jboss.webbeans.introspector.ForwardingAnnotatedField;
+import org.jboss.webbeans.introspector.AnnotationStore;
import org.jboss.webbeans.util.Names;
import org.jboss.webbeans.util.Reflections;
@@ -190,72 +188,5 @@
toString = "Annotated field " + Names.field2String(field);
return toString;
}
-
- public AnnotatedField<T> wrap(Set<Annotation> annotations)
- {
- if (annotations.size() > 0)
- {
- final AnnotatedField<T> delegate = this;
- final AnnotationStore annotationStore = AnnotationStore.wrap(getAnnotationStore(), annotations, annotations);
- return new ForwardingAnnotatedField<T>()
- {
-
- @Override
- protected AnnotatedField<T> delegate()
- {
- return delegate;
- }
-
- @Override
- public <A extends Annotation> A getAnnotation(Class<? extends A> annotationType)
- {
- return annotationStore.getAnnotation(annotationType);
- }
-
- @Override
- public Set<Annotation> getAnnotations()
- {
- return annotationStore.getAnnotations();
- }
-
- @Override
- @Deprecated
- public Set<Annotation> getBindingTypes()
- {
- return annotationStore.getBindingTypes();
- }
-
- @Override
- @Deprecated
- public Annotation[] getBindingTypesAsArray()
- {
- return annotationStore.getBindingTypesAsArray();
- }
-
- @Override
- public Set<Annotation> getDeclaredMetaAnnotations(Class<? extends Annotation> metaAnnotationType)
- {
- return annotationStore.getDeclaredMetaAnnotations(metaAnnotationType);
- }
-
- @Override
- public Set<Annotation> getMetaAnnotations(Class<? extends Annotation> metaAnnotationType)
- {
- return annotationStore.getMetaAnnotations(metaAnnotationType);
- }
-
- @Override
- public Annotation[] getMetaAnnotationsAsArray(Class<? extends Annotation> metaAnnotationType)
- {
- return annotationStore.getMetaAnnotationsAsArray(metaAnnotationType);
- }
-
- };
- }
- else
- {
- return this;
- }
- }
}
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-20 23:32:58 UTC (rev 1134)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/jlr/AnnotatedMethodImpl.java 2009-01-21 01:06:31 UTC (rev 1135)
@@ -25,13 +25,12 @@
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
-import java.util.Set;
import org.jboss.webbeans.ManagerImpl;
import org.jboss.webbeans.introspector.AnnotatedMethod;
import org.jboss.webbeans.introspector.AnnotatedParameter;
import org.jboss.webbeans.introspector.AnnotatedType;
-import org.jboss.webbeans.introspector.ForwardingAnnotatedMethod;
+import org.jboss.webbeans.introspector.AnnotationStore;
import org.jboss.webbeans.util.Names;
import org.jboss.webbeans.util.Reflections;
@@ -328,73 +327,6 @@
toString = "Annotated method " + Names.method2String(method);
return toString;
}
-
- public AnnotatedMethod<T> wrap(Set<Annotation> annotations)
- {
- if (annotations.size() > 0)
- {
- final AnnotatedMethod<T> delegate = this;
- final AnnotationStore annotationStore = AnnotationStore.wrap(getAnnotationStore(), annotations, annotations);
- return new ForwardingAnnotatedMethod<T>()
- {
-
- @Override
- protected AnnotatedMethod<T> delegate()
- {
- return delegate;
- }
-
- @Override
- public <A extends Annotation> A getAnnotation(Class<? extends A> annotationType)
- {
- return annotationStore.getAnnotation(annotationType);
- }
-
- @Override
- public Set<Annotation> getAnnotations()
- {
- return annotationStore.getAnnotations();
- }
-
- @Override
- @Deprecated
- public Set<Annotation> getBindingTypes()
- {
- return annotationStore.getBindingTypes();
- }
-
- @Override
- @Deprecated
- public Annotation[] getBindingTypesAsArray()
- {
- return annotationStore.getBindingTypesAsArray();
- }
-
- @Override
- public Set<Annotation> getDeclaredMetaAnnotations(Class<? extends Annotation> metaAnnotationType)
- {
- return annotationStore.getDeclaredMetaAnnotations(metaAnnotationType);
- }
-
- @Override
- public Set<Annotation> getMetaAnnotations(Class<? extends Annotation> metaAnnotationType)
- {
- return annotationStore.getMetaAnnotations(metaAnnotationType);
- }
-
- @Override
- public Annotation[] getMetaAnnotationsAsArray(Class<? extends Annotation> metaAnnotationType)
- {
- return annotationStore.getMetaAnnotationsAsArray(metaAnnotationType);
- }
-
- };
- }
- else
- {
- return this;
- }
- }
}
Modified: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/jlr/AnnotatedParameterImpl.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/jlr/AnnotatedParameterImpl.java 2009-01-20 23:32:58 UTC (rev 1134)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/jlr/AnnotatedParameterImpl.java 2009-01-21 01:06:31 UTC (rev 1135)
@@ -26,6 +26,7 @@
import org.jboss.webbeans.introspector.AnnotatedMember;
import org.jboss.webbeans.introspector.AnnotatedParameter;
+import org.jboss.webbeans.introspector.AnnotationStore;
/**
* Represents a parameter
Deleted: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/jlr/AnnotationStore.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/jlr/AnnotationStore.java 2009-01-20 23:32:58 UTC (rev 1134)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/jlr/AnnotationStore.java 2009-01-21 01:06:31 UTC (rev 1135)
@@ -1,315 +0,0 @@
-package org.jboss.webbeans.introspector.jlr;
-
-import static org.jboss.webbeans.introspector.AnnotatedItem.MAPPED_METAANNOTATIONS;
-
-import java.lang.annotation.Annotation;
-import java.lang.reflect.AnnotatedElement;
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Map;
-import java.util.Set;
-
-import javax.webbeans.BindingType;
-
-import org.jboss.webbeans.literal.CurrentLiteral;
-import org.jboss.webbeans.util.Strings;
-
-import com.google.common.collect.ForwardingMap;
-
-public class AnnotationStore
-{
-
- // The array of default binding types
- private static final Annotation[] DEFAULT_BINDING_ARRAY = { new CurrentLiteral() };
- // The set of default binding types
- private static final Set<Annotation> DEFAULT_BINDING = new HashSet<Annotation>(Arrays.asList(DEFAULT_BINDING_ARRAY));
-
- private static final Annotation[] EMPTY_ANNOTATION_ARRAY = new Annotation[0];
-
- /**
- * Represents a mapping from a annotation type to an annotation
- * implementation
- */
- public static class AnnotationMap extends ForwardingMap<Class<? extends Annotation>, Annotation>
- {
- private final Map<Class<? extends Annotation>, Annotation> delegate;
-
- public AnnotationMap()
- {
- delegate = new HashMap<Class<? extends Annotation>, Annotation>();
- }
-
- @Override
- protected Map<Class<? extends Annotation>, Annotation> delegate()
- {
- return delegate;
- }
-
- /**
- * Gets a string representation of the Map
- *
- * @return A string representation
- */
- @Override
- public String toString()
- {
- return Strings.mapToString("AnnotationMap (annotation type -> annotation): ", delegate);
- }
-
- }
-
- /**
- * Represents a mapping from a annotation (meta-annotation) to a set of
- * annotations
- *
- */
- private static class MetaAnnotationMap extends ForwardingMap<Class<? extends Annotation>, Set<Annotation>>
- {
- private final Map<Class<? extends Annotation>, Set<Annotation>> delegate;
-
- public MetaAnnotationMap()
- {
- delegate = new HashMap<Class<? extends Annotation>, Set<Annotation>>();
- }
-
- @Override
- protected Map<Class<? extends Annotation>, Set<Annotation>> delegate()
- {
- return delegate;
- }
-
- /**
- * Gets the set of annotations matching the given annotation type
- *
- * @param key The meta-annotation to match
- * @returns The set of matching annotations containing this
- * meta-annotation
- */
- @Override
- public Set<Annotation> get(Object key)
- {
- Set<Annotation> annotations = super.get(key);
- return annotations != null ? annotations : new HashSet<Annotation>();
- }
-
- /**
- * Adds an annotation under the meta-annotation type key
- *
- * @param key The meta-annotation type
- * @param value The annotation
- */
- public void put(Class<? extends Annotation> key, Annotation value)
- {
- Set<Annotation> annotations = super.get(key);
- if (annotations == null)
- {
- annotations = new HashSet<Annotation>();
- super.put(key, annotations);
- }
- annotations.add(value);
- }
-
- /**
- * Gets a string representation of the Map
- *
- * @return A string representation
- */
- @Override
- public String toString()
- {
- return Strings.mapToString("MetaAnnotationMap (annotation type -> annotation set: ", delegate);
- }
-
- }
-
- /**
- * Builds the annotation map (annotation type -> annotation)
- *
- * @param annotations The array of annotations to map
- * @return The annotation map
- */
- protected static AnnotationMap buildAnnotationMap(Annotation[] annotations)
- {
- AnnotationMap annotationMap = new AnnotationMap();
- for (Annotation annotation : annotations)
- {
- annotationMap.put(annotation.annotationType(), annotation);
- }
- return annotationMap;
- }
-
- /**
- * Builds the annotation map (annotation type -> annotation)
- *
- * @param annotations The array of annotations to map
- * @return The annotation map
- */
- protected static AnnotationMap buildAnnotationMap(Iterable<Annotation> annotations)
- {
- AnnotationMap annotationMap = new AnnotationMap();
- for (Annotation annotation : annotations)
- {
- annotationMap.put(annotation.annotationType(), annotation);
- }
- return annotationMap;
- }
-
- /**
- * Build an AnnotatedItemHelper from a class
- *
- * @param annotatedElement
- * @return
- */
- public static AnnotationStore of(AnnotatedElement annotatedElement)
- {
- return new AnnotationStore(buildAnnotationMap(annotatedElement.getAnnotations()), buildAnnotationMap(annotatedElement.getDeclaredAnnotations()));
- }
-
- public static AnnotationStore of(Annotation[] annotations, Annotation[] declaredAnnotations)
- {
- return new AnnotationStore(buildAnnotationMap(annotations), buildAnnotationMap(declaredAnnotations));
- }
-
- public static AnnotationStore wrap(AnnotationStore annotationStore, Set<Annotation> annotations, Set<Annotation> declaredAnnotations)
- {
- AnnotationMap annotationMap = new AnnotationMap();
- annotationMap.putAll(buildAnnotationMap(annotations));
- annotationMap.putAll(annotationStore.getAnnotationMap());
-
- AnnotationMap declaredAnnotationMap = new AnnotationMap();
- declaredAnnotationMap.putAll(buildAnnotationMap(declaredAnnotations));
- declaredAnnotationMap.putAll(annotationStore.getDeclaredAnnotationMap());
-
- return new AnnotationStore(annotationMap, declaredAnnotationMap);
- }
-
- // The annotation map (annotation type -> annotation) of the item
- private final AnnotationMap annotationMap;
- // The meta-annotation map (annotation type -> set of annotations containing
- // meta-annotation) of the item
- 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
- *
- * Also builds the meta-annotation map. Throws a NullPointerException if
- * trying to register a null map
- *
- * @param annotationMap A map of annotation to register
- *
- */
- protected AnnotationStore(AnnotationMap annotationMap, AnnotationMap declaredAnnotationMap)
- {
- if (annotationMap == null)
- {
- throw new NullPointerException("annotationMap cannot be null");
- }
- this.annotationMap = annotationMap;
- this.annotationSet = new HashSet<Annotation>();
- this.metaAnnotationMap = new MetaAnnotationMap();
- for (Annotation annotation : annotationMap.values())
- {
- for (Annotation metaAnnotation : annotation.annotationType().getAnnotations())
- {
- // Only map meta-annotations we are interested in
- if (MAPPED_METAANNOTATIONS.contains(metaAnnotation.annotationType()))
- {
- metaAnnotationMap.put(metaAnnotation.annotationType(), annotation);
- }
- }
- 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 Set<Annotation> getAnnotations()
- {
- return Collections.unmodifiableSet(annotationSet);
- }
-
- public Set<Annotation> getMetaAnnotations(Class<? extends Annotation> metaAnnotationType)
- {
- return Collections.unmodifiableSet(metaAnnotationMap.get(metaAnnotationType));
- }
-
- public Set<Annotation> getDeclaredMetaAnnotations(Class<? extends Annotation> metaAnnotationType)
- {
- return Collections.unmodifiableSet(declaredMetaAnnotationMap.get(metaAnnotationType));
- }
-
- public Annotation[] getMetaAnnotationsAsArray(Class<? extends Annotation> metaAnnotationType)
- {
- return getMetaAnnotations(metaAnnotationType).toArray(EMPTY_ANNOTATION_ARRAY);
- }
-
- @Deprecated
- public Set<Annotation> getBindingTypes()
- {
- if (getMetaAnnotations(BindingType.class).size() > 0)
- {
- return Collections.unmodifiableSet(getMetaAnnotations(BindingType.class));
- }
- else
- {
- return Collections.unmodifiableSet(DEFAULT_BINDING);
- }
- }
-
- @Deprecated
- public Annotation[] getBindingTypesAsArray()
- {
- return getBindingTypes().toArray(EMPTY_ANNOTATION_ARRAY);
- }
-
- public <A extends Annotation> A getAnnotation(Class<? extends A> annotationType)
- {
- return annotationType.cast(annotationMap.get(annotationType));
- }
-
- public boolean isAnnotationPresent(Class<? extends Annotation> annotationType)
- {
- return annotationMap.containsKey(annotationType);
- }
-
- public AnnotationMap getAnnotationMap()
- {
- return annotationMap;
- }
-
- public AnnotationMap getDeclaredAnnotationMap()
- {
- return declaredAnnotationMap;
- }
-
-}
Modified: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/model/MergedStereotypes.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/model/MergedStereotypes.java 2009-01-20 23:32:58 UTC (rev 1134)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/model/MergedStereotypes.java 2009-01-21 01:06:31 UTC (rev 1135)
@@ -22,7 +22,7 @@
import java.util.Set;
import org.jboss.webbeans.MetaDataCache;
-import org.jboss.webbeans.introspector.jlr.AnnotationStore.AnnotationMap;
+import org.jboss.webbeans.introspector.AnnotationStore.AnnotationMap;
/**
* Meta model for the merged stereotype for a bean
Modified: tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/inheritance/realization/RealizationTest.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/inheritance/realization/RealizationTest.java 2009-01-20 23:32:58 UTC (rev 1134)
+++ tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/inheritance/realization/RealizationTest.java 2009-01-21 01:06:31 UTC (rev 1135)
@@ -37,7 +37,7 @@
assert manager.resolveByType(Dung.class, SMELLY_LITERAL).iterator().next().getScopeType().equals(RequestScoped.class);
}
- @Test(groups="broken") @SpecAssertion(section="4.1")
+ @Test @SpecAssertion(section="4.1")
public void testRealizedBeanWithProducerMethodHasDeploymentTypeOfRealizingClass()
{
deployBeans(Cow.class);
@@ -85,12 +85,12 @@
assert manager.resolveByType(Dung.class, SMELLY_LITERAL).iterator().next().getScopeType().equals(RequestScoped.class);
}
- @Test(groups="broken") @SpecAssertion(section="4.1")
+ @Test @SpecAssertion(section="4.1")
public void testRealizedBeanWithProducerFieldHasDeploymentTypeOfRealizingClass()
{
deployBeans(Horse.class);
- assert manager.resolveByType(Dung.class).size() == 1;
- assert manager.resolveByType(Dung.class).iterator().next().getDeploymentType().equals(AnotherDeploymentType.class);
+ assert manager.resolveByType(Dung.class, SMELLY_LITERAL).size() == 1;
+ assert manager.resolveByType(Dung.class, SMELLY_LITERAL).iterator().next().getDeploymentType().equals(AnotherDeploymentType.class);
}
@Test @SpecAssertion(section="4.1")
More information about the weld-commits
mailing list