All Downloads are FREE. Search and download functionalities are using the official Maven repository.

br.com.caelum.stella.ResourceBundleMessageProducer Maven / Gradle / Ivy

There is a newer version: 2.1.7
Show newest version
package br.com.caelum.stella;

import java.util.Locale;
import java.util.MissingResourceException;
import java.util.ResourceBundle;

import br.com.caelum.stella.validation.InvalidValue;

/**
 * 

* ResourceBlundeMessageProducer é responsável pela geração de mensagens de * erro. Estas mensagens são procuradas em um ResourceBundle, através de uma * chave associada a cada erro. *

*

* A chave de um erro é composta do seguinte modo: *

* * String key = simpleName + "." + errorName; * *

* Onde simpleName é o atributo simpleName do Enum e o errorName é o nome da * constante enum. Além disso, a chave é convertida em letras minúsculas. *

*

* Veja o exemplo: *

*

* A chave do erro representado por CPFError.INVALID_DIGITS é * cpferror.invalid_digits . *

* * @author Fabio Kung * @author Leonardo Bessa * */ public class ResourceBundleMessageProducer implements MessageProducer { private final ResourceBundle bundle; /** * @param bundle * ResourceBlunde que contém o mapa que associa erros as * mensagens. */ public ResourceBundleMessageProducer(final ResourceBundle bundle) { this.bundle = bundle; } public ValidationMessage getMessage(InvalidValue error) { Locale locale = bundle.getLocale(); if (locale == null) { locale = Locale.getDefault(); } String key = messageKeyFor(locale, error.getClass(), error); String message; try { message = bundle.getString(key); } catch (MissingResourceException ex) { message = key.replaceFirst("[.]", " : ").replaceAll("_", " "); } return new SimpleValidationMessage(message); } /** * A chave padrao é gerada com base no nome da classe do erro e do nome do * erro, sempre minúscula. * *

* Ex.: *

    *
  • classe do erro: CPFError
  • *
  • nome do erro: INVALID_DIGITS
  • *
* * Chave gerada: cpferror.invalid_digits. *

* * @param locale * a ser usado na conversão para minúsculo * @param errorClass * @param error * @return chave que representa o erro a ser usada para recuperar sua * mensagem associada */ public String messageKeyFor(Locale locale, Class errorClass, InvalidValue error) { String simpleName = errorClass.getSimpleName(); String errorName = error.name(); String key = simpleName + "." + errorName; return key.toLowerCase(locale); } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy