Class ResourceBundleThemeSource
- All Implemented Interfaces:
Aware
,BeanClassLoaderAware
,HierarchicalThemeSource
,ThemeSource
ThemeSource
implementation that looks up an individual
ResourceBundle
per theme. The theme name gets
interpreted as ResourceBundle basename, supporting a common
basename prefix for all themes.- Author:
- Jean-Pierre Pawlak, Juergen Hoeller
- See Also:
-
Field Summary
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionprotected MessageSource
createMessageSource
(String basename) Create a MessageSource for the given basename, to be used as MessageSource for the corresponding theme.Return the parent of this ThemeSource, ornull
if none.This implementation returns a SimpleTheme instance, holding a ResourceBundle-based MessageSource whose basename corresponds to the given theme name (prefixed by the configured "basenamePrefix").protected void
initParent
(Theme theme) Initialize the MessageSource of the given theme with the one from the corresponding parent of this ThemeSource.void
setBasenamePrefix
(String basenamePrefix) Set the prefix that gets applied to the ResourceBundle basenames, i.e.void
setBeanClassLoader
(ClassLoader beanClassLoader) Callback that supplies the beanclass loader
to a bean instance.void
setDefaultEncoding
(String defaultEncoding) Set the default charset to use for parsing resource bundle files.void
setFallbackToSystemLocale
(boolean fallbackToSystemLocale) Set whether to fall back to the system Locale if no files for a specific Locale have been found.void
setParentThemeSource
(ThemeSource parent) Set the parent that will be used to try to resolve theme messages that this object can't resolve.
-
Field Details
-
logger
-
-
Constructor Details
-
ResourceBundleThemeSource
public ResourceBundleThemeSource()
-
-
Method Details
-
setParentThemeSource
Description copied from interface:HierarchicalThemeSource
Set the parent that will be used to try to resolve theme messages that this object can't resolve.- Specified by:
setParentThemeSource
in interfaceHierarchicalThemeSource
- Parameters:
parent
- the parent ThemeSource that will be used to resolve messages that this object can't resolve. May benull
, in which case no further resolution is possible.
-
getParentThemeSource
Description copied from interface:HierarchicalThemeSource
Return the parent of this ThemeSource, ornull
if none.- Specified by:
getParentThemeSource
in interfaceHierarchicalThemeSource
-
setBasenamePrefix
Set the prefix that gets applied to the ResourceBundle basenames, i.e. the theme names. E.g.: basenamePrefix="test.", themeName="theme" → basename="test.theme".Note that ResourceBundle names are effectively classpath locations: As a consequence, the JDK's standard ResourceBundle treats dots as package separators. This means that "test.theme" is effectively equivalent to "test/theme", just like it is for programmatic
java.util.ResourceBundle
usage.- See Also:
-
setDefaultEncoding
Set the default charset to use for parsing resource bundle files.ResourceBundleMessageSource
's default is thejava.util.ResourceBundle
default encoding: ISO-8859-1.- Since:
- 4.2
- See Also:
-
setFallbackToSystemLocale
public void setFallbackToSystemLocale(boolean fallbackToSystemLocale) Set whether to fall back to the system Locale if no files for a specific Locale have been found.ResourceBundleMessageSource
's default is "true".- Since:
- 4.2
- See Also:
-
setBeanClassLoader
Description copied from interface:BeanClassLoaderAware
Callback that supplies the beanclass loader
to a bean instance.Invoked after the population of normal bean properties but before an initialization callback such as
InitializingBean's
InitializingBean.afterPropertiesSet()
method or a custom init-method.- Specified by:
setBeanClassLoader
in interfaceBeanClassLoaderAware
- Parameters:
beanClassLoader
- the owning class loader
-
getTheme
This implementation returns a SimpleTheme instance, holding a ResourceBundle-based MessageSource whose basename corresponds to the given theme name (prefixed by the configured "basenamePrefix").SimpleTheme instances are cached per theme name. Use a reloadable MessageSource if themes should reflect changes to the underlying files.
- Specified by:
getTheme
in interfaceThemeSource
- Parameters:
themeName
- the name of the theme- Returns:
- the corresponding Theme, or
null
if none defined. Note that, by convention, a ThemeSource should at least be able to return a default Theme for the default theme name "theme" but may also return default Themes for other theme names. - See Also:
-
createMessageSource
Create a MessageSource for the given basename, to be used as MessageSource for the corresponding theme.Default implementation creates a ResourceBundleMessageSource. for the given basename. A subclass could create a specifically configured ReloadableResourceBundleMessageSource, for example.
- Parameters:
basename
- the basename to create a MessageSource for- Returns:
- the MessageSource
- See Also:
-
initParent
Initialize the MessageSource of the given theme with the one from the corresponding parent of this ThemeSource.- Parameters:
theme
- the Theme to (re-)initialize
-