[webbeans-commits] Webbeans SVN: r1034 - ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/unit and 1 other directories.

webbeans-commits at lists.jboss.org webbeans-commits at lists.jboss.org
Fri Jan 16 14:26:29 EST 2009


Author: pete.muir at jboss.org
Date: 2009-01-16 14:26:29 -0500 (Fri, 16 Jan 2009)
New Revision: 1034

Added:
   ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/unit/ResolutionByTypeTest.java
   tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/lookup/typesafe/AnimalFarmer.java
   tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/lookup/typesafe/BindingTypeWithBindingAnnotationMemberLiteral_Broken.java
   tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/lookup/typesafe/BindingTypeWithBindingAnnotationMember_Broken.java
   tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/lookup/typesafe/BindingTypeWithBindingArrayTypeMemberLiteral_Broken.java
   tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/lookup/typesafe/BindingTypeWithBindingArrayTypeMember_Broken.java
   tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/lookup/typesafe/ChunkyLiteral.java
   tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/lookup/typesafe/DaddyLongLegs.java
   tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/lookup/typesafe/DeadlyAnimal.java
   tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/lookup/typesafe/DeadlySpider.java
   tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/lookup/typesafe/Expensive.java
   tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/lookup/typesafe/ExpensiveLiteral.java
   tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/lookup/typesafe/Farmer.java
   tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/lookup/typesafe/Haddock.java
   tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/lookup/typesafe/Halibut.java
   tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/lookup/typesafe/LadybirdSpider.java
   tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/lookup/typesafe/Plaice.java
   tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/lookup/typesafe/ResolutionByTypeTest.java
   tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/lookup/typesafe/RoundWhitefish.java
   tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/lookup/typesafe/ScottishFishFarmer.java
   tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/lookup/typesafe/SeaBass.java
   tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/lookup/typesafe/Spider.java
   tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/lookup/typesafe/SpiderProducer.java
   tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/lookup/typesafe/Tarantula.java
Removed:
   ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/ResolutionByTypeTest.java
Log:
port resolution by type tests

