[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