[webbeans-commits] Webbeans SVN: r420 - in ri/trunk/webbeans-ri/src: main/java/org/jboss/webbeans/event and 4 other directories.

webbeans-commits at lists.jboss.org webbeans-commits at lists.jboss.org
Fri Dec 5 16:50:03 EST 2008


Author: gavin.king at jboss.com
Date: 2008-12-05 16:50:03 -0500 (Fri, 05 Dec 2008)
New Revision: 420

Removed:
   ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/mock/MockObserverImpl.java
Modified:
   ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/ManagerImpl.java
   ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/event/EventManager.java
   ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/event/EventObserver.java
   ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/event/ObserverImpl.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/jlr/AbstractAnnotatedItem.java
   ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/jlr/AnnotatedMethodImpl.java
   ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/EventManagerTest.java
   ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/EventObserverTest.java
   ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/ObserverTest.java
Log:
Make the event bus finally work :-)

Modified: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/ManagerImpl.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/ManagerImpl.java	2008-12-05 20:15:58 UTC (rev 419)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/ManagerImpl.java	2008-12-05 21:50:03 UTC (rev 420)
@@ -212,7 +212,7 @@
     */
    public <T> Set<Observer<T>> resolveObservers(T event, Annotation... bindings)
    {
-      return eventManager.getObservers(event, bindings);
+      return eventManager.getObservers(metaDataCache, event, bindings);
    }
 
    /**
@@ -536,6 +536,12 @@
    {
       return getInstanceByType(new AnnotatedClassImpl<T>(type, type, bindings), bindings);
    }
+   
+   public <T> T getMostSpecializedInstance(Bean<T> bean, boolean create)
+   {
+	   //TODO!!!!!
+	   return getInstance(bean);
+   }
 
    /**
     * Returns an instance by type literal and binding types

Modified: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/event/EventManager.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/event/EventManager.java	2008-12-05 20:15:58 UTC (rev 419)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/event/EventManager.java	2008-12-05 21:50:03 UTC (rev 420)
@@ -31,6 +31,7 @@
 import javax.webbeans.Observer;
 
 import org.jboss.webbeans.ManagerImpl;
+import org.jboss.webbeans.MetaDataCache;
 import org.jboss.webbeans.transaction.TransactionListener;
 import org.jboss.webbeans.util.JNDI;
 import org.jboss.webbeans.util.Strings;
@@ -170,12 +171,12 @@
     *         matches.
     */
    @SuppressWarnings("unchecked")