Deleted: ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/ResolutionByTypeTest.java
===================================================================
--- ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/ResolutionByTypeTest.java	2009-01-16 18:58:14 UTC (rev 1033)
+++ ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/ResolutionByTypeTest.java	2009-01-16 19:26:29 UTC (rev 1034)
@@ -1,333 +0,0 @@
-package org.jboss.webbeans.test;
-
-import java.lang.reflect.Method;
-import java.util.Set;
-
-import javax.webbeans.AnnotationLiteral;
-import javax.webbeans.DefinitionException;
-import javax.webbeans.DuplicateBindingTypeException;
-import javax.webbeans.TypeLiteral;
-import javax.webbeans.manager.Bean;
-
-import org.jboss.webbeans.bean.ProducerMethodBean;
-import org.jboss.webbeans.bean.SimpleBean;
-import org.jboss.webbeans.binding.CurrentBinding;
-import org.jboss.webbeans.introspector.AnnotatedClass;
-import org.jboss.webbeans.introspector.AnnotatedField;
-import org.jboss.webbeans.introspector.jlr.AnnotatedClassImpl;
-import org.jboss.webbeans.introspector.jlr.AnnotatedFieldImpl;
-import org.jboss.webbeans.test.annotations.Expensive;
-import org.jboss.webbeans.test.annotations.Whitefish;
-import org.jboss.webbeans.test.beans.Animal;
-import org.jboss.webbeans.test.beans.AnimalFarmer;
-import org.jboss.webbeans.test.beans.Cod;
-import org.jboss.webbeans.test.beans.Farmer;
-import org.jboss.webbeans.test.beans.FishFarm;
-import org.jboss.webbeans.test.beans.Haddock;
-import org.jboss.webbeans.test.beans.Halibut;
-import org.jboss.webbeans.test.beans.Plaice;
-import org.jboss.webbeans.test.beans.RoundWhitefish;
-import org.jboss.webbeans.test.beans.Salmon;
-import org.jboss.webbeans.test.beans.ScottishFish;
-import org.jboss.webbeans.test.beans.ScottishFishFarmer;
-import org.jboss.webbeans.test.beans.SeaBass;
-import org.jboss.webbeans.test.beans.Sole;
-import org.jboss.webbeans.test.beans.Spider;
-import org.jboss.webbeans.test.beans.SpiderProducer;
-import org.jboss.webbeans.test.beans.Tuna;
-import org.jboss.webbeans.test.beans.broken.ParameterizedBean;
-import org.jboss.webbeans.test.bindings.AnotherDeploymentTypeAnnotationLiteral;
-import org.jboss.webbeans.test.bindings.BindingTypeWithBindingAnnotationMemberAnnotationLiteral;
-import org.jboss.webbeans.test.bindings.BindingTypeWithBindingArrayTypeMemberAnnotationLiteral;
-import org.jboss.webbeans.test.bindings.ChunkyAnnotationLiteral;
-import org.jboss.webbeans.test.bindings.ExpensiveAnnotationLiteral;
-import org.testng.annotations.Test;
-
- at SpecVersion("20081206")
-public class ResolutionByTypeTest extends AbstractTest
-{
-   
-   private AnnotatedClass<FishFarm> fishFarmClass = new AnnotatedClassImpl<FishFarm>(FishFarm.class);
-
-   @Test(groups="resolution")
-   public void testAnnotatedField() throws Exception
-   {
-      AnnotatedField<Tuna> tuna = new AnnotatedFieldImpl<Tuna>(FishFarm.class.getDeclaredField("tuna"), fishFarmClass);
-      assert tuna.getType().isAssignableFrom(Tuna.class);
-      assert tuna.getBindingTypes().size() == 1;
-      assert tuna.getBindingTypes().contains(new CurrentBinding());
-      assert tuna.getType().isAssignableFrom(Tuna.class);
-   }
-   
-   @Test(groups="resolution") @SpecAssertion(section="5.9.2")
-   public void testDefaultBindingTypeAssumed() throws Exception
-   {
-      AnnotatedField<Tuna> tunaField = new AnnotatedFieldImpl<Tuna>(FishFarm.class.getDeclaredField("tuna"), fishFarmClass);
-      Bean<Tuna> tunaBean = SimpleBean.of(Tuna.class, manager);
-      manager.addBean(tunaBean);
-      Set<Bean<Tuna>> possibleTargets = manager.resolveByType(tunaField);
-      assert possibleTargets.size() == 1;
-      assert possibleTargets.contains(tunaBean);
-   }
-   
-   @Test(groups="resolution", expectedExceptions=IllegalArgumentException.class) @SpecAssertion(section="5.9")
-   public void testParameterizedTypeWithWildcardParameter()
-   {
-      manager.resolveByType(new TypeLiteral<ParameterizedBean<?>>(){});
-   }
-   
-   @Test(groups="resolution", expectedExceptions=IllegalArgumentException.class) @SpecAssertion(section="5.9")
-   public  <T> void testParameterizedTypeWithTypeParameter()
-   {
-      manager.resolveByType(new TypeLiteral<ParameterizedBean<T>>(){});
-   }
-   
-   @Test(groups="resolution", expectedExceptions=DuplicateBindingTypeException.class) @SpecAssertion(section="5.9.2")
-   public void testDuplicateBindingTypesUsed()
-   {
-      manager.resolveByType(Tuna.class, new CurrentBinding(), new CurrentBinding());
-   }
-   
-   @Test(groups="resolution", expectedExceptions=IllegalArgumentException.class) @SpecAssertion(section="5.9.2")
-   public void testNonBindingTypeUsed()
-   {
-      manager.resolveByType(Tuna.class, new AnotherDeploymentTypeAnnotationLiteral());
-   }
-   
-   @Test
-   public void testOneBindingType() throws Exception
-   {
-      AnnotatedField<ScottishFish> whiteScottishFishField = new AnnotatedFieldImpl<ScottishFish>(FishFarm.class.getDeclaredField("whiteScottishFish"), fishFarmClass);
-      Bean<Cod> codBean = SimpleBean.of(Cod.class, manager);
-      Bean<Salmon> salmonBean = SimpleBean.of(Salmon.class, manager);
-      Bean<Sole> soleBean = SimpleBean.of(Sole.class, manager);
-      manager.addBean(codBean);
-      manager.addBean(salmonBean);
-      manager.addBean(soleBean);
-      Set<Bean<ScottishFish>> possibleTargets = manager.resolveByType(whiteScottishFishField);
-      assert possibleTargets.size() == 2;
-      assert possibleTargets.contains(codBean);
-      assert possibleTargets.contains(soleBean);
-   }
-   
-   @Test
-   public void testABindingType() throws Exception
-   {
-      AnnotatedField<Animal> whiteChunkyFishField = new AnnotatedFieldImpl<Animal>(FishFarm.class.getDeclaredField("realChunkyWhiteFish"), fishFarmClass);
-      
-      Bean<Cod> codBean = SimpleBean.of(Cod.class, manager);
-      Bean<Salmon> salmonBean = SimpleBean.of(Salmon.class, manager);
-      Bean<Sole> soleBean = SimpleBean.of(Sole.class, manager);
-      
-      manager.addBean(codBean);
-      manager.addBean(salmonBean);
-      manager.addBean(soleBean);
-      Set<Bean<Animal>> possibleTargets = manager.resolveByType(whiteChunkyFishField); 
-      assert possibleTargets.size() == 1;
-      assert possibleTargets.contains(codBean);
-   }
-   
-   @Test
-   public void testMultipleApiTypeWithCurrent() throws Exception
-   {
-      AnnotatedField<Animal> animalField = new AnnotatedFieldImpl<Animal>(FishFarm.class.getDeclaredField("animal"), fishFarmClass);
-      Bean<SeaBass> seaBassBean = SimpleBean.of(SeaBass.class, manager);
-      Bean<Haddock> haddockBean = SimpleBean.of(Haddock.class, manager);
-      manager.addBean(seaBassBean);
-      manager.addBean(haddockBean);
-      Set<Bean<Animal>> possibleTargets = manager.resolveByType(animalField);
-      assert possibleTargets.size() == 2;
-      assert possibleTargets.contains(seaBassBean);
-      assert possibleTargets.contains(haddockBean);
-   }
-   
-   @Test(groups="resolution") @SpecAssertion(section={"5.9.2"})
-   public void testResolveByType() throws Exception
-   {
-      Bean<Tuna> tunaBean = SimpleBean.of(Tuna.class, manager);
-      Bean<Salmon> salmonBean = SimpleBean.of(Salmon.class, manager);
-      Bean<SeaBass> seaBassBean = SimpleBean.of(SeaBass.class, manager);
-      Bean<Haddock> haddockBean = SimpleBean.of(Haddock.class, manager);
-      
-      manager.addBean(tunaBean);
-      manager.addBean(salmonBean);
-      manager.addBean(haddockBean);
-      manager.addBean(seaBassBean);
-      
-      assert manager.resolveByType(Tuna.class, new CurrentBinding()).size() == 1;
-      assert manager.resolveByType(Tuna.class, new CurrentBinding()).contains(tunaBean);
-      
-      assert manager.resolveByType(Tuna.class).size() == 1;
-      assert manager.resolveByType(Tuna.class).contains(tunaBean);
-      
-      assert manager.resolveByType(Animal.class, new CurrentBinding()).size() == 3;
-      assert manager.resolveByType(Animal.class, new CurrentBinding()).contains(salmonBean);
-      assert manager.resolveByType(Animal.class, new CurrentBinding()).contains(seaBassBean);
-      assert manager.resolveByType(Animal.class, new CurrentBinding()).contains(haddockBean);
-   }
-   
-   @Test(groups="injection") @SpecAssertion(section={"2.3.5","5.9.2.2"}) 
-   public void testAllBindingTypesSpecifiedForResolutionMustAppearOnWebBean()
-   {
-      Bean<Cod> codBean = SimpleBean.of(Cod.class, manager);
-      Bean<Salmon> salmonBean = SimpleBean.of(Salmon.class, manager);
-      Bean<Sole> soleBean = SimpleBean.of(Sole.class, manager);
-      
-      manager.addBean(codBean);
-      manager.addBean(salmonBean);
-      manager.addBean(soleBean);
-      
-      assert manager.resolveByType(Animal.class, new ChunkyAnnotationLiteral() {
-
-         public boolean realChunky()
-         {
-            return true;
-         }
-         
-      }, new AnnotationLiteral<Whitefish>() {}).size() == 1;
-      assert manager.resolveByType(Animal.class, new ChunkyAnnotationLiteral() {
-
-         public boolean realChunky()
-         {
-            return true;
-         }
-         
-      }, new AnnotationLiteral<Whitefish>() {}).contains(codBean);
-      
-      assert manager.resolveByType(ScottishFish.class, new AnnotationLiteral<Whitefish>() {}).size() == 2;
-      assert manager.resolveByType(ScottishFish.class, new AnnotationLiteral<Whitefish>() {}).contains(codBean);
-      assert manager.resolveByType(ScottishFish.class, new AnnotationLiteral<Whitefish>() {}).contains(soleBean);
-   }
-   
-   @Test(groups="resolution") @SpecAssertion(section="5.9.2")
-   public void testResolveByTypeWithTypeParameter() throws Exception
-   {
-      AnnotatedField<Farmer<ScottishFish>> scottishFishFarmerField = new AnnotatedFieldImpl<Farmer<ScottishFish>>(FishFarm.class.getDeclaredField("scottishFishFarmer"), fishFarmClass);
-      
-      Bean<ScottishFishFarmer> scottishFishFarmerBean = SimpleBean.of(ScottishFishFarmer.class, manager);
-      Bean<AnimalFarmer> farmerBean = SimpleBean.of(AnimalFarmer.class, manager);
-      
-      manager.addBean(scottishFishFarmerBean);
-      manager.addBean(farmerBean);
-      
-      assert manager.resolveByType(new TypeLiteral<Farmer<ScottishFish>>(){}).size() == 1;
-      assert manager.resolveByType(new TypeLiteral<Farmer<ScottishFish>>(){}).contains(scottishFishFarmerBean);
-   }
-   
-   @Test(groups={"resolution", "producerMethod"}) @SpecAssertion(section="5.9.2")
-   public void testResolveByTypeWithArray() throws Exception
-   {
-      SimpleBean<SpiderProducer> spiderProducerBean = SimpleBean.of(SpiderProducer.class, manager);
-      manager.addBean(spiderProducerBean);
-      Method method = SpiderProducer.class.getMethod("getSpiders");
-      Bean<Spider[]> spidersModel = ProducerMethodBean.of(method, spiderProducerBean, manager);
-      manager.addBean(spidersModel);
-      method = SpiderProducer.class.getMethod("getStrings");
-      Bean<String[]> stringModel = ProducerMethodBean.of(method, spiderProducerBean, manager);
-      manager.addBean(stringModel);
-      
-      assert manager.resolveByType(Spider[].class).size() == 1;
-   }
-   
-   @Test @SpecAssertion(section="5.9.2")
-   public void testOnlyHighestEnabledPreecedenceWebBeansResolved() throws Exception
-   {
-      AnnotatedField<Animal> whiteFishField = new AnnotatedFieldImpl<Animal>(FishFarm.class.getDeclaredField("whiteFish"), fishFarmClass);
-      Bean<Cod> codBean = SimpleBean.of(Cod.class, manager);
-      Bean<Sole> soleBean = SimpleBean.of(Sole.class, manager);
-      Bean<Plaice> plaiceBean = SimpleBean.of(Plaice.class, manager);
-      
-      
-      manager.addBean(plaiceBean);
-      manager.addBean(codBean);
-      manager.addBean(soleBean);
-
-      assert manager.resolveByType(Animal.class, new AnnotationLiteral<Whitefish>() {}).size() == 1;
-      assert manager.resolveByType(Animal.class, new AnnotationLiteral<Whitefish>() {}).contains(plaiceBean);
-      
-   }
-  
-   
-   @Test(groups="resolution") @SpecAssertion(section="5.9.2")
-   public void testNoWebBeansFound() throws Exception
-   {
-      AnnotatedField<ScottishFish> whiteScottishFishField = new AnnotatedFieldImpl<ScottishFish>(FishFarm.class.getDeclaredField("whiteScottishFish"), fishFarmClass);
-      Bean<Salmon> salmonBean = SimpleBean.of(Salmon.class, manager);
-      Bean<Sole> soleBean = SimpleBean.of(Sole.class, manager);
-      Bean<Plaice> plaiceBean = SimpleBean.of(Plaice.class, manager);
-      manager.addBean(plaiceBean);
-      manager.addBean(salmonBean);
-      manager.addBean(soleBean);
-      
-      assert manager.resolveByType(Tuna.class, new CurrentBinding()).size() == 0;
-   }
-   
-   @Test(groups="resolution") @SpecAssertion(section="5.9.2.1")
-   public void testResolveByTypeWithNonBindingMembers() throws Exception
-   {
-      AnnotatedField<Animal> veryExpensiveWhitefishField = new AnnotatedFieldImpl<Animal>(FishFarm.class.getDeclaredField("veryExpensiveWhitefish"), fishFarmClass);
-      Bean<Halibut> halibutBean = SimpleBean.of(Halibut.class, manager);
-      Bean<RoundWhitefish> roundWhiteFishBean = SimpleBean.of(RoundWhitefish.class, manager);
-      Bean<Sole> soleBean = SimpleBean.of(Sole.class, manager);
-      manager.addBean(halibutBean);
-      manager.addBean(roundWhiteFishBean);
-      manager.addBean(soleBean);
-      
-      Set<Bean<Animal>> beans = manager.resolveByType(Animal.class, new ExpensiveAnnotationLiteral() 
-      {
-
-         public int cost()
-         {
-            return 60;
-         }
-
-         public boolean veryExpensive()
-         {
-            return true;
-         }
-         
-      }, new AnnotationLiteral<Whitefish>() {});
-      assert beans.size() == 2;
-      assert beans.contains(halibutBean);
-      assert beans.contains(roundWhiteFishBean);
-   }
-   
-   @Test(groups="resolution", expectedExceptions=DefinitionException.class) @SpecAssertion(section="5.9.2.1")
-   public void testArrayValuedAnnotationMemberWithoutNonBinding()
-   {
-      manager.resolveByType(Animal.class, new BindingTypeWithBindingArrayTypeMemberAnnotationLiteral() {
-         
-         public boolean[] bool()
-         {
-            return new boolean[0];
-         }
-         
-      });
-   }
-   
-   @Test(groups="resolution", expectedExceptions=DefinitionException.class) @SpecAssertion(section="5.9.2.1")
-   public void testAnnotationValuedAnnotationMemberWithoutNonBinding()
-   {
-      manager.resolveByType(Animal.class, new BindingTypeWithBindingAnnotationMemberAnnotationLiteral()
-      {
-         
-         public Expensive expensive()
-         {
-            return new ExpensiveAnnotationLiteral()
-            {
-               public int cost()
-               {
-                  return 0;
-               }
-               
-               public boolean veryExpensive()
-               {
-                  return false;
-               }
-            };
-         }
-      
-      });
-   }
-      
-}

