[webbeans-commits] Webbeans SVN: r446 - in ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test: annotations and 2 other directories.

webbeans-commits at lists.jboss.org webbeans-commits at lists.jboss.org
Sun Dec 7 12:55:49 EST 2008


Author: gavin.king at jboss.com
Date: 2008-12-07 12:55:49 -0500 (Sun, 07 Dec 2008)
New Revision: 446

Added:
   ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/ProducerFieldBeanLifecycleTest.java
   ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/ProducerFieldBeanModelTest.java
   ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/beans/OtherSpiderProducer.java
   ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/beans/broken/OtherBrokenSpiderProducer.java
Modified:
   ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/annotations/AnimalStereotype.java
Log:
tests for producer fields

Added: ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/ProducerFieldBeanLifecycleTest.java
===================================================================
--- ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/ProducerFieldBeanLifecycleTest.java	                        (rev 0)
+++ ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/ProducerFieldBeanLifecycleTest.java	2008-12-07 17:55:49 UTC (rev 446)
@@ -0,0 +1,60 @@
+package org.jboss.webbeans.test;
+
+import static org.jboss.webbeans.util.BeanFactory.createProducerFieldBean;
+import static org.jboss.webbeans.util.BeanFactory.createSimpleBean;
+
+import java.lang.reflect.Field;
+
+import javax.webbeans.IllegalProductException;
+
+import org.jboss.webbeans.bean.ProducerFieldBean;
+import org.jboss.webbeans.bean.SimpleBean;
+import org.jboss.webbeans.test.beans.OtherSpiderProducer;
+import org.jboss.webbeans.test.beans.Spider;
+import org.jboss.webbeans.test.beans.Tarantula;
+import org.jboss.webbeans.test.beans.broken.OtherBrokenSpiderProducer;
+import org.testng.annotations.Test;
+
+public class ProducerFieldBeanLifecycleTest extends AbstractTest
+{
+   
+   @Test(groups="producerField") @SpecAssertion(section="5.6")
+   public void testProducerFieldBeanCreate() throws Exception
+   {
+      SimpleBean<OtherSpiderProducer> spiderProducer = createSimpleBean(OtherSpiderProducer.class); 
+      manager.addBean(spiderProducer);
+      Field method = OtherSpiderProducer.class.getField("produceTarantula");
+      ProducerFieldBean<Tarantula> tarantulaBean = createProducerFieldBean(Tarantula.class, 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="producerField") @SpecAssertion(section={"3.4", "5.6", "8.3"})
+   public void testProducerFieldReturnsNullIsDependent() throws Exception
+   {
+      SimpleBean<OtherSpiderProducer> spiderProducer = createSimpleBean(OtherSpiderProducer.class); 
+      manager.addBean(spiderProducer);
+      Field method = OtherSpiderProducer.class.getField("getNullSpider");
+      ProducerFieldBean<Spider> spiderBean = createProducerFieldBean(Spider.class, method, spiderProducer);
+      Spider spider = spiderBean.create();
+      assert spider == null;
+   }
+   
+   @Test(groups="producerField", expectedExceptions=IllegalProductException.class) @SpecAssertion(section={"3.4", "5.6"})
+   public void testProducerFieldReturnsNullIsNotDependent() throws Exception
+   {
+      SimpleBean<OtherBrokenSpiderProducer> spiderProducer = createSimpleBean(OtherBrokenSpiderProducer.class);
+      manager.addBean(spiderProducer);
+      Field method = OtherBrokenSpiderProducer.class.getField("getRequestScopedSpider");
+      createProducerFieldBean(Spider.class, method, spiderProducer).create();
+   }
+   
+}

Added: ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/ProducerFieldBeanModelTest.java
===================================================================
--- ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/ProducerFieldBeanModelTest.java	                        (rev 0)
+++ ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/ProducerFieldBeanModelTest.java	2008-12-07 17:55:49 UTC (rev 446)
@@ -0,0 +1,270 @@
+package org.jboss.webbeans.test;
+
+import static org.jboss.webbeans.util.BeanFactory.createProducerFieldBean;
+import static org.jboss.webbeans.util.BeanFactory.createSimpleBean;
+
+import java.lang.reflect.Field;
+
+import javax.webbeans.Current;
+import javax.webbeans.DefinitionException;
+import javax.webbeans.Production;
+import javax.webbeans.RequestScoped;
+
+import org.jboss.webbeans.bean.ProducerFieldBean;
+import org.jboss.webbeans.bean.SimpleBean;
+import org.jboss.webbeans.test.annotations.AnotherDeploymentType;
+import org.jboss.webbeans.test.annotations.Tame;
+import org.jboss.webbeans.test.beans.Animal;
+import org.jboss.webbeans.test.beans.BlackWidow;
+import org.jboss.webbeans.test.beans.DaddyLongLegs;
+import org.jboss.webbeans.test.beans.DeadlyAnimal;
+import org.jboss.webbeans.test.beans.DeadlySpider;
+import org.jboss.webbeans.test.beans.FunnelWeaver;
+import org.jboss.webbeans.test.beans.LadybirdSpider;
+import org.jboss.webbeans.test.beans.OtherSpiderProducer;
+import org.jboss.webbeans.test.beans.Spider;
+import org.jboss.webbeans.test.beans.Tarantula;
+import org.jboss.webbeans.test.beans.WolfSpider;
+import org.jboss.webbeans.test.beans.broken.OtherBrokenSpiderProducer;
+import org.testng.annotations.Test;
+
+public class ProducerFieldBeanModelTest extends AbstractTest
+{
+   
+   @Test(groups="producerField") @SpecAssertion(section="2.5.3")
+   public void testProducerFieldInheritsDeploymentTypeOfDeclaringWebBean() throws Exception
+   {
+      SimpleBean<OtherSpiderProducer> bean = createSimpleBean(OtherSpiderProducer.class);
+      manager.addBean(bean);
+      Field field = OtherSpiderProducer.class.getField("produceTameTarantula");
+      ProducerFieldBean<Tarantula> tarantulaModel = createProducerFieldBean(Tarantula.class, field, bean);
+      tarantulaModel.getDeploymentType().equals(AnotherDeploymentType.class);
+   }
+   
+   /*@Test(groups="producerField", expectedExceptions=DefinitionException.class) @SpecAssertion(section="3.4")
+   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.4")
+   public void testProducerFieldIsNotBusinessField() throws Exception
+   {
+      assert false;
+   }
+   
+   @Test(groups="producerField") @SpecAssertion(section="3.4")
+   public void testParameterizedReturnType() throws Exception
+   {
+      SimpleBean<OtherSpiderProducer> bean = createSimpleBean(OtherSpiderProducer.class);
+      manager.addBean(bean);
+      Field field = OtherSpiderProducer.class.getField("getFunnelWeaverSpider");
+      createProducerFieldBean(FunnelWeaver.class, field, bean);
+   }
+   
+   @Test(groups="producerField", expectedExceptions=DefinitionException.class) @SpecAssertion(section="3.4")
+   public void testParameterizedReturnTypeWithWildcard() throws Exception
+   {
+      SimpleBean<OtherSpiderProducer> bean = createSimpleBean(OtherSpiderProducer.class);
+      manager.addBean(bean);
+      Field field = OtherSpiderProducer.class.getField("getAnotherFunnelWeaver");
+      createProducerFieldBean(FunnelWeaver.class, field, bean);
+   }
+   
+   @Test(groups={"stub", "producerField", "deployment"}) @SpecAssertion(section="3.4")
+   public void testBeanDeclaresMultipleProducerFields()
+   {
+      assert false;
+   }
+   
+   @Test(groups="producerField") @SpecAssertion(section={"3.4", "2.3.1"})
+   public void testDefaultBindingType() throws Exception
+   {
+      SimpleBean<OtherSpiderProducer> bean = createSimpleBean(OtherSpiderProducer.class);
+      manager.addBean(bean);
+      Field field = OtherSpiderProducer.class.getField("produceTarantula");
+      ProducerFieldBean<Tarantula> tarantulaModel = createProducerFieldBean(Tarantula.class, field, bean);
+      assert tarantulaModel.getBindingTypes().size() == 1;
+      assert tarantulaModel.getBindingTypes().iterator().next().annotationType().equals(Current.class);
+   }
+   
+   @Test(groups="producerField") @SpecAssertion(section="3.4.1")
+   public void testApiTypeForClassReturn() throws Exception
+   {
+      SimpleBean<OtherSpiderProducer> bean = createSimpleBean(OtherSpiderProducer.class);
+      manager.addBean(bean);
+      Field field = OtherSpiderProducer.class.getField("produceTarantula");
+      ProducerFieldBean<Tarantula> tarantulaModel = createProducerFieldBean(Tarantula.class, 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);
+   }
+   
+   @Test(groups="producerField") @SpecAssertion(section="3.4.1")
+   public void testApiTypeForInterfaceReturn() throws Exception
+   {
+      SimpleBean<OtherSpiderProducer> bean = createSimpleBean(OtherSpiderProducer.class);
+      manager.addBean(bean);
+      Field field = OtherSpiderProducer.class.getField("makeASpider");
+      ProducerFieldBean<Animal> animalModel = createProducerFieldBean(Animal.class, field, bean);
+      assert animalModel.getTypes().size() == 2;
+      assert animalModel.getTypes().contains(Animal.class);
+      assert animalModel.getTypes().contains(Object.class);
+   }
+   
+   @Test(groups="producerField") @SpecAssertion(section="3.4.1")
+   public void testApiTypeForPrimitiveReturn() throws Exception
+   {
+      SimpleBean<OtherSpiderProducer> bean = createSimpleBean(OtherSpiderProducer.class);
+      manager.addBean(bean);
+      Field field = OtherSpiderProducer.class.getField("getWolfSpiderSize");
+      ProducerFieldBean<Integer> intModel = createProducerFieldBean(int.class, field, bean);
+      assert intModel.getTypes().size() == 2;
+      assert intModel.getTypes().contains(int.class);
+      assert intModel.getTypes().contains(Object.class);
+   }
+   
+   @Test(groups="producerField") @SpecAssertion(section={"3.4.1", "2.2"})
+   public void testApiTypeForArrayTypeReturn() throws Exception
+   {
+      SimpleBean<OtherSpiderProducer> bean = createSimpleBean(OtherSpiderProducer.class);
+      manager.addBean(bean);
+      Field field = OtherSpiderProducer.class.getField("getSpiders");
+      ProducerFieldBean<Spider[]> spidersModel = createProducerFieldBean(Spider[].class, field, bean);
+      assert spidersModel.getTypes().size() == 2;
+      assert spidersModel.getTypes().contains(Spider[].class);
+      assert spidersModel.getTypes().contains(Object.class);
+   }
+   
+   @Test(groups="producerField") @SpecAssertion(section="3.4.2")
+   public void testBindingType() throws Exception
+   {
+      SimpleBean<OtherSpiderProducer> bean = createSimpleBean(OtherSpiderProducer.class);
+      manager.addBean(bean);
+      Field field = OtherSpiderProducer.class.getField("produceTameTarantula");
+      ProducerFieldBean<Tarantula> tarantulaModel = createProducerFieldBean(Tarantula.class, field, bean);
+      assert tarantulaModel.getBindingTypes().size() == 1;
+      assert tarantulaModel.getBindingTypes().iterator().next().annotationType().equals(Tame.class);
+   }
+   
+   @Test(groups="producerField") @SpecAssertion(section="3.4.2")
+   public void testScopeType() throws Exception
+   {
+      SimpleBean<OtherSpiderProducer> bean = createSimpleBean(OtherSpiderProducer.class);
+      manager.addBean(bean);
+      Field field = OtherSpiderProducer.class.getField("produceDaddyLongLegs");
+      ProducerFieldBean<DaddyLongLegs> daddyLongLegsModel = createProducerFieldBean(DaddyLongLegs.class, field, bean);
+      assert daddyLongLegsModel.getScopeType().equals(RequestScoped.class);
+      
+      // TODO Inherit scope from returned web bean?
+   }
+   
+   @Test(groups="producerField") @SpecAssertion(section="3.4.2")
+   public void testDeploymentType() throws Exception
+   {
+      SimpleBean<OtherSpiderProducer> bean = createSimpleBean(OtherSpiderProducer.class);
+      manager.addBean(bean);
+      Field field = OtherSpiderProducer.class.getField("getLadybirdSpider");
+      ProducerFieldBean<LadybirdSpider> ladybirdSpiderModel = createProducerFieldBean(LadybirdSpider.class, field, bean);
+      assert ladybirdSpiderModel.getDeploymentType().equals(Production.class);
+   }
+   
+   @Test(groups="producerField") @SpecAssertion(section="3.4.2")
+   public void testNamedField() throws Exception
+   {
+      SimpleBean<OtherSpiderProducer> bean = createSimpleBean(OtherSpiderProducer.class);
+      manager.addBean(bean);
+      Field field = OtherSpiderProducer.class.getField("produceBlackWidow");
+      ProducerFieldBean<BlackWidow> blackWidowSpiderModel = createProducerFieldBean(BlackWidow.class, field, bean);
+      assert blackWidowSpiderModel.getName().equals("blackWidow");
+   }
+   
+   @Test(groups="producerField") @SpecAssertion(section="3.4.2")
+   public void testDefaultNamedField() throws Exception
+   {
+      SimpleBean<OtherSpiderProducer> bean = createSimpleBean(OtherSpiderProducer.class);
+      manager.addBean(bean);
+      Field field = OtherSpiderProducer.class.getField("produceDaddyLongLegs");
+      ProducerFieldBean<DaddyLongLegs> daddyLongLegsSpiderModel = createProducerFieldBean(DaddyLongLegs.class, field, bean);
+      assert daddyLongLegsSpiderModel.getName().equals("produceDaddyLongLegs");
+   }
+   
+   @Test(groups={"stub", "disposalField"}) @SpecAssertion(section="3.3.4")
+   public void testDisposalFieldNonStatic()
+   {
+      // TODO Placeholder
+      assert false;
+   }
+   
+   @Test(groups={"stub", "disposalField"}) @SpecAssertion(section="3.3.4")
+   public void testDisposalFieldFieldDeclaredOnWebBeanImplementationClass()
+   {
+      // TODO Placeholder
+      assert false;
+   }
+   
+   @Test(groups={"stub", "disposalField"}) @SpecAssertion(section="3.3.4")
+   public void testDisposalFieldBindingAnnotations()
+   {
+      // TODO Placeholder
+      assert false;
+   }
+   
+   @Test(groups={"stub", "disposalField"}) @SpecAssertion(section="3.3.4")
+   public void testDisposalFieldDefaultBindingAnnotations()
+   {
+      // TODO Placeholder
+      assert false;
+   }
+   
+   @Test(groups={"stub", "disposalField"}) @SpecAssertion(section="3.3.4")
+   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;
+   }
+   
+   @Test(groups="producerField") @SpecAssertion(section={"2.7.2", "3.4.2", "2.2"})
+   public void testStereotype() throws Exception
+   {
+      SimpleBean<OtherSpiderProducer> bean = createSimpleBean(OtherSpiderProducer.class);
+      manager.addBean(bean);
+      Field field = OtherSpiderProducer.class.getField("produceWolfSpider");
+      ProducerFieldBean<WolfSpider> wolfSpiderModel = createProducerFieldBean(WolfSpider.class, field, bean);
+      assert wolfSpiderModel.getMergedStereotypes().getRequiredTypes().size() == 1;
+      assert wolfSpiderModel.getMergedStereotypes().getRequiredTypes().contains(Animal.class);
+      assert wolfSpiderModel.getScopeType().equals(RequestScoped.class);
+   }
+}

Modified: ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/annotations/AnimalStereotype.java
===================================================================
--- ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/annotations/AnimalStereotype.java	2008-12-07 17:50:01 UTC (rev 445)
+++ ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/annotations/AnimalStereotype.java	2008-12-07 17:55:49 UTC (rev 446)
@@ -1,5 +1,6 @@
 package org.jboss.webbeans.test.annotations;
 
+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;
@@ -13,7 +14,7 @@
 import org.jboss.webbeans.test.beans.Animal;
 
 @Stereotype(requiredTypes=Animal.class)
- at Target( { TYPE, METHOD })
+ at Target( { TYPE, METHOD, FIELD })
 @Retention(RUNTIME)
 @RequestScoped
 public @interface AnimalStereotype

Added: ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/beans/OtherSpiderProducer.java
===================================================================
--- ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/beans/OtherSpiderProducer.java	                        (rev 0)
+++ ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/beans/OtherSpiderProducer.java	2008-12-07 17:55:49 UTC (rev 446)
@@ -0,0 +1,49 @@
+package org.jboss.webbeans.test.beans;
+
+import javax.webbeans.Dependent;
+import javax.webbeans.Named;
+import javax.webbeans.Produces;
+import javax.webbeans.Production;
+import javax.webbeans.RequestScoped;
+
+import org.jboss.webbeans.test.annotations.AnimalStereotype;
+import org.jboss.webbeans.test.annotations.AnotherDeploymentType;
+import org.jboss.webbeans.test.annotations.Tame;
+
+ 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: ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/beans/broken/OtherBrokenSpiderProducer.java
===================================================================
--- ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/beans/broken/OtherBrokenSpiderProducer.java	                        (rev 0)
+++ ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/beans/broken/OtherBrokenSpiderProducer.java	2008-12-07 17:55:49 UTC (rev 446)
@@ -0,0 +1,36 @@
+package org.jboss.webbeans.test.beans.broken;
+
+import javax.webbeans.Destructor;
+import javax.webbeans.Disposes;
+import javax.webbeans.Observes;
+import javax.webbeans.Produces;
+import javax.webbeans.Production;
+import javax.webbeans.RequestScoped;
+
+import org.jboss.webbeans.test.beans.Spider;
+
+ 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;
+   
+}




More information about the weld-commits mailing list