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

org.apache.myfaces.util.MessageUtils Maven / Gradle / Ivy

Go to download

The MyFaces Commons Subproject provides base classes for usage in both the MyFaces implementation and the MyFaces Tomahawk components. This is also a general set of utility classes for usage in your JSF projects independent of the implementation you might be deciding upon.

The newest version!
/*
 * 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 org.apache.myfaces.util;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

import org.apache.myfaces.util.ClassUtils;

import javax.faces.application.FacesMessage;
import javax.faces.application.ApplicationFactory;
import javax.faces.application.Application;
import javax.faces.context.FacesContext;
import javax.faces.FactoryFinder;

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

/**
 * Utility class to support multilingual FacesMessages using ResourceBundles.
 * Standard messages are stored at DEFAULT_BUNDLE.
* The summary of the message is stored at the requested key value. The detail * of the message is stored at <messageId>_detail. * * @see FacesMessage * @see java.util.ResourceBundle * * @author Thomas Spiegl (latest modification by $Author: schof $) * @author Manfred Geiler * @author Sean Schofield * @author Stpehan Strittmatter * @version $Revision: 349961 $ $Date: 2005-11-30 15:08:57 +0000 (Wed, 30 Nov 2005) $ */ public class MessageUtils { private static final Log LOG = LogFactory.getLog(MessageUtils.class); /** Default bundle for messages (javax.faces.Messages) */ private static final String DEFAULT_BUNDLE = "javax.faces.Messages"; /** Suffix for message details (_detail)*/ private static final String DETAIL_SUFFIX = "_detail"; private static Log log = LogFactory.getLog(MessageUtils.class); /** * @param severity serverity of message * @param messageId id of message * @param arg arument of message * * @return generated FacesMessage */ public static FacesMessage getMessage(FacesMessage.Severity severity, String messageId, Object arg) { return getMessage(severity, messageId, new Object[]{arg}, FacesContext.getCurrentInstance()); } /** * @param severity serverity of message * @param messageId id of message * @param args aruments of message * * @return generated FacesMessage */ public static FacesMessage getMessage(FacesMessage.Severity severity, String messageId, Object[] args) { return getMessage(severity, messageId, args, FacesContext.getCurrentInstance()); } public static FacesMessage getMessage(FacesMessage.Severity severity, String messageId, Object[] args, FacesContext facesContext) { FacesMessage message = getMessage(facesContext, messageId, args); message.setSeverity(severity); return message; } public static void addMessage(FacesMessage.Severity severity, String messageId, Object[] args) { addMessage(severity, messageId, args, null, FacesContext.getCurrentInstance()); } public static void addMessage(FacesMessage.Severity severity, String messageId, Object[] args, FacesContext facesContext) { addMessage(severity, messageId, args, null, facesContext); } public static void addMessage(FacesMessage.Severity severity, String messageId, Object[] args, String forClientId) { addMessage(severity, messageId, args, forClientId, FacesContext.getCurrentInstance()); } public static void addMessage(FacesMessage.Severity severity, String messageId, Object[] args, String forClientId, FacesContext facesContext) { if(log.isTraceEnabled()) { log.trace("adding message " + messageId + " for clientId " + forClientId); } facesContext.addMessage(forClientId, getMessage(severity, messageId, args, facesContext)); } /** * Uses MessageFormat and the supplied parameters to fill in the param placeholders in the String. * * @param locale The Locale to use when performing the substitution. * @param msgtext The original parameterized String. * @param params The params to fill in the String with. * @return The updated String. */ public static String substituteParams(Locale locale, String msgtext, Object params[]) { String localizedStr = null; if(params == null || msgtext == null) return msgtext; StringBuffer b = new StringBuffer(100); MessageFormat mf = new MessageFormat(msgtext); if(locale != null) { mf.setLocale(locale); b.append(mf.format(((Object) (params)))); localizedStr = b.toString(); } return localizedStr; } public static FacesMessage getMessage(String messageId, Object params[]) { Locale locale = null; FacesContext context = FacesContext.getCurrentInstance(); if(context != null && context.getViewRoot() != null) { locale = context.getViewRoot().getLocale(); if(locale == null) locale = Locale.getDefault(); } else { locale = Locale.getDefault(); } return getMessage(locale, messageId, params); } public static FacesMessage getMessage(Locale locale, String messageId, Object params[]) { String summary = null; String detail = null; String bundleName = getApplication().getMessageBundle(); ResourceBundle bundle = null; if (bundleName != null) { try { bundle = ResourceBundle.getBundle(bundleName, locale, ClassUtils.getCurrentLoader(bundleName)); summary = bundle.getString(messageId); } catch (MissingResourceException e) { // NoOp } } if (summary == null) { try { bundle = ResourceBundle.getBundle(DEFAULT_BUNDLE, locale, ClassUtils.getCurrentLoader(DEFAULT_BUNDLE)); if(bundle == null) { throw new NullPointerException(); } summary = bundle.getString(messageId); } catch(MissingResourceException e) { // NoOp } } if(summary == null) { summary = messageId; } if (bundle == null) { throw new NullPointerException( "Unable to locate ResrouceBundle: bundle is null"); } summary = substituteParams(locale, summary, params); try { detail = substituteParams(locale, bundle.getString(messageId + DETAIL_SUFFIX), params); } catch(MissingResourceException e) { // NoOp } return new FacesMessage(summary, detail); } /** * @param bundleBaseName baseName of ResourceBundle to load localized messages * @param messageId id of message * @param params parameters to set at localized message * @return generated FacesMessage */ public static FacesMessage getMessage(String bundleBaseName, String messageId, Object params[]) { Locale locale = null; FacesContext context = FacesContext.getCurrentInstance(); if(context != null && context.getViewRoot() != null) { locale = context.getViewRoot().getLocale(); if(locale == null) locale = Locale.getDefault(); } else { locale = Locale.getDefault(); } return getMessage(bundleBaseName, locale, messageId, params); } /** * @param severity severity of message * @param bundleBaseName baseName of ResourceBundle to load localized messages * @param messageId id of message * @param params parameters to set at localized message * @return generated FacesMessage */ public static FacesMessage getMessage(FacesMessage.Severity severity, String bundleBaseName, String messageId, Object params[]) { FacesMessage msg = getMessage(bundleBaseName, messageId, params); msg.setSeverity(severity); return msg; } /** * @param bundleBaseName baseName of ResourceBundle to load localized messages * @param locale current locale * @param messageId id of message * @param params parameters to set at localized message * @return generated FacesMessage */ public static FacesMessage getMessage(String bundleBaseName, Locale locale, String messageId, Object params[]) { if (bundleBaseName == null) { throw new NullPointerException( "Unable to locate ResrouceBundle: bundle is null"); } ResourceBundle bundle = ResourceBundle.getBundle(bundleBaseName, locale); return getMessage(bundle, messageId, params); } /** * @param bundle ResourceBundle to load localized messages * @param messageId id of message * @param params parameters to set at localized message * @return generated FacesMessage */ public static FacesMessage getMessage(ResourceBundle bundle, String messageId, Object params[]) { String summary = null; String detail = null; try { summary = bundle.getString(messageId); } catch (MissingResourceException e) { // NoOp } if(summary == null) { summary = messageId; } summary = substituteParams(bundle.getLocale(), summary, params); try { detail = substituteParams(bundle.getLocale(), bundle.getString(messageId + DETAIL_SUFFIX), params); } catch(MissingResourceException e) { // NoOp } return new FacesMessage(summary, detail); } /** * * @param context * @param messageId * @return generated FacesMessage */ public static FacesMessage getMessage(FacesContext context, String messageId) { return getMessage(context, messageId, ((Object []) (null))); } /** * * @param context * @param messageId * @param params * @return generated FacesMessage */ public static FacesMessage getMessage(FacesContext context, String messageId, Object params[]) { if(context == null || messageId == null) throw new NullPointerException(" context " + context + " messageId " + messageId); Locale locale = null; if(context != null && context.getViewRoot() != null) locale = context.getViewRoot().getLocale(); else locale = Locale.getDefault(); if(null == locale) throw new NullPointerException(" locale " + locale); FacesMessage message = getMessage(locale, messageId, params); if(message != null) { return message; } else { locale = Locale.getDefault(); return getMessage(locale, messageId, params); } } private static Application getApplication() { FacesContext context = FacesContext.getCurrentInstance(); if(context != null) { return FacesContext.getCurrentInstance().getApplication(); } else { ApplicationFactory afactory = (ApplicationFactory)FactoryFinder.getFactory("javax.faces.application.ApplicationFactory"); return afactory.getApplication(); } } }




© 2015 - 2025 Weber Informatics LLC | Privacy Policy