<html>
  <head>
    <meta content="text/html; charset=utf-8" http-equiv="Content-Type">
  </head>
  <body text="#000000" bgcolor="#FFFFFF">
    Adding weld-dev.<br>
    <br>
    Hi Cheng,<br>
    <br>
    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?<br>
    <br>
    Jozef<br>
    <br>
    <div class="moz-cite-prefix">On 03/07/2015 05:54 PM, Cheng Fang
      wrote:<br>
    </div>
    <blockquote cite="mid:54FB2D34.5090005@redhat.com" type="cite">
      <meta http-equiv="content-type" content="text/html; charset=utf-8">
      Hi Jozef,<br>
      <br>
      I'm having a question in using CDI injection in project JBeret
      (batch impl project), and would appreciate any help from you.<br>
      <br>
      A batch application (in Java SE or EE) can inject configured batch
      properties into batch artifact classes:<br>
      <br>
      @Inject<br>
      @javax.batch.api.BatchProperty(name = "batchPropName")<br>
      String batchPropName = "default name";<br>
      <br>
      The property value comes from job.xml, which is the batch job
      definition descriptor file:<br>
      <br>
      <meta http-equiv="content-type" content="text/html; charset=utf-8">
      &lt;batchlet ref="batchlet1"&gt;<br>
              &lt;properties&gt;<br>
                     &lt;property name="batchPropName" value="configured
      name"/&gt;<br>
              &lt;/properties&gt;<br>
      ...<br>
      <br>
      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.  <br>
      <br>
      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.<br>
      <br>
      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.<br>
      <br>
      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?<br>
      <br>
      Thanks,<br>
      Cheng<br>
      <br>
      [1]
      <a moz-do-not-send="true" class="moz-txt-link-freetext"
href="https://github.com/jberet/jsr352/blob/master/jberet-core/src/main/java/org/jberet/creation/BatchCDIExtension.java">https://github.com/jberet/jsr352/blob/master/jberet-core/src/main/java/org/jberet/creation/BatchCDIExtension.java</a><br>
      <br>
      [2]
      <a moz-do-not-send="true" class="moz-txt-link-freetext"
href="https://github.com/jberet/jsr352/blob/master/jberet-core/src/main/java/org/jberet/creation/BatchBeanProducer.java">https://github.com/jberet/jsr352/blob/master/jberet-core/src/main/java/org/jberet/creation/BatchBeanProducer.java</a><br>
      <br>
      <br>
    </blockquote>
    <br>
  </body>
</html>