[webbeans-commits] Webbeans SVN: r999 - tck/trunk/api/src/main/java/org/jboss/webbeans/tck/api and 2 other directories.

webbeans-commits at lists.jboss.org webbeans-commits at lists.jboss.org
Thu Jan 15 19:28:17 EST 2009


Author: dallen6
Date: 2009-01-15 19:28:17 -0500 (Thu, 15 Jan 2009)
New Revision: 999

Added:
   tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/event/
   tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/event/AnimalStereotype.java
   tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/event/AnimalStereotypeAnnotationLiteral.java
   tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/event/AuroraFinch.java
   tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/event/AustralianTerrier.java
   tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/event/BananaSpider.java
   tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/event/BirdCage.java
   tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/event/BlackRumpedWaxbill_Broken.java
   tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/event/BlueFacedParrotFinch.java
   tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/event/BorderTerrier.java
   tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/event/BostonTerrier.java
   tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/event/Boxer.java
   tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/event/BullTerrier.java
   tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/event/CairnsTerrier.java
   tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/event/CommonWaxbill_Broken.java
   tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/event/EuropeanGoldfinch.java
   tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/event/EventBusTest.java
   tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/event/FinchKeeper.java
   tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/event/FoxTerrier.java
   tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/event/GoldbreastWaxbill_Broken.java
   tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/event/JavaSparrow_Broken.java
   tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/event/OrangeCheekedWaxbill.java
   tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/event/OwlFinch_Broken.java
   tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/event/Pomeranian.java
   tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/event/PomeranianInterface.java
   tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/event/RecluseSpider.java
   tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/event/Role.java
   tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/event/RoleBinding.java
   tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/event/StarFinch.java
   tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/event/SweeWaxbill_Broken.java
   tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/event/Tame.java
   tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/event/TameAnnotationLiteral.java
   tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/event/TeaCupPomeranian.java
   tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/event/Terrier.java
   tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/event/TibetanTerrier.java
   tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/event/YorkshireTerrier.java
Modified:
   ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/tck/BeansImpl.java
   ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/tck/ContextsImpl.java
   tck/trunk/api/src/main/java/org/jboss/webbeans/tck/api/Beans.java
   tck/trunk/api/src/main/java/org/jboss/webbeans/tck/api/Contexts.java
   tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/AbstractTest.java
Log:
Ported the event bus tests (Chapter 8) to the TCK.  Tests still marked broken till TCK functionality is complete.

Modified: ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/tck/BeansImpl.java
===================================================================
--- ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/tck/BeansImpl.java	2009-01-15 23:18:46 UTC (rev 998)
+++ ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/tck/BeansImpl.java	2009-01-16 00:28:17 UTC (rev 999)
@@ -11,6 +11,14 @@
 import org.jboss.webbeans.bean.SimpleBean;
 import org.jboss.webbeans.tck.api.Beans;
 
+/**
+ * Implements the Beans SPI for the TCK specifically for the JBoss RI.
+ * 
+ * @author Shane Bryzak
+ * @author Pete Muir
+ * @author David Allen
+ * 
+ */
 public class BeansImpl implements Beans
 {
 
@@ -36,4 +44,27 @@
       return EnterpriseBean.of(clazz, CurrentManager.rootManager());
    }
 
+   public boolean isEnterpriseBean(Class<?> clazz)
+   {
+      return CurrentManager.rootManager().getEjbDescriptorCache().containsKey(clazz);
+   }
+
+   public boolean isEntityBean(Class<?> clazz)
+   {
+      // TODO Auto-generated method stub
+      return false;
+   }
+
+   public boolean isStatefulBean(Class<?> clazz)
+   {
+      // TODO Auto-generated method stub
+      return false;
+   }
+
+   public boolean isStatelessBean(Class<?> clazz)
+   {
+      // TODO Auto-generated method stub
+      return false;
+   }
+
 }

Modified: ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/tck/ContextsImpl.java
===================================================================
--- ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/tck/ContextsImpl.java	2009-01-15 23:18:46 UTC (rev 998)
+++ ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/tck/ContextsImpl.java	2009-01-16 00:28:17 UTC (rev 999)
@@ -1,6 +1,7 @@
 package org.jboss.webbeans.test.tck;
 
 import org.jboss.webbeans.context.AbstractContext;
+import org.jboss.webbeans.context.DependentContext;
 import org.jboss.webbeans.context.RequestContext;
 import org.jboss.webbeans.tck.api.Contexts;
 
@@ -21,6 +22,11 @@
    {
       context.setActive(false);
    }
+
+   public AbstractContext getDependentContext()
+   {
+      return DependentContext.INSTANCE;
+   }
    
    
    

Modified: tck/trunk/api/src/main/java/org/jboss/webbeans/tck/api/Beans.java
===================================================================
--- tck/trunk/api/src/main/java/org/jboss/webbeans/tck/api/Beans.java	2009-01-15 23:18:46 UTC (rev 998)
+++ tck/trunk/api/src/main/java/org/jboss/webbeans/tck/api/Beans.java	2009-01-16 00:28:17 UTC (rev 999)
@@ -6,38 +6,36 @@
 
 /**
  * Provides Bean related operations.
- *  
+ * 
  * @author Shane Bryzak
  * @author Pete Muir
+ * @author David Allen
+ * 
  */
 public interface Beans
 {
-   
+
    public static final String PROPERTY_NAME = Beans.class.getName();
-   
+
    /**
     * Create a new simple bean from the given class
     * 
-    * @param <T>
-    *           The type of the bean
-    * @param clazz
-    *           the class to create the bean
+    * @param <T> The type of the bean
+    * @param clazz the class to create the bean
     * @return the created bean
     */
    public <T> Bean<T> createSimpleBean(Class<T> clazz);
-   
+
    /**
     * Create a new enterprise bean from the given class. The given class should
-    * represent an EJB declared using annotions of XML.
+    * represent an EJB declared using annotions or XML.
     * 
-    * @param <T>
-    *           The type of the bean
-    * @param clazz
-    *           the class to create the bean
+    * @param <T> The type of the bean
+    * @param clazz the class to create the bean
     * @return the created bean
     */
    public <T> Bean<T> createEnterpriseBean(Class<T> clazz);
-   
+
    /**
     * Create a new producer method bean from the given method. The simple or
     * enterprise bean on which the method is declared is provided.
@@ -46,15 +44,44 @@
     * calling {@link #createSimpleBean(Class)} or
     * {@link #createEnterpriseBean(Class)}.
     * 
-    * @param <T>
-    *           the type of the bean
-    * @param method
-    *           the producer method
-    * @param declaringBean
-    *           the simple or enterprise bean which declares this producer
-    *           method
+    * @param <T> the type of the bean
+    * @param method the producer method
+    * @param declaringBean the simple or enterprise bean which declares this
+    *           producer method
     * @return the producer bean
     */
    public <T> Bean<T> createProducerMethodBean(Method method, Bean<?> declaringBean);
-   
+
+   /**
+    * Tests whether the given class is declaring an Enterprise Bean.
+    * 
+    * @param clazz the type of bean being tested
+    * 
+    * @return true only if class declares an Enterprise Bean
+    */
+   public boolean isEnterpriseBean(Class<?> clazz);
+
+   /**
+    * Tests whether the given class is declaring a stateful session bean.
+    * 
+    * @param clazz the type being tested
+    * @return true only if class declares a stateful session bean
+    */
+   public boolean isStatefulBean(Class<?> clazz);
+
+   /**
+    * Tests whether the given class is declaring a stateless session bean.
+    * 
+    * @param clazz the type being tested
+    * @return true only if class declares a stateless session bean
+    */
+   public boolean isStatelessBean(Class<?> clazz);
+
+   /**
+    * Tests whether the given class is declaring an entity bean.
+    * 
+    * @param clazz the type being tested
+    * @return true only if class declares an entity bean
+    */
+   public boolean isEntityBean(Class<?> clazz);
 }

Modified: tck/trunk/api/src/main/java/org/jboss/webbeans/tck/api/Contexts.java
===================================================================
--- tck/trunk/api/src/main/java/org/jboss/webbeans/tck/api/Contexts.java	2009-01-15 23:18:46 UTC (rev 998)
+++ tck/trunk/api/src/main/java/org/jboss/webbeans/tck/api/Contexts.java	2009-01-16 00:28:17 UTC (rev 999)
@@ -34,4 +34,11 @@
     * @return The new request context
     */
    T getRequestContext();
+   
+   /**
+    * Returns the default dependent context
+    * 
+    * @return the dependent context
+    */
+   T getDependentContext();
 }

Modified: tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/AbstractTest.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/AbstractTest.java	2009-01-15 23:18:46 UTC (rev 998)
+++ tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/AbstractTest.java	2009-01-16 00:28:17 UTC (rev 999)
@@ -19,6 +19,7 @@
 import javax.webbeans.manager.Bean;
 import javax.webbeans.manager.Manager;
 
+import org.jboss.webbeans.tck.impl.util.Reflections;
 import org.testng.annotations.BeforeMethod;
 
 @SuppressWarnings("unchecked")
@@ -50,32 +51,33 @@
       return configuration().getBeans().createProducerMethodBean(method, producerBean);
    }
 
