public class StaticMessageSource extends AbstractMessageSource
MessageSource
which allows messages to be registered programmatically.
This MessageSource supports basic internationalization.
Intended for testing rather than for use in production systems.
logger
Constructor and Description |
---|
StaticMessageSource() |
Modifier and Type | Method and Description |
---|---|
void |
addMessage(String code,
Locale locale,
String msg)
Associate the given message with the given code.
|
void |
addMessages(Map<String,String> messages,
Locale locale)
Associate the given message values with the given keys as codes.
|
protected MessageFormat |
resolveCode(String code,
Locale locale)
Subclasses must implement this method to resolve a message.
|
protected String |
resolveCodeWithoutArguments(String code,
Locale locale)
Subclasses can override this method to resolve a message without arguments
in an optimized fashion, i.e.
|
String |
toString() |
getCommonMessages, getDefaultMessage, getDefaultMessage, getMessage, getMessage, getMessage, getMessageFromParent, getMessageInternal, getParentMessageSource, isUseCodeAsDefaultMessage, resolveArguments, setCommonMessages, setParentMessageSource, setUseCodeAsDefaultMessage
createMessageFormat, formatMessage, isAlwaysUseMessageFormat, renderDefaultMessage, setAlwaysUseMessageFormat
@Nullable protected String resolveCodeWithoutArguments(String code, Locale locale)
AbstractMessageSource
The default implementation does use MessageFormat, through
delegating to the AbstractMessageSource.resolveCode(java.lang.String, java.util.Locale)
method. Subclasses are encouraged
to replace this with optimized resolution.
Unfortunately, java.text.MessageFormat
is not implemented
in an efficient fashion. In particular, it does not detect that a message
pattern doesn't contain argument placeholders in the first place. Therefore,
it is advisable to circumvent MessageFormat for messages without arguments.
resolveCodeWithoutArguments
in class AbstractMessageSource
code
- the code of the message to resolvelocale
- the locale to resolve the code for
(subclasses are encouraged to support internationalization)null
if not foundAbstractMessageSource.resolveCode(java.lang.String, java.util.Locale)
,
MessageFormat
@Nullable protected MessageFormat resolveCode(String code, Locale locale)
AbstractMessageSource
Returns a MessageFormat instance rather than a message String, to allow for appropriate caching of MessageFormats in subclasses.
Subclasses are encouraged to provide optimized resolution
for messages without arguments, not involving MessageFormat.
See the AbstractMessageSource.resolveCodeWithoutArguments(java.lang.String, java.util.Locale)
javadoc for details.
resolveCode
in class AbstractMessageSource
code
- the code of the message to resolvelocale
- the locale to resolve the code for
(subclasses are encouraged to support internationalization)null
if not foundAbstractMessageSource.resolveCodeWithoutArguments(String, java.util.Locale)
public void addMessage(String code, Locale locale, String msg)
code
- the lookup codelocale
- the locale that the message should be found withinmsg
- the message associated with this lookup codepublic void addMessages(Map<String,String> messages, Locale locale)
messages
- the messages to register, with messages codes
as keys and message texts as valueslocale
- the locale that the messages should be found within