Copied: ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/unit/ResolutionByTypeTest.java (from rev 1030, ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/ResolutionByTypeTest.java)
===================================================================
--- ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/unit/ResolutionByTypeTest.java	                        (rev 0)
+++ ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/unit/ResolutionByTypeTest.java	2009-01-16 19:26:29 UTC (rev 1034)
@@ -0,0 +1,89 @@
+package org.jboss.webbeans.test.unit;
+
+import java.util.Set;
+
+import javax.webbeans.manager.Bean;
+
+import org.jboss.webbeans.bean.SimpleBean;
+import org.jboss.webbeans.binding.CurrentBinding;
+import org.jboss.webbeans.introspector.AnnotatedClass;
+import org.jboss.webbeans.introspector.AnnotatedField;
+import org.jboss.webbeans.introspector.jlr.AnnotatedClassImpl;
+import org.jboss.webbeans.introspector.jlr.AnnotatedFieldImpl;
+import org.jboss.webbeans.test.AbstractTest;
+import org.jboss.webbeans.test.SpecVersion;
+import org.jboss.webbeans.test.beans.Animal;
+import org.jboss.webbeans.test.beans.Cod;
+import org.jboss.webbeans.test.beans.FishFarm;
+import org.jboss.webbeans.test.beans.Haddock;
+import org.jboss.webbeans.test.beans.Salmon;
+import org.jboss.webbeans.test.beans.ScottishFish;
+import org.jboss.webbeans.test.beans.SeaBass;
+import org.jboss.webbeans.test.beans.Sole;
+import org.jboss.webbeans.test.beans.Tuna;
+import org.testng.annotations.Test;
+
+ at SpecVersion("20081206")
+public class ResolutionByTypeTest extends AbstractTest
+{
+   
+   private AnnotatedClass<FishFarm> fishFarmClass = new AnnotatedClassImpl<FishFarm>(FishFarm.class);
+
+   @Test(groups="resolution")
+   public void testAnnotatedField() throws Exception
+   {
+      AnnotatedField<Tuna> tuna = new AnnotatedFieldImpl<Tuna>(FishFarm.class.getDeclaredField("tuna"), fishFarmClass);
+      assert tuna.getType().isAssignableFrom(Tuna.class);
+      assert tuna.getBindingTypes().size() == 1;
+      assert tuna.getBindingTypes().contains(new CurrentBinding());
+      assert tuna.getType().isAssignableFrom(Tuna.class);
+   }
+   
+   @Test
+   public void testOneBindingType() throws Exception
+   {
+      AnnotatedField<ScottishFish> whiteScottishFishField = new AnnotatedFieldImpl<ScottishFish>(FishFarm.class.getDeclaredField("whiteScottishFish"), fishFarmClass);
+      Bean<Cod> codBean = SimpleBean.of(Cod.class, manager);
+      Bean<Salmon> salmonBean = SimpleBean.of(Salmon.class, manager);
+      Bean<Sole> soleBean = SimpleBean.of(Sole.class, manager);
+      manager.addBean(codBean);
+      manager.addBean(salmonBean);
+      manager.addBean(soleBean);
+      Set<Bean<ScottishFish>> possibleTargets = manager.resolveByType(whiteScottishFishField);
+      assert possibleTargets.size() == 2;
+      assert possibleTargets.contains(codBean);
+      assert possibleTargets.contains(soleBean);
+   }
+   
+   @Test
+   public void testABindingType() throws Exception
+   {
+      AnnotatedField<Animal> whiteChunkyFishField = new AnnotatedFieldImpl<Animal>(FishFarm.class.getDeclaredField("realChunkyWhiteFish"), fishFarmClass);
+      
+      Bean<Cod> codBean = SimpleBean.of(Cod.class, manager);
+      Bean<Salmon> salmonBean = SimpleBean.of(Salmon.class, manager);
+      Bean<Sole> soleBean = SimpleBean.of(Sole.class, manager);
+      
+      manager.addBean(codBean);
+      manager.addBean(salmonBean);
+      manager.addBean(soleBean);
+      Set<Bean<Animal>> possibleTargets = manager.resolveByType(whiteChunkyFishField); 
+      assert possibleTargets.size() == 1;
+      assert possibleTargets.contains(codBean);
+   }
+   
+   @Test
+   public void testMultipleApiTypeWithCurrent() throws Exception
+   {
+      AnnotatedField<Animal> animalField = new AnnotatedFieldImpl<Animal>(FishFarm.class.getDeclaredField("animal"), fishFarmClass);
+      Bean<SeaBass> seaBassBean = SimpleBean.of(SeaBass.class, manager);
+      Bean<Haddock> haddockBean = SimpleBean.of(Haddock.class, manager);
+      manager.addBean(seaBassBean);
+      manager.addBean(haddockBean);
+      Set<Bean<Animal>> possibleTargets = manager.resolveByType(animalField);
+      assert possibleTargets.size() == 2;
+      assert possibleTargets.contains(seaBassBean);
+      assert possibleTargets.contains(haddockBean);
+   }
+      
+}


