package net.jhorstmann.i18n.jsf; import java.util.Locale; import java.util.ResourceBundle; import javax.faces.context.FacesContext; import net.jhorstmann.i18n.ResourceBundleProvider; import net.jhorstmann.i18n.ResourceBundleProviderFactory; public class FacesResourceBundleProviderFactory extends ResourceBundleProviderFactory { public static final String KEY_DEACTIVATION_VAR = "net.jhorstmann.i18n.FacesResourceBundleProviderFactory.deactivate"; static class FacesResourceBundleProvider implements ResourceBundleProvider { @Override public ResourceBundle getResourceBundle(Locale locale) { return FacesResourceBundle.getResourceBundle(); } } private static final ResourceBundleProvider PROVIDER = new FacesResourceBundleProvider(); @Override public boolean isEnvironmentSupported() { if (FacesContext.getCurrentInstance() == null) { // no JSF active return false; } String bundleVar = FacesContext.getCurrentInstance().getExternalContext().getInitParameter(KEY_DEACTIVATION_VAR); if (bundleVar != null && "true".equalsIgnoreCase(bundleVar)) { // Provider is disabled return false; } // JSF is active and no deactivation configured return true; } @Override public ResourceBundleProvider newResourceBundleProvider() { return PROVIDER; } }