[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