Open gquintana opened 1 year ago
I think this has to be a Jberet job: https://github.com/jberet/jsr352/blob/main/jberet-core/src/main/java/org/jberet/creation/BatchBeanProducer.java is missing Enum injection
@luca-bassoricci do you mean it could be as simple as adding a method:
@Produces @BatchProperty
public Enum getEnum(final InjectionPoint injectionPoint) {
return getProperty(injectionPoint, Enum.class);
}
Yes, this is not an issue with this extension directly, but a missing thing in JBeret.
I'm not sure if a simple Enum
producer is enough. I don't think CDI can match java.lang.Enum
to a specific enum type. Most likely, this requires a BeanProducer.
@radcortez
Collecting all injected enum annotated with @BatchProperty
during build phase and create a synthetic EnumBeanProducer
with a specific producer for every collected enum types should solve the problem?
Correct, but shouldn't this be fixed directly in JBeret?
Absolutely; I thought adding enum support as a contribute to jberet, but my competencies in CDI are so scarce but - for now - I drop the idea.
Given a job property defined as an enum named BatchMode
I get an injection error
Even if it's not described in the Jakarta Batch 2.1 Spec, there is a ValueConverter in JBeret which should be able to do the String to Enum conversion: https://github.com/jberet/jsr352/blob/main/jberet-core/src/main/java/org/jberet/creation/ValueConverter.java