Oi pessoal,
Estou com problema ao lançar a exceção, pois uso uma arquiteura com DAO -> BO -> controller.
Minha regra de negocio está no BO, então se houver algum erro lanço BOExcption, ai está o problema pq uso o controle de transação do vraptor e só aparece o erro quando chega na jsp. Alguém tem uma solução para este problema.
Aqui deveria haver um erro de constraint, mas ele deixa passar pois somente faz o save quando retorno para jsp.
public Produto saveProduto(Produto model) throws BOException, ApplicationException {
try {
model = dao.save(model);
}catch (ConstraintViolationException e){
throw new BOException("There is an element with this name.");
} catch (HibernateException e) {
throw new ApplicationException(ACMSolutionUtil.getErrorStackTrace(e));
}
return model;
}
Exemplo do metodo da controller.
public void saveProduto(Produto produto) {
try {
produto = ProdutoBo.saveProduto(produto);
result.use(Results.http()).body(produto.getId().toString());
} catch (BOException e) {
session.setAttribute("erroMessage", new ErroMessage(e.getMessage()));
result.notFound();
e.printStackTrace();
} catch (ApplicationException e) {
result.forwardTo(ErrorController.class).returnException(new ErroMessage(e.getMessage()));
e.printStackTrace();
}
}