Adding weld-dev.
Hi Cheng,
by defining a producer method you are basically saying "I am able
to supply an object for this given type/qualifier combination".
There is not way to opt out of it at runtime. Are you concerned
about the JVM default values or the default values a user has
provided?
Jozef
On 03/07/2015 05:54 PM, Cheng Fang
wrote:
Hi Jozef,
I'm having a question in using CDI injection in project JBeret
(batch impl project), and would appreciate any help from you.
A batch application (in Java SE or EE) can inject configured
batch properties into batch artifact classes:
@Inject
@javax.batch.api.BatchProperty(name = "batchPropName")
String batchPropName = "default name";
The property value comes from job.xml, which is the batch job
definition descriptor file:
<batchlet ref="batchlet1">
<properties>
<property name="batchPropName"
value="configured name"/>
</properties>
...
When "batchPropName" property is not configured in job.xml, the
injection should not happen, and whatever java default field
value should be preserved for batchPropName field.
With our current batch CDI extension [1] and producer bean [2],
it injects a null value into this field, overwriting the java
default value, when the target batch property is not present.
How to signal to Weld to skip performing the injection for those
injection targets? Ideally, I hope it can be done from within
producer methods, which is the place we retrieve batch
properties and know whether they exist or not.
I think this is also how Java EE field injection works. How do
we handle it in EE, and is it something I can mirror?
Thanks,
Cheng
[1] https://github.com/jberet/jsr352/blob/master/jberet-core/src/main/java/org/jberet/creation/BatchCDIExtension.java
[2] https://github.com/jberet/jsr352/blob/master/jberet-core/src/main/java/org/jberet/creation/BatchBeanProducer.java
_______________________________________________
weld-dev mailing list
weld-dev@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/weld-dev