-   /*
-   protected <T> AbstractClassBean<T> registerBean(Class<T> clazz)
+   protected void deployBeans(Class<?>... classes)
    {
-      AbstractClassBean<T> bean = null;
-      if (CurrentManager.rootManager().getEjbDescriptorCache().containsKey(clazz))
+      
+   }
+
+   protected <T> Bean<T> registerBean(Class<T> clazz)
+   {
+      Bean<T> bean = null;
+      if (configuration().getBeans().isEnterpriseBean(clazz))
       {
-         bean = EnterpriseBean.of(clazz, manager);
+         bean = configuration().getBeans().createEnterpriseBean(clazz);
       }
       else
       {
-         bean = SimpleBean.of(clazz, manager);
+         bean = getSimpleBean(clazz);
       }
-      CurrentManager.rootManager().addBean(bean);
+      manager.addBean(bean);
       return bean;
    }
-   */
    
-/*
-   protected void registerBeans(Class<?>[] classes)
+   protected void registerBeans(Class<?>... classes)
    {
       for (Class<?> clazz : classes)
       {
          registerBean(clazz);
       }
    }
-   */
 
    
    protected List<Class<? extends Annotation>> getEnabledDeploymentTypes()
@@ -104,14 +106,13 @@
       return in.readObject();
    }
 
-/*   protected void activateDependentContext()
+   protected void activateDependentContext()
    {
-      DependentContext.INSTANCE.setActive(true);
+      configuration().getContexts().setActive(configuration().getContexts().getDependentContext());
    }
    
    protected void deactivateDependentContext()
    {
-      DependentContext.INSTANCE.setActive(false);
+      configuration().getContexts().setInactive(configuration().getContexts().getDependentContext());
    }
-   */
 }
\ No newline at end of file

Added: tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/event/AnimalStereotype.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/event/AnimalStereotype.java	                        (rev 0)
+++ tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/event/AnimalStereotype.java	2009-01-16 00:28:17 UTC (rev 999)
@@ -0,0 +1,21 @@
+package org.jboss.webbeans.tck.tests.event;
+
+import static java.lang.annotation.ElementType.FIELD;
+import static java.lang.annotation.ElementType.METHOD;
+import static java.lang.annotation.ElementType.TYPE;
+import static java.lang.annotation.RetentionPolicy.RUNTIME;
+
+import java.lang.annotation.Retention;
+import java.lang.annotation.Target;
+
+import javax.webbeans.RequestScoped;
+import javax.webbeans.Stereotype;
+
+ at Stereotype()
+ at Target( { TYPE, METHOD, FIELD })
+ at Retention(RUNTIME)
+ at RequestScoped
+public @interface AnimalStereotype
+{
+
+}


Property changes on: tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/event/AnimalStereotype.java
___________________________________________________________________
Name: svn:mime-type
   + text/plain

Added: tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/event/AnimalStereotypeAnnotationLiteral.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/event/AnimalStereotypeAnnotationLiteral.java	                        (rev 0)
+++ tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/event/AnimalStereotypeAnnotationLiteral.java	2009-01-16 00:28:17 UTC (rev 999)
@@ -0,0 +1,8 @@
+package org.jboss.webbeans.tck.tests.event;
+
+import javax.webbeans.AnnotationLiteral;
+
+public class AnimalStereotypeAnnotationLiteral extends AnnotationLiteral<AnimalStereotype> implements AnimalStereotype
+{
+
+}


Property changes on: tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/event/AnimalStereotypeAnnotationLiteral.java
___________________________________________________________________
Name: svn:mime-type
   + text/plain

Added: tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/event/AuroraFinch.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/event/AuroraFinch.java	                        (rev 0)
+++ tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/event/AuroraFinch.java	2009-01-16 00:28:17 UTC (rev 999)
@@ -0,0 +1,26 @@
+package org.jboss.webbeans.tck.tests.event;
+
+import javax.webbeans.Event;
+import javax.webbeans.Fires;
+import javax.webbeans.Initializer;
+
+import org.jboss.webbeans.tck.tests.event.StarFinch.Mess;
+
+public class AuroraFinch
+{
+
+   private Mess someMess;
+
+   @Initializer
+   public AuroraFinch(@Fires Event<Mess> eventObject)
+   {
+      // Create a new mess and fire the event for it
+      someMess = new Mess();
+      eventObject.fire(someMess);
+   }
+
+   public Mess getSomeMess()
+   {
+      return someMess;
+   }
+}


Property changes on: tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/event/AuroraFinch.java
___________________________________________________________________
Name: svn:mime-type
   + text/plain

Added: tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/event/AustralianTerrier.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/event/AustralianTerrier.java	                        (rev 0)
+++ tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/event/AustralianTerrier.java	2009-01-16 00:28:17 UTC (rev 999)
@@ -0,0 +1,16 @@
+package org.jboss.webbeans.tck.tests.event;
+
+import javax.ejb.Stateless;
+import javax.webbeans.Initializer;
+import javax.webbeans.Observes;
+import javax.webbeans.manager.Initialized;
+import javax.webbeans.manager.Manager;
+
+ at Stateless
+public class AustralianTerrier
+{
+   @Initializer
+   public void observeInitialized(@Observes @Initialized Manager manager)
+   {
+   }
+}


Property changes on: tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/event/AustralianTerrier.java
___________________________________________________________________
Name: svn:mime-type
   + text/plain

Added: tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/event/BananaSpider.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/event/BananaSpider.java	                        (rev 0)
+++ tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/event/BananaSpider.java	2009-01-16 00:28:17 UTC (rev 999)
@@ -0,0 +1,23 @@
+package org.jboss.webbeans.tck.tests.event;
+
+import java.util.Set;
+
+import javax.webbeans.Observer;
+import javax.webbeans.Observes;
+import javax.webbeans.manager.Manager;
+
+/**
+ * Simple bean with observer method and another injectable parameter.
+ *
+ */
+public class BananaSpider
+{
+   public void observeStringEvent(@Observes String someEvent, Manager manager)
+   {
+      assert someEvent != null;
+      assert manager != null;
+      Set<Observer<String>> allStringObservers = manager.resolveObservers(someEvent);
+      assert allStringObservers != null;
+      assert allStringObservers.size() > 0;
+   }
+}


Property changes on: tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/event/BananaSpider.java
___________________________________________________________________
Name: svn:mime-type
   + text/plain

Added: tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/event/BirdCage.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/event/BirdCage.java	                        (rev 0)
+++ tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/event/BirdCage.java	2009-01-16 00:28:17 UTC (rev 999)
@@ -0,0 +1,24 @@
+package org.jboss.webbeans.tck.tests.event;
+
+import javax.webbeans.Current;
+import javax.webbeans.Named;
+import javax.webbeans.RequestScoped;
+
+import org.jboss.webbeans.tck.tests.event.StarFinch.Mess;
+
+ at RequestScoped
+ at Named("BirdCage")
+public class BirdCage
+{
+   @Current
+   private Mess someMess;
+
+   public BirdCage()
+   {
+   }
+   
+   public Mess getSomeMess()
+   {
+      return someMess;
+   }
+}


Property changes on: tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/event/BirdCage.java
___________________________________________________________________
Name: svn:mime-type
   + text/plain

Added: tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/event/BlackRumpedWaxbill_Broken.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/event/BlackRumpedWaxbill_Broken.java	                        (rev 0)
+++ tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/event/BlackRumpedWaxbill_Broken.java	2009-01-16 00:28:17 UTC (rev 999)
@@ -0,0 +1,16 @@
+package org.jboss.webbeans.tck.tests.event;
+
+import javax.webbeans.Event;
+import javax.webbeans.Fires;
+
+public class BlackRumpedWaxbill_Broken
+{
+   @SuppressWarnings("unchecked")
+   @Fires
+   private Event simpleEvent;
+
+   public void eliminateWarning()
+   {
+      assert simpleEvent != null;
+   }
+}


Property changes on: tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/event/BlackRumpedWaxbill_Broken.java
___________________________________________________________________
Name: svn:mime-type
   + text/plain

Added: tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/event/BlueFacedParrotFinch.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/event/BlueFacedParrotFinch.java	                        (rev 0)
+++ tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/event/BlueFacedParrotFinch.java	2009-01-16 00:28:17 UTC (rev 999)
@@ -0,0 +1,26 @@
+package org.jboss.webbeans.tck.tests.event;
+
+import javax.webbeans.Event;
+import javax.webbeans.Fires;
+import javax.webbeans.Observer;
+
+public class BlueFacedParrotFinch
+{
+   @Fires
+   private Event<String> simpleEvent;
+
+   public void methodThatFiresEvent()
+   {
+      simpleEvent.fire("An event");
+   }
+
+   public void methodThatRegistersObserver()
+   {
+      simpleEvent.observe(new Observer<String>()
+      {
+         public void notify(String event)
+         {
+         }
+      });
+   }
+}


Property changes on: tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/event/BlueFacedParrotFinch.java
___________________________________________________________________
Name: svn:mime-type
   + text/plain

