[webbeans-commits] Webbeans SVN: r1007 - in tck/trunk: impl/src/main/java/org/jboss/webbeans/tck/tests and 2 other directories.

webbeans-commits at lists.jboss.org webbeans-commits at lists.jboss.org
Thu Jan 15 23:20:11 EST 2009


Author: shane.bryzak at jboss.com
Date: 2009-01-15 23:20:11 -0500 (Thu, 15 Jan 2009)
New Revision: 1007

Added:
   tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/implementation/producer/
   tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/implementation/producer/Animal.java
   tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/implementation/producer/AnotherDeploymentType.java
   tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/implementation/producer/BlackWidow.java
   tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/implementation/producer/DaddyLongLegs.java
   tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/implementation/producer/DeadlyAnimal.java
   tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/implementation/producer/DeadlySpider.java
   tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/implementation/producer/LadybirdSpider.java
   tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/implementation/producer/OtherBrokenSpiderProducer.java
   tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/implementation/producer/OtherSpiderProducer.java
   tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/implementation/producer/ProducerFieldBeanLifecycleTest.java
   tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/implementation/producer/ProducerFieldBeanModelTest.java
   tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/implementation/producer/Spider.java
   tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/implementation/producer/Tame.java
   tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/implementation/producer/Tarantula.java
   tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/implementation/producer/WolfSpider.java
Modified:
   tck/trunk/api/src/main/java/org/jboss/webbeans/tck/api/Beans.java
   tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/AbstractTest.java
Log:
producer field tests

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-16 03:08:00 UTC (rev 1006)
+++ tck/trunk/api/src/main/java/org/jboss/webbeans/tck/api/Beans.java	2009-01-16 04:20:11 UTC (rev 1007)
@@ -1,5 +1,6 @@
 package org.jboss.webbeans.tck.api;
 
+import java.lang.reflect.Field;
 import java.lang.reflect.Method;
 
 import javax.webbeans.manager.Bean;
@@ -84,4 +85,14 @@
     * @return true only if class declares an entity bean
     */
    public boolean isEntityBean(Class<?> clazz);
+   /**
+    * Create a new producer field bean from the given method.
+    * 
+    * @param <T> The type of the bean
+    * @param field the producer field
+    * @param declaringBean
+    * @return the producer bean
+    */
+   public <T> Bean<T> createProducerFieldBean(Field field, Bean<?> declaringBean);
+   
 }

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-16 03:08:00 UTC (rev 1006)
+++ tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/AbstractTest.java	2009-01-16 04:20:11 UTC (rev 1007)
@@ -8,6 +8,7 @@
 import java.io.ObjectInputStream;
 import java.io.ObjectOutputStream;
 import java.lang.annotation.Annotation;
+import java.lang.reflect.Field;
 import java.lang.reflect.Method;
 import java.util.ArrayList;
 import java.util.Arrays;
@@ -56,6 +57,11 @@
    {
       return configuration().getBeans().createProducerMethodBean(method, producerBean);
    }
