Skip to content

Instantly share code, notes, and snippets.

@rafarocha
Last active August 29, 2015 14:16
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save rafarocha/4503e2bfd02691702f83 to your computer and use it in GitHub Desktop.
Save rafarocha/4503e2bfd02691702f83 to your computer and use it in GitHub Desktop.
Como tratar erro semântico com inclusão de informações adicionais. Caso em que o cliente deseja retornar a pessoa com campos adicionais
public PessoaFisica salvar(PessoaFisica pessoa) {
PessoaFisicaId id = null;
try{
// em caso status code 201, o core preenche o nit e digio
id = broker.salvar( pessoa );
} catch(ClientBusinessException e ) {
ErroSemantico erro = e.get("PESSOA_JA_EXISTE");
if ( erro == null ) {
throw new ExcecaoNegocio(); // por exemplo nacionalidade invalida
}
id = new PessoaFisicaId( erro.infoAsLong("nit"), erro.infoAsInt("digitoNit") );
} catch(ClientException e ) {
// erro 500 internal error - lance uma excecao que diga que fudeu tudo
throw new ExcecaoLapada();
}
pessoa.setNit( id.getNit() );
pessoa.setDigitoNit( id.getDigitoNit() );
return pessoaSalva;
}
class ErroSemantico {
String codigo;
Map<String, String> info;
}
// response: status_code = 422 e body em content-type JSON abaixo:
{
"errors" : [
{
"rule_key" : "PESSOA_JA_EXISTE",
"additional_info" : [
"nit" : 232783423,
"digitoNit" : 4
]
}
],
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment