[webbeans-commits] Webbeans SVN: r1111 - in tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/implementation/producer: field and 1 other directories.

webbeans-commits at lists.jboss.org webbeans-commits at lists.jboss.org
Tue Jan 20 01:43:18 EST 2009


Author: shane.bryzak at jboss.com
Date: 2009-01-20 01:43:18 -0500 (Tue, 20 Jan 2009)
New Revision: 1111

Added:
   tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/implementation/producer/field/
   tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/implementation/producer/field/Animal.java
   tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/implementation/producer/field/AnimalStereotype.java
   tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/implementation/producer/field/AnotherDeploymentType.java
   tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/implementation/producer/field/BlackWidow.java
   tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/implementation/producer/field/Chicken.java
   tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/implementation/producer/field/DaddyLongLegs.java
   tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/implementation/producer/field/DeadlyAnimal.java
   tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/implementation/producer/field/DeadlySpider.java
   tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/implementation/producer/field/DefangedTarantula.java
   tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/implementation/producer/field/Egg.java
   tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/implementation/producer/field/FunnelWeaver.java
   tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/implementation/producer/field/InfertileChicken.java
   tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/implementation/producer/field/LadybirdSpider.java
   tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/implementation/producer/field/OtherSpiderProducer.java
   tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/implementation/producer/field/OtherSpiderProducer_Broken.java
   tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/implementation/producer/field/ProducerFieldDefinitionTest.java
   tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/implementation/producer/field/ProducerFieldLifecycleTest.java
   tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/implementation/producer/field/Spider.java
   tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/implementation/producer/field/Tame.java
   tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/implementation/producer/field/Tarantula.java
   tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/implementation/producer/field/WolfSpider.java
   tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/implementation/producer/method/
   tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/implementation/producer/method/Animal.java
   tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/implementation/producer/method/AnimalStereotype.java
   tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/implementation/producer/method/AnotherDeploymentType.java
   tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/implementation/producer/method/BeanWithStaticProducerMethod.java
   tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/implementation/producer/method/BlackWidow.java
   tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/implementation/producer/method/Chicken.java
   tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/implementation/producer/method/DaddyLongLegs.java
   tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/implementation/producer/method/DeadlyAnimal.java
   tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/implementation/producer/method/DeadlySpider.java
   tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/implementation/producer/method/DefangedTarantula.java
   tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/implementation/producer/method/DisposalMethodDefinitionTest.java
   tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/implementation/producer/method/Egg.java
   tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/implementation/producer/method/FunnelWeaver.java
   tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/implementation/producer/method/InfertileChicken.java
   tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/implementation/producer/method/LadybirdSpider.java
   tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/implementation/producer/method/ProducerMethodDefinitionTest.java
   tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/implementation/producer/method/ProducerMethodLifecycleTest.java
   tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/implementation/producer/method/Spider.java
   tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/implementation/producer/method/SpiderProducer.java
   tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/implementation/producer/method/SpiderProducer_Broken.java
   tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/implementation/producer/method/Tame.java
   tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/implementation/producer/method/Tarantula.java
   tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/implementation/producer/method/WolfSpider.java
Log:
refactored

Added: tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/implementation/producer/field/Animal.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/implementation/producer/field/Animal.java	                        (rev 0)
+++ tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/implementation/producer/field/Animal.java	2009-01-20 06:43:18 UTC (rev 1111)
@@ -0,0 +1,6 @@
+package org.jboss.webbeans.tck.unit.implementation.producer.field;
+
+interface Animal
+{
+
+}

Added: tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/implementation/producer/field/AnimalStereotype.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/implementation/producer/field/AnimalStereotype.java	                        (rev 0)
+++ tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/implementation/producer/field/AnimalStereotype.java	2009-01-20 06:43:18 UTC (rev 1111)
@@ -0,0 +1,21 @@
+package org.jboss.webbeans.tck.unit.implementation.producer.field;
+
+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(requiredTypes=Animal.class)
+ at Target( { TYPE, METHOD, FIELD })
+ at Retention(RUNTIME)
+ at RequestScoped
+ at interface AnimalStereotype
+{
+
+}

Added: tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/implementation/producer/field/AnotherDeploymentType.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/implementation/producer/field/AnotherDeploymentType.java	                        (rev 0)
+++ tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/implementation/producer/field/AnotherDeploymentType.java	2009-01-20 06:43:18 UTC (rev 1111)
@@ -0,0 +1,20 @@
+package org.jboss.webbeans.tck.unit.implementation.producer.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.Documented;
+import java.lang.annotation.Retention;
+import java.lang.annotation.Target;
+
+import javax.webbeans.DeploymentType;
+
+ at Target( { TYPE, METHOD })
+ at Retention(RUNTIME)
+ at Documented
+ at DeploymentType
+ at interface AnotherDeploymentType
+{
+
+}

Added: tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/implementation/producer/field/BlackWidow.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/implementation/producer/field/BlackWidow.java	                        (rev 0)
+++ tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/implementation/producer/field/BlackWidow.java	2009-01-20 06:43:18 UTC (rev 1111)
@@ -0,0 +1,6 @@
+package org.jboss.webbeans.tck.unit.implementation.producer.field;
+
+class BlackWidow extends Spider implements DeadlySpider
+{
+
+}

Added: tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/implementation/producer/field/Chicken.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/implementation/producer/field/Chicken.java	                        (rev 0)
+++ tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/implementation/producer/field/Chicken.java	2009-01-20 06:43:18 UTC (rev 1111)
@@ -0,0 +1,11 @@
+package org.jboss.webbeans.tck.unit.implementation.producer.field;
+
+import javax.webbeans.Produces;
+
+class Chicken
+{
+   
+   @Produces
+   private Egg egg = new Egg();
+   
+}

Added: tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/implementation/producer/field/DaddyLongLegs.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/implementation/producer/field/DaddyLongLegs.java	                        (rev 0)
+++ tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/implementation/producer/field/DaddyLongLegs.java	2009-01-20 06:43:18 UTC (rev 1111)
@@ -0,0 +1,6 @@
+package org.jboss.webbeans.tck.unit.implementation.producer.field;
+
+class DaddyLongLegs extends Spider
+{
+
+}

Added: tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/implementation/producer/field/DeadlyAnimal.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/implementation/producer/field/DeadlyAnimal.java	                        (rev 0)
+++ tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/implementation/producer/field/DeadlyAnimal.java	2009-01-20 06:43:18 UTC (rev 1111)
@@ -0,0 +1,6 @@
+package org.jboss.webbeans.tck.unit.implementation.producer.field;
+
+interface DeadlyAnimal
+{
+
+}

Added: tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/implementation/producer/field/DeadlySpider.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/implementation/producer/field/DeadlySpider.java	                        (rev 0)
+++ tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/implementation/producer/field/DeadlySpider.java	2009-01-20 06:43:18 UTC (rev 1111)
@@ -0,0 +1,6 @@
+package org.jboss.webbeans.tck.unit.implementation.producer.field;
+
+interface DeadlySpider extends DeadlyAnimal
+{
+
+}

Added: tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/implementation/producer/field/DefangedTarantula.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/implementation/producer/field/DefangedTarantula.java	                        (rev 0)
+++ tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/implementation/producer/field/DefangedTarantula.java	2009-01-20 06:43:18 UTC (rev 1111)
@@ -0,0 +1,5 @@
+package org.jboss.webbeans.tck.unit.implementation.producer.field;
+class DefangedTarantula extends Tarantula
+{
+
+}

Added: tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/implementation/producer/field/Egg.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/implementation/producer/field/Egg.java	                        (rev 0)
+++ tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/implementation/producer/field/Egg.java	2009-01-20 06:43:18 UTC (rev 1111)
@@ -0,0 +1,6 @@
+package org.jboss.webbeans.tck.unit.implementation.producer.field;
+
+class Egg
+{
+   
+}

