View Javadoc
1   package com.github.mygreen.supercsv.localization;
2   
3   import java.util.Optional;
4   
5   import org.springframework.context.MessageSource;
6   import org.springframework.context.NoSuchMessageException;
7   import org.springframework.context.support.MessageSourceAccessor;
8   
9   
10  /**
11   * Springの{@link MessageSource}をブリッジする{@link MessageResolver}。
12   * 
13   * @version 2.0
14   * @author T.TSUCHIE
15   *
16   */
17  public class SpringMessageResolver implements MessageResolver {
18      
19      protected MessageSourceAccessor messageSourceAccessor;
20      
21      public SpringMessageResolver() {
22          
23      }
24      
25      public SpringMessageResolver(final MessageSource messageSource) {
26          setMessageSource(messageSource);
27      }
28      
29      /**
30       * {@inheritDoc}
31       */
32      @Override
33      public Optional<String> getMessage(final String code) {
34          try {
35              return Optional.of(messageSourceAccessor.getMessage(code));
36              
37          } catch(NoSuchMessageException e) {
38              return Optional.empty();
39          }
40      }
41      
42      /**
43       * メッセージソースを設定する
44       * @param messageSource Springのメッセージソース
45       */
46      public void setMessageSource(final MessageSource messageSource) {
47          this.messageSourceAccessor = new MessageSourceAccessor(messageSource);
48      }
49      
50      /**
51       * メッセージソースを取得する。
52       * @return 現在設定されているメッセージソースをラップした{@link MessageSourceAccessor}を返す。
53       */
54      protected MessageSourceAccessor getMessageSourceAccessor() {
55          return messageSourceAccessor;
56      }
57  }