Queria poder receber a exceção lançada por um método do meu @Resource e poder alterar o resultado enviado ao usuário.
Exemplo:
[code] @NoTokenRequired
@Path("/")
public void index() throws ValidationException {
throw new ValidationException(null);
}
@NoTokenRequired
@Path("/1")
public void index2() throws PersistenceException {
throw new PersistenceException();
}[/code]
A minha idéia seria um interceptador que pegasse essa exceção e descobrisse o tipo dela usando instanceOf e pudesse setar o resultado com os erros 400 ou 500.
public void intercept(InterceptorStack stack, ResourceMethod method, Object resourceInstance) throws InterceptionException {
try {
stack.next(method, resourceInstance);
} catch (Throwable e) {
if (e instanceof ServiceException) {
this.logger.warning("ERRO DE SERVICO");
} else if (e instanceof ServerException) {
this.logger.warning("ERRO DO SERVIDOR");
}
}
}
Pelo que eu vi não tenho como fazer isso pois o ExecuteMethodInterceptor transforma minhas exceções em um InterceptionException.
É isso mesmo ?