public class

ResourceBundleThemeSource

extends Object
implements HierarchicalThemeSource
java.lang.Object
   ↳ org.springframework.ui.context.support.ResourceBundleThemeSource

Class Overview

ThemeSource implementation that looks up an individual java.util.ResourceBundle per theme. The theme name gets interpreted as ResourceBundle basename, supporting a common basename prefix for all themes.

See Also

Summary

Fields
protected final Log logger
Public Constructors
ResourceBundleThemeSource()
Public Methods
ThemeSource getParentThemeSource()
Return the parent of this ThemeSource, or null if none.
Theme getTheme(String themeName)
This implementation returns a SimpleTheme instance, holding a ResourceBundle-based MessageSource whose basename corresponds to the given theme name (prefixed by the configured "basenamePrefix").
void setBasenamePrefix(String basenamePrefix)
Set the prefix that gets applied to the ResourceBundle basenames, i.e.
void setParentThemeSource(ThemeSource parent)
Set the parent that will be used to try to resolve theme messages that this object can't resolve.
Protected Methods
MessageSource createMessageSource(String basename)
Create a MessageSource for the given basename, to be used as MessageSource for the corresponding theme.
void initParent(Theme theme)
Initialize the MessageSource of the given theme with the one from the corresponding parent of this ThemeSource.
[Expand]
Inherited Methods
From class java.lang.Object
From interface org.springframework.ui.context.HierarchicalThemeSource
From interface org.springframework.ui.context.ThemeSource

Fields

protected final Log logger

Public Constructors

public ResourceBundleThemeSource ()

Public Methods

public ThemeSource getParentThemeSource ()

Return the parent of this ThemeSource, or null if none.

public Theme getTheme (String themeName)

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.

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.

public void setBasenamePrefix (String basenamePrefix)

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.

public void setParentThemeSource (ThemeSource parent)

Set the parent that will be used to try to resolve theme messages that this object can't resolve.

Parameters
parent the parent ThemeSource that will be used to resolve messages that this object can't resolve. May be null, in which case no further resolution is possible.

Protected Methods

protected MessageSource createMessageSource (String basename)

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

protected void initParent (Theme theme)

Initialize the MessageSource of the given theme with the one from the corresponding parent of this ThemeSource.

Parameters
theme the Theme to (re-)initialize