Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  /*
   * $Id: MessageFactory.java,v 1.14 2006/12/17 07:19:11 rlubke Exp $
   */
  
  /*
   * The contents of this file are subject to the terms
   * of the Common Development and Distribution License
   * (the License). You may not use this file except in
   * compliance with the License.
  * 
  * You can obtain a copy of the License at
  * https://javaserverfaces.dev.java.net/CDDL.html or
  * legal/CDDLv1.0.txt. 
  * See the License for the specific language governing
  * permission and limitations under the License.
  * 
  * When distributing Covered Code, include this CDDL
  * Header Notice in each file and include the License file
  * at legal/CDDLv1.0.txt.    
  * If applicable, add the following below the CDDL Header,
  * with the fields enclosed by brackets [] replaced by
  * your own identifying information:
  * "Portions Copyrighted [year] [name of copyright owner]"
  * 
  * [Name of File] [ver.__] [Date]
  * 
  * Copyright 2005 Sun Microsystems Inc. All Rights Reserved
  */
 
 package javax.faces.webapp;
 
 

supported filters: package and protection.

 
 
  class MessageFactory {
 
     private MessageFactory() {
     }

    

Parameters:
FacesMessage.Serverity set a custom severity
See also:
getMessage(java.lang.String,java.lang.Object[])
 
      static FacesMessage getMessage(String messageId,
                                                 FacesMessage.Severity severity,
                                                 Object... params) {
         FacesMessage message = getMessage(messageIdparams);
         message.setSeverity(severity);
         return message;
     }


    

Parameters:
FacesMessage.Serverity set a custom severity
See also:
getMessage(java.util.Locale,java.lang.String,java.lang.Object[])
 
      static FacesMessage getMessage(Locale locale,
                                                 String messageId,
                                                 FacesMessage.Severity severity,
                                                 Object... params) {
         FacesMessage message = getMessage(localemessageIdparams);
         message.setSeverity(severity);
         return message;
     }


    

Parameters:
FacesMessage.Serverity set a custom severity
See also:
getMessage(javax.faces.context.FacesContext,java.lang.String,java.lang.Object[])
 
      static FacesMessage getMessage(FacesContext context,
                                                 String messageId,
                                                 FacesMessage.Severity severity,
                                                 Object... params) {
         FacesMessage message = getMessage(contextmessageIdparams);
         message.setSeverity(severity);
         return message;
     }

   
    

This version of getMessage() is used for localizing implementation specific messages.

Parameters:
messageId - the key of the message in the resource bundle
params - substittion parameters
Returns:
a localized FacesMessage with the severity of FacesMessage.SEVERITY_ERROR
      static FacesMessage getMessage(String messageId
                                                 Object... params) {
        Locale locale = null;
        FacesContext context = FacesContext.getCurrentInstance();
        // context.getViewRoot() may not have been initialized at this point.
        if (context != null && context.getViewRoot() != null) {
            locale = context.getViewRoot().getLocale();
            if (locale == null) {
                locale = Locale.getDefault();
            }
        } else {
            locale = Locale.getDefault();
        }
        
        return getMessage(localemessageIdparams);
    }

     

Creates and returns a FacesMessage for the specified Locale.

Parameters:
locale - the target Locale
messageId - the key of the message in the resource bundle
params - substittion parameters
Returns:
a localized FacesMessage with the severity of FacesMessage.SEVERITY_ERROR
      static FacesMessage getMessage(Locale locale
                                                 String messageId
                                                 Object... params) {       
        String summary = null;
        String detail = null;       
        ResourceBundle bundle;
        String bundleName;
        // see if we have a user-provided bundle
        if (null != (bundleName = getApplication().getMessageBundle())) {
            if (null != 
                (bundle = 
                    ResourceBundle.getBundle(bundleNamelocale,
                      getCurrentLoader(bundleName)))) {
                // see if we have a hit
                try {
                    summary = bundle.getString(messageId);
                    detail = bundle.getString(messageId + "_detail");
                }
                catch (MissingResourceException e) {
                    // ignore
                }
            }
        }
    
        // we couldn't find a summary in the user-provided bundle
        if (null == summary) {
            // see if we have a summary in the app provided bundle
            bundle = ResourceBundle.getBundle(.
                                              locale,
                                              getCurrentLoader(bundleName));
            if (null == bundle) {
                throw new NullPointerException();
            }
            // see if we have a hit
            try {
                summary = bundle.getString(messageId);
                // we couldn't find a summary anywhere!  Return null
                if (null == summary) {
                    return null;
                }
                detail = bundle.getString(messageId + "_detail");
            } catch (MissingResourceException e) {
                // ignore
            }
        }
        // At this point, we have a summary and a bundle.     
        FacesMessage ret = new BindingFacesMessage(localesummarydetailparams);
        return (ret);
    }


    

Creates and returns a FacesMessage for the specified Locale.

Parameters:
context - the FacesContext for the current request
messageId - the key of the message in the resource bundle
params - substittion parameters
Returns:
a localized FacesMessage with the severity of FacesMessage.SEVERITY_ERROR
     static FacesMessage getMessage(FacesContext context
                                                String messageId,
                                                Object... params) {
                                                
        if (context == null || messageId == null ) {
            throw new NullPointerException(" context " 
                + context 
                + " messageId " 
                + messageId);
        }
        Locale locale;
        // viewRoot may not have been initialized at this point.
        if (context.getViewRoot() != null) {
            locale = context.getViewRoot().getLocale();
        } else {
            locale = Locale.getDefault();
        }
        
        if (null == locale) {
            throw new NullPointerException(" locale is null ");
        }
        
        FacesMessage message = getMessage(localemessageIdparams);
        if (message != null) {
            return message;
        }
        locale = Locale.getDefault();
        return (getMessage(localemessageIdparams));
    }  
                       

    

Returns the label property from the specified component.

Parameters:
context - the FacesContext for the current request
component - the component of interest
Returns:
the label, if any, of the component
     static Object getLabel(FacesContext context
                                        UIComponent component) {
                                        
        Object o = component.getAttributes().get("label");
        if (o == null || (o instanceof String && ((Stringo).length() == 0)) {
            o = component.getValueExpression("label");
        }
        // Use the "clientId" if there was no label specified.
        if (o == null) {
            o = component.getClientId(context);
        }
        return o;
    }
    protected static Application getApplication() {
        FacesContext context = FacesContext.getCurrentInstance();
        if (context != null) {
            return (FacesContext.getCurrentInstance().getApplication());
        }
        ApplicationFactory afactory = (ApplicationFactory)
            FactoryFinder.getFactory(.);
        return (afactory.getApplication());
    }
    protected static ClassLoader getCurrentLoader(Object fallbackClass) {
        ClassLoader loader =
            Thread.currentThread().getContextClassLoader();
        if (loader == null) {
            loader = fallbackClass.getClass().getClassLoader();
        }
        return loader;
    }

    
This class overrides FacesMessage to provide the evaluation of binding expressions in addition to Strings. It is often the case, that a binding expression may reference a localized property value that would be used as a substitution parameter in the message. For example: #{bundle.userLabel} "bundle" may not be available until the page is rendered. The "late" binding evaluation in getSummary and getDetail allow the expression to be evaluated when that property is available.
    static class BindingFacesMessage extends FacesMessage {
        BindingFacesMessage(
            Locale locale,
            String messageFormat,
            String detailMessageFormat,
            // array of parameters, both Strings and ValueBindings
            Object[] parameters) {
            super(messageFormatdetailMessageFormat);
            this. = locale;
            this. = parameters;
            if (parameters != null) {
                 = new Object[parameters.length];
            }
        }
        public String getSummary() {
            String pattern = super.getSummary();
            resolveBindings();
            return getFormattedString(pattern);
        }
        public String getDetail() {
            String pattern = super.getDetail();
            resolveBindings();
            return getFormattedString(pattern);
        }
        private void resolveBindings() {
            FacesContext context = null;
            if ( != null) {
                for (int i = 0; i < .i++) {
                    Object o = [i];
                    if (o instanceof ValueBinding) {
                        if (context == null) {
                            context = FacesContext.getCurrentInstance();
                        }
                        o = ((ValueBindingo).getValue(context);
                    }
                    if (o instanceof ValueExpression) {
                        if (context == null) {
                            context = FacesContext.getCurrentInstance();
                        }
                        o = ((ValueExpressiono).getValue(context.getELContext());
                    }
                    // to avoid 'null' appearing in message
                    if (o == null) {
                        o = "";
                    }
                    [i] = o;
                }
            }
        }
        private String getFormattedString(String msgtextObject[] params) {
            String localizedStr = null;
                                                                                
            if (params == null || msgtext == null ) {
                return msgtext;
            }
            StringBuffer b = new StringBuffer(100);
            MessageFormat mf = new MessageFormat(msgtext);
            if ( != null) {
                mf.setLocale();
                b.append(mf.format(params));
                localizedStr = b.toString();
            }
            return localizedStr;
        }
        private Locale locale;
        private Object[] parameters;
        private Object[] resolvedParameters;
    }
    
// end of class MessageFactory
New to GrepCode? Check out our FAQ X