[webbeans-commits] Webbeans SVN: r803 - in ri/trunk/webbeans-ri/src: main/java/org/jboss/webbeans/bootstrap and 3 other directories.

webbeans-commits at lists.jboss.org webbeans-commits at lists.jboss.org
Wed Jan 7 03:36:58 EST 2009


Author: nickarls
Date: 2009-01-07 03:36:57 -0500 (Wed, 07 Jan 2009)
New Revision: 803

Added:
   ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/newbean/invalid/NewAndOtherBindingType.java
Modified:
   ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bean/AbstractBean.java
   ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bean/AbstractClassBean.java
   ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bean/EventBean.java
   ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bean/ProducerMethodBean.java
   ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bootstrap/WebBeansBootstrap.java
   ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/newbean/NewBeanTest.java
   ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/newbean/valid/AnnotatedConstructorParameter.java
Log:
Better fix for null injection points
Some more @New bootstrap tests

Modified: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bean/AbstractBean.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bean/AbstractBean.java	2009-01-07 08:26:34 UTC (rev 802)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bean/AbstractBean.java	2009-01-07 08:36:57 UTC (rev 803)
@@ -120,6 +120,7 @@
    {
       super(manager);
       this.manager = manager;
+      injectionPoints = new HashSet<AnnotatedItem<?, ?>>();
    }
 
    /**
@@ -211,14 +212,6 @@
    protected abstract Class<? extends Annotation> getDefaultDeploymentType();
 
    /**
-    * Initializes the injection points
-    */
-   protected void initInjectionPoints()
-   {
-      injectionPoints = new HashSet<AnnotatedItem<?, ?>>();
-   }
-
-   /**
     * Initializes the name
     */
    protected void initName()

Modified: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bean/AbstractClassBean.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bean/AbstractClassBean.java	2009-01-07 08:26:34 UTC (rev 802)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bean/AbstractClassBean.java	2009-01-07 08:36:57 UTC (rev 803)
@@ -153,10 +153,8 @@
    /**
     * Initializes the injection points
     */