Added: tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/implementation/producer/field/FunnelWeaver.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/implementation/producer/field/FunnelWeaver.java	                        (rev 0)
+++ tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/implementation/producer/field/FunnelWeaver.java	2009-01-20 06:43:18 UTC (rev 1111)
@@ -0,0 +1,6 @@
+package org.jboss.webbeans.tck.unit.implementation.producer.field;
+
+class FunnelWeaver<T>
+{
+   
+}

Added: tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/implementation/producer/field/InfertileChicken.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/implementation/producer/field/InfertileChicken.java	                        (rev 0)
+++ tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/implementation/producer/field/InfertileChicken.java	2009-01-20 06:43:18 UTC (rev 1111)
@@ -0,0 +1,6 @@
+package org.jboss.webbeans.tck.unit.implementation.producer.field;
+
+class InfertileChicken extends Chicken
+{
+   
+}

Added: tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/implementation/producer/field/LadybirdSpider.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/implementation/producer/field/LadybirdSpider.java	                        (rev 0)
+++ tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/implementation/producer/field/LadybirdSpider.java	2009-01-20 06:43:18 UTC (rev 1111)
@@ -0,0 +1,14 @@
+package org.jboss.webbeans.tck.unit.implementation.producer.field;
+
+import javax.webbeans.ApplicationScoped;
+
+ at ApplicationScoped
+class LadybirdSpider extends Spider
+{
+
+   public void spinWeb()
+   {
+      
+   }
+   
+}

Added: tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/implementation/producer/field/OtherSpiderProducer.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/implementation/producer/field/OtherSpiderProducer.java	                        (rev 0)
+++ tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/implementation/producer/field/OtherSpiderProducer.java	2009-01-20 06:43:18 UTC (rev 1111)
@@ -0,0 +1,39 @@
+package org.jboss.webbeans.tck.unit.implementation.producer.field;
+
+import javax.webbeans.Named;
+import javax.webbeans.Produces;
+import javax.webbeans.Production;
+import javax.webbeans.RequestScoped;
+
+
+ at AnotherDeploymentType
+class OtherSpiderProducer
+{
+   
+   private static Spider[] ALL_SPIDERS = { new Tarantula(), new LadybirdSpider(), new DaddyLongLegs() };
+   
+   @Produces @Tame public Tarantula produceTameTarantula = new DefangedTarantula();
+   
+   @Produces public Tarantula produceTarantula = new Tarantula();
+   
+   @Produces @Named("blackWidow") public BlackWidow produceBlackWidow = new BlackWidow();
+   
+   @Produces @Named @RequestScoped public DaddyLongLegs produceDaddyLongLegs = new DaddyLongLegs();
+   
+   @Produces @Named @Production public LadybirdSpider getLadybirdSpider = new LadybirdSpider();
+   
+   @Produces @AnimalStereotype public WolfSpider produceWolfSpider = new WolfSpider();
+   
+   @Produces public Animal makeASpider = new WolfSpider();
+   
+   @Produces public int getWolfSpiderSize = 4;
+   
+   @Produces public Spider[] getSpiders = ALL_SPIDERS;
+   
+   @Produces public FunnelWeaver<?> getAnotherFunnelWeaver = new FunnelWeaver<Object>();
+   
+   @Produces public FunnelWeaver<Spider> getFunnelWeaverSpider = new FunnelWeaver<Spider>();
+   
+   @Produces public Spider getNullSpider =  null;
+
+}

Added: tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/implementation/producer/field/OtherSpiderProducer_Broken.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/implementation/producer/field/OtherSpiderProducer_Broken.java	                        (rev 0)
+++ tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/implementation/producer/field/OtherSpiderProducer_Broken.java	2009-01-20 06:43:18 UTC (rev 1111)
@@ -0,0 +1,34 @@
+package org.jboss.webbeans.tck.unit.implementation.producer.field;
+
+import javax.webbeans.Destructor;
+import javax.webbeans.Disposes;
+import javax.webbeans.Observes;
+import javax.webbeans.Produces;
+import javax.webbeans.Production;
+import javax.webbeans.RequestScoped;
+
+ at Production
+class OtherSpiderProducer_Broken
+{
+
+   @Produces
+   public String observe(@Observes String foo)
+   {
+      return "foo";
+   }
+   
+   @Produces
+   public String dispose(@Disposes String foo)
+   {
+      return "foo";
+   }
+   
+   @Produces @Destructor
+   public String destroy()
+   {
+      return "foo";
+   }
+   
+   @Produces @RequestScoped public Spider getRequestScopedSpider = null;
+   
+}

