package br.com.caelum.stella.faces.validation;
import java.util.Locale;
import java.util.ResourceBundle;
import javax.faces.application.Application;
import javax.faces.context.FacesContext;
/**
* <p>Busca o arquivo de mensagens configurado no faces-config.xml: </p>
* <pre>
* <application>
* <message-bundle>messages</message-bundle>
* </application>
* </pre>
*
* <p>
* Caso não haja nenhum arquivo de mensagens configurado no faces-config.xml,
* será usado o arquivo padrão de mensagens contido no stella-faces
* (StellaMessages.properties), com mensagens padrão.
* </p>
*
* @author Fabio Kung
*/
public class ResourceBundleFinder {
private static ResourceBundle STELLA_MESSAGES;
/**
* Encontra o ResourceBundle para o Locale da árvore de componentes
* (UIViewRoot) atual.
*
* @param facesContext FacesContext atual.
* @return {@link ResourceBundle} atual.
*/
public ResourceBundle getForCurrentLocale(FacesContext facesContext) {
Application application = facesContext.getApplication();
String bundleName = application.getMessageBundle();
if (bundleName == null) {
return defaultStellaBundle();
}
Locale locale = facesContext.getViewRoot().getLocale();
ResourceBundle bundle = ResourceBundle.getBundle(bundleName, locale);
return bundle;
}
private ResourceBundle defaultStellaBundle() {
if (STELLA_MESSAGES == null) {
STELLA_MESSAGES = ResourceBundle.getBundle("StellaMessages", new Locale("pt", "BR"));
}
return STELLA_MESSAGES;
}
}