-   @Override
    protected void initInjectionPoints()
    {
-      super.initInjectionPoints();
       injectableFields = new HashSet<AnnotatedField<Object>>();
       for (AnnotatedField<Object> annotatedField : annotatedItem.getMetaAnnotatedFields(BindingType.class))
       {

Modified: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bean/EventBean.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bean/EventBean.java	2009-01-07 08:26:34 UTC (rev 802)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bean/EventBean.java	2009-01-07 08:36:57 UTC (rev 803)
@@ -61,11 +61,6 @@
    {
       validateInjectionPoint();
       super.init();
-      // TODO: A better place to do this? Event beans also pass through the @New bean
-      // parsing in bootstrap so the injectionpoints should not be null. This is usually
-      // done in AbstractClassBean, but it's not in the EventBeans inheritance hierarchy.
-      // Perhaps just init the injectionPoints to an empty set in AbstractBean...
-      super.initInjectionPoints();
       checkAnnotatedItem();
    }
 

Modified: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bean/ProducerMethodBean.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bean/ProducerMethodBean.java	2009-01-07 08:26:34 UTC (rev 802)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bean/ProducerMethodBean.java	2009-01-07 08:36:57 UTC (rev 803)
@@ -93,10 +93,8 @@
    /**
     * Initializes the injection points
     */
-   @Override
    protected void initInjectionPoints()
    {
-      super.initInjectionPoints();
       for (AnnotatedParameter<Object> parameter : method.getParameters())
       {
          injectionPoints.add(parameter);

Modified: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bootstrap/WebBeansBootstrap.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bootstrap/WebBeansBootstrap.java	2009-01-07 08:26:34 UTC (rev 802)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bootstrap/WebBeansBootstrap.java	2009-01-07 08:36:57 UTC (rev 803)
@@ -28,6 +28,7 @@
 import java.util.HashSet;
 import java.util.Set;
 
+import javax.webbeans.BindingType;
 import javax.webbeans.DefinitionException;
 import javax.webbeans.Fires;
 import javax.webbeans.Initializer;
@@ -130,9 +131,12 @@
    {
       Set<AbstractBean<?, ?>> beans = createBeans(classes);
       beans.addAll(createStandardBeans());
-      // TODO: Is there any better way to do this? Currently, producer method parameters aren't
-      // listed in the containing beans injection points since they will be separated into 
-      // producer beans of their own so we'll have to make a second pass to make sure we hit the
+      // TODO: Is there any better way to do this? Currently, producer method
+      // parameters aren't
+      // listed in the containing beans injection points since they will be
+      // separated into
+      // producer beans of their own so we'll have to make a second pass to make
+      // sure we hit the
       // created producer beans also.
       registerNewBeans(beans);
       getManager().setBeans(beans);
@@ -146,6 +150,10 @@
          for (AnnotatedItem<?, ?> injectionPoint : bean.getInjectionPoints())
             if (injectionPoint.isAnnotationPresent(New.class))
             {
+               if (injectionPoint.getMetaAnnotations(BindingType.class).size() > 1)
+               {
+                  throw new DefinitionException("@New cannot be used in conjunction with other binding types");
+               }
                if (manager.getEjbDescriptorCache().containsKey(injectionPoint.getType()))
                {
 

Modified: ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/newbean/NewBeanTest.java
===================================================================
--- ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/newbean/NewBeanTest.java	2009-01-07 08:26:34 UTC (rev 802)
+++ ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/newbean/NewBeanTest.java	2009-01-07 08:36:57 UTC (rev 803)
@@ -16,6 +16,7 @@
 import org.jboss.webbeans.test.SpecAssertion;
 import org.jboss.webbeans.test.SpecVersion;
 import org.jboss.webbeans.test.mock.MockWebBeanDiscovery;
+import org.jboss.webbeans.test.newbean.invalid.NewAndOtherBindingType;
 import org.jboss.webbeans.test.newbean.valid.AnnotatedConstructorParameter;
 import org.jboss.webbeans.test.newbean.valid.AnnotatedField;
 import org.jboss.webbeans.test.newbean.valid.AnnotatedInitializerParameter;
@@ -336,7 +337,7 @@
     * requirements of a simple Web Bean implementation class or enterprise Web
     * Bean implementation class.
     */
-   @Test(groups = { "stub", "new" })
+   @Test(groups = { "new" })
    @SpecAssertion(section = "3.9")
    public void testNewAnnotationMayBeAppliedToField()
    {
@@ -353,7 +354,7 @@
     * requirements of a simple Web Bean implementation class or enterprise Web
     * Bean implementation class.
     */
-   @Test(groups = { "stub", "new" })
+   @Test(groups = { "new" })
    @SpecAssertion(section = "3.9")
    public void testNewAnnotationMayBeAppliedToProducerMethodParameter()
    {
@@ -370,7 +371,7 @@
     * requirements of a simple Web Bean implementation class or enterprise Web
     * Bean implementation class.
     */
-   @Test(groups = { "stub", "new" })
+   @Test(groups = { "new" })
    @SpecAssertion(section = "3.9")
    public void testNewAnnotationMayBeAppliedToInitializerMethodParameter()
    {
@@ -387,7 +388,7 @@
     * requirements of a simple Web Bean implementation class or enterprise Web
     * Bean implementation class.
     */
-   @Test(groups = { "stub", "new" })
+   @Test(groups = { "new" })
    @SpecAssertion(section = "3.9")
    public void testNewAnnotationMayBeAppliedToConstructorMethodParameter()
    {
@@ -403,11 +404,12 @@
     * enterprise Web Bean implementation class, a DefinitionException is thrown
     * by the container at deployment time.
     */
-   @Test(groups = { "stub", "new" })
+   @Test(groups = { "new" }, expectedExceptions = DefinitionException.class)
    @SpecAssertion(section = "3.9")
    public void testNewAnnotationCannotAppearInConjunctionWithOtherBindingType()
    {
-      assert false;
+      webBeansBootstrap.setWebBeanDiscovery(new MockWebBeanDiscovery(NewAndOtherBindingType.class));
+      webBeansBootstrap.boot();      
    }
 
    /**

Added: ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/newbean/invalid/NewAndOtherBindingType.java
===================================================================
--- ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/newbean/invalid/NewAndOtherBindingType.java	                        (rev 0)
+++ ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/newbean/invalid/NewAndOtherBindingType.java	2009-01-07 08:36:57 UTC (rev 803)
@@ -0,0 +1,11 @@
+package org.jboss.webbeans.test.newbean.invalid;
+
+import javax.webbeans.Current;
+import javax.webbeans.New;
+
+import org.jboss.webbeans.test.newbean.valid.WrappedBean;
+
+public class NewAndOtherBindingType
+{
+   public @New @Current WrappedBean violation;
+}

Modified: ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/newbean/valid/AnnotatedConstructorParameter.java
===================================================================
--- ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/newbean/valid/AnnotatedConstructorParameter.java	2009-01-07 08:26:34 UTC (rev 802)
+++ ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/newbean/valid/AnnotatedConstructorParameter.java	2009-01-07 08:36:57 UTC (rev 803)
@@ -2,27 +2,12 @@
 
 import javax.webbeans.Initializer;
 import javax.webbeans.New;
-import javax.webbeans.Produces;
 
 
 public class AnnotatedConstructorParameter
 {
-   @New
-   WrappedBean reference;
-
    @Initializer
    public AnnotatedConstructorParameter(@New WrappedBean reference)
    {
    }
-
-   @Initializer
-   public void init(@New WrappedBean reference)
-   {
-   }
-
-   @Produces
-   Object produce(@New WrappedBean reference)
-   {
-      return new Object();
-   }
 }




More information about the weld-commits mailing list