Added: tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/implementation/producer/field/ProducerFieldDefinitionTest.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/implementation/producer/field/ProducerFieldDefinitionTest.java	                        (rev 0)
+++ tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/implementation/producer/field/ProducerFieldDefinitionTest.java	2009-01-20 06:43:18 UTC (rev 1111)
@@ -0,0 +1,279 @@
+package org.jboss.webbeans.tck.unit.implementation.producer.field;
+
+import java.lang.reflect.Field;
+
+import javax.webbeans.Current;
+import javax.webbeans.DefinitionException;
+import javax.webbeans.Production;
+import javax.webbeans.RequestScoped;
+import javax.webbeans.manager.Bean;
+
+import org.jboss.webbeans.tck.AbstractTest;
+import org.jboss.webbeans.tck.impl.SpecAssertion;
+import org.jboss.webbeans.tck.impl.SpecVersion;
+import org.testng.annotations.Test;
+
+ at SpecVersion("20081206")
+public class ProducerFieldDefinitionTest extends AbstractTest
+{
+   
+   @SuppressWarnings("unchecked")
+   @Test(groups="producerField") @SpecAssertion(section="2.5.3")
+   public void testProducerFieldInheritsDeploymentTypeOfDeclaringWebBean() throws Exception
+   {
+      Bean<OtherSpiderProducer> bean = createSimpleBean(OtherSpiderProducer.class);
+      manager.addBean(bean);
+      Field field = OtherSpiderProducer.class.getField("produceTameTarantula");
+      Bean<Tarantula> tarantulaModel = createProducerFieldBean(field, bean);
+      tarantulaModel.getDeploymentType().equals(AnotherDeploymentType.class);
+   }
+   
+   /*@Test(groups="producerField", expectedExceptions=DefinitionException.class) @SpecAssertion(section="3.5")
+   public void testStaticField() throws Exception
+   {
+      SimpleBean<BeanWithStaticProducerField> bean = createSimpleBean(BeanWithStaticProducerField.class);
+      manager.addBean(bean);
+      Field field = BeanWithStaticProducerField.class.getField("getString");
+      createProducerFieldBean(String.class, field, bean);
+   }*/
+   
+   @Test(groups={"stub", "producerField", "enterpriseBeans", "stub"}, expectedExceptions=DefinitionException.class) @SpecAssertion(section="3.5")
+   public void testProducerFieldIsNotBusinessField() throws Exception
+   {
+      assert false;
+   }
+   
+   @Test(groups="producerField") @SpecAssertion(section="3.5")
+   public void testParameterizedReturnType() throws Exception
+   {
+      Bean<OtherSpiderProducer> bean = createSimpleBean(OtherSpiderProducer.class);
+      manager.addBean(bean);
+      Field field = OtherSpiderProducer.class.getField("getFunnelWeaverSpider");
+      createProducerFieldBean(field, bean);
+   }
+   
+   @Test(groups="producerField", expectedExceptions=DefinitionException.class) @SpecAssertion(section="3.5")
+   public void testParameterizedReturnTypeWithWildcard() throws Exception
+   {
+      Bean<OtherSpiderProducer> bean = createSimpleBean(OtherSpiderProducer.class);
+      manager.addBean(bean);
+      Field field = OtherSpiderProducer.class.getField("getAnotherFunnelWeaver");
+      createProducerFieldBean(field, bean);
+   }
+   
+   @Test(groups={"stub", "producerField", "deployment"}) @SpecAssertion(section="3.5")
+   public void testBeanDeclaresMultipleProducerFields()
+   {
+      assert false;
+   }
+   
+   @SuppressWarnings("unchecked")
+   @Test(groups="producerField") @SpecAssertion(section={"3.5", "2.3.1"})
+   public void testDefaultBindingType() throws Exception
+   {
+      Bean<OtherSpiderProducer> bean = createSimpleBean(OtherSpiderProducer.class);
+      manager.addBean(bean);
+      Field field = OtherSpiderProducer.class.getField("produceTarantula");
+      Bean<Tarantula> tarantulaModel = createProducerFieldBean(field, bean);
+      assert tarantulaModel.getBindings().size() == 1;
+      assert tarantulaModel.getBindings().iterator().next().annotationType().equals(Current.class);
+   }
+   
+   @SuppressWarnings("unchecked")
+   @Test(groups="producerField") @SpecAssertion(section="3.5.1")
+   public void testApiTypeForClassReturn() throws Exception
+   {
+      Bean<OtherSpiderProducer> bean = createSimpleBean(OtherSpiderProducer.class);
+      manager.addBean(bean);
+      Field field = OtherSpiderProducer.class.getField("produceTarantula");
+      Bean<Tarantula> tarantulaModel = createProducerFieldBean(field, bean);
+      assert tarantulaModel.getTypes().size() == 6;
+      assert tarantulaModel.getTypes().contains(Tarantula.class);
+      assert tarantulaModel.getTypes().contains(DeadlySpider.class);
+      assert tarantulaModel.getTypes().contains(Spider.class);
+      assert tarantulaModel.getTypes().contains(Animal.class);
+      assert tarantulaModel.getTypes().contains(DeadlyAnimal.class);
+      assert tarantulaModel.getTypes().contains(Object.class);
+   }
+   
+   @SuppressWarnings("unchecked")
+   @Test(groups="producerField") @SpecAssertion(section="3.5.1")
+   public void testApiTypeForInterfaceReturn() throws Exception
+   {
+      Bean<OtherSpiderProducer> bean = createSimpleBean(OtherSpiderProducer.class);
+      manager.addBean(bean);
+      Field field = OtherSpiderProducer.class.getField("makeASpider");
+      Bean<Animal> animalModel = createProducerFieldBean(field, bean);
+      assert animalModel.getTypes().size() == 2;
+      assert animalModel.getTypes().contains(Animal.class);
+      assert animalModel.getTypes().contains(Object.class);
+   }
+   
+   @SuppressWarnings("unchecked")
+   @Test(groups="producerField") @SpecAssertion(section="3.5.1")
+   public void testApiTypeForPrimitiveReturn() throws Exception
+   {
+      Bean<OtherSpiderProducer> bean = createSimpleBean(OtherSpiderProducer.class);
+      manager.addBean(bean);
+      Field field = OtherSpiderProducer.class.getField("getWolfSpiderSize");
+      Bean<Integer> intModel = createProducerFieldBean(field, bean);
+      assert intModel.getTypes().size() == 2;
+      assert intModel.getTypes().contains(int.class);
+      assert intModel.getTypes().contains(Object.class);
+   }
+   
+   @SuppressWarnings("unchecked")
+   @Test(groups="producerField") @SpecAssertion(section={"3.5.1", "2.2"})
+   public void testApiTypeForArrayTypeReturn() throws Exception
+   {
+      Bean<OtherSpiderProducer> bean = createSimpleBean(OtherSpiderProducer.class);
+      manager.addBean(bean);
+      Field field = OtherSpiderProducer.class.getField("getSpiders");
+      Bean<Spider[]> spidersModel = createProducerFieldBean(field, bean);
+      assert spidersModel.getTypes().size() == 2;
+      assert spidersModel.getTypes().contains(Spider[].class);
+      assert spidersModel.getTypes().contains(Object.class);
+   }
+   
+   @SuppressWarnings("unchecked")
+   @Test(groups="producerField") @SpecAssertion(section="3.5.2")
+   public void testBindingType() throws Exception
+   {
+      Bean<OtherSpiderProducer> bean = createSimpleBean(OtherSpiderProducer.class);
+      manager.addBean(bean);
+      Field field = OtherSpiderProducer.class.getField("produceTameTarantula");
+      Bean<Tarantula> tarantulaModel = createProducerFieldBean(field, bean);
+      assert tarantulaModel.getBindings().size() == 1;
+      assert tarantulaModel.getBindings().iterator().next().annotationType().equals(Tame.class);
+   }
+   
+   @SuppressWarnings("unchecked")
+   @Test(groups="producerField") @SpecAssertion(section="3.5.2")
+   public void testScopeType() throws Exception
+   {
+      Bean<OtherSpiderProducer> bean = createSimpleBean(OtherSpiderProducer.class);
+      manager.addBean(bean);
+      Field field = OtherSpiderProducer.class.getField("produceDaddyLongLegs");
+      Bean<DaddyLongLegs> daddyLongLegsModel = createProducerFieldBean(field, bean);
+      assert daddyLongLegsModel.getScopeType().equals(RequestScoped.class);
+      
+      // TODO Inherit scope from returned web bean?
+   }
+   
+   @SuppressWarnings("unchecked")
+   @Test(groups="producerField") @SpecAssertion(section="3.5.2")
+   public void testDeploymentType() throws Exception
+   {
+      Bean<OtherSpiderProducer> bean = createSimpleBean(OtherSpiderProducer.class);
+      manager.addBean(bean);
+      Field field = OtherSpiderProducer.class.getField("getLadybirdSpider");
+      Bean<LadybirdSpider> ladybirdSpiderModel = createProducerFieldBean(field, bean);
+      assert ladybirdSpiderModel.getDeploymentType().equals(Production.class);
+   }
+   
+   @SuppressWarnings("unchecked")
+   @Test(groups="producerField") @SpecAssertion(section="3.5.2")
+   public void testNamedField() throws Exception
+   {
+      Bean<OtherSpiderProducer> bean = createSimpleBean(OtherSpiderProducer.class);
+      manager.addBean(bean);
+      Field field = OtherSpiderProducer.class.getField("produceBlackWidow");
+      Bean<BlackWidow> blackWidowSpiderModel = createProducerFieldBean(field, bean);
+      assert blackWidowSpiderModel.getName().equals("blackWidow");
+   }
+   
+   @SuppressWarnings("unchecked")
+   @Test(groups="producerField") @SpecAssertion(section="3.5.2")
+   public void testDefaultNamedField() throws Exception
+   {
+      Bean<OtherSpiderProducer> bean = createSimpleBean(OtherSpiderProducer.class);
+      manager.addBean(bean);
+      Field field = OtherSpiderProducer.class.getField("produceDaddyLongLegs");
+      Bean<DaddyLongLegs> daddyLongLegsSpiderModel = createProducerFieldBean(field, bean);
+      assert daddyLongLegsSpiderModel.getName().equals("produceDaddyLongLegs");
+   }
+   
+   @Test(groups={"stub", "disposalField"}) @SpecAssertion(section="3.3.5")
+   public void testDisposalFieldNonStatic()
+   {
+      // TODO Placeholder
+      assert false;
+   }
+   
+   @Test(groups={"stub", "disposalField"}) @SpecAssertion(section="3.3.5")
+   public void testDisposalFieldFieldDeclaredOnWebBeanImplementationClass()
+   {
+      // TODO Placeholder
+      assert false;
+   }
+   
+   @Test(groups={"stub", "disposalField"}) @SpecAssertion(section="3.3.5")
+   public void testDisposalFieldBindingAnnotations()
+   {
+      // TODO Placeholder
+      assert false;
+   }
+   
+   @Test(groups={"stub", "disposalField"}) @SpecAssertion(section="3.3.5")
+   public void testDisposalFieldDefaultBindingAnnotations()
+   {
+      // TODO Placeholder
+      assert false;
+   }
+   
+   @Test(groups={"stub", "disposalField"}) @SpecAssertion(section="3.3.5")
+   public void testDisposalFieldDoesNotResolveToProducerField()
+   {
+      // TODO Placeholder
+      assert false;
+   }
+   
+   @Test(groups={"stub", "disposalField"}) @SpecAssertion(section="3.3.5")
+   public void testDisposalFieldDeclaredOnEnabledBean()
+   {
+      // TODO Placeholder
+      // TODO Move this
+      
+      assert false;
+   }
+   
+   @Test(groups={"stub", "disposalField"}) @SpecAssertion(section="3.3.5")
+   public void testBeanCanDeclareMultipleDisposalFields()
+   {
+      // TODO move this 
+      // TODO Placeholder
+      assert false;
+   }
+   
+   @Test(groups={"stub", "disposalField"}) @SpecAssertion(section="3.3.5")
+   public void testProducerFieldHasNoMoreThanOneDisposalField()
+   {
+      // TODO move this 
+      // TODO Placeholder
+      assert false;
+   }
+   
+   @SuppressWarnings("unchecked")
+   @Test(groups="producerField") @SpecAssertion(section={"2.7.2", "3.5.2", "2.2"})
+   public void testStereotype() throws Exception
+   {
+      Bean<OtherSpiderProducer> bean = createSimpleBean(OtherSpiderProducer.class);
+      manager.addBean(bean);
+      Field field = OtherSpiderProducer.class.getField("produceWolfSpider");
+      Bean<WolfSpider> wolfSpiderModel = createProducerFieldBean(field, bean);
+ 
+      
+      // TODO reimplement stereotype tests
+      //assert wolfSpiderModel.getMergedStereotypes().getRequiredTypes().size() == 1;
+      //assert wolfSpiderModel.getMergedStereotypes().getRequiredTypes().contains(Animal.class);
+      
+      assert wolfSpiderModel.getScopeType().equals(RequestScoped.class);
+   }
+   
+   @Test @SpecAssertion(section="4.2")
+   public void testNonStaticProducerFieldNotInherited()
+   {
+      deployBeans(InfertileChicken.class);
+      assert manager.resolveByType(Egg.class).size() == 0;
+   }
+}
\ No newline at end of file

