[weld-commits] Weld SVN: r4659 - in core/trunk: impl/src/main/java/org/jboss/weld and 3 other directories.
weld-commits at lists.jboss.org
weld-commits at lists.jboss.org
Wed Nov 4 11:47:06 EST 2009
Author: pete.muir at jboss.org
Date: 2009-11-04 11:47:06 -0500 (Wed, 04 Nov 2009)
New Revision: 4659
Added:
core/trunk/tests/src/test/java/org/jboss/weld/test/unit/implementation/event/Bar.java
core/trunk/tests/src/test/java/org/jboss/weld/test/unit/implementation/event/EventQualifierTest.java
Modified:
core/trunk/bom/pom.xml
core/trunk/impl/src/main/java/org/jboss/weld/BeanManagerImpl.java
core/trunk/impl/src/main/java/org/jboss/weld/bean/builtin/facade/AbstractFacadeBean.java
core/trunk/impl/src/main/java/org/jboss/weld/bean/builtin/facade/EventBean.java
core/trunk/impl/src/main/java/org/jboss/weld/bean/builtin/facade/InstanceBean.java
core/trunk/impl/src/main/java/org/jboss/weld/event/EventImpl.java
core/trunk/impl/src/main/java/org/jboss/weld/event/ObserverMethodImpl.java
core/trunk/tests/src/test/java/org/jboss/weld/test/unit/implementation/event/SimpleEventTest.java
Log:
WELD-226
Modified: core/trunk/bom/pom.xml
===================================================================
--- core/trunk/bom/pom.xml 2009-11-04 16:33:57 UTC (rev 4658)
+++ core/trunk/bom/pom.xml 2009-11-04 16:47:06 UTC (rev 4659)
@@ -74,7 +74,7 @@
<weld.api.version>1.0-CR4</weld.api.version>
<google.collections.version>1.0-rc3</google.collections.version>
<javassist.version>3.11.0.GA</javassist.version>
- <cdi.tck.version>1.0.0-CR5</cdi.tck.version>
+ <cdi.tck.version>1.0.0-CR6</cdi.tck.version>
<atinject.tck.version>1.0.0-PFD-3</atinject.tck.version>
<jboss.interceptor.version>1.0.0-CR5</jboss.interceptor.version>
<slf4j.version>1.5.9.RC1</slf4j.version>
Modified: core/trunk/impl/src/main/java/org/jboss/weld/BeanManagerImpl.java
===================================================================
--- core/trunk/impl/src/main/java/org/jboss/weld/BeanManagerImpl.java 2009-11-04 16:33:57 UTC (rev 4658)
+++ core/trunk/impl/src/main/java/org/jboss/weld/BeanManagerImpl.java 2009-11-04 16:47:06 UTC (rev 4659)
@@ -58,7 +58,6 @@
import org.jboss.interceptor.registry.InterceptorRegistry;
import org.jboss.weld.bean.DecoratorImpl;
-import org.jboss.weld.bean.InterceptorImpl;
import org.jboss.weld.bean.NewBean;
import org.jboss.weld.bean.RIBean;
import org.jboss.weld.bean.SessionBean;
@@ -76,7 +75,6 @@
import org.jboss.weld.el.WeldExpressionFactory;
import org.jboss.weld.introspector.WeldAnnotated;
import org.jboss.weld.literal.AnyLiteral;
-import org.jboss.weld.literal.DefaultLiteral;
import org.jboss.weld.manager.api.WeldManager;
import org.jboss.weld.metadata.cache.MetaAnnotationStore;
import org.jboss.weld.metadata.cache.ScopeModel;
@@ -622,14 +620,8 @@
@SuppressWarnings("unchecked")
private <T> Set<ObserverMethod<? super T>> resolveObserverMethods(Type eventType, Annotation... bindings)
{
- checkBindingTypes(Arrays.asList(bindings));
-
- // Manually hack in the default annotations here. We need to redo all the annotation defaulting throughout. PLM
+ checkBindingTypes(Arrays.asList(bindings));
HashSet<Annotation> bindingAnnotations = new HashSet<Annotation>(Arrays.asList(bindings));
- if (bindingAnnotations.size() == 0)
- {
- bindingAnnotations.add(new DefaultLiteral());
- }
bindingAnnotations.add(new AnyLiteral());
Set<ObserverMethod<? super T>> observers = new HashSet<ObserverMethod<? super T>>();
Set<ObserverMethod<?>> eventObservers = observerResolver.resolve(ResolvableFactory.of(new Reflections.HierarchyDiscovery(eventType).getTypeClosure(), bindingAnnotations, null));
Modified: core/trunk/impl/src/main/java/org/jboss/weld/bean/builtin/facade/AbstractFacadeBean.java
===================================================================
--- core/trunk/impl/src/main/java/org/jboss/weld/bean/builtin/facade/AbstractFacadeBean.java 2009-11-04 16:33:57 UTC (rev 4658)
+++ core/trunk/impl/src/main/java/org/jboss/weld/bean/builtin/facade/AbstractFacadeBean.java 2009-11-04 16:47:06 UTC (rev 4659)
@@ -20,10 +20,8 @@
import static org.jboss.weld.util.log.Category.BEAN;
import static org.jboss.weld.util.log.LoggerFactory.loggerFactory;
-import java.lang.annotation.Annotation;
import java.lang.reflect.ParameterizedType;
import java.lang.reflect.Type;
-import java.util.Set;
import javax.enterprise.context.spi.CreationalContext;
import javax.enterprise.inject.spi.InjectionPoint;
@@ -51,7 +49,7 @@
if (genericType instanceof ParameterizedType )
{
Type type = ((ParameterizedType) genericType).getActualTypeArguments()[0];
- return newInstance(type, injectionPoint.getQualifiers());
+ return newInstance(type, injectionPoint);
}
else
{
@@ -70,6 +68,6 @@
// TODO Auto-generated method stub
}
- protected abstract T newInstance(Type type, Set<Annotation> annotations);
+ protected abstract T newInstance(Type type, InjectionPoint ip);
}
Modified: core/trunk/impl/src/main/java/org/jboss/weld/bean/builtin/facade/EventBean.java
===================================================================
--- core/trunk/impl/src/main/java/org/jboss/weld/bean/builtin/facade/EventBean.java 2009-11-04 16:33:57 UTC (rev 4658)
+++ core/trunk/impl/src/main/java/org/jboss/weld/bean/builtin/facade/EventBean.java 2009-11-04 16:47:06 UTC (rev 4659)
@@ -23,11 +23,14 @@
import java.util.Set;
import javax.enterprise.event.Event;
+import javax.enterprise.inject.Default;
+import javax.enterprise.inject.spi.InjectionPoint;
import javax.enterprise.util.TypeLiteral;
import org.jboss.weld.BeanManagerImpl;
import org.jboss.weld.event.EventImpl;
import org.jboss.weld.literal.AnyLiteral;
+import org.jboss.weld.literal.DefaultLiteral;
import org.jboss.weld.resolution.ResolvableTransformer;
import org.jboss.weld.util.collections.Arrays2;
@@ -37,6 +40,7 @@
private static final Class<Event<?>> TYPE = new TypeLiteral<Event<?>>() {}.getRawType();
private static final Set<Type> DEFAULT_TYPES = Arrays2.<Type>asSet(TYPE, Object.class);
private static final Annotation ANY = new AnyLiteral();
+ private static final Default DEFAULT = new DefaultLiteral();
private static final Set<Annotation> DEFAULT_BINDINGS = new HashSet<Annotation>(Arrays.asList(ANY));
public static final ResolvableTransformer TRANSFORMER = new FacadeBeanResolvableTransformer(TYPE);
@@ -69,9 +73,15 @@
}
@Override
- protected Event<?> newInstance(Type type, Set<Annotation> annotations)
+ protected Event<?> newInstance(Type type, InjectionPoint ip)
{
- return EventImpl.of(type, getManager(), annotations);
+ Set<Annotation> qualifiers = new HashSet<Annotation>(ip.getQualifiers());
+ if (!ip.getAnnotated().isAnnotationPresent(Default.class))
+ {
+ // Remove any @Default if it doesn't appear on the injection point
+ qualifiers.remove(DEFAULT);
+ }
+ return EventImpl.of(type, getManager(), qualifiers);
}
@Override
Modified: core/trunk/impl/src/main/java/org/jboss/weld/bean/builtin/facade/InstanceBean.java
===================================================================
--- core/trunk/impl/src/main/java/org/jboss/weld/bean/builtin/facade/InstanceBean.java 2009-11-04 16:33:57 UTC (rev 4658)
+++ core/trunk/impl/src/main/java/org/jboss/weld/bean/builtin/facade/InstanceBean.java 2009-11-04 16:47:06 UTC (rev 4659)
@@ -24,6 +24,7 @@
import javax.enterprise.inject.Any;
import javax.enterprise.inject.Instance;
+import javax.enterprise.inject.spi.InjectionPoint;
import javax.enterprise.util.TypeLiteral;
import javax.inject.Provider;
@@ -72,9 +73,9 @@
}
@Override
- protected Instance<?> newInstance(Type type, Set<Annotation> annotations)
+ protected Instance<?> newInstance(Type type, InjectionPoint ip)
{
- return InstanceImpl.of(type, getManager(), annotations);
+ return InstanceImpl.of(type, getManager(), ip.getQualifiers());
}
@Override
Modified: core/trunk/impl/src/main/java/org/jboss/weld/event/EventImpl.java
===================================================================
--- core/trunk/impl/src/main/java/org/jboss/weld/event/EventImpl.java 2009-11-04 16:33:57 UTC (rev 4658)
+++ core/trunk/impl/src/main/java/org/jboss/weld/event/EventImpl.java 2009-11-04 16:47:06 UTC (rev 4659)
@@ -42,6 +42,7 @@
{
private static final long serialVersionUID = 656782657242515455L;
+ private static final Annotation[] EMPTY_BINDINGS = new Annotation[0];
public static <E> EventImpl<E> of(Type eventType, BeanManagerImpl manager, Set<Annotation> bindings)
{
@@ -73,7 +74,7 @@
public void fire(T event)
{
- getManager().fireEvent(event, mergeInBindings());
+ getManager().fireEvent(event, getBindings().toArray(EMPTY_BINDINGS));
}
public Event<T> select(Annotation... bindings)
Modified: core/trunk/impl/src/main/java/org/jboss/weld/event/ObserverMethodImpl.java
===================================================================
--- core/trunk/impl/src/main/java/org/jboss/weld/event/ObserverMethodImpl.java 2009-11-04 16:33:57 UTC (rev 4658)
+++ core/trunk/impl/src/main/java/org/jboss/weld/event/ObserverMethodImpl.java 2009-11-04 16:47:06 UTC (rev 4659)
@@ -18,7 +18,6 @@
import java.lang.annotation.Annotation;
import java.lang.reflect.Type;
-import java.util.Arrays;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
@@ -34,6 +33,7 @@
import javax.enterprise.inject.Produces;
import javax.enterprise.inject.spi.ObserverMethod;
import javax.inject.Inject;
+import javax.inject.Qualifier;
import org.jboss.weld.BeanManagerImpl;
import org.jboss.weld.Container;
@@ -43,6 +43,7 @@
import org.jboss.weld.injection.WeldInjectionPoint;
import org.jboss.weld.introspector.WeldMethod;
import org.jboss.weld.introspector.WeldParameter;
+import org.jboss.weld.literal.AnyLiteral;
import org.jboss.weld.manager.api.ExecutorServices;
import org.jboss.weld.util.Beans;
@@ -60,6 +61,8 @@
*/
public class ObserverMethodImpl<T, X> implements ObserverMethod<T>
{
+
+ private static final Annotation ANY = new AnyLiteral();
private final Set<Annotation> bindings;
private final Type eventType;
@@ -86,7 +89,7 @@
this.observerMethod = MethodInjectionPoint.of(declaringBean, observer);
this.eventType = observerMethod.getAnnotatedParameters(Observes.class).get(0).getBaseType();
- this.bindings = new HashSet<Annotation>(Arrays.asList(observerMethod.getAnnotatedParameters(Observes.class).get(0).getBindingsAsArray()));
+ this.bindings = new HashSet<Annotation>(observerMethod.getAnnotatedParameters(Observes.class).get(0).getMetaAnnotations(Qualifier.class));
Observes observesAnnotation = observerMethod.getAnnotatedParameters(Observes.class).get(0).getAnnotation(Observes.class);
this.notifyType = observesAnnotation.notifyObserver();
transactionPhase = TransactionPhase.IN_PROGRESS;
Added: core/trunk/tests/src/test/java/org/jboss/weld/test/unit/implementation/event/Bar.java
===================================================================
--- core/trunk/tests/src/test/java/org/jboss/weld/test/unit/implementation/event/Bar.java (rev 0)
+++ core/trunk/tests/src/test/java/org/jboss/weld/test/unit/implementation/event/Bar.java 2009-11-04 16:47:06 UTC (rev 4659)
@@ -0,0 +1,74 @@
+package org.jboss.weld.test.unit.implementation.event;
+
+import javax.enterprise.context.RequestScoped;
+import javax.enterprise.event.Event;
+import javax.enterprise.event.Observes;
+import javax.enterprise.inject.spi.BeanManager;
+import javax.enterprise.util.AnnotationLiteral;
+import javax.inject.Inject;
+
+ at RequestScoped
+public class Bar
+{
+
+ @Inject Event<String> event;
+
+ @Inject @Updated Event<String> updatedEvent;
+
+ @Inject BeanManager manager;
+
+ private boolean unqualifiedObserved;
+ private boolean updatedObserved;
+
+ public void fireWithNoQualifiers()
+ {
+ event.fire("");
+ }
+
+ public void fireWithUpdatedQualifierViaSelect()
+ {
+ event.select(new AnnotationLiteral<Updated>() {}).fire("");
+ }
+
+ public void fireWithNoQualifiersViaManager()
+ {
+ manager.fireEvent("");
+ }
+
+ public void fireWithUpdatedQualifierViaManager()
+ {
+ manager.fireEvent("", new AnnotationLiteral<Updated>() {});
+ }
+
+ public void fireWithUpdatedQualifierViaAnnotation()
+ {
+ updatedEvent.fire("");
+ }
+
+ public void reset()
+ {
+ unqualifiedObserved = false;
+ updatedObserved = false;
+ }
+
+ public void onEvent(@Observes String event)
+ {
+ unqualifiedObserved = true;
+ }
+
+ public void onUpdatedEvent(@Observes @Updated String event)
+ {
+ updatedObserved = true;
+ }
+
+ public boolean isUnqualifiedObserved()
+ {
+ return unqualifiedObserved;
+ }
+
+ public boolean isUpdatedObserved()
+ {
+ return updatedObserved;
+ }
+
+}
\ No newline at end of file
Property changes on: core/trunk/tests/src/test/java/org/jboss/weld/test/unit/implementation/event/Bar.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Name: svn:eol-style
+ native
Added: core/trunk/tests/src/test/java/org/jboss/weld/test/unit/implementation/event/EventQualifierTest.java
===================================================================
--- core/trunk/tests/src/test/java/org/jboss/weld/test/unit/implementation/event/EventQualifierTest.java (rev 0)
+++ core/trunk/tests/src/test/java/org/jboss/weld/test/unit/implementation/event/EventQualifierTest.java 2009-11-04 16:47:06 UTC (rev 4659)
@@ -0,0 +1,36 @@
+package org.jboss.weld.test.unit.implementation.event;
+
+import org.jboss.testharness.impl.packaging.Artifact;
+import org.jboss.weld.test.AbstractWeldTest;
+import org.testng.annotations.Test;
+
+ at Artifact
+public class EventQualifierTest extends AbstractWeldTest
+{
+
+ @Test(description="WELD-226")
+ public void testDefaultQualifierNotRequired()
+ {
+ Bar bar = getCurrentManager().getInstanceByType(Bar.class);
+ bar.fireWithNoQualifiers();
+ assert bar.isUnqualifiedObserved();
+ assert !bar.isUpdatedObserved();
+ bar.reset();
+ bar.fireWithNoQualifiersViaManager();
+ assert bar.isUnqualifiedObserved();
+ assert !bar.isUpdatedObserved();
+ bar.reset();
+ bar.fireWithUpdatedQualifierViaAnnotation();
+ assert bar.isUnqualifiedObserved();
+ assert bar.isUpdatedObserved();
+ bar.reset();
+ bar.fireWithUpdatedQualifierViaManager();
+ assert bar.isUpdatedObserved();
+ assert bar.isUnqualifiedObserved();
+ bar.reset();
+ bar.fireWithUpdatedQualifierViaSelect();
+ assert bar.isUnqualifiedObserved();
+ assert bar.isUpdatedObserved();
+ }
+
+}
Property changes on: core/trunk/tests/src/test/java/org/jboss/weld/test/unit/implementation/event/EventQualifierTest.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Name: svn:eol-style
+ native
Modified: core/trunk/tests/src/test/java/org/jboss/weld/test/unit/implementation/event/SimpleEventTest.java
===================================================================
--- core/trunk/tests/src/test/java/org/jboss/weld/test/unit/implementation/event/SimpleEventTest.java 2009-11-04 16:33:57 UTC (rev 4658)
+++ core/trunk/tests/src/test/java/org/jboss/weld/test/unit/implementation/event/SimpleEventTest.java 2009-11-04 16:47:06 UTC (rev 4659)
@@ -33,24 +33,22 @@
manager.fireEvent("Fired using Manager Interface with AnnotationLiteral.", new AnnotationLiteral<Updated>(){});
- assert RECEIVE_2_OBSERVED == true;
assert RECEIVE_1_OBSERVED == true;
- assert RECEIVE_3_OBSERVED == false;
+ assert RECEIVE_2_OBSERVED == true;
+ assert RECEIVE_3_OBSERVED == true;
initFlags();
manager.fireEvent("Fired using Manager Interface.");
- assert RECEIVE_2_OBSERVED == true;
assert RECEIVE_1_OBSERVED == false; // not called
+ assert RECEIVE_2_OBSERVED == true;
assert RECEIVE_3_OBSERVED == true;
}
@Test
public void testFireEventOnEvent()
{
- BeanManagerImpl manager = getCurrentManager();
-
App app = createContextualInstance(App.class);
initFlags();
@@ -59,15 +57,15 @@
assert RECEIVE_1_OBSERVED == true;
assert RECEIVE_2_OBSERVED == true;
- assert RECEIVE_3_OBSERVED == false;
+ assert RECEIVE_3_OBSERVED == true;
initFlags();
app.fireEventByAnnotationLiteral();
- assert RECEIVE_2_OBSERVED == true;
assert RECEIVE_1_OBSERVED == true;
- assert RECEIVE_3_OBSERVED == false;
+ assert RECEIVE_2_OBSERVED == true;
+ assert RECEIVE_3_OBSERVED == true;
initFlags();
@@ -75,14 +73,14 @@
assert RECEIVE_2_OBSERVED == true;
assert RECEIVE_1_OBSERVED == false; // not called
- assert RECEIVE_3_OBSERVED == false;
+ assert RECEIVE_3_OBSERVED == true;
initFlags();
- app.fireEventViaCurrent();
+ app.fireEventViaWithNoQualifier();
- assert RECEIVE_2_OBSERVED == true;
assert RECEIVE_1_OBSERVED == false; // not called
+ assert RECEIVE_2_OBSERVED == true;
assert RECEIVE_3_OBSERVED == true;
}
@@ -93,9 +91,6 @@
@Inject @Updated
Event<String> event2;
-
- @Inject @Any
- Event<String> event3;
@Inject
Event<String> event4;
@@ -112,12 +107,12 @@
public void fireEventViaAny()
{
- event3.fire("Fired using Event Interface with Non-BindingType.");
+ event1.fire("Fired using Event Interface");
}
- public void fireEventViaCurrent()
+ public void fireEventViaWithNoQualifier()
{
- event4.fire("Fired using Event Interface with @Current");
+ event4.fire("Fired using Event Interface with no qualifier");
}
}
More information about the weld-commits
mailing list