1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 package org.primefaces.extensions.util;
23
24 import static org.primefaces.util.MessageFactory.getFormattedText;
25
26 import java.util.Locale;
27 import java.util.MissingResourceException;
28 import java.util.ResourceBundle;
29
30 import javax.faces.application.FacesMessage;
31 import javax.faces.component.UIComponent;
32 import javax.faces.context.FacesContext;
33
34 import org.primefaces.util.LocaleUtils;
35
36
37
38
39
40
41
42 public class MessageFactory {
43
44 private static final String PF_EXTENSIONS_BUNDLE_BASENAME = "org.primefaces.extensions.Messages";
45 private static final String DEFAULT_DETAIL_SUFFIX = "_detail";
46
47 private MessageFactory() {
48 }
49
50 public static FacesMessage getMessage(final String messageId,
51 final FacesMessage.Severity severity,
52 final Object... params) {
53 final FacesMessage message = getMessage(LocaleUtils.getCurrentLocale(), messageId, params);
54 message.setSeverity(severity);
55 return message;
56 }
57
58 public static FacesMessage getMessage(final Locale locale,
59 final String messageId,
60 final Object... params) {
61 final FacesMessage message = org.primefaces.util.MessageFactory.getFacesMessage(locale, messageId, params);
62 if (message.getSummary() == null) {
63 populateMessageFromExtensions(message, locale, messageId, params);
64 }
65 return message;
66 }
67
68 public static Object getLabel(FacesContext facesContext, UIComponent component) {
69 String label = (String) component.getAttributes().get("label");
70
71 if (label == null) {
72 label = component.getClientId(facesContext);
73 }
74
75 return label;
76 }
77
78 private static void populateMessageFromExtensions(final FacesMessage message,
79 final Locale locale,
80 final String messageId,
81 final Object[] params) {
82 final ResourceBundle extensionsBundle = getExtensionsBundle(locale);
83 message.setSummary(getFormattedText(locale, extensionsBundle.getString(messageId), params));
84 try {
85 message.setDetail(getFormattedText(locale, extensionsBundle.getString(messageId + DEFAULT_DETAIL_SUFFIX), params));
86 }
87 catch (final MissingResourceException e) {
88
89 }
90 }
91
92 private static ResourceBundle getExtensionsBundle(final Locale locale) {
93 return ResourceBundle.getBundle(PF_EXTENSIONS_BUNDLE_BASENAME,
94 locale,
95 Thread.currentThread().getContextClassLoader());
96
97 }
98
99 }