Property changes on: ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/unit/ResolutionByTypeTest.java
___________________________________________________________________
Name: svn:mime-type
   + text/plain

Added: tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/lookup/typesafe/AnimalFarmer.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/lookup/typesafe/AnimalFarmer.java	                        (rev 0)
+++ tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/lookup/typesafe/AnimalFarmer.java	2009-01-16 19:26:29 UTC (rev 1034)
@@ -0,0 +1,6 @@
+package org.jboss.webbeans.tck.tests.lookup.typesafe;
+
+class AnimalFarmer extends Farmer<Animal>
+{
+   
+}


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

Added: tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/lookup/typesafe/BindingTypeWithBindingAnnotationMemberLiteral_Broken.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/lookup/typesafe/BindingTypeWithBindingAnnotationMemberLiteral_Broken.java	                        (rev 0)
+++ tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/lookup/typesafe/BindingTypeWithBindingAnnotationMemberLiteral_Broken.java	2009-01-16 19:26:29 UTC (rev 1034)
@@ -0,0 +1,8 @@
+package org.jboss.webbeans.tck.tests.lookup.typesafe;
+
+import javax.webbeans.AnnotationLiteral;
+
+abstract class BindingTypeWithBindingAnnotationMemberLiteral_Broken extends AnnotationLiteral<BindingTypeWithBindingAnnotationMember_Broken> implements BindingTypeWithBindingAnnotationMember_Broken
+{
+   
+}


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

