Author: pete.muir(a)jboss.org
Date: 2009-01-20 21:07:34 -0500 (Tue, 20 Jan 2009)
New Revision: 1136
Added:
ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/WrappedAnnotatedParameter.java
Modified:
ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bootstrap/BeanDeployer.java
tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/inheritance/realization/FarmHouse.java
tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/inheritance/realization/RealizationTest.java
Log:
realization support for observer methods
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-21
01:06:31 UTC (rev 1135)
+++
ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bootstrap/BeanDeployer.java 2009-01-21
02:07:34 UTC (rev 1136)
@@ -121,6 +121,7 @@
{
createRealizedProducerMethods(bean, annotatedClass);
createRealizedProducerFields(bean, annotatedClass);
+ createRealizedObserverMethods(bean, annotatedClass);
}
log.info("Web Bean: " + bean);
@@ -179,12 +180,22 @@
private void createObserverMethods(AbstractClassBean<?> declaringBean,
AnnotatedClass<?> annotatedClass)
{
- for (AnnotatedMethod<?> observerMethod :
annotatedClass.getDeclaredMethodsWithAnnotatedParameters(Observes.class))
+ for (AnnotatedMethod<?> method :
annotatedClass.getDeclaredMethodsWithAnnotatedParameters(Observes.class))
{
- ObserverImpl<?> observer = ObserverImpl.of(observerMethod, declaringBean,
manager);
- manager.addObserver(observer);
+ createObserverMethod(declaringBean, method);
}
}
+
+ private void createRealizedObserverMethods(AbstractClassBean<?> declaringBean,
AnnotatedClass<?> realizingClass)
+ {
+ createObserverMethods(declaringBean, realizingClass.getSuperclass());
+ }
+
+ private void createObserverMethod(AbstractClassBean<?> declaringBean,
AnnotatedMethod<?> method)
+ {
+ ObserverImpl<?> observer = ObserverImpl.of(method, declaringBean, manager);
+ manager.addObserver(observer);
+ }
private void createFacades(Set<AnnotatedItem<?, ?>> injectionPoints)
{
Added:
ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/WrappedAnnotatedParameter.java
===================================================================
---
ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/WrappedAnnotatedParameter.java
(rev 0)
+++
ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/WrappedAnnotatedParameter.java 2009-01-21
02:07:34 UTC (rev 1136)
@@ -0,0 +1,35 @@
+package org.jboss.webbeans.introspector;
+
+import java.lang.annotation.Annotation;
+import java.util.Set;
+
+public class WrappedAnnotatedParameter<T> extends
ForwardingAnnotatedParameter<T>
+{
+
+ public static <T> WrappedAnnotatedParameter<T>
of(AnnotatedParameter<T> parameter, Set<Annotation> extraAnnotations)
+ {
+ return new WrappedAnnotatedParameter<T>(parameter, extraAnnotations);
+ }
+
+ private final AnnotatedParameter<T> delegate;
+ private AnnotationStore annotationStore;
+
+ public WrappedAnnotatedParameter(AnnotatedParameter<T> parameter,
Set<Annotation> extraAnnotations)
+ {
+ this.delegate = parameter;
+ this.annotationStore = AnnotationStore.wrap(parameter.getAnnotationStore(),
extraAnnotations, extraAnnotations);
+ }
+
+ @Override
+ protected AnnotatedParameter<T> delegate()
+ {
+ return delegate;
+ }
+
+ @Override
+ public AnnotationStore getAnnotationStore()
+ {
+ return annotationStore;
+ }
+
+}
Property changes on:
ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/WrappedAnnotatedParameter.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Modified:
tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/inheritance/realization/FarmHouse.java
===================================================================
---
tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/inheritance/realization/FarmHouse.java 2009-01-21
01:06:31 UTC (rev 1135)
+++
tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/inheritance/realization/FarmHouse.java 2009-01-21
02:07:34 UTC (rev 1136)
@@ -1,5 +1,8 @@
package org.jboss.webbeans.tck.unit.inheritance.realization;
+import javax.webbeans.Realizes;
+
+@Smelly @Realizes
class FarmHouse extends AbstractFarmHouse
{
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-21
01:06:31 UTC (rev 1135)
+++
tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/inheritance/realization/RealizationTest.java 2009-01-21
02:07:34 UTC (rev 1136)
@@ -137,11 +137,12 @@
assert false;
}
- @Test(groups="broken") @SpecAssertion(section="4.1")
+ @Test @SpecAssertion(section="4.1")
public void testObserverMethodInheritedAndHasSameBindings()
{
deployBeans(FarmHouse.class);
assert manager.resolveObservers(new Cow(), new
AnnotationLiteral<Tame>(){}).size() == 1;
+ assert manager.resolveObservers(new Cow(), SMELLY_LITERAL).size() == 0;
}
}