+   
+   public <T> Bean<?> getProducerFieldBean(Field field, Bean<?> producerBean)
+   {
+      return configuration().getBeans().createProducerFieldBean(field, producerBean);
+   }
 
    protected void deployBeans(Class<?>... classes)
    {

Added: tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/implementation/producer/Animal.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/implementation/producer/Animal.java	                        (rev 0)
+++ tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/implementation/producer/Animal.java	2009-01-16 04:20:11 UTC (rev 1007)
@@ -0,0 +1,6 @@
+package org.jboss.webbeans.tck.tests.implementation.producer;
+
+public interface Animal
+{
+
+}

Added: tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/implementation/producer/AnotherDeploymentType.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/implementation/producer/AnotherDeploymentType.java	                        (rev 0)
+++ tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/implementation/producer/AnotherDeploymentType.java	2009-01-16 04:20:11 UTC (rev 1007)
@@ -0,0 +1,20 @@
+package org.jboss.webbeans.tck.tests.implementation.producer;
+
+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
+public @interface AnotherDeploymentType
+{
+
+}

Added: tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/implementation/producer/BlackWidow.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/implementation/producer/BlackWidow.java	                        (rev 0)
+++ tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/implementation/producer/BlackWidow.java	2009-01-16 04:20:11 UTC (rev 1007)
@@ -0,0 +1,6 @@
+package org.jboss.webbeans.tck.tests.implementation.producer;
+
+public class BlackWidow extends Spider implements DeadlySpider
+{
+
+}

Added: tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/implementation/producer/DaddyLongLegs.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/implementation/producer/DaddyLongLegs.java	                        (rev 0)
+++ tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/implementation/producer/DaddyLongLegs.java	2009-01-16 04:20:11 UTC (rev 1007)
@@ -0,0 +1,6 @@
+package org.jboss.webbeans.tck.tests.implementation.producer;
+
+public class DaddyLongLegs extends Spider
+{
+
+}

Added: tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/implementation/producer/DeadlyAnimal.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/implementation/producer/DeadlyAnimal.java	                        (rev 0)
+++ tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/implementation/producer/DeadlyAnimal.java	2009-01-16 04:20:11 UTC (rev 1007)
@@ -0,0 +1,6 @@
+package org.jboss.webbeans.tck.tests.implementation.producer;
+
+public interface DeadlyAnimal
+{
+
+}

Added: tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/implementation/producer/DeadlySpider.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/implementation/producer/DeadlySpider.java	                        (rev 0)
+++ tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/implementation/producer/DeadlySpider.java	2009-01-16 04:20:11 UTC (rev 1007)
@@ -0,0 +1,6 @@
+package org.jboss.webbeans.tck.tests.implementation.producer;
+
+public interface DeadlySpider extends DeadlyAnimal
+{
+
+}

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

Added: tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/implementation/producer/OtherBrokenSpiderProducer.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/implementation/producer/OtherBrokenSpiderProducer.java	                        (rev 0)
+++ tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/implementation/producer/OtherBrokenSpiderProducer.java	2009-01-16 04:20:11 UTC (rev 1007)
@@ -0,0 +1,34 @@
+package org.jboss.webbeans.tck.tests.implementation.producer;
+
+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
+public class OtherBrokenSpiderProducer
+{
+
+   @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/tests/implementation/producer/OtherSpiderProducer.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/implementation/producer/OtherSpiderProducer.java	                        (rev 0)
+++ tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/implementation/producer/OtherSpiderProducer.java	2009-01-16 04:20:11 UTC (rev 1007)
@@ -0,0 +1,45 @@
+package org.jboss.webbeans.tck.tests.implementation.producer;
+
+import javax.webbeans.Dependent;
+import javax.webbeans.Named;
+import javax.webbeans.Produces;
+import javax.webbeans.Production;
+import javax.webbeans.RequestScoped;
+
+ at AnotherDeploymentType
+public 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 @Dependent public final TrapdoorSpider produceTrapdoorSpider = new TrapdoorSpider();
+   
+   @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 @Named("Shelob") public Tarantula produceShelob;
+   
+   @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 String[] getStrings = new String[0];
+   
+   @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/tests/implementation/producer/ProducerFieldBeanLifecycleTest.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/implementation/producer/ProducerFieldBeanLifecycleTest.java	                        (rev 0)
+++ tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/implementation/producer/ProducerFieldBeanLifecycleTest.java	2009-01-16 04:20:11 UTC (rev 1007)
@@ -0,0 +1,58 @@
+package org.jboss.webbeans.tck.tests.implementation.producer;
+
+import java.lang.reflect.Field;
+
+import javax.webbeans.IllegalProductException;
+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;
+
+ at SpecVersion("20081206")
+public class ProducerFieldBeanLifecycleTest extends AbstractTest
+{
+   
+   @SuppressWarnings("unchecked")
+   @Test(groups={"producerField", "broken"}) @SpecAssertion(section="5.6")
+   public void testProducerFieldBeanCreate() throws Exception
+   {
+      Bean<OtherSpiderProducer> spiderProducer = getSimpleBean(OtherSpiderProducer.class); 
+      manager.addBean(spiderProducer);
+      Field method = OtherSpiderProducer.class.getField("produceTarantula");
+      Bean<Tarantula> tarantulaBean = (Bean<Tarantula>) getProducerFieldBean(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 = getSimpleBean(OtherSpiderProducer.class); 
+      manager.addBean(spiderProducer);
+      Field method = OtherSpiderProducer.class.getField("getNullSpider");
+      Bean<Spider> spiderBean = (Bean<Spider>) getProducerFieldBean(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<OtherBrokenSpiderProducer> spiderProducer = getSimpleBean(OtherBrokenSpiderProducer.class);
+      manager.addBean(spiderProducer);
+      Field method = OtherBrokenSpiderProducer.class.getField("getRequestScopedSpider");
+      getProducerFieldBean(method, spiderProducer).create();
+   }
+   
+}

Added: tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/implementation/producer/ProducerFieldBeanModelTest.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/implementation/producer/ProducerFieldBeanModelTest.java	                        (rev 0)
+++ tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/implementation/producer/ProducerFieldBeanModelTest.java	2009-01-16 04:20:11 UTC (rev 1007)
@@ -0,0 +1,272 @@
+package org.jboss.webbeans.tck.tests.implementation.producer;
+
+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.impl.SpecAssertion;
+import org.jboss.webbeans.tck.impl.SpecVersion;
+import org.jboss.webbeans.tck.tests.AbstractTest;
+import org.testng.annotations.Test;
+
+ at SpecVersion("20081206")
+public class ProducerFieldBeanModelTest extends AbstractTest
+{
+   
+   @SuppressWarnings("unchecked")
+   @Test(groups="producerField") @SpecAssertion(section="2.5.3")
+   public void testProducerFieldInheritsDeploymentTypeOfDeclaringWebBean() throws Exception
+   {
+      Bean<OtherSpiderProducer> bean = getSimpleBean(OtherSpiderProducer.class);
+      manager.addBean(bean);
+      Field field = OtherSpiderProducer.class.getField("produceTameTarantula");
+      Bean<Tarantula> tarantulaModel = (Bean<Tarantula>) getProducerFieldBean(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 = getSimpleBean(OtherSpiderProducer.class);
+      manager.addBean(bean);
+      Field field = OtherSpiderProducer.class.getField("getFunnelWeaverSpider");
+      getProducerFieldBean(field, bean);
+   }
+   
+   @Test(groups="producerField", expectedExceptions=DefinitionException.class) @SpecAssertion(section="3.5")
+   public void testParameterizedReturnTypeWithWildcard() throws Exception
+   {
+      Bean<OtherSpiderProducer> bean = getSimpleBean(OtherSpiderProducer.class);
+      manager.addBean(bean);
+      Field field = OtherSpiderProducer.class.getField("getAnotherFunnelWeaver");
+      getProducerFieldBean(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 = getSimpleBean(OtherSpiderProducer.class);
+      manager.addBean(bean);
+      Field field = OtherSpiderProducer.class.getField("produceTarantula");
+      Bean<Tarantula> tarantulaModel = (Bean<Tarantula>) getProducerFieldBean(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 = getSimpleBean(OtherSpiderProducer.class);
+      manager.addBean(bean);
+      Field field = OtherSpiderProducer.class.getField("produceTarantula");
+      Bean<Tarantula> tarantulaModel = (Bean<Tarantula>) getProducerFieldBean(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 = getSimpleBean(OtherSpiderProducer.class);
+      manager.addBean(bean);
+      Field field = OtherSpiderProducer.class.getField("makeASpider");
+      Bean<Animal> animalModel = (Bean<Animal>) getProducerFieldBean(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 = getSimpleBean(OtherSpiderProducer.class);
+      manager.addBean(bean);
+      Field field = OtherSpiderProducer.class.getField("getWolfSpiderSize");
+      Bean<Integer> intModel = (Bean<Integer>) getProducerFieldBean(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 = getSimpleBean(OtherSpiderProducer.class);
+      manager.addBean(bean);
+      Field field = OtherSpiderProducer.class.getField("getSpiders");
+      Bean<Spider[]> spidersModel = (Bean<Spider[]>) getProducerFieldBean(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 = getSimpleBean(OtherSpiderProducer.class);
+      manager.addBean(bean);
+      Field field = OtherSpiderProducer.class.getField("produceTameTarantula");
+      Bean<Tarantula> tarantulaModel = (Bean<Tarantula>) getProducerFieldBean(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 = getSimpleBean(OtherSpiderProducer.class);
+      manager.addBean(bean);
+      Field field = OtherSpiderProducer.class.getField("produceDaddyLongLegs");
+      Bean<DaddyLongLegs> daddyLongLegsModel = (Bean<DaddyLongLegs>) getProducerFieldBean(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 = getSimpleBean(OtherSpiderProducer.class);
+      manager.addBean(bean);
+      Field field = OtherSpiderProducer.class.getField("getLadybirdSpider");
+      Bean<LadybirdSpider> ladybirdSpiderModel = (Bean<LadybirdSpider>) getProducerFieldBean(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 = getSimpleBean(OtherSpiderProducer.class);
+      manager.addBean(bean);
+      Field field = OtherSpiderProducer.class.getField("produceBlackWidow");
+      Bean<BlackWidow> blackWidowSpiderModel = (Bean<BlackWidow>) getProducerFieldBean(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 = getSimpleBean(OtherSpiderProducer.class);
+      manager.addBean(bean);
+      Field field = OtherSpiderProducer.class.getField("produceDaddyLongLegs");
+      Bean<DaddyLongLegs> daddyLongLegsSpiderModel = (Bean<DaddyLongLegs>) getProducerFieldBean(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 = getSimpleBean(OtherSpiderProducer.class);
+      manager.addBean(bean);
+      Field field = OtherSpiderProducer.class.getField("produceWolfSpider");
+      Bean<WolfSpider> wolfSpiderModel = (Bean<WolfSpider>) getProducerFieldBean(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);
+   }
+}
\ No newline at end of file

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

Added: tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/implementation/producer/Tame.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/implementation/producer/Tame.java	                        (rev 0)
+++ tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/implementation/producer/Tame.java	2009-01-16 04:20:11 UTC (rev 1007)
@@ -0,0 +1,22 @@
+package org.jboss.webbeans.tck.tests.implementation.producer;
+
+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
+{
+
+}

Added: tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/implementation/producer/Tarantula.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/implementation/producer/Tarantula.java	                        (rev 0)
+++ tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/implementation/producer/Tarantula.java	2009-01-16 04:20:11 UTC (rev 1007)
@@ -0,0 +1,6 @@
+package org.jboss.webbeans.tck.tests.implementation.producer;
+
+public class Tarantula extends Spider implements DeadlySpider
+{
+
+}

Added: tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/implementation/producer/WolfSpider.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/implementation/producer/WolfSpider.java	                        (rev 0)
+++ tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/implementation/producer/WolfSpider.java	2009-01-16 04:20:11 UTC (rev 1007)
@@ -0,0 +1,6 @@
+package org.jboss.webbeans.tck.tests.implementation.producer;
+
+public class WolfSpider implements Animal
+{
+   
+}




More information about the weld-commits mailing list