SpringMessageResolver.java

  1. package com.github.mygreen.supercsv.localization;

  2. import java.util.Optional;

  3. import org.springframework.context.MessageSource;
  4. import org.springframework.context.NoSuchMessageException;
  5. import org.springframework.context.support.MessageSourceAccessor;


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