1 package com.icesoft.faces.utils; 2 3 import java.text.MessageFormat ; 4 import java.util.Locale ; 5 import java.util.MissingResourceException ; 6 import java.util.ResourceBundle ; 7 8 import org.apache.commons.logging.Log; 9 import org.apache.commons.logging.LogFactory; 10 11 import javax.faces.application.FacesMessage; 12 import javax.faces.context.FacesContext; 13 14 20 21 public class MessageUtils { 22 private static Log log = LogFactory.getLog(MessageUtils.class); 23 private static String DETAIL_SUFFIX = "_detail"; 24 private static int SUMMARY = 0; 25 private static int DETAIL = 1; 26 private static String ICE_MESSAGES_BUNDLE = "com.icesoft.faces.resources.messages"; 27 public static FacesMessage getMessage(FacesContext context, 28 String messageId) { 29 return getMessage(context, messageId, null); 30 } 31 32 public static FacesMessage getMessage(FacesContext facesContext, 33 String messageId, Object params[]) { 34 String messageInfo[] = new String [2]; 35 36 Locale locale = facesContext.getViewRoot().getLocale(); 37 String bundleName = facesContext.getApplication().getMessageBundle(); 38 if (bundleName != null) { 40 try { 41 loadMessageInfo(bundleName, locale, messageId, messageInfo); 42 } catch (Exception e) { 43 log.warn(e + ", using " + ICE_MESSAGES_BUNDLE); 44 } 45 } 46 if (messageInfo[SUMMARY] == null && messageInfo[DETAIL]== null) { 48 loadMessageInfo(ICE_MESSAGES_BUNDLE, locale, messageId, messageInfo); 49 } 50 if (params != null) { 51 MessageFormat format; 52 for (int i= 0; i <messageInfo.length; i++) { 53 if (messageInfo[i] != null) { 54 format = new MessageFormat (messageInfo[i], locale); 55 messageInfo[i] = format.format(params); 56 } 57 } 58 } 59 return new FacesMessage(messageInfo[SUMMARY], messageInfo[DETAIL]); 60 } 61 62 private static void loadMessageInfo(String bundleName, 63 Locale locale, 64 String messageId, 65 String [] messageInfo) { 66 ResourceBundle bundle = ResourceBundle. 67 getBundle(bundleName, locale, getClassLoader(bundleName)); 68 try { 69 messageInfo[SUMMARY] = bundle.getString(messageId); 70 messageInfo[DETAIL] = bundle.getString(messageId + DETAIL_SUFFIX); 71 } catch (MissingResourceException e) { 72 } 73 } 74 75 76 private static ClassLoader getClassLoader(Object fallback) { 77 ClassLoader classLoader = Thread.currentThread() 78 .getContextClassLoader(); 79 if (classLoader == null) { 80 classLoader = fallback.getClass().getClassLoader(); 81 } 82 return classLoader; 83 } 84 } 85 | Popular Tags |