Tipos de retornos para métodos que serão utilizados em webservices

0 respostas
R

Olá, pessoal.

Estou escrevendo uma classe que no final de tudo será transformada em um web service. Ela se parece muito com o cenário abaixo:

Class Classe {
  public void metodo1() { ... }
  public String metodo2() { ... }
  public Tipo[] metodo3() { ... } 
}

Essa classe pode gerar alguns erros que por sua vez podem ser facilmente tratados pela aplicação (exemplo: o tipo de registro que o usuário tenta mexer não existe) . Desse modo, resolvi transformar todos os métodos para retornar um int, que é zero em caso de sucesso ou o código de erro caso ocorra um erro que a aplicação deve tratar. Caso algum erro inesperado aconteça (ex.: erro de infra-estrutura), uma Exception é lançada.

Desse modo, é bem fácil transformar o método1 para retornar um int com o código de erro. Mas os outros métodos precisam que eu crie classes apenas para transportar esse novo resultado que passará a ser composto. Por exemplo, o método 2 não mais retornará um String mas sim um tipo Metodo2Response, que se parece com isso:

Class Metodo2Response {
  private int returnCode;
  private String value;

  // getters e setters
}

Essa solução, apesar de válida, gera uma certa inconsistência, pelo menos até onde eu posso ver: metodo1() retorna int com um código de sucesso ou erro; metodo2() e metodo3() retornam tipos complexos, que contêm o código de erro dentro deles…

Vale a pena fazer com que método1 também retorne um tipo complexo que contem somente um int com o código de retorno? Existe algum outro padrão ou método de resolver esse tipo de problema de forma limpa?

Criado 10 de outubro de 2009
Respostas 0
Participantes 1