Added: tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/lookup/typesafe/BindingTypeWithBindingAnnotationMember_Broken.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/lookup/typesafe/BindingTypeWithBindingAnnotationMember_Broken.java	                        (rev 0)
+++ tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/lookup/typesafe/BindingTypeWithBindingAnnotationMember_Broken.java	2009-01-16 19:26:29 UTC (rev 1034)
@@ -0,0 +1,24 @@
+package org.jboss.webbeans.tck.tests.lookup.typesafe;
+
+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 BindingTypeWithBindingAnnotationMember_Broken
+{
+   
+   Expensive expensive();
+   
+}


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

Added: tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/lookup/typesafe/BindingTypeWithBindingArrayTypeMemberLiteral_Broken.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/lookup/typesafe/BindingTypeWithBindingArrayTypeMemberLiteral_Broken.java	                        (rev 0)
+++ tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/lookup/typesafe/BindingTypeWithBindingArrayTypeMemberLiteral_Broken.java	2009-01-16 19:26:29 UTC (rev 1034)
@@ -0,0 +1,8 @@
+package org.jboss.webbeans.tck.tests.lookup.typesafe;
+
+import javax.webbeans.AnnotationLiteral;
+
+abstract class BindingTypeWithBindingArrayTypeMemberLiteral_Broken extends AnnotationLiteral<BindingTypeWithBindingArrayTypeMember_Broken> implements BindingTypeWithBindingArrayTypeMember_Broken
+{
+   
+}


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

Added: tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/lookup/typesafe/BindingTypeWithBindingArrayTypeMember_Broken.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/lookup/typesafe/BindingTypeWithBindingArrayTypeMember_Broken.java	                        (rev 0)
+++ tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/lookup/typesafe/BindingTypeWithBindingArrayTypeMember_Broken.java	2009-01-16 19:26:29 UTC (rev 1034)
@@ -0,0 +1,24 @@
+package org.jboss.webbeans.tck.tests.lookup.typesafe;
+
+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 BindingTypeWithBindingArrayTypeMember_Broken
+{
+   
+   boolean[] bool();
+   
+}


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

Added: tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/lookup/typesafe/ChunkyLiteral.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/lookup/typesafe/ChunkyLiteral.java	                        (rev 0)
+++ tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/lookup/typesafe/ChunkyLiteral.java	2009-01-16 19:26:29 UTC (rev 1034)
@@ -0,0 +1,8 @@
+package org.jboss.webbeans.tck.tests.lookup.typesafe;
+
+import javax.webbeans.AnnotationLiteral;
+
+abstract class ChunkyLiteral extends AnnotationLiteral<Chunky> implements Chunky
+{
+   
+}


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

Added: tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/lookup/typesafe/DaddyLongLegs.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/lookup/typesafe/DaddyLongLegs.java	                        (rev 0)
+++ tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/lookup/typesafe/DaddyLongLegs.java	2009-01-16 19:26:29 UTC (rev 1034)
@@ -0,0 +1,6 @@
+package org.jboss.webbeans.tck.tests.lookup.typesafe;
+
+class DaddyLongLegs extends Spider
+{
+
+}


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

Added: tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/lookup/typesafe/DeadlyAnimal.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/lookup/typesafe/DeadlyAnimal.java	                        (rev 0)
+++ tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/lookup/typesafe/DeadlyAnimal.java	2009-01-16 19:26:29 UTC (rev 1034)
@@ -0,0 +1,6 @@
+package org.jboss.webbeans.tck.tests.lookup.typesafe;
+
+interface DeadlyAnimal
+{
+
+}


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

Added: tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/lookup/typesafe/DeadlySpider.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/lookup/typesafe/DeadlySpider.java	                        (rev 0)
+++ tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/lookup/typesafe/DeadlySpider.java	2009-01-16 19:26:29 UTC (rev 1034)
@@ -0,0 +1,6 @@
+package org.jboss.webbeans.tck.tests.lookup.typesafe;
+
+interface DeadlySpider extends DeadlyAnimal
+{
+
+}


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

Added: tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/lookup/typesafe/Expensive.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/lookup/typesafe/Expensive.java	                        (rev 0)
+++ tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/lookup/typesafe/Expensive.java	2009-01-16 19:26:29 UTC (rev 1034)
@@ -0,0 +1,28 @@
+package org.jboss.webbeans.tck.tests.lookup.typesafe;
+
+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;
+import javax.webbeans.NonBinding;
+
+ at Target( { TYPE, METHOD, PARAMETER, FIELD })
+ at Retention(RUNTIME)
+ at Documented
+ at BindingType
+ at interface Expensive
+{
+   
+   boolean veryExpensive();
+   
+   @NonBinding
+   int cost();
+   
+}


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

