[webbeans-commits] Webbeans SVN: r447 - in ri/trunk/webbeans-ri/src: test/java/org/jboss/webbeans/test and 1 other directory.
webbeans-commits at lists.jboss.org
webbeans-commits at lists.jboss.org
Sun Dec 7 13:08:47 EST 2008
Author: pete.muir at jboss.org
Date: 2008-12-07 13:08:47 -0500 (Sun, 07 Dec 2008)
New Revision: 447
Modified:
ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/ManagerImpl.java
ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/InstantiationByTypeTest.java
ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/ResolutionByTypeTest.java
Log:
Updates to instance resolution
Modified: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/ManagerImpl.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/ManagerImpl.java 2008-12-07 17:55:49 UTC (rev 446)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/ManagerImpl.java 2008-12-07 18:08:47 UTC (rev 447)
@@ -19,6 +19,9 @@
import java.io.InputStream;
import java.lang.annotation.Annotation;
+import java.lang.reflect.Type;
+import java.lang.reflect.TypeVariable;
+import java.lang.reflect.WildcardType;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashSet;
@@ -234,6 +237,17 @@
throw new IllegalArgumentException("Not a binding type " + annotation);
}
}
+ for (Type type : element.getActualTypeArguments())
+ {
+ if (type instanceof WildcardType)
+ {
+ throw new IllegalArgumentException("Cannot resolve a type parameterized with a wildcard " + element);
+ }
+ if (type instanceof TypeVariable)
+ {
+ throw new IllegalArgumentException("Cannot resolve a type parameterized with a type parameter " + element);
+ }
+ }
if (bindings.length > element.getMetaAnnotations(BindingType.class).size())
{
throw new DuplicateBindingTypeException(element.toString());
Modified: ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/InstantiationByTypeTest.java
===================================================================
--- ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/InstantiationByTypeTest.java 2008-12-07 17:55:49 UTC (rev 446)
+++ ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/InstantiationByTypeTest.java 2008-12-07 18:08:47 UTC (rev 447)
@@ -5,6 +5,7 @@
import javax.webbeans.AmbiguousDependencyException;
import javax.webbeans.AnnotationLiteral;
import javax.webbeans.DuplicateBindingTypeException;
+import javax.webbeans.TypeLiteral;
import javax.webbeans.UnproxyableDependencyException;
import javax.webbeans.UnsatisfiedDependencyException;
import javax.webbeans.manager.Bean;
@@ -22,17 +23,18 @@
import org.jboss.webbeans.test.beans.ScottishFish;
import org.jboss.webbeans.test.beans.Sole;
import org.jboss.webbeans.test.beans.Tuna;
+import org.jboss.webbeans.test.beans.broken.ParameterizedBean;
import org.jboss.webbeans.test.beans.broken.PlaiceFarm;
import org.jboss.webbeans.test.bindings.AnotherDeploymentTypeAnnotationLiteral;
import org.testng.annotations.Test;
- at SpecVersion("PDR")
+ at SpecVersion("20081206")
public class InstantiationByTypeTest extends AbstractTest
{
private AnnotatedClass<FishFarm> fishFarmClass = new AnnotatedClassImpl<FishFarm>(FishFarm.class);
- @Test(groups={"resolution", "beanLifecycle"}) @SpecAssertion(section="4.9")
+ @Test(groups={"resolution", "beanLifecycle"}) @SpecAssertion(section="5.9")
public void testCurrentBindingTypeAssumed()
{
Bean<Tuna> tunaBean = createSimpleBean(Tuna.class);
@@ -40,19 +42,32 @@
assert manager.getInstanceByType(Tuna.class) != null;
}
- @Test(groups="resolution", expectedExceptions=DuplicateBindingTypeException.class) @SpecAssertion(section="4.9")
+ @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")
public void testDuplicateBindingTypesUsed()
{
manager.getInstanceByType(Tuna.class, new CurrentAnnotationLiteral(), new CurrentAnnotationLiteral());
}
- @Test(groups="resolution", expectedExceptions=IllegalArgumentException.class) @SpecAssertion(section="4.9")
+ @Test(groups="resolution", expectedExceptions=IllegalArgumentException.class) @SpecAssertion(section="5.9")
public void testNonBindingTypeUsed()
{
manager.getInstanceByType(Tuna.class, new AnotherDeploymentTypeAnnotationLiteral());
}
- @Test(expectedExceptions=AmbiguousDependencyException.class) @SpecAssertion(section="4.9")
+ @Test(expectedExceptions=AmbiguousDependencyException.class) @SpecAssertion(section="5.9")
public void testAmbiguousDependencies() throws Exception
{
AnnotatedField<ScottishFish> whiteScottishFishField = new AnnotatedFieldImpl<ScottishFish>(FishFarm.class.getDeclaredField("whiteScottishFish"), fishFarmClass);
@@ -66,7 +81,7 @@
manager.getInstanceByType(ScottishFish.class, new AnnotationLiteral<Whitefish>(){});
}
- @Test(expectedExceptions=UnsatisfiedDependencyException.class) @SpecAssertion(section="4.9")
+ @Test(expectedExceptions=UnsatisfiedDependencyException.class) @SpecAssertion(section="5.9")
public void testUnsatisfiedDependencies() throws Exception
{
AnnotatedField<ScottishFish> whiteScottishFishField = new AnnotatedFieldImpl<ScottishFish>(FishFarm.class.getDeclaredField("whiteScottishFish"), fishFarmClass);
@@ -80,7 +95,7 @@
manager.getInstanceByType(Tuna.class, new CurrentAnnotationLiteral());
}
- @Test(expectedExceptions=UnproxyableDependencyException.class) @SpecAssertion(section="4.9")
+ @Test(expectedExceptions=UnproxyableDependencyException.class) @SpecAssertion(section="5.9")
public void testUnproxyableDependencies() throws Exception
{
AnnotatedField<Plaice> plaiceField = new AnnotatedFieldImpl<Plaice>(PlaiceFarm.class.getDeclaredField("plaice"), fishFarmClass);
@@ -92,7 +107,7 @@
/*
- @Test(groups="resolution") @SpecAssertion(section="4.9")
+ @Test(groups="resolution") @SpecAssertion(section="5.9")
public void test
{
assert false;
Modified: 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 2008-12-07 17:55:49 UTC (rev 446)
+++ ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/ResolutionByTypeTest.java 2008-12-07 18:08:47 UTC (rev 447)
@@ -44,7 +44,7 @@
import org.jboss.webbeans.test.bindings.ExpensiveAnnotationLiteral;
import org.testng.annotations.Test;
- at SpecVersion("PDR")
+ at SpecVersion("20081206")
public class ResolutionByTypeTest extends AbstractTest
{
@@ -60,7 +60,7 @@
assert tuna.getType().isAssignableFrom(Tuna.class);
}
- @Test(groups="resolution") @SpecAssertion(section="4.9.2")
+ @Test(groups="resolution") @SpecAssertion(section="5.9.2")
public void testSingleApiTypeWithCurrent() throws Exception
{
AnnotatedField<Tuna> tunaField = new AnnotatedFieldImpl<Tuna>(FishFarm.class.getDeclaredField("tuna"), fishFarmClass);
@@ -71,13 +71,13 @@
assert possibleTargets.contains(tunaBean);
}
- @Test(groups="resolution", expectedExceptions=DuplicateBindingTypeException.class) @SpecAssertion(section="4.9.2")
+ @Test(groups="resolution", expectedExceptions=DuplicateBindingTypeException.class) @SpecAssertion(section="5.9.2")
public void testDuplicateBindingTypesUsed()
{
manager.resolveByType(Tuna.class, new CurrentAnnotationLiteral(), new CurrentAnnotationLiteral());
}
- @Test(groups="resolution", expectedExceptions=IllegalArgumentException.class) @SpecAssertion(section="4.9.2")
+ @Test(groups="resolution", expectedExceptions=IllegalArgumentException.class) @SpecAssertion(section="5.9.2")
public void testNonBindingTypeUsed()
{
manager.resolveByType(Tuna.class, new AnotherDeploymentTypeAnnotationLiteral());
@@ -130,7 +130,7 @@
assert possibleTargets.contains(haddockBean);
}
- @Test(groups="resolution") @SpecAssertion(section={"4.9.2", "4.9.4"})
+ @Test(groups="resolution") @SpecAssertion(section={"5.9.2", "5.9.4"})
public void testResolveByType() throws Exception
{
Bean<Tuna> tunaBean = createSimpleBean(Tuna.class);
@@ -188,7 +188,7 @@
assert manager.resolveByType(ScottishFish.class, new AnnotationLiteral<Whitefish>() {}).contains(soleBean);
}
- @Test(groups="resolution") @SpecAssertion(section="4.9.2")
+ @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);
@@ -203,7 +203,7 @@
assert manager.resolveByType(new TypeLiteral<Farmer<ScottishFish>>(){}).contains(scottishFishFarmerBean);
}
- @Test(groups={"resolution", "producerMethod"}) @SpecAssertion(section="4.9.2")
+ @Test(groups={"resolution", "producerMethod"}) @SpecAssertion(section="5.9.2")
public void testResolveByTypeWithArray() throws Exception
{
SimpleBean<SpiderProducer> spiderProducerBean = createSimpleBean(SpiderProducer.class);
@@ -218,7 +218,7 @@
assert manager.resolveByType(Spider[].class).size() == 1;
}
- @Test @SpecAssertion(section="4.9.2")
+ @Test @SpecAssertion(section="5.9.2")
public void testOnlyHighestEnabledPreecedenceWebBeansResolved() throws Exception
{
AnnotatedField<Animal> whiteFishField = new AnnotatedFieldImpl<Animal>(FishFarm.class.getDeclaredField("whiteFish"), fishFarmClass);
@@ -236,7 +236,7 @@
}
- @Test(groups="resolution") @SpecAssertion(section="4.9.2")
+ @Test(groups="resolution") @SpecAssertion(section="5.9.2")
public void testResolveByTypeWithNonBindingMembers() throws Exception
{
AnnotatedField<Animal> veryExpensiveWhitefishField = new AnnotatedFieldImpl<Animal>(FishFarm.class.getDeclaredField("veryExpensiveWhitefish"), fishFarmClass);
@@ -266,7 +266,7 @@
assert beans.contains(roundWhiteFishBean);
}
- @Test(groups="resolution") @SpecAssertion(section="4.9.2")
+ @Test(groups="resolution") @SpecAssertion(section="5.9.2")
public void testNoWebBeansFound() throws Exception
{
AnnotatedField<ScottishFish> whiteScottishFishField = new AnnotatedFieldImpl<ScottishFish>(FishFarm.class.getDeclaredField("whiteScottishFish"), fishFarmClass);
@@ -280,7 +280,7 @@
assert manager.resolveByType(Tuna.class, new CurrentAnnotationLiteral()).size() == 0;
}
- @Test(groups="resolution") @SpecAssertion(section={"4.9.2", "2.2"})
+ @Test(groups="resolution") @SpecAssertion(section={"5.9.2", "2.2"})
public void testResolveObject() throws Exception
{
Bean<Salmon> salmonBean = createSimpleBean(Salmon.class);
@@ -297,7 +297,7 @@
}
- @Test(groups="resolution", expectedExceptions=DefinitionException.class) @SpecAssertion(section="4.9.2.1")
+ @Test(groups="resolution", expectedExceptions=DefinitionException.class) @SpecAssertion(section="5.9.2.1")
public void testArrayValuedAnnotationMemberWithoutNonBinding()
{
manager.resolveByType(Animal.class, new BindingTypeWithBindingArrayTypeMemberAnnotationLiteral() {
@@ -310,7 +310,7 @@
});
}
- @Test(groups="resolution", expectedExceptions=DefinitionException.class) @SpecAssertion(section="4.9.2.1")
+ @Test(groups="resolution", expectedExceptions=DefinitionException.class) @SpecAssertion(section="5.9.2.1")
public void testAnnotationValuedAnnotationMemberWithoutNonBinding()
{
manager.resolveByType(Animal.class, new BindingTypeWithBindingAnnotationMemberAnnotationLiteral()
More information about the weld-commits
mailing list