@ Override public Response toResponse ( Exception e ) { String id = System . nanoTime ( ) + "" ; LOGGER . error ( id , e ) ; if ( e instanceof RobeRuntimeException ) { return ( ( RobeRuntimeException ) e ) . getResponse ( id ) ; } else if ( e instanceof ConstraintViolationException ) { ConstraintViolationException exception = ( ConstraintViolationException ) e ; RobeMessage [ ] errors = new RobeMessage [ exception . getConstraintViolations ( ) . size ( ) ] ; int i = 0 ; for ( ConstraintViolation error : exception . getConstraintViolations ( ) ) { errors [ i ++ ] = new RobeMessage . Builder ( ) . message ( error . getMessage ( ) ) . status ( 422 ) . id ( id ) . build ( ) ; } return Response . status ( 422 ) . entity ( errors ) . type ( MediaType . APPLICATION_JSON ) . build ( ) ; } else if ( e instanceof WebApplicationException ) { WebApplicationException we = ( WebApplicationException ) e ; RobeMessage error = new RobeMessage . Builder ( ) . id ( id ) . message ( we . getMessage ( ) ) . status ( we . getResponse ( ) . getStatus ( ) ) . build ( ) ; return Response . fromResponse ( we . getResponse ( ) ) . entity ( error ) . type ( MediaType . APPLICATION_JSON ) . build ( ) ; } else { if ( e . getClass ( ) . getName ( ) . equals ( "org.hibernate.exception.ConstraintViolationException" ) ) { if ( e . getCause ( ) != null && e . getCause ( ) . getMessage ( ) != null ) { RobeMessage error = new RobeMessage . Builder ( ) . message ( e . getCause ( ) . getMessage ( ) . split ( "for" ) [ 0 ] ) . status ( Response . Status . CONFLICT . getStatusCode ( ) ) . id ( id ) . build ( ) ; return Response . status ( Response . Status . CONFLICT ) . entity ( error ) . type ( MediaType . APPLICATION_JSON ) . build ( ) ; } } RobeMessage error = new RobeMessage . Builder ( ) . message ( e . getMessage ( ) ) . id ( id ) . build ( ) ; return Response . status ( Response . Status . INTERNAL_SERVER_ERROR ) . entity ( error ) . type ( MediaType . APPLICATION_JSON ) . build ( ) ; } }
Parses or wraps the exception and transforms it to a human readable json loaded response .