Added: tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/implementation/producer/field/ProducerFieldLifecycleTest.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/implementation/producer/field/ProducerFieldLifecycleTest.java	                        (rev 0)
+++ tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/implementation/producer/field/ProducerFieldLifecycleTest.java	2009-01-20 06:43:18 UTC (rev 1111)
@@ -0,0 +1,58 @@
+package org.jboss.webbeans.tck.unit.implementation.producer.field;
+
+import java.lang.reflect.Field;
+
+import javax.webbeans.IllegalProductException;
+import javax.webbeans.manager.Bean;
+
+import org.jboss.webbeans.tck.AbstractTest;
+import org.jboss.webbeans.tck.impl.SpecAssertion;
+import org.jboss.webbeans.tck.impl.SpecVersion;
+import org.testng.annotations.Test;
+
+ at SpecVersion("20081206")
+public class ProducerFieldLifecycleTest extends AbstractTest
+{
+   
+   @SuppressWarnings("unchecked")
+   @Test(groups={"producerField", "broken"}) @SpecAssertion(section="5.6")
+   public void testProducerFieldBeanCreate() throws Exception
+   {
+      Bean<OtherSpiderProducer> spiderProducer = createSimpleBean(OtherSpiderProducer.class); 
+      manager.addBean(spiderProducer);
+      Field method = OtherSpiderProducer.class.getField("produceTarantula");
+      Bean<Tarantula> tarantulaBean = createProducerFieldBean(method, spiderProducer);
+      Tarantula tarantula = tarantulaBean.create();
+      assert tarantula != null;
+   }
+   
+   @Test(groups={"stub", "specialization"}) @SpecAssertion(section="3.3.3")
+   public void testSpecializedBeanAlwaysUsed()
+   {
+      // TODO Placeholder
+      assert false;
+   }
+   
+   
+   @SuppressWarnings("unchecked")
+   @Test(groups={"producerField", "broken"}) @SpecAssertion(section={"3.5", "5.6", "8.3"})
+   public void testProducerFieldReturnsNullIsDependent() throws Exception
+   {
+      Bean<OtherSpiderProducer> spiderProducer = createSimpleBean(OtherSpiderProducer.class); 
+      manager.addBean(spiderProducer);
+      Field method = OtherSpiderProducer.class.getField("getNullSpider");
+      Bean<Spider> spiderBean = createProducerFieldBean(method, spiderProducer);
+      Spider spider = spiderBean.create();
+      assert spider == null;
+   }
+   
+   @Test(groups="producerField", expectedExceptions=IllegalProductException.class) @SpecAssertion(section={"3.5", "5.6"})
+   public void testProducerFieldReturnsNullIsNotDependent() throws Exception
+   {
+      Bean<OtherSpiderProducer_Broken> spiderProducer = createSimpleBean(OtherSpiderProducer_Broken.class);
+      manager.addBean(spiderProducer);
+      Field method = OtherSpiderProducer_Broken.class.getField("getRequestScopedSpider");
+      createProducerFieldBean(method, spiderProducer).create();
+   }
+   
+}

Added: tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/implementation/producer/field/Spider.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/implementation/producer/field/Spider.java	                        (rev 0)
+++ tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/implementation/producer/field/Spider.java	2009-01-20 06:43:18 UTC (rev 1111)
@@ -0,0 +1,11 @@
+package org.jboss.webbeans.tck.unit.implementation.producer.field;
+
+class Spider implements Animal
+{
+
+   public final void layEggs()
+   {
+      
+   }
+   
+}

Added: tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/implementation/producer/field/Tame.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/implementation/producer/field/Tame.java	                        (rev 0)
+++ tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/implementation/producer/field/Tame.java	2009-01-20 06:43:18 UTC (rev 1111)
@@ -0,0 +1,22 @@
+package org.jboss.webbeans.tck.unit.implementation.producer.field;
+
+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
+ at interface Tame
+{
+
+}

Added: tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/implementation/producer/field/Tarantula.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/implementation/producer/field/Tarantula.java	                        (rev 0)
+++ tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/implementation/producer/field/Tarantula.java	2009-01-20 06:43:18 UTC (rev 1111)
@@ -0,0 +1,6 @@
+package org.jboss.webbeans.tck.unit.implementation.producer.field;
+
+class Tarantula extends Spider implements DeadlySpider
+{
+
+}

Added: tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/implementation/producer/field/WolfSpider.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/implementation/producer/field/WolfSpider.java	                        (rev 0)
+++ tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/implementation/producer/field/WolfSpider.java	2009-01-20 06:43:18 UTC (rev 1111)
@@ -0,0 +1,6 @@
+package org.jboss.webbeans.tck.unit.implementation.producer.field;
+
+class WolfSpider implements Animal
+{
+   
+}

Added: tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/implementation/producer/method/Animal.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/implementation/producer/method/Animal.java	                        (rev 0)
+++ tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/implementation/producer/method/Animal.java	2009-01-20 06:43:18 UTC (rev 1111)
@@ -0,0 +1,6 @@
+package org.jboss.webbeans.tck.unit.implementation.producer.method;
+
+interface Animal
+{
+
+}

