javax.faces.convert._MessageUtils Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of myfaces-api Show documentation
Show all versions of myfaces-api Show documentation
The public API classes of the Apache MyFaces CORE JSF-2.2 project
/*
* Copyright 2004 The Apache Software Foundation.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package javax.faces.convert;
import javax.faces.application.FacesMessage;
import javax.faces.context.FacesContext;
import java.text.MessageFormat;
import java.util.Locale;
import java.util.MissingResourceException;
import java.util.ResourceBundle;
/**
* @author Manfred Geiler (latest modification by $Author: grantsmith $)
* @version $Revision: 169646 $ $Date: 2005-05-11 15:34:57 +0000 (Wed, 11 May 2005) $
*/
class _MessageUtils
{
private static final String DETAIL_SUFFIX = "_detail";
static FacesMessage getErrorMessage(FacesContext facesContext,
String messageId,
Object args[])
{
return getMessage(facesContext,
facesContext.getViewRoot().getLocale(),
FacesMessage.SEVERITY_ERROR,
messageId,
args);
}
static FacesMessage getMessage(FacesContext facesContext,
Locale locale,
FacesMessage.Severity severity,
String messageId,
Object args[])
{
ResourceBundle appBundle;
ResourceBundle defBundle;
String summary;
String detail;
appBundle = getApplicationBundle(facesContext, locale);
summary = getBundleString(appBundle, messageId);
if (summary != null)
{
detail = getBundleString(appBundle, messageId + DETAIL_SUFFIX);
}
else
{
defBundle = getDefaultBundle(facesContext, locale);
summary = getBundleString(defBundle, messageId);
if (summary != null)
{
detail = getBundleString(defBundle, messageId + DETAIL_SUFFIX);
}
else
{
//Try to find detail alone
detail = getBundleString(appBundle, messageId + DETAIL_SUFFIX);
if (detail != null)
{
summary = null;
}
else
{
detail = getBundleString(defBundle, messageId + DETAIL_SUFFIX);
if (detail != null)
{
summary = null;
}
else
{
//Neither detail nor summary found
return null;
}
}
}
}
if (args != null && args.length > 0)
{
MessageFormat format;
if (summary != null)
{
format = new MessageFormat(summary, locale);
summary = format.format(args);
}
if (detail != null)
{
format = new MessageFormat(detail, locale);
detail = format.format(args);
}
}
return new FacesMessage(severity, summary, detail);
}
private static String getBundleString(ResourceBundle bundle, String key)
{
try
{
return bundle == null ? null : bundle.getString(key);
}
catch (MissingResourceException e)
{
return null;
}
}
private static ResourceBundle getApplicationBundle(FacesContext facesContext, Locale locale)
{
String bundleName = facesContext.getApplication().getMessageBundle();
if (bundleName != null)
{
return getBundle(facesContext, locale, bundleName);
}
else
{
return null;
}
}
private static ResourceBundle getDefaultBundle(FacesContext facesContext,
Locale locale)
{
return getBundle(facesContext, locale, FacesMessage.FACES_MESSAGES);
}
private static ResourceBundle getBundle(FacesContext facesContext,
Locale locale,
String bundleName)
{
try
{
//First we try the JSF implementation class loader
return ResourceBundle.getBundle(bundleName,
locale,
facesContext.getClass().getClassLoader());
}
catch (MissingResourceException ignore1)
{
try
{
//Next we try the JSF API class loader
return ResourceBundle.getBundle(bundleName,
locale,
_MessageUtils.class.getClassLoader());
}
catch (MissingResourceException ignore2)
{
try
{
//Last resort is the context class loader
return ResourceBundle.getBundle(bundleName,
locale,
Thread.currentThread().getContextClassLoader());
}
catch (MissingResourceException damned)
{
facesContext.getExternalContext().log("resource bundle " + bundleName + " could not be found");
return null;
}
}
}
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy