Hi John,
1. Yes, Alessio is definitely the correct person to ask. Totally. ;-D
2. I concur with Rebecca.
3. Also, there's an invisible twist. When running in the context of CDI,
field injection occurs only after a method is invoked on an object.
That's why
org.jboss.resteasy.plugins.validation.GeneralValidatorImpl.validateAllParameters()
(in module resteasy-validator-provider-11) tests
if ((violationsContainer.isFieldsValidated()
before throwing a ResteasyViolationException. It also explains the
presence of a validate() method in
org.jboss.resteasy.cdi.JaxrsInjectionTarget (in module resteasy-cdi).
So, in the presence of CDI,
result = invokedMethod.invoke(resource, args);
in MethodInjectorImpl DOES get called, but, if there are any violations,
JaxrsInjectionTarget.validate() will call
GeneralValidatorImpl.checkViolationsfromCDI(), which will throw a
ResteasyViolationException before invoking the actual method.
-Ron
On 10/25/2017 02:31 PM, Rebecca Searls wrote:
I've reviewed the code. I do not find that a method with a
validation
error is called. The validation error is thrown. It is captured[1]
and returned to the caller in the Response object as an HTTP 400 error.[2]
[
1]https://github.com/resteasy/Resteasy/blob/master/resteasy-jaxrs/src/mai...
[
2]https://github.com/resteasy/Resteasy/blob/master/resteasy-jaxrs/src/mai...
On Wed, Oct 25, 2017 at 5:26 AM, Alessio Soldano <asoldano(a)redhat.com
<mailto:asoldano@redhat.com>> wrote:
Hi John,
sorry, I'm a bit busy atm, anyway I'm forwarding your email to the
resteasy-dev list. We'll get back to you.
Cheers
Alessio
On Tue, Oct 24, 2017 at 11:59 AM, John O'Hara <johara(a)redhat.com
<mailto:johara@redhat.com>> wrote:
Alessio,
I am not sure if you are the correct person to ask, if not
please let me if there is someone more appropriate to ask.
I have been investigating some unexpected behaviour in how
entity validations exceptions are propagated through WF/EAP
when http post requests are made via rest endpoints.
One thing I have noticed in the resteasy-jaxrs module is that
in org.jboss.resteasy.core.MethodInjectorImpl.invoke() the
method parameters are validated [1], but the method is still
invoked, irrespective of the outcome of the call to the
validator [2]
Is there is a possibility of failing a method invocation after
the validation call [1], so that we do not invoke the method,
which ends up failing anyway due to validation exceptions?
Thanks
John
[1]
https://github.com/resteasy/Resteasy/blob/master/resteasy-jaxrs/src/main/...
<
https://github.com/resteasy/Resteasy/blob/master/resteasy-jaxrs/src/main/...
[2]
https://github.com/resteasy/Resteasy/blob/master/resteasy-jaxrs/src/main/...
<
https://github.com/resteasy/Resteasy/blob/master/resteasy-jaxrs/src/main/...
--
JOHN O'HARA
PRINCIPAL SOFTWARE ENGINEER
Red
Hat<https://www.redhat.com/>
<
https://red.ht/sig>
TRIED. TESTED. TRUSTED. <
https://redhat.com/trusted>
@redhatway <
https://twitter.com/redhatway> @redhatinc
<
https://instagram.com/redhatinc> @redhatsnaps
<
https://snapchat.com/add/redhatsnaps>
_______________________________________________
resteasy-dev mailing list
resteasy-dev(a)lists.jboss.org <mailto:resteasy-dev@lists.jboss.org>
https://lists.jboss.org/mailman/listinfo/resteasy-dev
<
https://lists.jboss.org/mailman/listinfo/resteasy-dev>
_______________________________________________
resteasy-dev mailing list
resteasy-dev(a)lists.jboss.org
https://lists.jboss.org/mailman/listinfo/resteasy-dev
--
My company's smarter than your company (unless you work for Red Hat)