Added: tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/lookup/typesafe/ExpensiveLiteral.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/lookup/typesafe/ExpensiveLiteral.java	                        (rev 0)
+++ tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/lookup/typesafe/ExpensiveLiteral.java	2009-01-16 19:26:29 UTC (rev 1034)
@@ -0,0 +1,8 @@
+package org.jboss.webbeans.tck.tests.lookup.typesafe;
+
+import javax.webbeans.AnnotationLiteral;
+
+abstract class ExpensiveLiteral extends AnnotationLiteral<Expensive> implements Expensive
+{
+   
+}


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

Added: tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/lookup/typesafe/Farmer.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/lookup/typesafe/Farmer.java	                        (rev 0)
+++ tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/lookup/typesafe/Farmer.java	2009-01-16 19:26:29 UTC (rev 1034)
@@ -0,0 +1,9 @@
+package org.jboss.webbeans.tck.tests.lookup.typesafe;
+
+import javax.webbeans.Production;
+
+ at Production
+class Farmer<T>
+{
+
+}


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

Added: tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/lookup/typesafe/Haddock.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/lookup/typesafe/Haddock.java	                        (rev 0)
+++ tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/lookup/typesafe/Haddock.java	2009-01-16 19:26:29 UTC (rev 1034)
@@ -0,0 +1,11 @@
+package org.jboss.webbeans.tck.tests.lookup.typesafe;
+
+import javax.webbeans.Named;
+import javax.webbeans.Production;
+
+ at Production
+ at Named
+class Haddock implements Animal
+{
+
+}


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

Added: tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/lookup/typesafe/Halibut.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/lookup/typesafe/Halibut.java	                        (rev 0)
+++ tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/lookup/typesafe/Halibut.java	2009-01-16 19:26:29 UTC (rev 1034)
@@ -0,0 +1,9 @@
+package org.jboss.webbeans.tck.tests.lookup.typesafe;
+
+
+ at Expensive(cost=50, veryExpensive=true)
+ at Whitefish
+class Halibut implements Animal
+{
+   
+}


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

Added: tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/lookup/typesafe/LadybirdSpider.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/lookup/typesafe/LadybirdSpider.java	                        (rev 0)
+++ tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/lookup/typesafe/LadybirdSpider.java	2009-01-16 19:26:29 UTC (rev 1034)
@@ -0,0 +1,14 @@
+package org.jboss.webbeans.tck.tests.lookup.typesafe;
+
+import javax.webbeans.ApplicationScoped;
+
+ at ApplicationScoped
+class LadybirdSpider extends Spider
+{
+
+   public void spinWeb()
+   {
+      
+   }
+   
+}


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

Added: tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/lookup/typesafe/Plaice.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/lookup/typesafe/Plaice.java	                        (rev 0)
+++ tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/lookup/typesafe/Plaice.java	2009-01-16 19:26:29 UTC (rev 1034)
@@ -0,0 +1,11 @@
+package org.jboss.webbeans.tck.tests.lookup.typesafe;
+
+import javax.webbeans.Named;
+
+ at AnotherDeploymentType
+ at Whitefish
+ at Named("whitefish")
+final class Plaice implements Animal
+{
+
+}


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