Added: tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/event/BorderTerrier.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/event/BorderTerrier.java	                        (rev 0)
+++ tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/event/BorderTerrier.java	2009-01-16 00:28:17 UTC (rev 999)
@@ -0,0 +1,16 @@
+package org.jboss.webbeans.tck.tests.event;
+
+import javax.ejb.Stateless;
+import javax.webbeans.Observes;
+import javax.webbeans.Produces;
+import javax.webbeans.manager.Initialized;
+import javax.webbeans.manager.Manager;
+
+ at Stateless
+public class BorderTerrier
+{
+   @Produces
+   public void observeInitialized(@Observes @Initialized Manager manager)
+   {
+   }
+}


Property changes on: tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/event/BorderTerrier.java
___________________________________________________________________
Name: svn:mime-type
   + text/plain

Added: tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/event/BostonTerrier.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/event/BostonTerrier.java	                        (rev 0)
+++ tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/event/BostonTerrier.java	2009-01-16 00:28:17 UTC (rev 999)
@@ -0,0 +1,14 @@
+package org.jboss.webbeans.tck.tests.event;
+
+import java.util.List;
+
+import javax.ejb.Stateless;
+import javax.webbeans.Observes;
+
+ at Stateless
+public class BostonTerrier
+{
+   public void observesBadEvent(@Observes List<String> someArray)
+   {
+   }
+}


Property changes on: tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/event/BostonTerrier.java
___________________________________________________________________
Name: svn:mime-type
   + text/plain

Added: tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/event/Boxer.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/event/Boxer.java	                        (rev 0)
+++ tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/event/Boxer.java	2009-01-16 00:28:17 UTC (rev 999)
@@ -0,0 +1,11 @@
+package org.jboss.webbeans.tck.tests.event;
+
+import javax.ejb.Stateless;
+import javax.webbeans.ConversationScoped;
+
+ at Stateless
+ at ConversationScoped
+public class Boxer
+{
+
+}


Property changes on: tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/event/Boxer.java
___________________________________________________________________
Name: svn:mime-type
   + text/plain

Added: tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/event/BullTerrier.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/event/BullTerrier.java	                        (rev 0)
+++ tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/event/BullTerrier.java	2009-01-16 00:28:17 UTC (rev 999)
@@ -0,0 +1,12 @@
+package org.jboss.webbeans.tck.tests.event;
+
+import javax.ejb.Stateless;
+import javax.webbeans.Observes;
+
+ at Stateless
+public class BullTerrier
+{
+   public void observesBadEvent(@Observes @Role("Admin") @Tame String someEvent)
+   {
+   }
+}


Property changes on: tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/event/BullTerrier.java
___________________________________________________________________
Name: svn:mime-type
   + text/plain

Added: tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/event/CairnsTerrier.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/event/CairnsTerrier.java	                        (rev 0)
+++ tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/event/CairnsTerrier.java	2009-01-16 00:28:17 UTC (rev 999)
@@ -0,0 +1,17 @@
+package org.jboss.webbeans.tck.tests.event;
+
+import javax.ejb.Stateless;
+import javax.webbeans.Destructor;
+import javax.webbeans.Observes;
+import javax.webbeans.manager.Initialized;
+import javax.webbeans.manager.Manager;
+
+ at Stateless
+public class CairnsTerrier
+{
+   @Destructor
+   public void observeInitialized(@Observes @Initialized Manager manager)
+   {
+   }
+
+}


Property changes on: tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/event/CairnsTerrier.java
___________________________________________________________________
Name: svn:mime-type
   + text/plain

Added: tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/event/CommonWaxbill_Broken.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/event/CommonWaxbill_Broken.java	                        (rev 0)
+++ tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/event/CommonWaxbill_Broken.java	2009-01-16 00:28:17 UTC (rev 999)
@@ -0,0 +1,16 @@
+package org.jboss.webbeans.tck.tests.event;
+
+import java.util.ArrayList;
+
+import javax.webbeans.Fires;
+
+public class CommonWaxbill_Broken
+{
+   @Fires
+   private ArrayList<String> simpleEvent;
+
+   public void eliminateWarning()
+   {
+      assert simpleEvent != null;
+   }
+}


Property changes on: tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/event/CommonWaxbill_Broken.java
___________________________________________________________________
Name: svn:mime-type
   + text/plain

Added: tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/event/EuropeanGoldfinch.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/event/EuropeanGoldfinch.java	                        (rev 0)
+++ tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/event/EuropeanGoldfinch.java	2009-01-16 00:28:17 UTC (rev 999)
@@ -0,0 +1,30 @@
+package org.jboss.webbeans.tck.tests.event;
+
+import javax.ejb.Remove;
+import javax.ejb.Stateful;
+import javax.webbeans.ConversationScoped;
+import javax.webbeans.Destructor;
+import javax.webbeans.Event;
+import javax.webbeans.Fires;
+
+import org.jboss.webbeans.tck.tests.event.StarFinch.Mess;
+
+ at ConversationScoped @Stateful
+public class EuropeanGoldfinch
+{
+   private Mess someMess;
+
+   public Mess getSomeMess()
+   {
+      return someMess;
+   }
+
+   @Destructor @Remove
+   public void remove(@Fires Event<Mess> eventObject)
+   {
+      // Create a new mess and fire the event for it
+      someMess = new Mess();
+      eventObject.fire(someMess);
+   }
+
+}


Property changes on: tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/event/EuropeanGoldfinch.java
___________________________________________________________________
Name: svn:mime-type
   + text/plain

