001    package org.trails.i18n;
002    
003    import java.util.Locale;
004    
005    import org.apache.hivemind.Messages;
006    import org.apache.hivemind.service.ThreadLocale;
007    
008    public class HiveMindMessageSource extends AbstractMessageSource
009    {
010    
011            private ThreadLocale threadLocale;
012            private Messages messageSource;
013    
014            public String getMessage(String key)
015            {
016                    return messageSource.getMessage(key);
017            }
018    
019            public String getMessage(String key, Object[] args)
020            {
021                    return messageSource.format(key, args);
022            }
023    
024            public String getMessage(String key, Locale locale)
025            {
026                    Locale currentLocale = threadLocale.getLocale();
027                    /** I know!!, awful hack! **/
028                    threadLocale.setLocale(locale);
029                    String message = getMessage(key);
030                    threadLocale.setLocale(currentLocale);
031                    return message;
032            }
033    
034            public String getMessage(String key, Object[] args, Locale locale)
035            {
036                    Locale currentLocale = threadLocale.getLocale();
037                    /** I know!!, awful hack! **/
038                    threadLocale.setLocale(locale);
039                    String message = getMessage(key, args);
040                    threadLocale.setLocale(currentLocale);
041                    return message;
042            }
043    
044            public void setThreadLocale(ThreadLocale threadLocale)
045            {
046                    this.threadLocale = threadLocale;
047            }
048    
049            public void setMessageSource(Messages messageSource)
050            {
051                    this.messageSource = messageSource;
052            }
053    
054    }