[resteasy-dev] resteasy jax-rs fail fast on entity validation exception
Ron Sigal
rsigal at redhat.com
Wed Oct 25 16:33:26 EDT 2017
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/main/java/org/jboss/resteasy/core/ResourceMethodInvoker.java#344
> [2]https://github.com/resteasy/Resteasy/blob/master/resteasy-jaxrs/src/main/java/org/jboss/resteasy/core/ResourceMethodInvoker.java#191
>
>
>
>
> On Wed, Oct 25, 2017 at 5:26 AM, Alessio Soldano <asoldano at redhat.com
> <mailto:asoldano at 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 at redhat.com
> <mailto:johara at 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/java/org/jboss/resteasy/core/MethodInjectorImpl.java#L119
> <https://github.com/resteasy/Resteasy/blob/master/resteasy-jaxrs/src/main/java/org/jboss/resteasy/core/MethodInjectorImpl.java#L119>
> [2]
> https://github.com/resteasy/Resteasy/blob/master/resteasy-jaxrs/src/main/java/org/jboss/resteasy/core/MethodInjectorImpl.java#L140
> <https://github.com/resteasy/Resteasy/blob/master/resteasy-jaxrs/src/main/java/org/jboss/resteasy/core/MethodInjectorImpl.java#L140>
>
> --
>
> 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 at lists.jboss.org <mailto:resteasy-dev at 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 at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/resteasy-dev
--
My company's smarter than your company (unless you work for Red Hat)
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/resteasy-dev/attachments/20171025/850e779b/attachment-0001.html
More information about the resteasy-dev
mailing list