Added: tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/implementation/producer/method/AnimalStereotype.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/implementation/producer/method/AnimalStereotype.java	                        (rev 0)
+++ tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/implementation/producer/method/AnimalStereotype.java	2009-01-20 06:43:18 UTC (rev 1111)
@@ -0,0 +1,21 @@
+package org.jboss.webbeans.tck.unit.implementation.producer.method;
+
+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(requiredTypes=Animal.class)
+ at Target( { TYPE, METHOD, FIELD })
+ at Retention(RUNTIME)
+ at RequestScoped
+ at interface AnimalStereotype
+{
+
+}

Added: tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/implementation/producer/method/AnotherDeploymentType.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/implementation/producer/method/AnotherDeploymentType.java	                        (rev 0)
+++ tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/implementation/producer/method/AnotherDeploymentType.java	2009-01-20 06:43:18 UTC (rev 1111)
@@ -0,0 +1,20 @@
+package org.jboss.webbeans.tck.unit.implementation.producer.method;
+
+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.Documented;
+import java.lang.annotation.Retention;
+import java.lang.annotation.Target;
+
+import javax.webbeans.DeploymentType;
+
+ at Target( { TYPE, METHOD })
+ at Retention(RUNTIME)
+ at Documented
+ at DeploymentType
+ at interface AnotherDeploymentType
+{
+
+}

Added: tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/implementation/producer/method/BeanWithStaticProducerMethod.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/implementation/producer/method/BeanWithStaticProducerMethod.java	                        (rev 0)
+++ tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/implementation/producer/method/BeanWithStaticProducerMethod.java	2009-01-20 06:43:18 UTC (rev 1111)
@@ -0,0 +1,15 @@
+package org.jboss.webbeans.tck.unit.implementation.producer.method;
+
+import javax.webbeans.Produces;
+import javax.webbeans.Production;
+
+ at Production
+class BeanWithStaticProducerMethod
+{
+
+   @Produces public static String getString()
+   {
+      return "Pete";
+   }
+   
+}

Added: tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/implementation/producer/method/BlackWidow.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/implementation/producer/method/BlackWidow.java	                        (rev 0)
+++ tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/implementation/producer/method/BlackWidow.java	2009-01-20 06:43:18 UTC (rev 1111)
@@ -0,0 +1,6 @@
+package org.jboss.webbeans.tck.unit.implementation.producer.method;
+
+class BlackWidow extends Spider implements DeadlySpider
+{
+
+}
Added: tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/implementation/producer/method/Chicken.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/implementation/producer/method/Chicken.java	                        (rev 0)
+++ tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/implementation/producer/method/Chicken.java	2009-01-20 06:43:18 UTC (rev 1111)
@@ -0,0 +1,14 @@
+package org.jboss.webbeans.tck.unit.implementation.producer.method;
+
+import javax.webbeans.Produces;
+
+class Chicken
+{
+   
+   @Produces
+   public Egg produceEgg()
+   {
+      return new Egg();
+   }
+   
+}

Added: tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/implementation/producer/method/DaddyLongLegs.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/implementation/producer/method/DaddyLongLegs.java	                        (rev 0)
+++ tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/implementation/producer/method/DaddyLongLegs.java	2009-01-20 06:43:18 UTC (rev 1111)
@@ -0,0 +1,6 @@
+package org.jboss.webbeans.tck.unit.implementation.producer.method;
+
+class DaddyLongLegs extends Spider
+{
+
+}

Added: tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/implementation/producer/method/DeadlyAnimal.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/implementation/producer/method/DeadlyAnimal.java	                        (rev 0)
+++ tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/implementation/producer/method/DeadlyAnimal.java	2009-01-20 06:43:18 UTC (rev 1111)
@@ -0,0 +1,6 @@
+package org.jboss.webbeans.tck.unit.implementation.producer.method;
+
+interface DeadlyAnimal
+{
+
+}

Added: tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/implementation/producer/method/DeadlySpider.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/implementation/producer/method/DeadlySpider.java	                        (rev 0)
+++ tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/implementation/producer/method/DeadlySpider.java	2009-01-20 06:43:18 UTC (rev 1111)
@@ -0,0 +1,6 @@
+package org.jboss.webbeans.tck.unit.implementation.producer.method;
+
+interface DeadlySpider extends DeadlyAnimal
+{
+
+}

Added: tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/implementation/producer/method/DefangedTarantula.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/implementation/producer/method/DefangedTarantula.java	                        (rev 0)
+++ tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/implementation/producer/method/DefangedTarantula.java	2009-01-20 06:43:18 UTC (rev 1111)
@@ -0,0 +1,6 @@
+package org.jboss.webbeans.tck.unit.implementation.producer.method;
+
+class DefangedTarantula extends Tarantula
+{
+
+}

Added: tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/implementation/producer/method/DisposalMethodDefinitionTest.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/implementation/producer/method/DisposalMethodDefinitionTest.java	                        (rev 0)
+++ tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/implementation/producer/method/DisposalMethodDefinitionTest.java	2009-01-20 06:43:18 UTC (rev 1111)
@@ -0,0 +1,15 @@
+package org.jboss.webbeans.tck.unit.implementation.producer.method;
+
+import org.jboss.webbeans.tck.impl.SpecAssertion;
+import org.testng.annotations.Test;
+
+public class DisposalMethodDefinitionTest
+{
+   
+   @Test(groups="stub") @SpecAssertion(section="4.2")
+   public void testNonStaticDisposalMethodNotInherited()
+   {
+      
+   }
+   
+}

Added: tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/implementation/producer/method/Egg.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/implementation/producer/method/Egg.java	                        (rev 0)
+++ tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/implementation/producer/method/Egg.java	2009-01-20 06:43:18 UTC (rev 1111)
@@ -0,0 +1,6 @@
+package org.jboss.webbeans.tck.unit.implementation.producer.method;
+
+class Egg
+{
+   
+}

Added: tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/implementation/producer/method/FunnelWeaver.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/implementation/producer/method/FunnelWeaver.java	                        (rev 0)
+++ tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/implementation/producer/method/FunnelWeaver.java	2009-01-20 06:43:18 UTC (rev 1111)
@@ -0,0 +1,6 @@
+package org.jboss.webbeans.tck.unit.implementation.producer.method;
+
+class FunnelWeaver<T>
+{
+   
+}

Added: tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/implementation/producer/method/InfertileChicken.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/implementation/producer/method/InfertileChicken.java	                        (rev 0)
+++ tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/implementation/producer/method/InfertileChicken.java	2009-01-20 06:43:18 UTC (rev 1111)
@@ -0,0 +1,6 @@
+package org.jboss.webbeans.tck.unit.implementation.producer.method;
+
+class InfertileChicken extends Chicken
+{
+   
+}

Added: tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/implementation/producer/method/LadybirdSpider.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/implementation/producer/method/LadybirdSpider.java	                        (rev 0)
+++ tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/implementation/producer/method/LadybirdSpider.java	2009-01-20 06:43:18 UTC (rev 1111)
@@ -0,0 +1,14 @@
+package org.jboss.webbeans.tck.unit.implementation.producer.method;
+
+import javax.webbeans.ApplicationScoped;
+
+ at ApplicationScoped
+class LadybirdSpider extends Spider
+{
+
+   public void spinWeb()
+   {
+      
+   }
+   
+}

