spring - Jersey custom ExceptionMapper not called on 400 Bad Request (when validation fails) -


i'm using jersey spring web services. catching exceptions , formatting response sent caller have added implementation of exceptionmapper.

though being called when explicitly throw exception within controller, when json field validation fails exception mapper not called , response sent **may not null (path = checknotification.arg0.tyres, invalidvalue = null) **

@provider public class genericexceptionmapper implements exceptionmapper<throwable> {      @override     public response toresponse(throwable ex) {         system.out.println("exception mapper !!!");         return response.status(404).entity(ex.getmessage()).type("application/json").build();     } }   <servlet>         <servlet-name>jersey-servlet</servlet-name>         <servlet-class>             org.glassfish.jersey.servlet.servletcontainer         </servlet-class>             <init-param>                 <param-name>jersey.config.server.provider.packages</param-name>                 <param-value>                         com.help.rest.controller,                         com.fasterxml.jackson.jaxrs.json                 </param-value>             </init-param>             <init-param>                     <param-name>javax.ws.rs.application</param-name>                     <param-value>com.help.filter.featureregistration</param-value>             </init-param>             <init-param>                 <param-name>jersey.config.beanvalidation.enableoutputvalidationerrorentity.server</param-name>                 <param-value>true</param-value>             </init-param>         <load-on-startup>1</load-on-startup>     </servlet> 

jersey version 2.22.1 spring version 4.2.4

i made work changing

 @provider     public class genericexceptionmapper implements exceptionmapper<throwable> {          @override         public response toresponse(throwable ex) {             system.out.println("exception mapper !!!");             return response.status(404).entity(ex.getmessage()).type("application/json").build();         }     } 

to

 @provider     public class genericexceptionmapper implements exceptionmapper<constraintviolationexception> {          @override         public response toresponse(constraintviolationexception ex) {             system.out.println("exception mapper !!!");             return response.status(404).entity(ex.getmessage()).type("application/json").build();         }     } 

though i'm able catch exception not getting exact class , field failed constraint.


resolved found set containing required fields in contraintviolationexception, accessed using ex.getconstraintviolations()

made work changing

 @provider     public class genericexceptionmapper implements exceptionmapper<throwable> {          @override         public response toresponse(throwable ex) {             system.out.println("exception mapper !!!");             return response.status(404).entity(ex.getmessage()).type("application/json").build();         }     } 

to

 @provider     public class genericexceptionmapper implements exceptionmapper<constraintviolationexception> {          @override         public response toresponse(constraintviolationexception ex) {             system.out.println("exception mapper !!!");             return response.status(404).entity(ex.getmessage()).type("application/json").build();         }     } 

to exact exception details, field failed constraint use constraintviolationexception's getconstraintviolations(). method provides set constraint violations.


Comments

Popular posts from this blog

Hatching array of circles in AutoCAD using c# -

ios - UITEXTFIELD InputView Uipicker not working in swift -

Python Pig Latin Translator -