[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