Added: tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/lookup/typesafe/ResolutionByTypeTest.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/lookup/typesafe/ResolutionByTypeTest.java	                        (rev 0)
+++ tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/lookup/typesafe/ResolutionByTypeTest.java	2009-01-16 19:26:29 UTC (rev 1034)
@@ -0,0 +1,250 @@
+package org.jboss.webbeans.tck.tests.lookup.typesafe;
+
+import java.lang.annotation.Annotation;
+import java.lang.reflect.Method;
+import java.util.List;
+import java.util.Set;
+
+import javax.webbeans.AnnotationLiteral;
+import javax.webbeans.DefinitionException;
+import javax.webbeans.DuplicateBindingTypeException;
+import javax.webbeans.TypeLiteral;
+import javax.webbeans.manager.Bean;
+
+import org.jboss.webbeans.tck.impl.SpecAssertion;
+import org.jboss.webbeans.tck.impl.SpecVersion;
+import org.jboss.webbeans.tck.impl.literals.CurrentBinding;
+import org.jboss.webbeans.tck.tests.AbstractTest;
+import org.testng.annotations.Test;
+
+ at SpecVersion("20081206")
+public class ResolutionByTypeTest extends AbstractTest
+{
+   
+   @Override
+   protected List<Class<? extends Annotation>> getEnabledDeploymentTypes()
+   {
+      List<Class<? extends Annotation>> deploymentTypes = super.getStandardDeploymentTypes();
+      deploymentTypes.add(AnotherDeploymentType.class);
+      return deploymentTypes;
+   }
+   
+   @Test(groups="resolution") @SpecAssertion(section="5.9.2")
+   public void testDefaultBindingTypeAssumed() throws Exception
+   {
+      Bean<Tuna> tunaBean = createSimpleBean(Tuna.class);
+      manager.addBean(tunaBean);
+      Set<Bean<Tuna>> possibleTargets = manager.resolveByType(Tuna.class);
+      assert possibleTargets.size() == 1;
+      assert possibleTargets.contains(tunaBean);
+   }
+   
+   @Test(groups="resolution", expectedExceptions=IllegalArgumentException.class) @SpecAssertion(section="5.9")
+   public void testParameterizedTypeWithWildcardParameter()
+   {
+      manager.resolveByType(new TypeLiteral<ParameterizedBean_Broken<?>>(){});
+   }
+   
+   @Test(groups="resolution", expectedExceptions=IllegalArgumentException.class) @SpecAssertion(section="5.9")
+   public  <T> void testParameterizedTypeWithTypeParameter()
+   {
+      manager.resolveByType(new TypeLiteral<ParameterizedBean_Broken<T>>(){});
+   }
+   
+   @Test(groups="resolution", expectedExceptions=DuplicateBindingTypeException.class) @SpecAssertion(section="5.9.2")
+   public void testDuplicateBindingTypesUsed()
+   {
+      manager.resolveByType(Tuna.class, new CurrentBinding(), new CurrentBinding());
+   }
+   
+   @Test(groups="resolution", expectedExceptions=IllegalArgumentException.class) @SpecAssertion(section="5.9.2")
+   public void testNonBindingTypeUsed()
+   {
+      manager.resolveByType(Tuna.class, new AnotherDeploymentTypeLiteral());
+   }
+   
+   @Test(groups="resolution") @SpecAssertion(section={"5.9.2"})
+   public void testResolveByType() throws Exception
+   {
+      Bean<Tuna> tunaBean = createSimpleBean(Tuna.class);
+      Bean<Salmon> salmonBean = createSimpleBean(Salmon.class);
+      Bean<SeaBass> seaBassBean = createSimpleBean(SeaBass.class);
+      Bean<Haddock> haddockBean = createSimpleBean(Haddock.class);
+      
+      manager.addBean(tunaBean);
+      manager.addBean(salmonBean);
+      manager.addBean(haddockBean);
+      manager.addBean(seaBassBean);
+      
+      assert manager.resolveByType(Tuna.class, new CurrentBinding()).size() == 1;
+      assert manager.resolveByType(Tuna.class, new CurrentBinding()).contains(tunaBean);
+      
+      assert manager.resolveByType(Tuna.class).size() == 1;
+      assert manager.resolveByType(Tuna.class).contains(tunaBean);
+      
+      assert manager.resolveByType(Animal.class, new CurrentBinding()).size() == 3;
+      assert manager.resolveByType(Animal.class, new CurrentBinding()).contains(salmonBean);
+      assert manager.resolveByType(Animal.class, new CurrentBinding()).contains(seaBassBean);
+      assert manager.resolveByType(Animal.class, new CurrentBinding()).contains(haddockBean);
+   }
+   
+   @Test(groups="injection") @SpecAssertion(section={"2.3.5","5.9.2.2"}) 
+   public void testAllBindingTypesSpecifiedForResolutionMustAppearOnWebBean()
+   {
+      Bean<Cod> codBean = createSimpleBean(Cod.class);
+      Bean<Salmon> salmonBean = createSimpleBean(Salmon.class);
+      Bean<Sole> soleBean = createSimpleBean(Sole.class);
+      
+      manager.addBean(codBean);
+      manager.addBean(salmonBean);
+      manager.addBean(soleBean);
+      
+      assert manager.resolveByType(Animal.class, new ChunkyLiteral() {
+
+         public boolean realChunky()
+         {
+            return true;
+         }
+         
+      }, new AnnotationLiteral<Whitefish>() {}).size() == 1;
+      assert manager.resolveByType(Animal.class, new ChunkyLiteral() {
+
+         public boolean realChunky()
+         {
+            return true;
+         }
+         
+      }, new AnnotationLiteral<Whitefish>() {}).contains(codBean);
+      
+      assert manager.resolveByType(ScottishFish.class, new AnnotationLiteral<Whitefish>() {}).size() == 2;
+      assert manager.resolveByType(ScottishFish.class, new AnnotationLiteral<Whitefish>() {}).contains(codBean);
+      assert manager.resolveByType(ScottishFish.class, new AnnotationLiteral<Whitefish>() {}).contains(soleBean);
+   }
+   
+   @Test(groups="resolution") @SpecAssertion(section="5.9.2")
+   public void testResolveByTypeWithTypeParameter() throws Exception
+   {
+      Bean<ScottishFishFarmer> scottishFishFarmerBean = createSimpleBean(ScottishFishFarmer.class);
+      Bean<AnimalFarmer> farmerBean = createSimpleBean(AnimalFarmer.class);
+      
+      manager.addBean(scottishFishFarmerBean);
+      manager.addBean(farmerBean);
+      
+      assert manager.resolveByType(new TypeLiteral<Farmer<ScottishFish>>(){}).size() == 1;
+      assert manager.resolveByType(new TypeLiteral<Farmer<ScottishFish>>(){}).contains(scottishFishFarmerBean);
+   }
+   
+   @Test(groups={"resolution", "producerMethod"}) @SpecAssertion(section="5.9.2")
+   public void testResolveByTypeWithArray() throws Exception
+   {
+      Bean<SpiderProducer> spiderProducerBean = createSimpleBean(SpiderProducer.class);
+      manager.addBean(spiderProducerBean);
+      Method method = SpiderProducer.class.getMethod("getSpiders");
+      Bean<Spider[]> spidersModel = createProducerMethodBean(method, spiderProducerBean);
+      manager.addBean(spidersModel);
+      method = SpiderProducer.class.getMethod("getStrings");
+      Bean<String[]> stringModel = createProducerMethodBean(method, spiderProducerBean);
+      manager.addBean(stringModel);
+      
+      assert manager.resolveByType(Spider[].class).size() == 1;
+   }
+   
+   @Test @SpecAssertion(section="5.9.2")
+   public void testOnlyHighestEnabledPreecedenceWebBeansResolved() throws Exception
+   {
+      Bean<Cod> codBean = createSimpleBean(Cod.class);
+      Bean<Sole> soleBean = createSimpleBean(Sole.class);
+      Bean<Plaice> plaiceBean = createSimpleBean(Plaice.class);
+      
+      
+      manager.addBean(plaiceBean);
+      manager.addBean(codBean);
+      manager.addBean(soleBean);
+
+      assert manager.resolveByType(Animal.class, new AnnotationLiteral<Whitefish>() {}).size() == 1;
+      assert manager.resolveByType(Animal.class, new AnnotationLiteral<Whitefish>() {}).contains(plaiceBean);
+      
+   }
+  
+   
+   @Test(groups="resolution") @SpecAssertion(section="5.9.2")
+   public void testNoWebBeansFound() throws Exception
+   {
+      Bean<Salmon> salmonBean = createSimpleBean(Salmon.class);
+      Bean<Sole> soleBean = createSimpleBean(Sole.class);
+      Bean<Plaice> plaiceBean = createSimpleBean(Plaice.class);
+      manager.addBean(plaiceBean);
+      manager.addBean(salmonBean);
+      manager.addBean(soleBean);
+      
+      assert manager.resolveByType(Tuna.class, new CurrentBinding()).size() == 0;
+   }
+   
+   @Test(groups="resolution") @SpecAssertion(section="5.9.2.1")
+   public void testResolveByTypeWithNonBindingMembers() throws Exception
+   {
+      Bean<Halibut> halibutBean = createSimpleBean(Halibut.class);
+      Bean<RoundWhitefish> roundWhiteFishBean = createSimpleBean(RoundWhitefish.class);
+      Bean<Sole> soleBean = createSimpleBean(Sole.class);
+      manager.addBean(halibutBean);
+      manager.addBean(roundWhiteFishBean);
+      manager.addBean(soleBean);
+      
+      Set<Bean<Animal>> beans = manager.resolveByType(Animal.class, new ExpensiveLiteral() 
+      {
+
+         public int cost()
+         {
+            return 60;
+         }
+
+         public boolean veryExpensive()
+         {
+            return true;
+         }
+         
+      }, new AnnotationLiteral<Whitefish>() {});
+      assert beans.size() == 2;
+      assert beans.contains(halibutBean);
+      assert beans.contains(roundWhiteFishBean);
+   }
+   
+   @Test(groups="resolution", expectedExceptions=DefinitionException.class) @SpecAssertion(section="5.9.2.1")
+   public void testArrayValuedAnnotationMemberWithoutNonBinding()
+   {
+      manager.resolveByType(Animal.class, new BindingTypeWithBindingArrayTypeMemberLiteral_Broken() {
+         
+         public boolean[] bool()
+         {
+            return new boolean[0];
+         }
+         
+      });
+   }
+   
+   @Test(groups="resolution", expectedExceptions=DefinitionException.class) @SpecAssertion(section="5.9.2.1")
+   public void testAnnotationValuedAnnotationMemberWithoutNonBinding()
+   {
+      manager.resolveByType(Animal.class, new BindingTypeWithBindingAnnotationMemberLiteral_Broken()
+      {
+         
+         public Expensive expensive()
+         {
+            return new ExpensiveLiteral()
+            {
+               public int cost()
+               {
+                  return 0;
+               }
+               
+               public boolean veryExpensive()
+               {
+                  return false;
+               }
+            };
+         }
+      
+      });
+   }
+      
+}


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

