[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