/** * Gets the reloadable resource bundle message source. * * @return the reloadable resource bundle message source */ @Bean(name = "messageSource") public MessageSource getMessageSource() { logger.debug("Instantiated reloadableResourceBundleMessageSource"); ReloadableResourceBundleMessageSource source = new ReloadableResourceBundleMessageSource(); source.setBasename("/WEB-INF/messages"); source.setCacheSeconds(1); source.setFallbackToSystemLocale(false); return source; }
@Test public void testReloadableResourceBundleMessageSourceWithInappropriateDefaultCharset() { ReloadableResourceBundleMessageSource ms = new ReloadableResourceBundleMessageSource(); ms.setBasename("org/springframework/context/support/messages"); ms.setDefaultEncoding("unicode"); Properties fileCharsets = new Properties(); fileCharsets.setProperty("org/springframework/context/support/messages_de", "unicode"); ms.setFileEncodings(fileCharsets); ms.setFallbackToSystemLocale(false); try { ms.getMessage("code1", null, Locale.ENGLISH); fail("Should have thrown NoSuchMessageException"); } catch (NoSuchMessageException ex) { // expected } }
/** * The super implementation ensures the basenames defined at the beginning take precedence. We require the opposite in * order to be in line with previous assumptions about the applicationContext merge process (meaning, beans defined in * later applicationContexts take precedence). Thus, this reverses <b>basenames</b> before passing it up to the super * implementation. * * @param basenames * @param resourceBundleExtensionPoint * @see {@link ReloadableResourceBundleMessageSource#setBasenames(String...)} */ @Resource(name="blMessageSourceBaseNames") @Override public void setBasenames(String... basenames) { CollectionUtils.reverseArray(basenames); super.setBasenames(basenames); }
@Test public void testReloadableResourceBundleMessageSourceWithInappropriateGermanCharset() { ReloadableResourceBundleMessageSource ms = new ReloadableResourceBundleMessageSource(); ms.setBasename("org/springframework/context/support/messages"); ms.setFallbackToSystemLocale(false); Properties fileCharsets = new Properties(); fileCharsets.setProperty("org/springframework/context/support/messages_de", "unicode"); ms.setFileEncodings(fileCharsets); assertEquals("message1", ms.getMessage("code1", null, Locale.ENGLISH)); assertEquals("message2", ms.getMessage("code2", null, Locale.GERMAN)); }
@Test public void testReloadableResourceBundleMessageSourceWithDefaultCharset() { ReloadableResourceBundleMessageSource ms = new ReloadableResourceBundleMessageSource(); ms.setBasename("org/springframework/context/support/messages"); ms.setDefaultEncoding("ISO-8859-1"); assertEquals("message1", ms.getMessage("code1", null, Locale.ENGLISH)); assertEquals("nachricht2", ms.getMessage("code2", null, Locale.GERMAN)); }
@Test public void testReloadableResourceBundleMessageSourceStandalone() { ReloadableResourceBundleMessageSource ms = new ReloadableResourceBundleMessageSource(); ms.setBasename("org/springframework/context/support/messages"); assertEquals("message1", ms.getMessage("code1", null, Locale.ENGLISH)); assertEquals("nachricht2", ms.getMessage("code2", null, Locale.GERMAN)); }
@Bean public MessageSource messageSource() { ReloadableResourceBundleMessageSource messageSource = new ReloadableResourceBundleMessageSource(); messageSource.setBasename("/WEB-INF/propFiles/messages"); messageSource.setDefaultEncoding("UTF-8"); return messageSource; }
@Bean(name = "messageSource") public MessageSource messageSource() { ReloadableResourceBundleMessageSource messageSource = new ReloadableResourceBundleMessageSource(); messageSource.setBasename(MESSAGE_SOURCE); messageSource.setCacheSeconds(5); return messageSource; }
/** * The {@link MessageSourceAccessor} to provide messages for {@link ResourceDescription}s being rendered. * * @return */ @Bean public MessageSourceAccessor linkRelationMessageSource() { try { ReloadableResourceBundleMessageSource messageSource = new ReloadableResourceBundleMessageSource(); messageSource.setBasename("classpath:rest-messages"); return new MessageSourceAccessor(messageSource); } catch (Exception o_O) { throw new BeanCreationException("resourceDescriptionMessageSourceAccessor", "", o_O); } }
@Bean public MessageSource messageSource(){ ReloadableResourceBundleMessageSource messageSource = new ReloadableResourceBundleMessageSource(); messageSource.setBasename("classpath:i18n/messages"); messageSource.setDefaultEncoding("UTF-8"); messageSource.setUseCodeAsDefaultMessage(true); return messageSource; } }
/** * The {@link MessageSourceAccessor} to provide messages for {@link ResourceDescription}s being rendered. * * @return */ @Bean public MessageSourceAccessor resourceDescriptionMessageSourceAccessor() { try { PropertiesFactoryBean propertiesFactoryBean = new PropertiesFactoryBean(); propertiesFactoryBean.setLocation(new ClassPathResource("rest-default-messages.properties")); propertiesFactoryBean.afterPropertiesSet(); ReloadableResourceBundleMessageSource messageSource = new ReloadableResourceBundleMessageSource(); messageSource.setBasename("classpath:rest-messages"); messageSource.setCommonMessages(propertiesFactoryBean.getObject()); messageSource.setDefaultEncoding("UTF-8"); return new MessageSourceAccessor(messageSource); } catch (Exception o_O) { throw new BeanCreationException("resourceDescriptionMessageSourceAccessor", "", o_O); } }
@Bean(name = "messageSource") public ReloadableResourceBundleMessageSource reloadableResourceBundleMessageSource() { ReloadableResourceBundleMessageSource reloadableResourceBundleMessageSource = new ReloadableResourceBundleMessageSource(); reloadableResourceBundleMessageSource.setBasenames("classpath*:messages/", "classpath*:valid/validation"); reloadableResourceBundleMessageSource.setUseCodeAsDefaultMessage(false); reloadableResourceBundleMessageSource.setFallbackToSystemLocale(true); return reloadableResourceBundleMessageSource; }
@Bean public MessageSource messageSource() { ReloadableResourceBundleMessageSource messageSource = new ReloadableResourceBundleMessageSource(); messageSource.setBasenames( "classpath:messages" ); // if true, the key of the message will be displayed if the key is not // found, instead of throwing a NoSuchMessageException messageSource.setUseCodeAsDefaultMessage( true ); messageSource.setDefaultEncoding( "UTF-8" ); // # -1 : never reload, 0 always reload messageSource.setCacheSeconds( 0 ); return messageSource; }
@Test public void testReloadableResourceBundleMessageSourceWithNonConcurrentRefresh() throws InterruptedException { ReloadableResourceBundleMessageSource ms = new ReloadableResourceBundleMessageSource(); ms.setBasename("org/springframework/context/support/messages"); ms.setCacheSeconds(1); ms.setConcurrentRefresh(false); // Initial cache attempt assertEquals("message1", ms.getMessage("code1", null, Locale.ENGLISH)); assertEquals("nachricht2", ms.getMessage("code2", null, Locale.GERMAN)); Thread.sleep(1100); // Late enough for a re-cache attempt assertEquals("message1", ms.getMessage("code1", null, Locale.ENGLISH)); assertEquals("nachricht2", ms.getMessage("code2", null, Locale.GERMAN)); }
@Bean public ReloadableResourceBundleMessageSource messageSource(){ ReloadableResourceBundleMessageSource messageSource=new ReloadableResourceBundleMessageSource(); String[] resources= {"classpath:labels","classpath:message"}; messageSource.setBasenames(resources); return messageSource; }
@Test public void testReloadableResourceBundleMessageSourceWithCommonMessages() { ReloadableResourceBundleMessageSource ms = new ReloadableResourceBundleMessageSource(); Properties commonMessages = new Properties(); commonMessages.setProperty("warning", "Do not do {0}"); ms.setCommonMessages(commonMessages); ms.setBasename("org/springframework/context/support/messages"); assertEquals("message1", ms.getMessage("code1", null, Locale.ENGLISH)); assertEquals("nachricht2", ms.getMessage("code2", null, Locale.GERMAN)); assertEquals("Do not do this", ms.getMessage("warning", new Object[] {"this"}, Locale.ENGLISH)); assertEquals("Do not do that", ms.getMessage("warning", new Object[] {"that"}, Locale.GERMAN)); }
@Configuration public class LocalizationConfiguration { @Bean public MessageSource messageSource() { ReloadableResourceBundleMessageSource messages = new ReloadableResourceBundleMessageSource(); messages.setBasenames("classpath:beanValidation", "classpath:errors"); messages.setDefaultEncoding("UTF-8"); return messages; } }
@Bean public MessageSource messageSource() { // TODO database MessageSource ReloadableResourceBundleMessageSource bean = new ReloadableResourceBundleMessageSource(); bean.addBasenames("classpath:message", "classpath:ValidationMessages"); for (String s : MessageResources.DEFAULT_MESSAGE_RESOURCE_BASES.split("[,;\\s]+")) { bean.addBasenames(fetchBasenames(s)); } bean.setUseCodeAsDefaultMessage(false);//true bean.setDefaultEncoding("UTF-8"); bean.setCacheSeconds(60); return bean; }
@Bean public ReloadableResourceBundleMessageSource resourceReference() { ReloadableResourceBundleMessageSource bundle = new ReloadableResourceBundleMessageSource(); bundle.setBasename("/resources"); bundle.setFallbackToSystemLocale(false); return bundle; } @Bean
public MultipleMessageSource() { super.setBasename("classpath*:/i18n/*"); super.setDefaultEncoding("UTF-8"); super.setUseCodeAsDefaultMessage(true); }