Added: tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/implementation/producer/method/ProducerMethodDefinitionTest.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/implementation/producer/method/ProducerMethodDefinitionTest.java	                        (rev 0)
+++ tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/implementation/producer/method/ProducerMethodDefinitionTest.java	2009-01-20 06:43:18 UTC (rev 1111)
@@ -0,0 +1,303 @@
+package org.jboss.webbeans.tck.unit.implementation.producer.method;
+
+import java.lang.reflect.Method;
+
+import javax.webbeans.Current;
+import javax.webbeans.DefinitionException;
+import javax.webbeans.Production;
+import javax.webbeans.RequestScoped;
+import javax.webbeans.manager.Bean;
+
+import org.jboss.webbeans.tck.AbstractTest;
+import org.jboss.webbeans.tck.impl.SpecAssertion;
+import org.jboss.webbeans.tck.impl.SpecVersion;
+import org.testng.annotations.Test;
+
+ at SpecVersion("20081206")
+public class ProducerMethodDefinitionTest extends AbstractTest
+{
+   
+   @Test(groups="producerMethod") @SpecAssertion(section="2.5.3")
+   public void testProducerMethodInheritsDeploymentTypeOfDeclaringWebBean() throws Exception
+   {
+      Bean<SpiderProducer> bean = createSimpleBean(SpiderProducer.class);
+      manager.addBean(bean);
+      Method method = SpiderProducer.class.getMethod("produceTameTarantula");
+      Bean<Tarantula> tarantulaModel = createProducerMethodBean(method, bean);
+      tarantulaModel.getDeploymentType().equals(AnotherDeploymentType.class);
+   }
+   
+   @Test(groups="producerMethod") @SpecAssertion(section="3.4")
+   public void testStaticMethod() throws Exception
+   {
+      Bean<BeanWithStaticProducerMethod> bean = createSimpleBean(BeanWithStaticProducerMethod.class);
+      manager.addBean(bean);
+      Method method = BeanWithStaticProducerMethod.class.getMethod("getString");
+      createProducerMethodBean(method, bean);
+   }
+   
+   @Test(groups={"stub", "producerMethod", "enterpriseBeans", "stub"}, expectedExceptions=DefinitionException.class) @SpecAssertion(section="3.4")
+   public void testProducerMethodIsNotBusinessMethod() throws Exception
+   {
+      assert false;
+   }
+   
+   @Test(groups="producerMethod") @SpecAssertion(section="3.4")
+   public void testParameterizedReturnType() throws Exception
+   {
+      Bean<SpiderProducer> bean = createSimpleBean(SpiderProducer.class);
+      manager.addBean(bean);
+      Method method = SpiderProducer.class.getMethod("getFunnelWeaverSpider");
+      createProducerMethodBean(method, bean);
+   }
+   
+   @Test(groups="producerMethod", expectedExceptions=DefinitionException.class) @SpecAssertion(section="3.4")
+   public void testParameterizedReturnTypeWithWildcard() throws Exception
+   {
+      Bean<SpiderProducer> bean = createSimpleBean(SpiderProducer.class);
+      manager.addBean(bean);
+      Method method = SpiderProducer.class.getMethod("getAnotherFunnelWeaver");
+      createProducerMethodBean(method, bean);
+   }
+   
+   @Test(groups="producerMethod", expectedExceptions=DefinitionException.class) @SpecAssertion(section="3.4")
+   public void testParameterizedReturnTypeWithTypeParameter() throws Exception
+   {
+      Bean<SpiderProducer> bean = createSimpleBean(SpiderProducer.class);
+      manager.addBean(bean);
+      Method method = SpiderProducer.class.getMethod("getFunnelWeaver");
+      createProducerMethodBean(method, bean);
+   }
+   
+   @Test(groups="producerMethod") @SpecAssertion(section={"3.4", "2.3.1"})
+   public void testDefaultBindingType() throws Exception
+   {
+      Bean<SpiderProducer> bean = createSimpleBean(SpiderProducer.class);
+      manager.addBean(bean);
+      Method method = SpiderProducer.class.getMethod("produceTarantula");
+      Bean<Tarantula> tarantulaModel = createProducerMethodBean(method, bean);
+      assert tarantulaModel.getBindings().size() == 1;
+      assert tarantulaModel.getBindings().iterator().next().annotationType().equals(Current.class);
+   }
+   
+   @Test(groups="producerMethod") @SpecAssertion(section="3.4.1")
+   public void testApiTypeForClassReturn() throws Exception
+   {
+      Bean<SpiderProducer> bean = createSimpleBean(SpiderProducer.class);
+      manager.addBean(bean);
+      Method method = SpiderProducer.class.getMethod("produceTarantula");
+      Bean<Tarantula> tarantulaModel = createProducerMethodBean(method, bean);
+      assert tarantulaModel.getTypes().size() == 6;
+      assert tarantulaModel.getTypes().contains(Tarantula.class);
+      assert tarantulaModel.getTypes().contains(DeadlySpider.class);
+      assert tarantulaModel.getTypes().contains(Spider.class);
+      assert tarantulaModel.getTypes().contains(Animal.class);
+      assert tarantulaModel.getTypes().contains(DeadlyAnimal.class);
+      assert tarantulaModel.getTypes().contains(Object.class);
+   }
+   
+   @Test(groups="producerMethod") @SpecAssertion(section="3.4.1")
+   public void testApiTypeForInterfaceReturn() throws Exception
+   {
+      Bean<SpiderProducer> bean = createSimpleBean(SpiderProducer.class);
+      manager.addBean(bean);
+      Method method = SpiderProducer.class.getMethod("makeASpider");
+      Bean<Animal> animalModel = createProducerMethodBean(method, bean);
+      assert animalModel.getTypes().size() == 2;
+      assert animalModel.getTypes().contains(Animal.class);
+      assert animalModel.getTypes().contains(Object.class);
+   }
+   
+   @Test(groups="producerMethod") @SpecAssertion(section="3.4.1")
+   public void testApiTypeForPrimitiveReturn() throws Exception
+   {
+      Bean<SpiderProducer> bean = createSimpleBean(SpiderProducer.class);
+      manager.addBean(bean);
+      Method method = SpiderProducer.class.getMethod("getWolfSpiderSize");
+      Bean<Integer> intModel = createProducerMethodBean(method, bean);
+      assert intModel.getTypes().size() == 2;
+      assert intModel.getTypes().contains(int.class);
+      assert intModel.getTypes().contains(Object.class);
+   }
+   
+   @Test(groups="producerMethod") @SpecAssertion(section={"3.4.1", "2.2"})
+   public void testApiTypeForArrayTypeReturn() throws Exception
+   {
+      Bean<SpiderProducer> bean = createSimpleBean(SpiderProducer.class);
+      manager.addBean(bean);
+      Method method = SpiderProducer.class.getMethod("getSpiders");
+      Bean<Spider[]> spidersModel = createProducerMethodBean(method, bean);
+      assert spidersModel.getTypes().size() == 2;
+      assert spidersModel.getTypes().contains(Spider[].class);
+      assert spidersModel.getTypes().contains(Object.class);
+   }
+   
+   @Test(groups="producerMethod") @SpecAssertion(section="3.4.2")
+   public void testBindingType() throws Exception
+   {
+      Bean<SpiderProducer> bean = createSimpleBean(SpiderProducer.class);
+      manager.addBean(bean);
+      Method method = SpiderProducer.class.getMethod("produceTameTarantula");
+      Bean<Tarantula> tarantulaModel = createProducerMethodBean(method, bean);
+      assert tarantulaModel.getBindings().size() == 1;
+      assert tarantulaModel.getBindings().iterator().next().annotationType().equals(Tame.class);
+   }
+   
+   @Test(groups="producerMethod") @SpecAssertion(section="3.4.2")
+   public void testScopeType() throws Exception
+   {
+      Bean<SpiderProducer> bean = createSimpleBean(SpiderProducer.class);
+      manager.addBean(bean);
+      Method method = SpiderProducer.class.getMethod("produceDaddyLongLegs");
+      Bean<DaddyLongLegs> daddyLongLegsModel = createProducerMethodBean(method, bean);
+      assert daddyLongLegsModel.getScopeType().equals(RequestScoped.class);
+      
+      // TODO Inherit scope from returned web bean?
+   }
+   
+   @Test(groups="producerMethod") @SpecAssertion(section="3.4.2")
+   public void testDeploymentType() throws Exception
+   {
+      Bean<SpiderProducer> bean = createSimpleBean(SpiderProducer.class);
+      manager.addBean(bean);
+      Method method = SpiderProducer.class.getMethod("getLadybirdSpider");
+      Bean<LadybirdSpider> ladybirdSpiderModel = createProducerMethodBean(method, bean);
+      assert ladybirdSpiderModel.getDeploymentType().equals(Production.class);
+   }
+   
+   @Test(groups="producerMethod") @SpecAssertion(section="3.4.2")
+   public void testNamedMethod() throws Exception
+   {
+      Bean<SpiderProducer> bean = createSimpleBean(SpiderProducer.class);
+      manager.addBean(bean);
+      Method method = SpiderProducer.class.getMethod("produceBlackWidow");
+      Bean<BlackWidow> blackWidowSpiderModel = createProducerMethodBean(method, bean);
+      assert blackWidowSpiderModel.getName().equals("blackWidow");
+   }
+   
+   @Test(groups="producerMethod") @SpecAssertion(section="3.4.2")
+   public void testDefaultNamedMethod() throws Exception
+   {
+      Bean<SpiderProducer> bean = createSimpleBean(SpiderProducer.class);
+      manager.addBean(bean);
+      Method method = SpiderProducer.class.getMethod("produceDaddyLongLegs");
+      Bean<DaddyLongLegs> daddyLongLegsSpiderModel = createProducerMethodBean(method, bean);
+      assert daddyLongLegsSpiderModel.getName().equals("produceDaddyLongLegs");
+   }
+   
+   @Test(groups="producerMethod", expectedExceptions=DefinitionException.class) @SpecAssertion(section="3.4")
+   public void testProducerMethodAnnotatedDestructor() throws Exception
+   {
+      Bean<SpiderProducer_Broken> bean = createSimpleBean(SpiderProducer_Broken.class);
+      manager.addBean(bean);
+      Method method = SpiderProducer_Broken.class.getMethod("destroy");
+      createProducerMethodBean(method, bean);
+   }
+   
+   @Test(groups="producerMethod", expectedExceptions=DefinitionException.class) @SpecAssertion(section="3.4")
+   public void testProducerMethodWithParameterAnnotatedDisposes() throws Exception
+   {
+      Bean<SpiderProducer_Broken> bean = createSimpleBean(SpiderProducer_Broken.class);
+      manager.addBean(bean);
+      Method method = SpiderProducer_Broken.class.getMethod("dispose", String.class);
+      createProducerMethodBean(method, bean);
+   }
+   
+   @Test(groups="producerMethod", expectedExceptions=DefinitionException.class) @SpecAssertion(section="3.4")
+   public void testProducerMethodWithParameterAnnotatedObserves() throws Exception
+   {
+      Bean<SpiderProducer_Broken> bean = createSimpleBean(SpiderProducer_Broken.class);
+      manager.addBean(bean);
+      Method method = SpiderProducer_Broken.class.getMethod("observe", String.class);
+      createProducerMethodBean(method, bean);
+   }
+   
+   @Test(groups={"stub", "disposalMethod"}) @SpecAssertion(section="3.3.4")
+   public void testDisposalMethodNonStatic()
+   {
+      // TODO Placeholder
+      assert false;
+   }
+   
+   @Test(groups={"stub", "disposalMethod"}) @SpecAssertion(section="3.3.4")
+   public void testDisposalMethodMethodDeclaredOnWebBeanImplementationClass()
+   {
+      // TODO Placeholder
+      assert false;
+   }
+   
+   @Test(groups={"stub", "disposalMethod"}) @SpecAssertion(section="3.3.4")
+   public void testDisposalMethodBindingAnnotations()
+   {
+      // TODO Placeholder
+      assert false;
+   }
+   
+   @Test(groups={"stub", "disposalMethod"}) @SpecAssertion(section="3.3.4")
+   public void testDisposalMethodDefaultBindingAnnotations()
+   {
+      // TODO Placeholder
+      assert false;
+   }
+   
+   @Test(groups={"stub", "disposalMethod"}) @SpecAssertion(section="3.3.4")
+   public void testDisposalMethodDoesNotResolveToProducerMethod()
+   {
+      // TODO Placeholder
+      assert false;
+   }
+   
+   @Test(groups={"stub", "disposalMethod"}) @SpecAssertion(section="3.3.5")
+   public void testDisposalMethodDeclaredOnEnabledBean()
+   {
+      // TODO Placeholder
+      // TODO Move this
+      
+      assert false;
+   }
+   
+   @Test(groups={"stub", "disposalMethod"}) @SpecAssertion(section="3.3.5")
+   public void testBeanCanDeclareMultipleDisposalMethods()
+   {
+      // TODO move this 
+      // TODO Placeholder
+      assert false;
+   }
+   
+   @Test(groups={"stub", "disposalMethod"}) @SpecAssertion(section="3.3.5")
+   public void testProducerMethodHasNoMoreThanOneDisposalMethod()
+   {
+      // TODO move this 
+      // TODO Placeholder
+      assert false;
+   }
+   
+   @Test(groups="producerMethod") @SpecAssertion(section={"2.7.2", "3.4.2", "2.2"})
+   public void testStereotypeSpecifiesScope() throws Exception
+   {
+      Bean<SpiderProducer> bean = createSimpleBean(SpiderProducer.class);
+      manager.addBean(bean);
+      Method method = SpiderProducer.class.getMethod("produceWolfSpider");
+      Bean<WolfSpider> wolfSpider = createProducerMethodBean(method, bean);
+      //assert wolfSpiderModel.getMergedStereotypes().getRequiredTypes().size() == 1;
+      //assert wolfSpiderModel.getMergedStereotypes().getRequiredTypes().contains(Animal.class);
+      assert wolfSpider.getScopeType().equals(RequestScoped.class);
+   }
+   
+   @Test(groups="producerMethod", expectedExceptions=DefinitionException.class) @SpecAssertion(section={"2.7.2", "3.4.2", "2.2"})
+   public void testStereotypeEnforcesTypes() throws Exception
+   {
+      Bean<SpiderProducer_Broken> bean = createSimpleBean(SpiderProducer_Broken.class);
+      manager.addBean(bean);
+      Method method = SpiderProducer_Broken.class.getMethod("produceInteger");
+      createProducerMethodBean(method, bean);
+   }
+   
+   @Test @SpecAssertion(section="4.2")
+   public void testNonStaticProducerMethodNotInherited()
+   {
+      deployBeans(InfertileChicken.class);
+      assert manager.resolveByType(Egg.class).size() == 0;
+   }
+   
+}