Added: tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/lookup/typesafe/RoundWhitefish.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/lookup/typesafe/RoundWhitefish.java	                        (rev 0)
+++ tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/lookup/typesafe/RoundWhitefish.java	2009-01-16 19:26:29 UTC (rev 1034)
@@ -0,0 +1,8 @@
+package org.jboss.webbeans.tck.tests.lookup.typesafe;
+
+ at Expensive(cost=60, veryExpensive=true)
+ at Whitefish
+class RoundWhitefish implements Animal
+{
+   
+}


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

Added: tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/lookup/typesafe/ScottishFishFarmer.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/lookup/typesafe/ScottishFishFarmer.java	                        (rev 0)
+++ tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/lookup/typesafe/ScottishFishFarmer.java	2009-01-16 19:26:29 UTC (rev 1034)
@@ -0,0 +1,9 @@
+package org.jboss.webbeans.tck.tests.lookup.typesafe;
+
+import javax.webbeans.Production;
+
+ at Production
+class ScottishFishFarmer extends Farmer<ScottishFish>
+{
+
+}


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

Added: tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/lookup/typesafe/SeaBass.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/lookup/typesafe/SeaBass.java	                        (rev 0)
+++ tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/lookup/typesafe/SeaBass.java	2009-01-16 19:26:29 UTC (rev 1034)
@@ -0,0 +1,11 @@
+package org.jboss.webbeans.tck.tests.lookup.typesafe;
+
+import javax.webbeans.Production;
+import javax.webbeans.RequestScoped;
+
+ at Production
+ at RequestScoped
+class SeaBass implements Animal
+{
+
+}


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

Added: tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/lookup/typesafe/Spider.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/lookup/typesafe/Spider.java	                        (rev 0)
+++ tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/lookup/typesafe/Spider.java	2009-01-16 19:26:29 UTC (rev 1034)
@@ -0,0 +1,12 @@
+package org.jboss.webbeans.tck.tests.lookup.typesafe;
+
+
+class Spider implements Animal
+{
+
+   public final void layEggs()
+   {
+      
+   }
+   
+}


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

Added: tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/lookup/typesafe/SpiderProducer.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/lookup/typesafe/SpiderProducer.java	                        (rev 0)
+++ tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/lookup/typesafe/SpiderProducer.java	2009-01-16 19:26:29 UTC (rev 1034)
@@ -0,0 +1,21 @@
+package org.jboss.webbeans.tck.tests.lookup.typesafe;
+
+import javax.webbeans.Produces;
+
+ at AnotherDeploymentType
+class SpiderProducer
+{
+   
+   private static Spider[] ALL_SPIDERS = { new Tarantula(), new LadybirdSpider(), new DaddyLongLegs() };
+   
+   @Produces public Spider[] getSpiders()
+   {
+      return ALL_SPIDERS;
+   }
+   
+   @Produces public String[] getStrings()
+   {
+      return new String[0];
+   }
+   
+}


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

Added: tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/lookup/typesafe/Tarantula.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/lookup/typesafe/Tarantula.java	                        (rev 0)
+++ tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/tests/lookup/typesafe/Tarantula.java	2009-01-16 19:26:29 UTC (rev 1034)
@@ -0,0 +1,6 @@
+package org.jboss.webbeans.tck.tests.lookup.typesafe;
+
+class Tarantula extends Spider implements DeadlySpider
+{
+
+}


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




More information about the weld-commits mailing list