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