Added: tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/event/EventBusTest.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/event/EventBusTest.java	                        (rev 0)
+++ tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/event/EventBusTest.java	2009-01-16 00:28:17 UTC (rev 999)
@@ -0,0 +1,931 @@
+package org.jboss.webbeans.tck.tests.event;
+
+import java.lang.annotation.Annotation;
+import java.util.Set;
+
+import javax.webbeans.DefinitionException;
+import javax.webbeans.DuplicateBindingTypeException;
+import javax.webbeans.Observer;
+import javax.webbeans.ObserverException;
+import javax.webbeans.TypeLiteral;
+import javax.webbeans.manager.Bean;
+
+import org.jboss.webbeans.tck.impl.SpecAssertion;
+import org.jboss.webbeans.tck.impl.SpecVersion;
+import org.jboss.webbeans.tck.tests.AbstractTest;
+import org.testng.annotations.Test;
+
+/**
+ * Event bus tests
+ * 
+ * @author Nicklas Karlsson
+ * @author David Allen
+ * 
+ */
+ at SpecVersion("20081206")
+public class EventBusTest extends AbstractTest
+{
+   public static class AnEventType
+   {
+   }
+
+   public static class ATemplatedEventType<T>
+   {
+   }
+
+   public static class AnObserver implements Observer<AnEventType>
+   {
+      public boolean wasNotified = false;
+
+      public void notify(AnEventType event)
+      {
+         wasNotified = true;
+      }
+   }
+
+   public static class AnObserverWithException implements Observer<AnEventType>
+   {
+      public boolean wasNotified = false;
+      public RuntimeException theException = new RuntimeException("RE1");
+
+      public void notify(AnEventType event)
+      {
+         wasNotified = true;
+         throw theException;
+      }
+   }
+
+   @Test(groups = { "stub", "events" })
+   @SpecAssertion(section = "8.1")
+   public void testEventTypeIncludesAllSuperclassesAndInterfacesOfEventObject()
+   {
+      assert false;
+   }
+
+   @Test(groups = { "broken", "events" })
+   @SpecAssertion(section = "8.2")
+   public void testManagerFireEvent()
+   {
+      // First a simple event with no bindings is fired
+      AnEventType anEvent = new AnEventType();
+      manager.fireEvent(anEvent);
+
+      // Next an event with some event bindings is fired
+      manager.fireEvent(anEvent, new RoleBinding("Admin"));
+   }
+
+   /**
+    * If the type of the event object passed to fireEvent() contains type
+    * variables or wildcards, an IllegalArgumentException is thrown
+    */
+   @Test(groups = { "broken", "events" }, expectedExceptions = { IllegalArgumentException.class })
+   @SpecAssertion(section = { "8.1", "8.2" })
+   public void testManagerFireEventWithEventTypeParametersFails()
+   {
+      ATemplatedEventType<String> anEvent = new ATemplatedEventType<String>();
+      manager.fireEvent(anEvent);
+   }
+
+   /**
+    * If the type of the event object passed to fireEvent() contains type
+    * variables or wildcards, an IllegalArgumentException is thrown
+    */
+   @Test(groups = { "broken", "events" }, expectedExceptions = { IllegalArgumentException.class })
+   @SpecAssertion(section = { "8.1", "8.2" })
+   public void testManagerFireEventWithEventTypeWildcardsFails()
+   {
+      // Although the above test is really the same as with a wildcard, we will
+      // test
+      // it anyhow since the specification calls it out separately.
+      ATemplatedEventType<?> anEventOnAnyType = new ATemplatedEventType<String>();
+      manager.fireEvent(anEventOnAnyType);
+   }
+
+   @Test(groups = { "broken", "events" }, expectedExceptions = { IllegalArgumentException.class })
+   @SpecAssertion(section = { "8.1", "8.2" })
+   public void testManagerFireEventWithNonBindingAnnotationsFails()
+   {
+      // The specs are not exactly clear on what is supposed to happen here,
+      // but borrowing from Section 8.3, we'll expect the same behavior here
+      // for a consistent API.
+      // TODO Verify that fireEvent should fail on non-binding annotations
+      AnEventType anEvent = new AnEventType();
+      manager.fireEvent(anEvent, new AnimalStereotypeAnnotationLiteral());
+   }
+
+   @Test(groups = { "broken", "events" })
+   @SpecAssertion(section = "8.3")
+   public void testManagerAddObserver()
+   {
+      Observer<AnEventType> observer = new AnObserver();
+
+      // First test with the Class<T> of the event type
+      manager.addObserver(observer, AnEventType.class);
+      Set<Observer<AnEventType>> resolvedObservers = manager.resolveObservers(new AnEventType());
+      assert !resolvedObservers.isEmpty();
+      assert resolvedObservers.size() == 1;
+      assert resolvedObservers.iterator().next() == observer;
+
+      // Now test with the TypeLiteral<T> of the event type
+      observer = new AnObserver();
+      manager.addObserver(observer, new TypeLiteral<AnEventType>()
+      {
+      });
+      resolvedObservers = manager.resolveObservers(new AnEventType());
+      assert !resolvedObservers.isEmpty();
+      assert resolvedObservers.size() == 2;
+      boolean foundObserver = false;
+      for (Observer<AnEventType> obs : resolvedObservers)
+      {
+         if (obs == observer)
+         {
+            foundObserver = true;
+            break;
+         }
+      }
+      assert foundObserver;
+
+      // Try adding an observer with some binding types
+      observer = new AnObserver();
+      Annotation[] bindingTypes = new Annotation[] { new RoleBinding("Admin"), new RoleBinding("Manager") };
+      manager.addObserver(observer, AnEventType.class, bindingTypes);
+      resolvedObservers = manager.resolveObservers(new AnEventType(), bindingTypes);
+      assert !resolvedObservers.isEmpty();
+      assert resolvedObservers.size() == 3;
+      foundObserver = false;
+      for (Observer<AnEventType> obs : resolvedObservers)
+      {
+         if (obs == observer)
+         {
+            foundObserver = true;
+            break;
+         }
+      }
+      assert foundObserver;
+   }
+
+   @Test(groups = { "broken", "events" })
+   @SpecAssertion(section = "8.3")
+   public void testManagerRemoveObserver()
+   {
+      Observer<AnEventType> observer = new AnObserver();
+
+      // First test with the Class<T> of the event type
+      manager.addObserver(observer, AnEventType.class);
+      manager.removeObserver(observer, AnEventType.class);
+      Set<Observer<AnEventType>> resolvedObservers = manager.resolveObservers(new AnEventType());
+      assert resolvedObservers.isEmpty();
+
+      // Now test with the TypeLiteral<T> of the event type
+      observer = new AnObserver();
+      manager.addObserver(observer, new TypeLiteral<AnEventType>()
+      {
+      });
+      manager.removeObserver(observer, new TypeLiteral<AnEventType>()
+      {
+      });
+      resolvedObservers = manager.resolveObservers(new AnEventType());
+      assert resolvedObservers.isEmpty();
+
+      // Also test with binding types
+      Annotation[] bindings = new Annotation[] { new RoleBinding("Admin") };
+      manager.addObserver(observer, AnEventType.class, bindings);
+      manager.removeObserver(observer, AnEventType.class);
+      resolvedObservers = manager.resolveObservers(new AnEventType(), bindings);
+      assert !resolvedObservers.isEmpty();
+      manager.removeObserver(observer, AnEventType.class, new RoleBinding("Admin"));
+      resolvedObservers = manager.resolveObservers(new AnEventType(), bindings);
+      assert resolvedObservers.isEmpty();
+   }
+
+   @Test(groups = { "broken", "events" }, expectedExceptions = { DuplicateBindingTypeException.class })
+   @SpecAssertion(section = "8.3")
+   public void testMultipleInstancesOfSameBindingTypeWhenAddingObserverFails()
+   {
+      Observer<AnEventType> observer = new AnObserver();
+      manager.addObserver(observer, AnEventType.class, new RoleBinding("Admin"), new TameAnnotationLiteral(), new TameAnnotationLiteral());
+   }
+
+   @Test(groups = { "broken", "events" }, expectedExceptions = { IllegalArgumentException.class })
+   @SpecAssertion(section = "8.3")
+   public void testNonBindingTypePassedToAddObserverFails()
+   {
+      Observer<AnEventType> observer = new AnObserver();
+      manager.addObserver(observer, AnEventType.class, new AnimalStereotypeAnnotationLiteral());
+   }
+
+   @Test(groups = { "broken", "events" }, expectedExceptions = { DuplicateBindingTypeException.class })
+   @SpecAssertion(section = "8.3")
+   public void testMultipleInstancesOfSameBindingTypeWhenRemovingObserverFails()
+   {
+      Observer<AnEventType> observer = new AnObserver();
+      manager.addObserver(observer, AnEventType.class);
+      manager.removeObserver(observer, AnEventType.class, new RoleBinding("Admin"), new TameAnnotationLiteral(), new TameAnnotationLiteral());
+   }
+
+   @Test(groups = { "broken", "events" }, expectedExceptions = { IllegalArgumentException.class })
+   @SpecAssertion(section = "8.3")
+   public void testNonBindingTypePassedToRemoveObserverFails()
+   {
+      Observer<AnEventType> observer = new AnObserver();
+      manager.addObserver(observer, AnEventType.class);
+      manager.removeObserver(observer, AnEventType.class, new AnimalStereotypeAnnotationLiteral());
+   }
+
+   @Test(groups = { "broken", "events" })
+   @SpecAssertion(section = { "8.1", "8.4" })
+   public void testConsumerNotifiedWhenEventTypeAndAllBindingsMatch()
+   {
+      AnObserver observer1 = new AnObserver();
+      AnObserver observer2 = new AnObserver();
+      manager.addObserver(observer1, AnEventType.class);
+      manager.addObserver(observer2, AnEventType.class);
+
+      // Fire an event that will be delivered to the two above observers
+      AnEventType anEvent = new AnEventType();
+      manager.fireEvent(anEvent);
+
+      assert observer1.wasNotified;
+      assert observer2.wasNotified;
+   }
+
+   @Test(groups = { "broken", "events" })
+   @SpecAssertion(section = "8.4")
+   public void testObserverThrowsExceptionAbortsNotifications()
+   {
+      AnObserver observer = new AnObserver();
+      AnObserverWithException anotherObserver = new AnObserverWithException();
+      manager.addObserver(anotherObserver, AnEventType.class);
+      manager.addObserver(observer, AnEventType.class);
+
+      // Fire an event that will be delivered to the two above observers
+      AnEventType anEvent = new AnEventType();
+      boolean fireFailed = false;
+      try
+      {
+         manager.fireEvent(anEvent);
+      }
+      catch (Exception e)
+      {
+         if (anotherObserver.theException.equals(e))
+            fireFailed = true;
+      }
+      assert fireFailed;
+
+      assert anotherObserver.wasNotified;
+      // TODO This cannot properly test for event processing abort
+      // assert !observer.wasNotified;
+   }
+
+   @Test(groups = { "stub", "events" })
+   @SpecAssertion(section = "8.4")
+   public void testObserverCalledBeforeTransactionCompleteMaySetRollbackOnly()
+   {
+      assert false;
+   }
+
+   @Test(groups = { "stub", "events" })
+   @SpecAssertion(section = "8.4")
+   public void testObserverManipulatingJTATransactionsDirectlyFails()
+   {
+      assert false;
+   }
+
+   @Test(groups = { "broken", "events" })
+   @SpecAssertion(section = "8.5")
+   public void testObserverMethodOnEnterpriseBeanIsBusinessMethodOrStatic()
+   {
+      deployBeans(Pomeranian.class);
+      Set<Bean<Object>> beans = manager.resolveByType(Object.class);
+      assert beans.size() == 2 + BUILT_IN_BEANS;
+      Set<Observer<String>> observers = manager.resolveObservers("An event");
+      assert observers.size() == 2;
+   }
+
+   @Test(groups = { "broken", "events" })
+   @SpecAssertion(section = "8.5")
+   public void testObserverMethodOnEnterpriseBeanNotBusinessMethodOrStaticFails()
+   {
+      deployBeans(TibetanTerrier.class);
+      Set<Bean<Object>> beans = manager.resolveByType(Object.class);
+      assert beans.size() == 2 + BUILT_IN_BEANS;
+      Set<Observer<String>> observers = manager.resolveObservers("An event");
+      assert observers.size() == 1;
+   }
+
+   @Test(groups = { "broken", "events" })
+   @SpecAssertion(section = "8.5")
+   public void testMultipleObserverMethodsOK()
+   {
+      // Somewhat of a cheat, but this other test already does have 2 observer
+      // methods
+      // for the same event type and event bindings.
+      testObserverMethodOnEnterpriseBeanIsBusinessMethodOrStatic();
+   }
+
+   @Test(groups = { "broken", "events" }, expectedExceptions = { DefinitionException.class })
+   @SpecAssertion(section = { "8.5.1", "8.5.2" })
+   public void testObserverMethodMustHaveOnlyOneEventParameter()
+   {
+      deployBeans(YorkshireTerrier.class);
+      
+      Set<Bean<Object>> beans = manager.resolveByType(Object.class);
+      assert beans != null;
+   }
+
+   @Test(groups = { "broken", "events" }, expectedExceptions = { DefinitionException.class })
+   @SpecAssertion(section = "8.5.1")
+   public void testObserverMethodCannotObserveParameterizedEvents()
+   {
+      deployBeans(BostonTerrier.class);
+      Set<Bean<Object>> beans = manager.resolveByType(Object.class);
+      assert beans != null;
+   }
+
+   @Test(groups = { "broken", "events" })
+   @SpecAssertion(section = "8.5.1")
+   public void testObserverMethodWithoutBindingTypesObservesEventsWithoutBindingTypes()
+   {
+      // This observer has no binding types specified
+      deployBeans(Pomeranian.class);
+      Set<Bean<Object>> beans = manager.resolveByType(Object.class);
+      assert beans.size() == 2 + BUILT_IN_BEANS;
+
+      // Resolve registered observers with an event containing no binding types
+      Set<Observer<String>> resolvedObservers = manager.resolveObservers("A new event");
+      assert !resolvedObservers.isEmpty();
+      assert resolvedObservers.size() == 2;
+   }
+
+   @Test(groups = { "broken", "events" }, expectedExceptions = { DefinitionException.class })
+   @SpecAssertion(section = "8.5.2")
+   public void testObserverMethodAnnotatedProducesFails()
+   {
+      deployBeans(BorderTerrier.class);
+      Set<Bean<Object>> beans = manager.resolveByType(Object.class);
+      assert beans != null;
+   }
+
+   @Test(groups = { "broken", "events" }, expectedExceptions = { DefinitionException.class })
+   @SpecAssertion(section = "8.5.2")
+   public void testObserverMethodAnnotatedInitializerFails()
+   {
+      deployBeans(AustralianTerrier.class);
+      Set<Bean<Object>> beans = manager.resolveByType(Object.class);
+      assert beans != null;
+   }
+
+   @Test(groups = { "broken", "events" }, expectedExceptions = { DefinitionException.class })
+   @SpecAssertion(section = "8.5.2")
+   public void testObserverMethodAnnotatedDestructorFails()
+   {
+      deployBeans(CairnsTerrier.class);
+      Set<Bean<Object>> beans = manager.resolveByType(Object.class);
+      assert beans != null;
+   }
+
+   @Test(groups = { "broken", "events" }, expectedExceptions = { DefinitionException.class })
+   @SpecAssertion(section = "8.5.2")
+   public void testObserverMethodWithDisposesParamFails()
+   {
+      deployBeans(FoxTerrier.class);
+      Set<Bean<Object>> beans = manager.resolveByType(Object.class);
+      assert beans != null;
+   }
+
+   @Test(groups = { "broken", "events" })
+   @SpecAssertion(section = "8.5.2")
+   public void testObserverMethodMayHaveMultipleBindingTypes()
+   {
+      deployBeans(BullTerrier.class);
+      Set<Bean<Object>> beans = manager.resolveByType(Object.class);
+      assert beans != null;
+      // If we can resolve the observer with the two binding types,
+      // then it worked
+      Set<Observer<String>> resolvedObservers = manager.resolveObservers("An event object", new RoleBinding("Admin"), new TameAnnotationLiteral());
+      assert !resolvedObservers.isEmpty();
+      assert resolvedObservers.size() == 1;
+
+   }
+
+   @Test(groups = { "stub", "events" })
+   @SpecAssertion(section = "8.5.3")
+   public void testXMLDefinedObserverMethodIgnoresBindingAnnotations()
+   {
+      assert false;
+   }
+
+   @Test(groups = { "stub", "events" })
+   @SpecAssertion(section = "8.5.3")
+   public void testXMLDefinedObserverNotFindingImplementationMethodFails()
+   {
+      assert false;
+   }
+   
+   @Test(groups = { "broken", "events" })
+   @SpecAssertion(section = "8.5.4")
+   public void testObserverMethodReceivesInjectionsOnNonObservesParameters()
+   {
+      deployBeans(BananaSpider.class);
+      Set<Bean<Object>> beans = manager.resolveByType(Object.class);
+      assert beans != null;
+   }
+
+   /**
+    * Tests that a conditional observer is not notified of events until after it
+    * is created by some other separate action.
+    */
+   @Test(groups = { "broken", "events" })
+   @SpecAssertion(section = "8.5.5")
+   public void testConditionalObserver()
+   {
+      deployBeans(RecluseSpider.class);
+
+      manager.fireEvent("New string event");
+      // Should not be notified since bean is not instantiated yet
+      assert !RecluseSpider.notified;
+      
+      // Now instantiate the bean and fire another event
+      try
+      {
+         activateDependentContext();
+         RecluseSpider bean = manager.getInstanceByType(RecluseSpider.class);
+         assert bean != null;
+         
+         manager.fireEvent("Another event");
+         assert RecluseSpider.notified;
+      }
+      finally
+      {
+         deactivateDependentContext();
+      }
+   }
+
+   @Test(groups = { "stub", "events" })
+   @SpecAssertion(section = "8.1")
+   public void testTransactionalObserverCanOnlyObserveSinglePhase()
+   {
+      assert false;
+   }
+
+   @Test(groups = { "stub", "events" })
+   @SpecAssertion(section = "8.5.6")
+   public void testTransactionalObserverNotifiedImmediatelyWhenNoTransactionInProgress()
+   {
+      assert false;
+   }
+
+   @Test(groups = { "stub", "events" })
+   @SpecAssertion(section = "8.5.6")
+   public void testAfterTransactionCompletionObserver()
+   {
+      assert false;
+   }
+
+   @Test(groups = { "stub", "events" })
+   @SpecAssertion(section = "8.5.6")
+   public void testAfterTransactionSuccessObserver()
+   {
+      assert false;
+   }
+
+   @Test(groups = { "stub", "events" })
+   @SpecAssertion(section = "8.5.6")
+   public void testAfterTransactionFailureObserver()
+   {
+      assert false;
+   }
+
+   @Test(groups = { "stub", "events" })
+   @SpecAssertion(section = "8.5.6")
+   public void testBeforeTransactionCompletionObserver()
+   {
+      assert false;
+   }
+
+   @Test(groups = { "broken", "events" })
+   @SpecAssertion(section = "8.5.7")
+   public void testObserverMethodRegistration()
+   {
+      // For now, this test is checking the registration of methods
+      testObserverMethodOnEnterpriseBeanIsBusinessMethodOrStatic();
+   }
+
+   /**
+    * 
+    */
+   @Test(groups = { "broken", "events" })
+   @SpecAssertion(section = "8.5.7")
+   public void testEnterpriseBeanObserverMethodCalledWithCallerContext()
+   {
+      deployBeans(Pomeranian.class);
+      Set<Bean<Object>> beans = manager.resolveByType(Object.class);
+      assert beans.size() == 1;
+      String event = "A new event";
+      Set<Observer<String>> observers = manager.resolveObservers(event);
+      assert observers.size() == 1;
+      
+      manager.fireEvent(event);
+      assert Thread.currentThread().equals(Pomeranian.notificationThread);
+   }
+
+   @Test(groups = { "stub", "events" })
+   @SpecAssertion(section = "8.5.7")
+   public void testTransactionalObserverThrownExceptionIsCaughtAndLogged()
+   {
+      assert false;
+   }
+
+   @Test(groups = { "broken", "events" }, expectedExceptions={ TeaCupPomeranian.OversizedException.class })
+   @SpecAssertion(section = "8.5.7")
+   public void testNonTransactionalObserverThrownNonCheckedExceptionIsRethrown()
+   {
+      deployBeans(TeaCupPomeranian.class);
+      Set<Bean<Object>> beans = manager.resolveByType(Object.class);
+      assert !beans.isEmpty();
+      manager.fireEvent("Another event");
+   }
+
+   @Test(groups = { "broken", "events" }, expectedExceptions={ ObserverException.class })
+   @SpecAssertion(section = "8.5.7")
+   public void testNonTransactionalObserverThrownCheckedExceptionIsWrappedAndRethrown()
+   {
+      deployBeans(TeaCupPomeranian.class);
+      Set<Bean<Object>> beans = manager.resolveByType(Object.class);
+      assert !beans.isEmpty();
+      manager.fireEvent(new Integer(1));
+   }
+
+   @Test(groups = { "broken", "events" }, expectedExceptions = { DuplicateBindingTypeException.class })
+   @SpecAssertion(section = "8.6")
+   public void testDuplicateBindingsToFireFails()
+   {
+      deployBeans(SweeWaxbill_Broken.class);
+      try
+      {
+         activateDependentContext();
+         SweeWaxbill_Broken bean = manager.getInstanceByType(SweeWaxbill_Broken.class);
+         bean.methodThatFiresEvent();
+      }
+      finally
+      {
+         deactivateDependentContext();
+      }
+   }
+
+   @Test(groups = { "broken", "events" }, expectedExceptions={ DuplicateBindingTypeException.class })
+   @SpecAssertion(section = "8.6")
+   public void testDuplicateBindingsToObservesFails()
+   {
+      deployBeans(SweeWaxbill_Broken.class);
+      try
+      {
+         activateDependentContext();
+         SweeWaxbill_Broken bean = manager.getInstanceByType(SweeWaxbill_Broken.class);
+         bean.methodThatRegistersObserver();
+      }
+      finally
+      {
+         deactivateDependentContext();
+      }
+   }
+
+   @Test(groups = { "broken", "events" }, expectedExceptions = { IllegalArgumentException.class })
+   @SpecAssertion(section = "8.6")
+   public void testNonBindingTypePassedToFireFails()
+   {
+      deployBeans(OwlFinch_Broken.class);
+      try
+      {
+         activateDependentContext();
+         OwlFinch_Broken bean = manager.getInstanceByType(OwlFinch_Broken.class);
+         bean.methodThatFiresEvent();
+      }
+      finally
+      {
+         deactivateDependentContext();
+      }
+   }
+
+   @Test(groups = { "broken", "events" }, expectedExceptions = { IllegalArgumentException.class })
+   @SpecAssertion(section = "8.6")
+   public void testNonBindingTypePassedToObservesFails()
+   {
+      deployBeans(OwlFinch_Broken.class);
+      try
+      {
+         activateDependentContext();
+         OwlFinch_Broken bean = manager.getInstanceByType(OwlFinch_Broken.class);
+         bean.methodThatRegistersObserver();
+      }
+      finally
+      {
+         deactivateDependentContext();
+      }
+   }
+
+   @Test(groups = { "broken", "events" })
+   @SpecAssertion(section = "8.6")
+   public void testObservableAnnotationOnField()
+   {
+      deployBeans(BlueFacedParrotFinch.class);
+      try
+      {
+         activateDependentContext();
+         BlueFacedParrotFinch bean = manager.getInstanceByType(BlueFacedParrotFinch.class);
+         bean.methodThatRegistersObserver();
+
+         Set<Observer<String>> observers = manager.resolveObservers("String type event");
+         assert observers.size() == 1;
+      }
+      finally
+      {
+         deactivateDependentContext();
+      }
+   }
+
+   @Test(groups = { "broken", "events" })
+   @SpecAssertion(section = "8.6")
+   public void testObservableAnnotationOnParameterOfProducerMethod()
+   {
+      deployBeans(StarFinch.class, FinchKeeper.class, BirdCage.class);
+      try
+      {
+         activateDependentContext();
+         StarFinch starFinch = manager.getInstanceByType(StarFinch.class);
+         FinchKeeper birdKeeper = manager.getInstanceByType(FinchKeeper.class);
+         BirdCage birdCage = manager.getInstanceByType(BirdCage.class);
+         assert starFinch != null;
+         assert birdCage != null;
+         assert birdCage.getSomeMess() != null;
+         assert birdKeeper.isNewMessDetected();
+      }
+      finally
+      {
+         deactivateDependentContext();
+      }
+   }
+
+   @Test(groups = { "broken", "events" })
+   @SpecAssertion(section = "8.6")
+   public void testObservableAnnotationOnParameterOfInitializerMethod()
+   {
+      deployBeans(OrangeCheekedWaxbill.class, FinchKeeper.class);
+      try
+      {
+         activateDependentContext();
+         OrangeCheekedWaxbill bird = manager.getInstanceByType(OrangeCheekedWaxbill.class);
+         FinchKeeper birdKeeper = manager.getInstanceByType(FinchKeeper.class);
+         assert bird != null;
+         assert bird.getSomeMess() != null;
+         assert birdKeeper.isNewMessDetected();
+      }
+      finally
+      {
+         deactivateDependentContext();
+      }
+   }
+
+   //TODO Implement once disposal methods are included
+   @Test(groups = { "stub", "events" })
+   @SpecAssertion(section = "8.6")
+   public void testObservableAnnotationOnParameterOfDisposalMethod()
+   {
+      assert false;
+   }
+
+   //TODO Make sure this test works once EJBs are fully supported
+   @Test(groups = { "broken", "events" })
+   @SpecAssertion(section = "8.6")
+   public void testObservableAnnotationOnParameterOfRemoveMethod()
+   {
+      deployBeans(EuropeanGoldfinch.class, FinchKeeper.class);
+      try
+      {
+         activateDependentContext();
+         EuropeanGoldfinch bird = manager.getInstanceByType(EuropeanGoldfinch.class);
+         FinchKeeper birdKeeper = manager.getInstanceByType(FinchKeeper.class);
+         assert bird != null;
+         
+         assert birdKeeper.isNewMessDetected();
+      }
+      finally
+      {
+         deactivateDependentContext();
+      }
+   }
+
+   @Test(groups = { "broken", "events" })
+   @SpecAssertion(section = "8.6")
+   public void testObservableAnnotationOnParameterOfConstructor()
+   {
+      deployBeans(AuroraFinch.class, FinchKeeper.class);
+      try
+      {
+         activateDependentContext();
+         AuroraFinch bird = manager.getInstanceByType(AuroraFinch.class);
+         FinchKeeper birdKeeper = manager.getInstanceByType(FinchKeeper.class);
+         assert bird != null;
+         assert birdKeeper.isNewMessDetected();
+      }
+      finally
+      {
+         deactivateDependentContext();
+      }
+   }
+
+   @Test(groups = { "broken", "events" }, expectedExceptions = { DefinitionException.class })
+   @SpecAssertion(section = "8.6")
+   public void testObservableAnnotationOnNonEventTypeInjectionPointFails()
+   {
+      deployBeans(CommonWaxbill_Broken.class);
+      try
+      {
+         activateDependentContext();
+         CommonWaxbill_Broken bean = manager.getInstanceByType(CommonWaxbill_Broken.class);
+         assert bean != null;
+      }
+      finally
+      {
+         deactivateDependentContext();
+      }
+   }
+
+   @Test(groups = { "broken", "events" }, expectedExceptions = { DefinitionException.class })
+   @SpecAssertion(section = "8.6")
+   public void testObservableAnnotationOnInjectionPointWithoutTypeParameterFails()
+   {
+      deployBeans(BlackRumpedWaxbill_Broken.class);
+      try
+      {
+         activateDependentContext();
+         BlackRumpedWaxbill_Broken bean = manager.getInstanceByType(BlackRumpedWaxbill_Broken.class);
+         assert bean != null;
+      }
+      finally
+      {
+         deactivateDependentContext();
+      }
+   }
+
+   @Test(groups = { "broken", "events" }, expectedExceptions = { DefinitionException.class })
+   @SpecAssertion(section = "8.6")
+   public void testObservableAnnotationOnInjectionPointWithWildcardedTypeParameterFails()
+   {
+      deployBeans(GoldbreastWaxbill_Broken.class);
+      try
+      {
+         activateDependentContext();
+         GoldbreastWaxbill_Broken bean = manager.getInstanceByType(GoldbreastWaxbill_Broken.class);
+         assert bean != null;
+      }
+      finally
+      {
+         deactivateDependentContext();
+      }
+   }
+
+   @Test(groups = { "broken", "events" }, expectedExceptions = { DefinitionException.class })
+   @SpecAssertion(section = "8.6")
+   public void testObservableAnnotationOnInjectionPointWithTypeVariabledTypeParameterFails()
+   {
+      deployBeans(JavaSparrow_Broken.class);
+      try
+      {
+         activateDependentContext();
+         JavaSparrow_Broken bean = manager.getInstanceByType(JavaSparrow_Broken.class);
+         assert bean != null;
+      }
+      finally
+      {
+         deactivateDependentContext();
+      }
+   }
+
+   @Test(groups = { "stub", "events" })
+   @SpecAssertion(section = "8.6")
+   public void testImplicitObserverBeanMatchesAPITypeOfInectionPoint()
+   {
+      assert false;
+   }
+
+   @Test(groups = { "stub", "events" })
+   @SpecAssertion(section = "8.6")
+   public void testImplicitObserverBeanMatchesBindingAnnotationsOfInjectionPoint()
+   {
+      assert false;
+   }
+
+   @Test(groups = { "stub", "events" })
+   @SpecAssertion(section = "8.6")
+   public void testImplicitObserverBeanHasStandardDeploymentType()
+   {
+      assert false;
+   }
+
+   @Test(groups = { "stub", "events" })
+   @SpecAssertion(section = "8.6")
+   public void testImplicitObserverBeanHasDependentScope()
+   {
+      assert false;
+   }
+
+   @Test(groups = { "stub", "events" })
+   @SpecAssertion(section = "8.6")
+   public void testFireMethodCallsManagerFireWithEventObject()
+   {
+      assert false;
+   }
+
+   @Test(groups = { "stub", "events" })
+   @SpecAssertion(section = "8.6")
+   public void testFireMethodCallsManagerFireWithBindingAnnotationsExceptObservable()
+   {
+      assert false;
+   }
+
+   @Test(groups = { "stub", "events" })
+   @SpecAssertion(section = "8.6")
+   public void testFireMethodCallsManagerFireWithAllBindingAnnotationInstances()
+   {
+      assert false;
+   }
+
+   @Test(groups = { "stub", "events" })
+   @SpecAssertion(section = "8.6")
+   public void testObserveMethodCallsManagerAddObserverWithObserverObject()
+   {
+      assert false;
+   }
+
+   @Test(groups = { "stub", "events" })
+   @SpecAssertion(section = "8.6")
+   public void testObserveMethodCallsManagerAddObserverWithAllBindingAnnotationsExceptObservable()
+   {
+      assert false;
+   }
+
+   @Test(groups = { "stub", "events" })
+   @SpecAssertion(section = "8.6")
+   public void testObserveMethodCallsManagerAddObserverWithAllBindingAnnotationInstance()
+   {
+      assert false;
+   }
+
+   @Test(groups = { "stub", "events" })
+   @SpecAssertion(section = "8.7")
+   public void testEventObjectContainsTypeVariablesWhenResolvingFails()
+   {
+      assert false;
+   }
+
+   @Test(groups = { "stub", "events" })
+   @SpecAssertion(section = "8.7")
+   public void testEventObjectContainsWildcardsWhenResolvingFails()
+   {
+      assert false;
+   }
+
+   @Test(groups = { "stub", "events" })
+   @SpecAssertion(section = "8.7")
+   public void testDuplicateBindingTypesWhenResolvingFails()
+   {
+      assert false;
+   }
+
+   @Test(groups = { "stub", "events" })
+   @SpecAssertion(section = "8.7")
+   public void testNonBindingTypeAnnotationWhenResolvingFails()
+   {
+      assert false;
+   }
+
+   @Test(groups = { "stub", "events" })
+   @SpecAssertion(section = "8.7")
+   public void testResolvingChecksEventType()
+   {
+      assert false;
+   }
+
+   @Test(groups = { "stub", "events" })
+   @SpecAssertion(section = "8.7")
+   public void testResolvingChecksTypeParameters()
+   {
+      assert false;
+   }
+
+   @Test(groups = { "stub", "events" })
+   @SpecAssertion(section = "8.7")
+   public void testResolvingChecksBindingTypes()
+   {
+      assert false;
+   }
+
+   @Test(groups = { "stub", "events" })
+   @SpecAssertion(section = "8.7")
+   public void testResolvingChecksBindingTypeMembers()
+   {
+      assert false;
+   }
+
+}


