[weld-commits] Weld SVN: r5856 - core/trunk/impl/src/main/java/org/jboss/weld/bean and 2 other directories.

weld-commits at lists.jboss.org weld-commits at lists.jboss.org
Tue Feb 16 17:27:48 EST 2010


Author: pete.muir at jboss.org
Date: 2010-02-16 17:27:47 -0500 (Tue, 16 Feb 2010)
New Revision: 5856

Modified:
   cdi-tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/implementation/producer/field/definition/broken/inject/InjectAnnotatedProducerFieldTest.java
   core/trunk/impl/src/main/java/org/jboss/weld/bean/ProducerField.java
   core/trunk/impl/src/main/java/org/jboss/weld/logging/messages/BeanMessage.java
   core/trunk/impl/src/main/resources/org/jboss/weld/messages/bean_en.properties
Log:
WELD-421

Modified: cdi-tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/implementation/producer/field/definition/broken/inject/InjectAnnotatedProducerFieldTest.java
===================================================================
--- cdi-tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/implementation/producer/field/definition/broken/inject/InjectAnnotatedProducerFieldTest.java	2010-02-16 21:57:38 UTC (rev 5855)
+++ cdi-tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/implementation/producer/field/definition/broken/inject/InjectAnnotatedProducerFieldTest.java	2010-02-16 22:27:47 UTC (rev 5856)
@@ -36,7 +36,6 @@
       @SpecAssertion(section = "3.4.2", id = "g"),
       @SpecAssertion(section = "3.8.1", id = "b")
    })
-   //WELD-421
    public void testInjectAnnotatedProducerFieldNotAllowed()
    {
       assert false;

Modified: core/trunk/impl/src/main/java/org/jboss/weld/bean/ProducerField.java
===================================================================
--- core/trunk/impl/src/main/java/org/jboss/weld/bean/ProducerField.java	2010-02-16 21:57:38 UTC (rev 5855)
+++ core/trunk/impl/src/main/java/org/jboss/weld/bean/ProducerField.java	2010-02-16 22:27:47 UTC (rev 5856)
@@ -16,18 +16,25 @@
  */
 package org.jboss.weld.bean;
 
+import static org.jboss.weld.logging.Category.BEAN;
+import static org.jboss.weld.logging.LoggerFactory.loggerFactory;
+import static org.jboss.weld.logging.messages.BeanMessage.INJECTED_FIELD_CANNOT_BE_PRODUCER;
+
 import java.lang.reflect.Field;
 import java.util.Set;
 
 import javax.enterprise.context.spi.CreationalContext;
 import javax.enterprise.inject.spi.InjectionPoint;
 import javax.enterprise.inject.spi.Producer;
+import javax.inject.Inject;
 
 import org.jboss.interceptor.util.InterceptionUtils;
 import org.jboss.weld.bootstrap.BeanDeployerEnvironment;
+import org.jboss.weld.exceptions.DefinitionException;
 import org.jboss.weld.introspector.WeldField;
 import org.jboss.weld.manager.BeanManagerImpl;
 import org.jboss.weld.util.AnnotatedTypes;
+import org.slf4j.cal10n.LocLogger;
 
 /**
  * Represents a producer field
@@ -38,6 +45,8 @@
  */
 public class ProducerField<X, T> extends AbstractProducerBean<X, T, Field>
 {
+   private static final LocLogger log = loggerFactory().getLogger(BEAN);
+   
    // The underlying field
    private WeldField<T, ? super X> field;
    
@@ -54,6 +63,7 @@
       return new ProducerField<X, T>(field, declaringBean, beanManager);
    }
 
+
    /**
     * Constructor
     * 
@@ -121,9 +131,19 @@
             }
             
          });
+         checkProducerFieldAnnotations();
       }
    }
    
+   
+   protected void checkProducerFieldAnnotations()
+   {
+      if (getWeldAnnotated().isAnnotationPresent(Inject.class))
+      {
+         throw new DefinitionException(INJECTED_FIELD_CANNOT_BE_PRODUCER, getWeldAnnotated(), getWeldAnnotated().getDeclaringType());
+      }
+   }
+   
    protected void defaultDispose(T instance)
    {
       // No disposal by default

Modified: core/trunk/impl/src/main/java/org/jboss/weld/logging/messages/BeanMessage.java
===================================================================
--- core/trunk/impl/src/main/java/org/jboss/weld/logging/messages/BeanMessage.java	2010-02-16 21:57:38 UTC (rev 5855)
+++ core/trunk/impl/src/main/java/org/jboss/weld/logging/messages/BeanMessage.java	2010-02-16 22:27:47 UTC (rev 5856)
@@ -127,6 +127,7 @@
    @MessageId("000090") ABSTRACT_METHOD_MUST_MATCH_DECORATED_TYPE,
    @MessageId("000091") IP_NOT_CONSTRUCTOR_OR_METHOD,
    @MessageId("000092") PARAM_NOT_IN_PARAM_LIST,
-   @MessageId("000093") CANNOT_READ_OBJECT;
+   @MessageId("000093") CANNOT_READ_OBJECT,
+   @MessageId("000094") INJECTED_FIELD_CANNOT_BE_PRODUCER;
    
 }

Modified: core/trunk/impl/src/main/resources/org/jboss/weld/messages/bean_en.properties
===================================================================
--- core/trunk/impl/src/main/resources/org/jboss/weld/messages/bean_en.properties	2010-02-16 21:57:38 UTC (rev 5855)
+++ core/trunk/impl/src/main/resources/org/jboss/weld/messages/bean_en.properties	2010-02-16 22:27:47 UTC (rev 5856)
@@ -92,3 +92,5 @@
 IP_NOT_CONSTRUCTOR_OR_METHOD=Cannot handle injection point as a constructor or method:  {0}
 PARAM_NOT_IN_PARAM_LIST=Parameter position {0} is not in the parameter list:  {1}
 CANNOT_READ_OBJECT=Cannot read object
+INITIALIZER_CANNOT_BE_PRODUCER=Initializer method {0} cannot be annotated @Produces on {1}
+INJECTED_FIELD_CANNOT_BE_PRODUCER=Injected field {0} cannot be annotated @Produces on {1}



More information about the weld-commits mailing list