-   public <T> Set<Observer<T>> getObservers(T event, Annotation... bindings)
+   public <T> Set<Observer<T>> getObservers(MetaDataCache mdc, T event, Annotation... bindings)
    {
       Set<Observer<T>> interestedObservers = new HashSet<Observer<T>>();
       for (EventObserver<?> observer : registeredObservers.get(event.getClass()))
       {
-         if (observer.isObserverInterested(bindings))
+         if (observer.isObserverInterested(mdc, bindings))
          {
             interestedObservers.add((Observer<T>) observer.getObserver());
          }
@@ -192,7 +193,7 @@
    {
       try
       {
-         return userTransaction.getStatus() == Status.STATUS_ACTIVE;
+         return userTransaction!=null && userTransaction.getStatus() == Status.STATUS_ACTIVE;
       }
       catch (SystemException e)
       {

Modified: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/event/EventObserver.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/event/EventObserver.java	2008-12-05 20:15:58 UTC (rev 419)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/event/EventObserver.java	2008-12-05 21:50:03 UTC (rev 420)
@@ -23,6 +23,8 @@
 
 import javax.webbeans.Observer;
 
+import org.jboss.webbeans.MetaDataCache;
+
 /**
  * <p>
  * EventObserver wraps various {@link Observer} objects created by application
@@ -88,17 +90,30 @@
     * @param bindings The event bindings
     * @return true only if all required bindings match
     */
-   public boolean isObserverInterested(Annotation... bindings)
+   public boolean isObserverInterested(MetaDataCache mdc, Annotation... bindings)
    {
       // Simply check that all event bindings specified by the observer are
       // in the list provided.
-      List<Annotation> bindingsArray = Arrays.asList(bindings);
-      boolean result = true;
-      if (!this.eventBindings.isEmpty())
+      if (this.eventBindings.isEmpty())
       {
-         result = bindingsArray.containsAll(this.eventBindings);
+         return true;
       }
-      return result;
+      else
+      {
+	     //List<Annotation> bindingsArray = Arrays.asList(bindings);
+         //return bindingsArray.containsAll(this.eventBindings);
+         for (Annotation x: eventBindings) {
+            boolean found = false;
+            for (Annotation y: bindings)
+            {
+        	if ( mdc.getBindingTypeModel(x.annotationType()).isEqual(x, y) ) {
+               found = true;
+            }
+            }
+            if (!found) return false;
+         }
+         return true;
+      }
    }
 
    /*

Modified: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/event/ObserverImpl.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/event/ObserverImpl.java	2008-12-05 20:15:58 UTC (rev 419)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/event/ObserverImpl.java	2008-12-05 21:50:03 UTC (rev 420)
@@ -17,7 +17,12 @@
 
 package org.jboss.webbeans.event;
 
-import java.lang.annotation.Annotation;
+import static org.jboss.webbeans.event.EventManager.TransactionObservationPhase.AFTER_COMPLETION;
+import static org.jboss.webbeans.event.EventManager.TransactionObservationPhase.AFTER_FAILURE;
+import static org.jboss.webbeans.event.EventManager.TransactionObservationPhase.AFTER_SUCCESS;
+import static org.jboss.webbeans.event.EventManager.TransactionObservationPhase.BEFORE_COMPLETION;
+import static org.jboss.webbeans.event.EventManager.TransactionObservationPhase.NONE;
+
 import java.util.ArrayList;
 import java.util.List;
 
@@ -28,16 +33,11 @@
 import javax.webbeans.DefinitionException;
 import javax.webbeans.IfExists;
 import javax.webbeans.Observer;
+import javax.webbeans.Observes;
+import javax.webbeans.manager.Bean;
 
 import org.jboss.webbeans.ManagerImpl;
-import org.jboss.webbeans.bean.EventBean;
 import org.jboss.webbeans.event.EventManager.TransactionObservationPhase;
-
-import static org.jboss.webbeans.event.EventManager.TransactionObservationPhase.AFTER_COMPLETION;
-import static org.jboss.webbeans.event.EventManager.TransactionObservationPhase.AFTER_FAILURE;
-import static org.jboss.webbeans.event.EventManager.TransactionObservationPhase.AFTER_SUCCESS;
-import static org.jboss.webbeans.event.EventManager.TransactionObservationPhase.BEFORE_COMPLETION;
-import static org.jboss.webbeans.event.EventManager.TransactionObservationPhase.NONE;
 import org.jboss.webbeans.introspector.AnnotatedMethod;
 
 /**
@@ -53,7 +53,7 @@
  */
 public class ObserverImpl<T> implements Observer<T>
 {
-   private EventBean<T> eventBean;
+   private Bean<?> observerBean;
    private final AnnotatedMethod<Object> observerMethod;
    private final Class<T> eventType;
    private TransactionObservationPhase transactionObservationPhase;
@@ -71,9 +71,9 @@
     * @param observer The observer method to notify
     * @param eventType The type of event being observed
     */
-   public ObserverImpl(final EventBean<T> eventBean, final AnnotatedMethod<Object> observer, final Class<T> eventType)
+   public ObserverImpl(final Bean<?> observerBean, final AnnotatedMethod<Object> observer, final Class<T> eventType)
    {
-      this.eventBean = eventBean;
+      this.observerBean = observerBean;
       this.observerMethod = observer;
       this.eventType = eventType;
       initTransactionObservationPhase();
@@ -83,19 +83,19 @@
    private void initTransactionObservationPhase()
    {
       List<TransactionObservationPhase> observationPhases = new ArrayList<TransactionObservationPhase>();
-      if (observerMethod.getAnnotatedParameters(BeforeTransactionCompletion.class).isEmpty())
+      if (!observerMethod.getAnnotatedParameters(BeforeTransactionCompletion.class).isEmpty())
       {
          observationPhases.add(BEFORE_COMPLETION);
       }
-      if (observerMethod.getAnnotatedParameters(AfterTransactionCompletion.class).isEmpty())
+      if (!observerMethod.getAnnotatedParameters(AfterTransactionCompletion.class).isEmpty())
       {
          observationPhases.add(AFTER_COMPLETION);
       }
-      if (observerMethod.getAnnotatedParameters(AfterTransactionFailure.class).isEmpty())
+      if (!observerMethod.getAnnotatedParameters(AfterTransactionFailure.class).isEmpty())
       {
          observationPhases.add(AFTER_FAILURE);
       }
-      if (observerMethod.getAnnotatedParameters(AfterTransactionSuccess.class).isEmpty())
+      if (!observerMethod.getAnnotatedParameters(AfterTransactionSuccess.class).isEmpty())
       {
          observationPhases.add(AFTER_SUCCESS);
       }
@@ -113,22 +113,11 @@
       }
    }
 
-   /*
-    * (non-Javadoc)
-    * 
-    * @see javax.webbeans.Observer#getEventType()
-    */
    public Class<T> getEventType()
    {
       return eventType;
    }
 
-   /*
-    * (non-Javadoc)
-    * 
-    * @see javax.webbeans.Observer#notify(javax.webbeans.Container,
-    * java.lang.Object)
-    */
    public void notify(final T event)
    {
       // Get the most specialized instance of the component
@@ -136,7 +125,7 @@
       if (instance != null)
       {
          // TODO replace event parameter
-         observerMethod.invoke(instance);
+         observerMethod.invokeWithSpecialValue(instance, Observes.class, event);
       }
 
    }
@@ -152,7 +141,7 @@
    protected Object getInstance(boolean conditional)
    {
       // Return the most specialized instance of the component
-      return ManagerImpl.instance().getInstanceByType(eventBean.getType(), eventBean.getBindingTypes().toArray(new Annotation[0]));
+      return ManagerImpl.instance().getMostSpecializedInstance(observerBean, conditional);
    }
 
    /**

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	2008-12-05 20:15:58 UTC (rev 419)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/AnnotatedMethod.java	2008-12-05 21:50:03 UTC (rev 420)
@@ -57,6 +57,15 @@
    public T invoke(Object instance);
 
    /**
+    * Invokes the observer method
+    * 
+    * @param instance The instance to invoke
+ * @param event the event object
+    * @return A reference to the instance
+    */
+   public T invokeWithSpecialValue(Object instance, Class<? extends Annotation> specialParam, Object specialVal);
+
+   /**
     * Invokes the method
     * 
     * @param instance The instance to invoke

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	2008-12-05 20:15:58 UTC (rev 419)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/jlr/AbstractAnnotatedItem.java	2008-12-05 21:50:03 UTC (rev 420)
@@ -194,7 +194,7 @@
       }
       return annotationMap;
    }
-
+   
    /**
     * Static helper method for getting the current parameter values from a list
     * of annotated parameters.
@@ -205,11 +205,32 @@
     */
    protected static Object[] getParameterValues(List<AnnotatedParameter<Object>> parameters)
    {
+      return getParameterValues(parameters, null, null);
+   }
+
+   /**
+    * Static helper method for getting the current parameter values from a list
+    * of annotated parameters.
+    * 
+    * @param parameters The list of annotated parameter to look up
+    * @return The object array of looked up values
+    * 
+    */
+   protected static Object[] getParameterValues(List<AnnotatedParameter<Object>> parameters, Object specialVal, Class<? extends Annotation> specialParam)
+   {
       Object[] parameterValues = new Object[parameters.size()];
       Iterator<AnnotatedParameter<Object>> iterator = parameters.iterator();
       for (int i = 0; i < parameterValues.length; i++)
       {
-         parameterValues[i] = iterator.next().getValue();
+         AnnotatedParameter<Object> param = iterator.next();
+         if ( specialParam!=null && param.isAnnotationPresent(specialParam)) 
+         {
+            parameterValues[i] = specialVal;
+         }
+         else 
+         {
+            parameterValues[i] = param.getValue();
+         }
       }
       return parameterValues;
    }

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	2008-12-05 20:15:58 UTC (rev 419)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/jlr/AnnotatedMethodImpl.java	2008-12-05 21:50:03 UTC (rev 420)
@@ -241,6 +241,12 @@
       return (T) Reflections.invokeAndWrap(getDelegate(), instance, getParameterValues(parameters));
    }
 
+   @SuppressWarnings("unchecked")
+   public T invokeWithSpecialValue(Object instance, Class<? extends Annotation> specialParam, Object specialVal)
+   {
+      return (T) Reflections.invokeAndWrap(getDelegate(), instance, getParameterValues(parameters, specialVal, specialParam));
+   }
+
    /**
     * Invokes the method on an instance with given parameters
     * 

Modified: ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/EventManagerTest.java
===================================================================
--- ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/EventManagerTest.java	2008-12-05 20:15:58 UTC (rev 419)
+++ ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/EventManagerTest.java	2008-12-05 21:50:03 UTC (rev 420)
@@ -5,6 +5,7 @@
 import javax.transaction.Synchronization;
 import javax.webbeans.Observer;
 
+import org.jboss.webbeans.MetaDataCache;
 import org.jboss.webbeans.event.DeferredEventNotification;
 import org.jboss.webbeans.event.EventManager;
 import org.jboss.webbeans.test.beans.DangerCall;
@@ -41,16 +42,16 @@
       eventManager.addObserver(observer, DangerCall.class);
       DangerCall event = new DangerCall();
 
-      Set<Observer<DangerCall>> observerSet = eventManager.getObservers(event);
+      Set<Observer<DangerCall>> observerSet = eventManager.getObservers(new MetaDataCache(), event);
       assert observerSet.size() == 1;
       assert observerSet.iterator().next().equals(observer);
 
       // Add another observer for the same event, but with an event binding
       observer = new AnObserver<DangerCall>();
       eventManager.addObserver(observer, DangerCall.class, new TameAnnotationLiteral());
-      observerSet = eventManager.getObservers(event);
+      observerSet = eventManager.getObservers(new MetaDataCache(), event);
       assert observerSet.size() == 1;
-      observerSet = eventManager.getObservers(event, new TameAnnotationLiteral());
+      observerSet = eventManager.getObservers(new MetaDataCache(), event, new TameAnnotationLiteral());
       assert observerSet.size() == 2;
    }
 
@@ -66,7 +67,7 @@
       eventManager.addObserver(observer, DangerCall.class);
       eventManager.removeObserver(observer, DangerCall.class);
       // FIXME CopyOnWrite broke remove, have to check later
-      assert eventManager.getObservers(new DangerCall()).isEmpty();
+      assert eventManager.getObservers(new MetaDataCache(), new DangerCall()).isEmpty();
    }
 
    /**

Modified: ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/EventObserverTest.java
===================================================================
--- ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/EventObserverTest.java	2008-12-05 20:15:58 UTC (rev 419)
+++ ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/EventObserverTest.java	2008-12-05 21:50:03 UTC (rev 420)
@@ -2,6 +2,7 @@
 
 import javax.webbeans.Observer;
 
+import org.jboss.webbeans.MetaDataCache;
 import org.jboss.webbeans.event.EventObserver;
 import org.jboss.webbeans.test.beans.DangerCall;
 import org.jboss.webbeans.test.bindings.AnimalStereotypeAnnotationLiteral;
@@ -39,15 +40,15 @@
       Observer<DangerCall> observer = new AnObserver<DangerCall>();
       EventObserver<DangerCall> wrappedObserver = new EventObserver<DangerCall>(observer, DangerCall.class, new TameAnnotationLiteral());
       assert wrappedObserver.getEventBindings().size() == 1;
-      assert wrappedObserver.isObserverInterested(new TameAnnotationLiteral());
-      assert !wrappedObserver.isObserverInterested(new AnimalStereotypeAnnotationLiteral());
-      assert !wrappedObserver.isObserverInterested();
-      assert wrappedObserver.isObserverInterested(new TameAnnotationLiteral(), new RoleBinding("Admin"));
+      assert wrappedObserver.isObserverInterested(new MetaDataCache(), new TameAnnotationLiteral());
+      assert !wrappedObserver.isObserverInterested(new MetaDataCache(), new AnimalStereotypeAnnotationLiteral());
+      assert !wrappedObserver.isObserverInterested(new MetaDataCache());
+      assert wrappedObserver.isObserverInterested(new MetaDataCache(), new TameAnnotationLiteral(), new RoleBinding("Admin"));
       
       // Perform some tests with binding values (7.7.1)
       wrappedObserver = new EventObserver<DangerCall>(observer, DangerCall.class, new RoleBinding("Admin"));
       assert wrappedObserver.getEventBindings().size() == 1;
-      assert wrappedObserver.isObserverInterested(new RoleBinding("Admin"));
-      assert !wrappedObserver.isObserverInterested(new RoleBinding("User"));
+      assert wrappedObserver.isObserverInterested(new MetaDataCache(), new RoleBinding("Admin"));
+      assert !wrappedObserver.isObserverInterested(new MetaDataCache(), new RoleBinding("User"));
    }
 }

Modified: ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/ObserverTest.java
===================================================================
--- ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/ObserverTest.java	2008-12-05 20:15:58 UTC (rev 419)
+++ ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/ObserverTest.java	2008-12-05 21:50:03 UTC (rev 420)
@@ -1,21 +1,19 @@
 package org.jboss.webbeans.test;
-import static org.jboss.webbeans.util.BeanFactory.createSimpleBean;
-
 import java.lang.annotation.Annotation;
-import java.util.ArrayList;
-import java.util.List;
+import java.lang.reflect.Method;
 
+import javax.webbeans.AnnotationLiteral;
+import javax.webbeans.Observer;
 import javax.webbeans.Observes;
-import javax.webbeans.Standard;
 
 import org.jboss.webbeans.bean.SimpleBean;
+import org.jboss.webbeans.event.ObserverImpl;
 import org.jboss.webbeans.introspector.AnnotatedMethod;
 import org.jboss.webbeans.introspector.jlr.AnnotatedClassImpl;
 import org.jboss.webbeans.introspector.jlr.AnnotatedMethodImpl;
-import org.jboss.webbeans.test.annotations.AnotherDeploymentType;
 import org.jboss.webbeans.test.annotations.Asynchronous;
-import org.jboss.webbeans.test.beans.Tuna;
 import org.jboss.webbeans.test.mock.MockManagerImpl;
+import org.jboss.webbeans.util.BeanFactory;
 import org.testng.annotations.BeforeMethod;
 import org.testng.annotations.Test;
 
@@ -29,42 +27,43 @@
 public class ObserverTest
 {
    private MockManagerImpl manager;
-   private SimpleBean<Tuna> tuna;
+   //private SimpleBean<Tuna> tuna;
+   private SimpleBean<SampleObserver> ob;
    private AnnotatedMethod<Object> om;
+   Observer<SampleEvent> observer;
 
-   public class SampleEvent
+   private static boolean notified = false;
+
+   public static class SampleEvent
    {
       // Simple class used for testing
    }
 
-   public class AnObserver
+   public static class SampleObserver
    {
-      protected boolean notified = false;
 
       public void observe(@Observes @Asynchronous SampleEvent e)
       {
          // An observer method
-         this.notified = true;
+         notified = true;
       }
+      
    }
+   
+   public static @interface Foo {}
 
    @BeforeMethod
    public void before() throws Exception
    {
-      List<Class<? extends Annotation>> enabledDeploymentTypes = new ArrayList<Class<? extends Annotation>>();
-      enabledDeploymentTypes.add(Standard.class);
-      enabledDeploymentTypes.add(AnotherDeploymentType.class);
       manager = new MockManagerImpl();
-      manager.setEnabledDeploymentTypes(Standard.class, AnotherDeploymentType.class);
-
-      // Create an observer with known binding types
-      // TODO This should be a real class being mapped
-      //Map<Class<? extends Annotation>, Annotation> annotations = new HashMap<Class<? extends Annotation>, Annotation>();
-      //annotations.put(Asynchronous.class, new AsynchronousAnnotationLiteral());
-      //AnnotatedClass<Tuna> annotatedItem = new SimpleAnnotatedClass<Tuna>(Tuna.class, annotations);
-      
-      tuna = createSimpleBean(Tuna.class);
-      om = new AnnotatedMethodImpl<Object>(AnObserver.class.getMethod("observe", new Class[] { SampleEvent.class }), new AnnotatedClassImpl<AnObserver>(AnObserver.class));
+      ob = BeanFactory.createSimpleBean(SampleObserver.class);
+      manager.addBean(ob);
+      Method method = SampleObserver.class.getMethod("observe", SampleEvent.class);
+      om = new AnnotatedMethodImpl<Object>(method, new AnnotatedClassImpl<SampleObserver>(SampleObserver.class));
+      observer = new ObserverImpl<SampleEvent>(ob, om, SampleEvent.class);
+      Annotation annotation = method.getParameterAnnotations()[0][1];
+      manager.addObserver(observer, SampleEvent.class, annotation);
+      notified = false;
    }
 
    /**
@@ -75,12 +74,23 @@
    @Test(groups = "observerMethod") @SpecAssertion(section={"7.5.7"})
    public final void testNotify() throws Exception
    {
-      AnObserver observerInstance = new AnObserver();
-      /*Observer<SampleEvent> observer = new MockObserverImpl<SampleEvent>(tuna, om, SampleEvent.class);
-      ((MockObserverImpl<SampleEvent>) observer).setInstance(observerInstance);
-      SampleEvent event = new SampleEvent();
+	  SampleEvent event = new SampleEvent();
+      assert notified == false;
       observer.notify(event);
-      assert observerInstance.notified;*/
+      assert notified == true;
    }
 
+   @Test(groups = "observerMethod") @SpecAssertion(section={"7.5.7"})
+   public final void testNotifyViaManager() throws Exception
+   {
+	  SampleEvent event = new SampleEvent();
+      assert notified == false;
+      manager.fireEvent(event);
+      assert notified == false;
+      manager.fireEvent(event, new AnnotationLiteral<Foo>() {});
+      assert notified == false;
+      manager.fireEvent(event, new AnnotationLiteral<Asynchronous>() {});
+      assert notified == true;
+   }
+
 }

Deleted: ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/mock/MockObserverImpl.java
===================================================================
--- ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/mock/MockObserverImpl.java	2008-12-05 20:15:58 UTC (rev 419)
+++ ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/mock/MockObserverImpl.java	2008-12-05 21:50:03 UTC (rev 420)
@@ -1,40 +0,0 @@
-package org.jboss.webbeans.test.mock;
-
-import org.jboss.webbeans.ManagerImpl;
-import org.jboss.webbeans.bean.EventBean;
-import org.jboss.webbeans.event.ObserverImpl;
-import org.jboss.webbeans.introspector.AnnotatedMethod;
-
-/**
- * An implementation used for unit testing only.
- * 
- * @author David Allen
- * 
- */
-public class MockObserverImpl<T> extends ObserverImpl<T>
-{
-
-   private Object specializedInstance;
-
-   public MockObserverImpl(ManagerImpl manager, EventBean<T> beanModel, AnnotatedMethod<Object> observer, Class<T> eventType)
-   {
-      super(beanModel, observer, eventType);
-   }
-
-   @Override
-   protected final Object getInstance(boolean conditional)
-   {
-      return specializedInstance;
-   }
-
-   /**
-    * The most specialized instance of this observer type.
-    * 
-    * @param instance The instance to use for testing
-    */
-   public final void setInstance(Object instance)
-   {
-      specializedInstance = instance;
-   }
-
-}




More information about the weld-commits mailing list