@Test public void testReloadableResourceBundleMessageSourceWithInappropriateEnglishCharset() { 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", "unicode"); ms.setFileEncodings(fileCharsets); try { ms.getMessage("code1", null, Locale.ENGLISH); fail("Should have thrown NoSuchMessageException"); } catch (NoSuchMessageException ex) { // expected } }
@Test public void testReloadableResourceBundleMessageSourceFileNameCalculation() { ReloadableResourceBundleMessageSource ms = new ReloadableResourceBundleMessageSource(); List<String> filenames = ms.calculateFilenamesForLocale("messages", Locale.ENGLISH); assertEquals(1, filenames.size()); assertEquals("messages_en", filenames.get(0)); filenames = ms.calculateFilenamesForLocale("messages", Locale.UK); assertEquals(2, filenames.size()); assertEquals("messages_en", filenames.get(1)); assertEquals("messages_en_GB", filenames.get(0)); filenames = ms.calculateFilenamesForLocale("messages", new Locale("en", "GB", "POSIX")); assertEquals(3, filenames.size()); assertEquals("messages_en", filenames.get(2)); assertEquals("messages_en_GB", filenames.get(1)); assertEquals("messages_en_GB_POSIX", filenames.get(0)); filenames = ms.calculateFilenamesForLocale("messages", new Locale("en", "", "POSIX")); assertEquals(2, filenames.size()); assertEquals("messages_en", filenames.get(1)); assertEquals("messages_en__POSIX", filenames.get(0)); filenames = ms.calculateFilenamesForLocale("messages", new Locale("", "UK", "POSIX")); assertEquals(2, filenames.size()); assertEquals("messages__UK", filenames.get(1)); assertEquals("messages__UK_POSIX", filenames.get(0)); filenames = ms.calculateFilenamesForLocale("messages", new Locale("", "", "POSIX")); assertEquals(0, filenames.size()); }
@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 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 } }
@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)); }
@Test public void testReloadableResourceBundleMessageSourceWithWhitespaceInBasename() { 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)); }
@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)); }
@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 testReloadableResourceBundleMessageSourceWithCacheSeconds() throws InterruptedException { ReloadableResourceBundleMessageSource ms = new ReloadableResourceBundleMessageSource(); ms.setBasename("org/springframework/context/support/messages"); ms.setCacheSeconds(1); // 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)); }
@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)); }
/** * 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); } }
/** * 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; }
/** * 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 public MessageSource messageSource() { ReloadableResourceBundleMessageSource messageSource = new ReloadableResourceBundleMessageSource(); messageSource.setBasenames("classpath:/messages/business/message", "classpath:/messages/validation/message", "classpath:/messages/view/message"); return messageSource; }
@Configuration @EnableWebMvc public class MvcConfig extends WebMvcConfigurerAdapter { [...] @Bean public MessageSource messageSource() { ReloadableResourceBundleMessageSource messageSource = new ReloadableResourceBundleMessageSource(); messageSource.setBasename("/WEB-INF/messages/messages"); return messageSource; }
@Bean public MessageSource messageSource() { ReloadableResourceBundleMessageSource messageSource = new ReloadableResourceBundleMessageSource(); messageSource.setBasename("/WEB-INF/messages/messages"); return messageSource; }
@Bean public MessageSource messageSource(){ ReloadableResourceBundleMessageSource messageSource = new ReloadableResourceBundleMessageSource(); messageSource.setBasename("classpath:i18n/messages"); messageSource.setDefaultEncoding("UTF-8"); messageSource.setUseCodeAsDefaultMessage(true); return messageSource; } }
@Bean public MessageSource messageSource(){ ReloadableResourceBundleMessageSource messageSource = new ReloadableResourceBundleMessageSource(); messageSource.setBasename("classpath:i18n/messages"); messageSource.setDefaultEncoding("UTF-8"); messageSource.setUseCodeAsDefaultMessage(true); return messageSource; } }
@Bean public MessageSource messageSource() { ReloadableResourceBundleMessageSource messageSource = new ReloadableResourceBundleMessageSource(); messageSource.setBasename("classpath:error_message"); messageSource.setCacheSeconds(3600); //reload messages every hour messageSource.setDefaultEncoding("UTF-8"); return messageSource; } }
@Bean public MessageSource messageSource() { ReloadableResourceBundleMessageSource messageSource = new ReloadableResourceBundleMessageSource(); messageSource.setBasename("classpath:error_message"); messageSource.setCacheSeconds(3600); //reload messages every hour messageSource.setDefaultEncoding("UTF-8"); return messageSource; }