Property changes on: tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/event/EventBusTest.java
___________________________________________________________________
Name: svn:mime-type
   + text/plain

Added: tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/event/FinchKeeper.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/event/FinchKeeper.java	                        (rev 0)
+++ tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/event/FinchKeeper.java	2009-01-16 00:28:17 UTC (rev 999)
@@ -0,0 +1,28 @@
+package org.jboss.webbeans.tck.tests.event;
+
+import javax.webbeans.Named;
+import javax.webbeans.Observes;
+import javax.webbeans.RequestScoped;
+
+import org.jboss.webbeans.tck.tests.event.StarFinch.Mess;
+
+ at RequestScoped
+ at Named("FinchKeeper")
+public class FinchKeeper
+{
+   public FinchKeeper()
+   {
+   }
+
+   private boolean newMessDetected = false;
+
+   public void observesMesses(@Observes Mess aNewMess)
+   {
+      newMessDetected = true;
+   }
+   
+   public boolean isNewMessDetected()
+   {
+      return newMessDetected;
+   }
+}


Property changes on: tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/event/FinchKeeper.java
___________________________________________________________________
Name: svn:mime-type
   + text/plain

Added: tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/event/FoxTerrier.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/event/FoxTerrier.java	                        (rev 0)
+++ tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/event/FoxTerrier.java	2009-01-16 00:28:17 UTC (rev 999)
@@ -0,0 +1,16 @@
+package org.jboss.webbeans.tck.tests.event;
+
+import javax.ejb.Stateless;
+import javax.webbeans.Disposes;
+import javax.webbeans.Observes;
+import javax.webbeans.manager.Initialized;
+import javax.webbeans.manager.Manager;
+
+ at Stateless
+public class FoxTerrier
+{
+   public void observeInitialized(@Observes @Initialized Manager manager, @Disposes String badParam)
+   {
+   }
+
+}


