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.