Added: tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/implementation/producer/method/ProducerMethodLifecycleTest.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/implementation/producer/method/ProducerMethodLifecycleTest.java	                        (rev 0)
+++ tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/implementation/producer/method/ProducerMethodLifecycleTest.java	2009-01-20 06:43:18 UTC (rev 1111)
@@ -0,0 +1,70 @@
+package org.jboss.webbeans.tck.unit.implementation.producer.method;
+
+import java.lang.reflect.Method;
+
+import javax.webbeans.IllegalProductException;
+import javax.webbeans.manager.Bean;
+
+import org.jboss.webbeans.tck.AbstractTest;
+import org.jboss.webbeans.tck.impl.SpecAssertion;
+import org.jboss.webbeans.tck.impl.SpecVersion;
+import org.testng.annotations.Test;
+
+ at SpecVersion("20081206")
+public class ProducerMethodLifecycleTest extends AbstractTest
+{
+   
+   @Test(groups={"producerMethod", "broken"}) @SpecAssertion(section="5.6")
+   public void testProducerMethodBeanCreate() throws Exception
+   {
+      Bean<SpiderProducer> spiderProducer = createSimpleBean(SpiderProducer.class); 
+      manager.addBean(spiderProducer);
+      Method method = SpiderProducer.class.getMethod("produceTarantula");
+      Bean<Tarantula> tarantulaBean = createProducerMethodBean(method, spiderProducer);
+      Tarantula tarantula = tarantulaBean.create();
+      assert tarantula != null;
+   }
+   
+   @Test(groups={"stub", "specialization"}) @SpecAssertion(section="3.3.3")
+   public void testSpecializedBeanAlwaysUsed()
+   {
+      // TODO Placeholder
+      assert false;
+   }
+   
+   @Test(groups={"stub", "disposalMethod", "beanLifecycle"}) @SpecAssertion(section="3.3.4")
+   public void testDisposalMethodCalled()
+   {
+      // TODO Placeholder
+      assert false;
+   }
+   
+   @Test(groups={"stub", "disposalMethod", "beanLifecycle"}) @SpecAssertion(section="3.3.4")
+   public void testDisposalMethodHasParametersInjected()
+   {
+      // TODO Placeholder
+      assert false;
+   }
+   
+   
+   @Test(groups={"producerMethod", "broken"}) @SpecAssertion(section={"3.4", "5.6", "8.3"})
+   public void testProducerMethodReturnsNullIsDependent() throws Exception
+   {
+      Bean<SpiderProducer> spiderProducer = createSimpleBean(SpiderProducer.class); 
+      manager.addBean(spiderProducer);
+      Method method = SpiderProducer.class.getMethod("getNullSpider");
+      Bean<Spider> spiderBean = createProducerMethodBean(method, spiderProducer);
+      Spider spider = spiderBean.create();
+      assert spider == null;
+   }
+   
+   @Test(groups="producerMethod", expectedExceptions=IllegalProductException.class) @SpecAssertion(section={"3.4", "5.6"})
+   public void testProducerMethodReturnsNullIsNotDependent() throws Exception
+   {
+      Bean<SpiderProducer_Broken> spiderProducer = createSimpleBean(SpiderProducer_Broken.class);
+      manager.addBean(spiderProducer);
+      Method method = SpiderProducer_Broken.class.getMethod("getRequestScopedSpider");
+      createProducerMethodBean(method, spiderProducer).create();
+   }
+   
+}

