Tenho sim, exemplo usando o RestEasy e o Swagger para documentação...
@GET
@RolesAllowed("USER")
@RequisicaoRestPadrao
@Path("{nome}")
@Produces("application/json; charset=UTF-8")
@ApiOperation(value = "Retorna as informações do usuário, dado o nome!", httpMethod = "GET", response = Response.class)
@ApiResponses(value = { @ApiResponse(code = 200, message = "Retorna true"),
@ApiResponse(code = 401, message = "Servidor sem direito de acesso ao Sisport"),
@ApiResponse(code = 404, message = "Servidor não encontrado!"),
@ApiResponse(code = 500, message = "Erro interno no Servidor!") })
public Response obtemUsuario(@PathParam("nome") String nomeServidor, @HeaderParam("token") String token)
throws RestSisportException {
Usuario usuario = null;
usuario = usuarioService.recuperaUsuario(nomeServidor);
return Response.ok(usuario, MediaType.APPLICATION_JSON).build();
}
E aqui a parte que te interessa, o interceptador que criamos para obter o erro e enviar como resposta:
@AroundInvoke
public Object invoke(InvocationContext context) throws Exception {
try {
return context.proceed();
}catch (RestSisportException restSisportException) {
return Response.status(restSisportException.getStatusHttp()).entity(sisportResource.getOutputJson(restSisportException.getMensagem())).build();
}
catch (Exception e) {
return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(sisportResource.getOutputJson("Erro Interno no Servidor")).build();
}
}