users@jersey.java.net

[Jersey] Re: Validation a request using BV

From: Arun Gupta <arun.p.gupta_at_oracle.com>
Date: Wed, 10 Apr 2013 06:31:02 -0700

+1

I'd like to see any related errors to be shown by default instead of
changing any logging settings.

Arun

On 4/10/13 5:46 AM, Jan Algermissen wrote:
> Hi Michal,
>
> On 10.04.2013, at 13:17, Michal Gajdos <michal.gajdos_at_oracle.com> wrote:
>
>> Hi Arun,
>>
>> ConstraintViolationExceptions are logged at the Level.FINER level on the server.
> Hmm, I find that a bit odd. How would I ever be able to understand what happened from the log without turning FINER on?
>
> I recall having had a similar issue where it was simply impossible to determine the cause of a problem beyond seeing a 500 WebApplicationException in the GF logs.
>
> Jan
>
>
>> If you want to see the error message on the client side you need to explicitly enable outputting of validation error entity into response by setting ServerProperties. FEATURE_OUTPUT_VALIDATION_ERROR_ENTITY ([1]) in your application (using web.xml/Application#getProperties/ResourceConfig#property; see [2]). The returned entity should, after this, contain all validation error messages.
>>
>> [1] https://github.com/jersey/jersey/blob/2.0-rc1/core-server/src/main/java/org/glassfish/jersey/server/ServerProperties.java#L277
>> [2] https://github.com/jersey/jersey/blob/2.0-rc1/examples/bean-validation-webapp/src/test/java/org/glassfish/jersey/examples/beanvalidation/webapp/ContactCardTest.java#L91
>>
>> thanks,
>> Michal
>>
>> On 10.04.2013 00:22 , Arun Gupta wrote:
>>> For a resource method:
>>>
>>> @POST
>>> @Produces(MediaType.TEXT_PLAIN)
>>> public String post(@Size(min = 3) String payload) {
>>> return payload;
>>> }
>>>
>>> A request is sent as:
>>>
>>> String r = target.request().post(Entity.text("fo"), String.class);
>>>
>>> And server.log shows the following exception:
>>>
>>> WARNING: StandardWrapperValve[TestServlet]: Servlet.service() for servlet TestServlet threw exception
>>> javax.ws.rs.BadRequestException: HTTP 400 Bad Request
>>> at org.glassfish.jersey.client.JerseyInvocation.convertToException(JerseyInvocation.java:883)
>>> at org.glassfish.jersey.client.JerseyInvocation.translate(JerseyInvocation.java:749)
>>> at org.glassfish.jersey.client.JerseyInvocation.access$500(JerseyInvocation.java:88)
>>> at org.glassfish.jersey.client.JerseyInvocation$2.call(JerseyInvocation.java:650)
>>> at org.glassfish.jersey.internal.Errors.process(Errors.java:275)
>>> at org.glassfish.jersey.internal.Errors.process(Errors.java:257)
>>> at org.glassfish.jersey.internal.Errors.process(Errors.java:188)
>>> at org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:421)
>>> at org.glassfish.jersey.client.JerseyInvocation.invoke(JerseyInvocation.java:646)
>>> at org.glassfish.jersey.client.JerseyInvocation$Builder.method(JerseyInvocation.java:402)
>>> at org.glassfish.jersey.client.JerseyInvocation$Builder.post(JerseyInvocation.java:305)
>>>
>>> There is no ConstraintViolation exception thrown in the server log. How do I know more details about this error ?
>>>
>>> Arun
>>>

-- 
http://twitter.com/arungupta
http://blogs.oracle.com/arungupta