Property changes on: tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/event/FoxTerrier.java
___________________________________________________________________
Name: svn:mime-type
   + text/plain

Added: tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/event/GoldbreastWaxbill_Broken.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/event/GoldbreastWaxbill_Broken.java	                        (rev 0)
+++ tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/event/GoldbreastWaxbill_Broken.java	2009-01-16 00:28:17 UTC (rev 999)
@@ -0,0 +1,15 @@
+package org.jboss.webbeans.tck.tests.event;
+
+import javax.webbeans.Event;
+import javax.webbeans.Fires;
+
+public class GoldbreastWaxbill_Broken
+{
+   @Fires
+   private Event<?> simpleEvent;
+
+   public void eliminateWarning()
+   {
+      assert simpleEvent != null;
+   }
+}


Property changes on: tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/event/GoldbreastWaxbill_Broken.java
___________________________________________________________________
Name: svn:mime-type
   + text/plain

Added: tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/event/JavaSparrow_Broken.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/event/JavaSparrow_Broken.java	                        (rev 0)
+++ tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/event/JavaSparrow_Broken.java	2009-01-16 00:28:17 UTC (rev 999)
@@ -0,0 +1,17 @@
+package org.jboss.webbeans.tck.tests.event;
+
+import java.util.ArrayList;
+
+import javax.webbeans.Event;
+import javax.webbeans.Fires;
+
+public class JavaSparrow_Broken
+{
+   @Fires
+   private Event<ArrayList<String>> simpleEvent;
+
+   public void eliminateWarning()
+   {
+      assert simpleEvent != null;
+   }
+}


