KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > icesoft > faces > utils > MessageUtils


1 package com.icesoft.faces.utils;
2
3 import java.text.MessageFormat JavaDoc;
4 import java.util.Locale JavaDoc;
5 import java.util.MissingResourceException JavaDoc;
6 import java.util.ResourceBundle JavaDoc;
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 /**
15  * This class has been designed, so the custom components can get
16  * facesMessages either from the icefaces' ResourceBundle or an
17  * application's resourceBundle. The location of ice's messages.properties
18  * is under com.icesoft.faces.resources package.
19  */

20
21 public class MessageUtils {
22     private static Log log = LogFactory.getLog(MessageUtils.class);
23     private static String JavaDoc DETAIL_SUFFIX = "_detail";
24     private static int SUMMARY = 0;
25     private static int DETAIL = 1;
26     private static String JavaDoc ICE_MESSAGES_BUNDLE = "com.icesoft.faces.resources.messages";
27     public static FacesMessage getMessage(FacesContext context,
28             String JavaDoc messageId) {
29         return getMessage(context, messageId, null);
30     }
31     
32     public static FacesMessage getMessage(FacesContext facesContext,
33             String JavaDoc messageId, Object JavaDoc params[]) {
34         String JavaDoc messageInfo[] = new String JavaDoc[2];
35         
36         Locale JavaDoc locale = facesContext.getViewRoot().getLocale();
37         String JavaDoc bundleName = facesContext.getApplication().getMessageBundle();
38         //see if the message has been overridden by the application
39
if (bundleName != null) {
40             try {
41                 loadMessageInfo(bundleName, locale, messageId, messageInfo);
42             } catch (Exception JavaDoc e) {
43                 log.warn(e + ", using " + ICE_MESSAGES_BUNDLE);
44             }
45         }
46         //if not overridden then check in Icefaces message bundle.
47
if (messageInfo[SUMMARY] == null && messageInfo[DETAIL]== null) {
48             loadMessageInfo(ICE_MESSAGES_BUNDLE, locale, messageId, messageInfo);
49         }
50         if (params != null) {
51             MessageFormat JavaDoc format;
52             for (int i= 0; i <messageInfo.length; i++) {
53                 if (messageInfo[i] != null) {
54                     format = new MessageFormat JavaDoc(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 JavaDoc bundleName,
63                                 Locale JavaDoc locale,
64                                 String JavaDoc messageId,
65                                 String JavaDoc[] messageInfo) {
66         ResourceBundle JavaDoc 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 JavaDoc e) {
72         }
73     }
74     
75    
76     private static ClassLoader JavaDoc getClassLoader(Object JavaDoc fallback) {
77         ClassLoader JavaDoc classLoader = Thread.currentThread()
78                                     .getContextClassLoader();
79         if (classLoader == null) {
80             classLoader = fallback.getClass().getClassLoader();
81         }
82         return classLoader;
83     }
84 }
85
Popular Tags