[
https://issues.jboss.org/browse/WFLY-11956?page=com.atlassian.jira.plugin...
]
Ronald Sigal commented on WFLY-11956:
-------------------------------------
re: "Like I said earlier, you can move the validation to the postConstruct() instead
of inject() method in all cases as that method did get invoked even if I commented out the
@PostConstruct method on the bean itself."
[~manovotn], that's very interesting. I'm wondering, though, if that's a
Weld-specific behavior. The javadoc doesn't seem to guarantee that postConstruct()
will be called.
re: "Did I get that right?"
[~christian.zambrano], I think that's correct, or nearly so. I would express it like
this: "The fact that getHelloGreeting() is a getter means that the associated
property must be validated if there are any validating annotations on the method, in which
case getHelloGreeting() must be called. The @Valid annotation is one such validating
annotation."
re: "Your proposal of delaying the behavior described above until the PostConstruct
is called, while better it can still lead to problems as the postConstruct may not have
initialized everything is needed for the method to be called ..."
[~christian.zambrano], I don't understand. My understanding is that postConstruct()
would be called after all CDI injections are performed. Calling the @PostConstruct
annotated method would be the last chance to perform additional initialization, so doing
the verification after that would seem to be OK. What am I missing?
re: "so having a way to turn this behavior off would be ideal for these cases."
[~christian.zambrano], sorry, which behavior are you referring to?
@PostConstruct on @ApplicationScoped bean called too late in case
@Valid is annotated on a business method
----------------------------------------------------------------------------------------------------------
Key: WFLY-11956
URL:
https://issues.jboss.org/browse/WFLY-11956
Project: WildFly
Issue Type: Bug
Components: Bean Validation, REST
Affects Versions: 16.0.0.Final
Reporter: Joerg Baesner
Assignee: Ronald Sigal
Priority: Major
Attachments: logging.txt, playground.zip
Having a bean class with {{@ApplicationScoped}}, which has a {{@PostConstruct}} and is
implementing the following _Interface_:
{code}
@Path("/validated")
public interface ValidatedJaxRsInterface {
@GET
@Valid
@Produces(MediaType.APPLICATION_JSON)
GreetingModel getHelloGreeting();
}
{code}
will result in calling the {{getHelloGreeting}} method of the implementation class twice
*_before_* the {{@PostConstruct}} is getting executed.
This can be reproduced with the attached reproducer application...
--
This message was sent by Atlassian Jira
(v7.12.1#712002)