Property changes on: tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/event/JavaSparrow_Broken.java
___________________________________________________________________
Name: svn:mime-type
   + text/plain

Added: tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/event/OrangeCheekedWaxbill.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/event/OrangeCheekedWaxbill.java	                        (rev 0)
+++ tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/event/OrangeCheekedWaxbill.java	2009-01-16 00:28:17 UTC (rev 999)
@@ -0,0 +1,30 @@
+package org.jboss.webbeans.tck.tests.event;
+
+import javax.webbeans.Event;
+import javax.webbeans.Fires;
+import javax.webbeans.Initializer;
+
+import org.jboss.webbeans.tck.tests.event.StarFinch.Mess;
+
+public class OrangeCheekedWaxbill
+{
+
+   private Mess someMess;
+
+   public OrangeCheekedWaxbill()
+   {
+   }
+
+   @Initializer
+   public void theInitializerMethod(@Fires Event<Mess> eventObject)
+   {
+      // Create a new mess and fire the event for it
+      someMess = new Mess();
+      eventObject.fire(someMess);
+   }
+
+   public Mess getSomeMess()
+   {
+      return someMess;
+   }
+}


Property changes on: tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/event/OrangeCheekedWaxbill.java
___________________________________________________________________
Name: svn:mime-type
   + text/plain

Added: tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/event/OwlFinch_Broken.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/event/OwlFinch_Broken.java	                        (rev 0)
+++ tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/event/OwlFinch_Broken.java	2009-01-16 00:28:17 UTC (rev 999)
@@ -0,0 +1,27 @@
+package org.jboss.webbeans.tck.tests.event;
+
+import javax.webbeans.Event;
+import javax.webbeans.Fires;
+import javax.webbeans.Observer;
+
+
+public class OwlFinch_Broken
+{
+   @Fires
+   private Event<String> simpleEvent;
+
+   public void methodThatFiresEvent()
+   {
+      simpleEvent.fire("An event", new AnimalStereotypeAnnotationLiteral());
+   }
+
+   public void methodThatRegistersObserver()
+   {
+      simpleEvent.observe(new Observer<String>()
+      {
+         public void notify(String event)
+         {
+         }
+      }, new AnimalStereotypeAnnotationLiteral());
+   }
+}


Property changes on: tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/event/OwlFinch_Broken.java
___________________________________________________________________
Name: svn:mime-type
   + text/plain

Added: tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/event/Pomeranian.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/event/Pomeranian.java	                        (rev 0)
+++ tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/event/Pomeranian.java	2009-01-16 00:28:17 UTC (rev 999)
@@ -0,0 +1,22 @@
+package org.jboss.webbeans.tck.tests.event;
+
+import javax.ejb.Stateful;
+import javax.webbeans.Named;
+import javax.webbeans.Observes;
+
+ at Stateful
+ at Tame
+ at Named("Teddy")
+public class Pomeranian implements PomeranianInterface
+{
+   public static Thread notificationThread;
+   
+   public void observeSimpleEvent(@Observes String someEvent)
+   {
+      notificationThread = Thread.currentThread();
+   }
+
+   public static void staticallyObserveEvent(@Observes String someEvent)
+   {
+   }
+}


Property changes on: tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/event/Pomeranian.java
___________________________________________________________________
Name: svn:mime-type
   + text/plain

Added: tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/event/PomeranianInterface.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/event/PomeranianInterface.java	                        (rev 0)
+++ tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/event/PomeranianInterface.java	2009-01-16 00:28:17 UTC (rev 999)
@@ -0,0 +1,6 @@
+package org.jboss.webbeans.tck.tests.event;
+
+public interface PomeranianInterface
+{
+   
+}


