[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