[webbeans-commits] Webbeans SVN: r3483 - in ri/trunk: tests/src/test/java/org/jboss/webbeans/test/unit/noncontextual and 1 other directory.

webbeans-commits at lists.jboss.org webbeans-commits at lists.jboss.org
Thu Aug 13 11:24:20 EDT 2009


Author: pete.muir at jboss.org
Date: 2009-08-13 11:24:20 -0400 (Thu, 13 Aug 2009)
New Revision: 3483

Modified:
   ri/trunk/impl/src/main/java/org/jboss/webbeans/Validator.java
   ri/trunk/tests/src/test/java/org/jboss/webbeans/test/unit/noncontextual/ExampleTest.java
Log:
WBRI-354

Modified: ri/trunk/impl/src/main/java/org/jboss/webbeans/Validator.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/Validator.java	2009-08-13 14:05:49 UTC (rev 3482)
+++ ri/trunk/impl/src/main/java/org/jboss/webbeans/Validator.java	2009-08-13 15:24:20 UTC (rev 3483)
@@ -141,8 +141,12 @@
       {
          throw new DefinitionException("The injection point " + ij + " is annotated with @New which cannot be combined with other binding types");
       }
-      if (!Dependent.class.equals(ij.getBean().getScopeType()) && ij.getType().equals(InjectionPoint.class))
+      if (ij.getType().equals(InjectionPoint.class) && ij.getBean() == null)
       {
+         throw new DefinitionException("Cannot inject an Injection point into a class which isn't a bean " + ij);
+      }
+      if (ij.getType().equals(InjectionPoint.class) && !Dependent.class.equals(ij.getBean().getScopeType()))
+      {
          throw new DefinitionException("Cannot inject an InjectionPoint into a non @Dependent scoped bean " + ij); 
       }
       if (ij.getType() instanceof TypeVariable<?>)
@@ -186,7 +190,7 @@
       {
          throw new NullableDependencyException("The injection point " + ij + " has nullable dependencies");
       }
-      if (Beans.isPassivatingScope(ij.getBean(), beanManager) && (!ij.isTransient()) && !Beans.isPassivationCapableBean(resolvedBean))
+      if (ij.getBean() != null && Beans.isPassivatingScope(ij.getBean(), beanManager) && (!ij.isTransient()) && !Beans.isPassivationCapableBean(resolvedBean))
       {
          validateInjectionPointPassivationCapable(ij, resolvedBean, beanManager);
       }

Modified: ri/trunk/tests/src/test/java/org/jboss/webbeans/test/unit/noncontextual/ExampleTest.java
===================================================================
--- ri/trunk/tests/src/test/java/org/jboss/webbeans/test/unit/noncontextual/ExampleTest.java	2009-08-13 14:05:49 UTC (rev 3482)
+++ ri/trunk/tests/src/test/java/org/jboss/webbeans/test/unit/noncontextual/ExampleTest.java	2009-08-13 15:24:20 UTC (rev 3483)
@@ -3,8 +3,10 @@
 import javax.enterprise.context.spi.CreationalContext;
 import javax.enterprise.inject.spi.AnnotatedType;
 import javax.enterprise.inject.spi.BeanManager;
+import javax.enterprise.inject.spi.InjectionPoint;
 import javax.enterprise.inject.spi.InjectionTarget;
 
+import org.jboss.metadata.validation.ValidationException;
 import org.jboss.testharness.impl.packaging.Artifact;
 import org.jboss.webbeans.test.AbstractWebBeansTest;
 import org.testng.Assert;
@@ -27,6 +29,25 @@
       Assert.assertNotNull(external.bean);      
    }
    
+   @Test
+   public void validateNonContextual() throws Exception
+   {
+      NonContextual<External> nonContextual = new NonContextual<External>(getCurrentManager(), External.class);
+
+      for (InjectionPoint point : nonContextual.it.getInjectionPoints())
+      {
+         try
+         {
+            getCurrentManager().validate(point);
+         }
+         catch(ValidationException e)
+         {
+            Assert.fail("Should have been valid");
+         }
+      }
+   }
+   
+   
    public class NonContextual<T> {
 
       final InjectionTarget<T> it;




More information about the weld-commits mailing list