Property changes on: tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/event/PomeranianInterface.java
___________________________________________________________________
Name: svn:mime-type
   + text/plain

Added: tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/event/RecluseSpider.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/event/RecluseSpider.java	                        (rev 0)
+++ tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/event/RecluseSpider.java	2009-01-16 00:28:17 UTC (rev 999)
@@ -0,0 +1,20 @@
+package org.jboss.webbeans.tck.tests.event;
+
+import javax.webbeans.IfExists;
+import javax.webbeans.Observes;
+import javax.webbeans.RequestScoped;
+
+/**
+ * Simple web bean that conditionally listens to events.
+ *
+ */
+ at RequestScoped
+public class RecluseSpider
+{
+   public static boolean notified = false;
+   
+   public void observe(@Observes @IfExists String someEvent)
+   {
+      notified = true;
+   }
+}


Property changes on: tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/event/RecluseSpider.java
___________________________________________________________________
Name: svn:mime-type
   + text/plain

Added: tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/event/Role.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/event/Role.java	                        (rev 0)
+++ tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/event/Role.java	2009-01-16 00:28:17 UTC (rev 999)
@@ -0,0 +1,14 @@
+package org.jboss.webbeans.tck.tests.event;
+
+import static java.lang.annotation.RetentionPolicy.RUNTIME;
+
+import java.lang.annotation.Retention;
+
+import javax.webbeans.BindingType;
+
+ at BindingType
+ at Retention(RUNTIME)
+public @interface Role
+{
+   String value();
+}


Property changes on: tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/event/Role.java
___________________________________________________________________
Name: svn:mime-type
   + text/plain

Added: tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/event/RoleBinding.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/event/RoleBinding.java	                        (rev 0)
+++ tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/event/RoleBinding.java	2009-01-16 00:28:17 UTC (rev 999)
@@ -0,0 +1,20 @@
+package org.jboss.webbeans.tck.tests.event;
+
+import javax.webbeans.AnnotationLiteral;
+
+
+public class RoleBinding extends AnnotationLiteral<Role> implements Role
+{
+   private String value = null;
+
+   public RoleBinding(String value)
+   {
+      this.value = value;
+   }
+
+   public String value()
+   {
+      return value;
+   }
+
+}


Property changes on: tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/event/RoleBinding.java
___________________________________________________________________
Name: svn:mime-type
   + text/plain

Added: tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/event/StarFinch.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/event/StarFinch.java	                        (rev 0)
+++ tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/event/StarFinch.java	2009-01-16 00:28:17 UTC (rev 999)
@@ -0,0 +1,28 @@
+package org.jboss.webbeans.tck.tests.event;
+
+import javax.webbeans.Event;
+import javax.webbeans.Fires;
+import javax.webbeans.Named;
+import javax.webbeans.Produces;
+import javax.webbeans.RequestScoped;
+
+ at RequestScoped
+ at Named("StarFinch")
+public class StarFinch
+{
+   public static class Mess
+   {
+   }
+
+   public StarFinch()
+   {
+   }
+
+   @Produces
+   public Mess producerOfMesses(@Fires Event<Mess> messEvent)
+   {
+      Mess newMess = new Mess();
+      messEvent.fire(newMess);
+      return newMess;
+   }
+}


Property changes on: tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/event/StarFinch.java
___________________________________________________________________
Name: svn:mime-type
   + text/plain

Added: tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/event/SweeWaxbill_Broken.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/event/SweeWaxbill_Broken.java	                        (rev 0)
+++ tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/event/SweeWaxbill_Broken.java	2009-01-16 00:28:17 UTC (rev 999)
@@ -0,0 +1,28 @@
+package org.jboss.webbeans.tck.tests.event;
+
+import javax.webbeans.Event;
+import javax.webbeans.Fires;
+import javax.webbeans.Observer;
+
+
+public class SweeWaxbill_Broken
+{
+   @Fires @Role("Admin")
+   private Event<String> simpleEvent;
+
+   public void methodThatFiresEvent()
+   {
+      simpleEvent.fire("An event", new RoleBinding("Admin"));
+   }
+
+   public void methodThatRegistersObserver()
+   {
+      simpleEvent.observe(new Observer<String>()
+      {
+
+         public void notify(String event)
+         {
+         }
+      }, new RoleBinding("Admin"));
+   }
+}


Property changes on: tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/event/SweeWaxbill_Broken.java
___________________________________________________________________
Name: svn:mime-type
   + text/plain

Added: tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/event/Tame.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/event/Tame.java	                        (rev 0)
+++ tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/event/Tame.java	2009-01-16 00:28:17 UTC (rev 999)
@@ -0,0 +1,22 @@
+package org.jboss.webbeans.tck.tests.event;
+
+import static java.lang.annotation.ElementType.FIELD;
+import static java.lang.annotation.ElementType.METHOD;
+import static java.lang.annotation.ElementType.PARAMETER;
+import static java.lang.annotation.ElementType.TYPE;
+import static java.lang.annotation.RetentionPolicy.RUNTIME;
+
+import java.lang.annotation.Documented;
+import java.lang.annotation.Retention;
+import java.lang.annotation.Target;
+
+import javax.webbeans.BindingType;
+
+ at Target( { TYPE, METHOD, PARAMETER, FIELD })
+ at Retention(RUNTIME)
+ at Documented
+ at BindingType
+public @interface Tame
+{
+
+}


Property changes on: tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/event/Tame.java
___________________________________________________________________
Name: svn:mime-type
   + text/plain

Added: tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/event/TameAnnotationLiteral.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/event/TameAnnotationLiteral.java	                        (rev 0)
+++ tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/event/TameAnnotationLiteral.java	2009-01-16 00:28:17 UTC (rev 999)
@@ -0,0 +1,8 @@
+package org.jboss.webbeans.tck.tests.event;
+
+import javax.webbeans.AnnotationLiteral;
+
+public class TameAnnotationLiteral extends AnnotationLiteral<Tame> implements Tame
+{
+
+}


Property changes on: tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/event/TameAnnotationLiteral.java
___________________________________________________________________
Name: svn:mime-type
   + text/plain

Added: tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/event/TeaCupPomeranian.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/event/TeaCupPomeranian.java	                        (rev 0)
+++ tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/event/TeaCupPomeranian.java	2009-01-16 00:28:17 UTC (rev 999)
@@ -0,0 +1,30 @@
+package org.jboss.webbeans.tck.tests.event;
+
+import javax.webbeans.Named;
+import javax.webbeans.Observes;
+
+ at Tame
+ at Named("Teddy")
+public class TeaCupPomeranian
+{
+   public static class OversizedException extends RuntimeException
+   {
+      private static final long serialVersionUID = 1L;
+      
+   }
+   
+   public static class TooSmallException extends Exception
+   {
+      private static final long serialVersionUID = 1L;
+   }
+   
+   public void observeSimpleEvent(@Observes String someEvent)
+   {
+      throw new OversizedException();
+   }
+   
+   public void observeAnotherSimpleEvent(@Observes Integer someEvent) throws TooSmallException
+   {
+      throw new TooSmallException();
+   }
+}


Property changes on: tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/event/TeaCupPomeranian.java
___________________________________________________________________
Name: svn:mime-type
   + text/plain

Added: tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/event/Terrier.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/event/Terrier.java	                        (rev 0)
+++ tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/event/Terrier.java	2009-01-16 00:28:17 UTC (rev 999)
@@ -0,0 +1,9 @@
+package org.jboss.webbeans.tck.tests.event;
+
+import javax.ejb.Local;
+
+ at Local
+public interface Terrier
+{
+
+}


Property changes on: tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/event/Terrier.java
___________________________________________________________________
Name: svn:mime-type
   + text/plain

Added: tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/event/TibetanTerrier.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/event/TibetanTerrier.java	                        (rev 0)
+++ tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/event/TibetanTerrier.java	2009-01-16 00:28:17 UTC (rev 999)
@@ -0,0 +1,12 @@
+package org.jboss.webbeans.tck.tests.event;
+
+import javax.ejb.Stateless;
+import javax.webbeans.Observes;
+
+ at Stateless
+public class TibetanTerrier implements Terrier
+{
+   public void observeInitialized(@Observes String someEvent)
+   {
+   }
+}


Property changes on: tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/event/TibetanTerrier.java
___________________________________________________________________
Name: svn:mime-type
   + text/plain

Added: tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/event/YorkshireTerrier.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/event/YorkshireTerrier.java	                        (rev 0)
+++ tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/event/YorkshireTerrier.java	2009-01-16 00:28:17 UTC (rev 999)
@@ -0,0 +1,14 @@
+package org.jboss.webbeans.tck.tests.event;
+
+import javax.ejb.Stateless;
+import javax.webbeans.Observes;
+import javax.webbeans.manager.Initialized;
+import javax.webbeans.manager.Manager;
+
+ at Stateless
+public class YorkshireTerrier
+{
+   public void observeInitialized(@Observes @Initialized Manager manager, @Observes Boxer anotherDog)
+   {
+   }
+}


Property changes on: tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/event/YorkshireTerrier.java
___________________________________________________________________
Name: svn:mime-type
   + text/plain




More information about the weld-commits mailing list