Motivação

Ao identificar um documento inválido, na camada de apresentação, devemos notificar o usuário com um mensagem. Dependendo do contexto, podemos sentir a necessidade de apresentar mensagens personalizadas, como por exemplo em diferentes idiomas ou simplesmente seguir um padrão de mensagem. Dessa necessidade surgiu a interface br.com.caelum.stella.MessageProducer. As classes que a implementam são responsáveis por fornecer uma mensagem de validação para cada erro.

Neste módulo estão disponíveis a ResourceBundleMessageProducer e a SimpleMessageProducer.

Lógica de geração da chave de erro

Os erros de validação são representados por classes que implementam a interface br.com.caelum.stella.validation.InvalidValue. No Caelum Stella, estes errors costumam ser enums, que implementam esta interface.

Com base nesta interface, o padrão para as chaves de validação são formadas por nomes: o da classe e o da enum.

Suponha que deseja-se econtrar uma mensagem de erro para a classe CPFError, cuja instancia (dessa enum) respresenta um erro do tipo INVALID_FORMAT. A chave gerada é a composição desses dois nomes (em letras minúsculas) separados por um ponto. Ou seja, "cpferror.invalid_format".

SimpleMessageProducer

O SimpleMessageProducer é um produtor de mensagens muito simples. Ele também utiliza o nome da classe e da enum para gerar a mensagem de validação. Ao invés de gerar uma chave para busca em algum arquivo de mensagens, este produtor cria a mensagem sem consultar nenhum outro recurso. A mensagem gerada é semelhante a chave descrita anteriormente, no entantno troca-se o primeiro ponto "." por " : " e todos underscores "_" por espaços em branco " ".

A mensagem gerada pelo exemplo anterior seria : "cpferror : invalid format". Assim, com pouca configuração, temos uma mensagem mais legível.