Added: tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/implementation/producer/method/Spider.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/implementation/producer/method/Spider.java	                        (rev 0)
+++ tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/implementation/producer/method/Spider.java	2009-01-20 06:43:18 UTC (rev 1111)
@@ -0,0 +1,12 @@
+package org.jboss.webbeans.tck.unit.implementation.producer.method;
+
+
+class Spider implements Animal
+{
+
+   public final void layEggs()
+   {
+      
+   }
+   
+}

Added: tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/implementation/producer/method/SpiderProducer.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/implementation/producer/method/SpiderProducer.java	                        (rev 0)
+++ tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/implementation/producer/method/SpiderProducer.java	2009-01-20 06:43:18 UTC (rev 1111)
@@ -0,0 +1,79 @@
+package org.jboss.webbeans.tck.unit.implementation.producer.method;
+
+import javax.webbeans.Named;
+import javax.webbeans.Produces;
+import javax.webbeans.Production;
+import javax.webbeans.RequestScoped;
+
+ at AnotherDeploymentType
+class SpiderProducer
+{
+   
+   private static Spider[] ALL_SPIDERS = { new Tarantula(), new LadybirdSpider(), new DaddyLongLegs() };
+   
+   @Produces @Tame public Tarantula produceTameTarantula()
+   {
+      return new DefangedTarantula();
+   }
+   
+   @Produces public Tarantula produceTarantula()
+   {
+      return new Tarantula();
+   }
+   
+   @Produces public Spider getNullSpider()
+   {
+      return null;
+   }
+   
+   @Produces public FunnelWeaver<Spider> getFunnelWeaverSpider()
+   {
+      return new FunnelWeaver<Spider>();
+   }
+   
+   @Produces public FunnelWeaver<?> getAnotherFunnelWeaver()
+   {
+      return new FunnelWeaver<Object>();
+   }
+   
+   @Produces public <T> FunnelWeaver<T> getFunnelWeaver()
+   {
+      return new FunnelWeaver<T>();
+   }
+   
+   @Produces public Animal makeASpider()
+   {
+      return new WolfSpider();
+   }
+   
+   @Produces public int getWolfSpiderSize()
+   {
+      return 4;
+   }
+   
+   @Produces public Spider[] getSpiders()
+   {
+      return ALL_SPIDERS;
+   }
+   
+   @Produces @Named @RequestScoped public DaddyLongLegs produceDaddyLongLegs()
+   {
+      return new DaddyLongLegs();
+   }
+
+   @Produces @Named @Production public LadybirdSpider getLadybirdSpider()
+   {
+      return new LadybirdSpider();
+   }
+
+   @Produces @Named("blackWidow") public BlackWidow produceBlackWidow()
+   {
+      return new BlackWidow();
+   }
+   
+   @Produces @AnimalStereotype public WolfSpider produceWolfSpider()
+   {
+      return new WolfSpider();
+   }
+   
+}

Added: tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/implementation/producer/method/SpiderProducer_Broken.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/implementation/producer/method/SpiderProducer_Broken.java	                        (rev 0)
+++ tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/implementation/producer/method/SpiderProducer_Broken.java	2009-01-20 06:43:18 UTC (rev 1111)
@@ -0,0 +1,42 @@
+package org.jboss.webbeans.tck.unit.implementation.producer.method;
+
+import javax.webbeans.Destructor;
+import javax.webbeans.Disposes;
+import javax.webbeans.Observes;
+import javax.webbeans.Produces;
+import javax.webbeans.Production;
+import javax.webbeans.RequestScoped;
+
+ at Production
+class SpiderProducer_Broken
+{
+   
+   @Produces @RequestScoped public Spider getRequestScopedSpider()
+   {
+      return null;
+   }
+   
+   @Produces @Destructor
+   public String destroy()
+   {
+      return "foo";
+   }
+   
+   @Produces
+   public String dispose(@Disposes String foo)
+   {
+      return "foo";
+   }
+   
+   @Produces
+   public String observe(@Observes String foo)
+   {
+      return "foo";
+   }
+   
+   @Produces @AnimalStereotype public Integer produceInteger()
+   {
+      return 1;
+   }
+   
+}

Added: tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/implementation/producer/method/Tame.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/implementation/producer/method/Tame.java	                        (rev 0)
+++ tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/implementation/producer/method/Tame.java	2009-01-20 06:43:18 UTC (rev 1111)
@@ -0,0 +1,22 @@
+package org.jboss.webbeans.tck.unit.implementation.producer.method;
+
+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
+ at interface Tame
+{
+
+}

Added: tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/implementation/producer/method/Tarantula.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/implementation/producer/method/Tarantula.java	                        (rev 0)
+++ tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/implementation/producer/method/Tarantula.java	2009-01-20 06:43:18 UTC (rev 1111)
@@ -0,0 +1,6 @@
+package org.jboss.webbeans.tck.unit.implementation.producer.method;
+
+class Tarantula extends Spider implements DeadlySpider
+{
+
+}

Added: tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/implementation/producer/method/WolfSpider.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/implementation/producer/method/WolfSpider.java	                        (rev 0)
+++ tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/implementation/producer/method/WolfSpider.java	2009-01-20 06:43:18 UTC (rev 1111)
@@ -0,0 +1,6 @@
+package org.jboss.webbeans.tck.unit.implementation.producer.method;
+
+class WolfSpider implements Animal
+{
+   
+}




More information about the weld-commits mailing list