Package org.springframework.context.support

# Class StaticMessageSource

java.lang.Object
org.springframework.context.support.MessageSourceSupport
org.springframework.context.support.AbstractMessageSource
org.springframework.context.support.StaticMessageSource

All Implemented Interfaces:
  `HierarchicalMessageSource`, `MessageSource`

public class StaticMessageSource extends AbstractMessageSource
Simple implementation of `MessageSource` which allows messages to be registered programmatically. This MessageSource supports basic internationalization.

Intended for testing rather than for use in production systems.

Author:
  Rod Johnson, Juergen Hoeller

## Field Summary

### Fields inherited from class org.springframework.context.support.MessageSourceSupport

`logger`

## Constructor Summary

Constructors
Constructor
Description
`StaticMessageSource()`

## Method Summary

Modifier and Type
Method
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()`

### Methods inherited from class org.springframework.context.support.AbstractMessageSource

`getCommonMessages, getDefaultMessage, getDefaultMessage, getMessage, getMessage, getMessage, getMessageFromParent, getMessageInternal, getParentMessageSource, isUseCodeAsDefaultMessage, resolveArguments, setCommonMessages, setParentMessageSource, setUseCodeAsDefaultMessage`

### Methods inherited from class org.springframework.context.support.MessageSourceSupport

`createMessageFormat, formatMessage, isAlwaysUseMessageFormat, renderDefaultMessage, setAlwaysUseMessageFormat`

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

## Constructor Details

### StaticMessageSource

public StaticMessageSource()

## Method Details

### resolveCodeWithoutArguments

@Nullable protected String resolveCodeWithoutArguments(String code, Locale locale)
Description copied from class: `AbstractMessageSource`
Subclasses can override this method to resolve a message without arguments in an optimized fashion, i.e. to resolve without involving a MessageFormat.

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.

Overrides:
  `resolveCodeWithoutArguments` in class `AbstractMessageSource`
Parameters:
  `code` - the code of the message to resolve
  `locale` - the locale to resolve the code for (subclasses are encouraged to support internationalization)
Returns:
  the message String, or `null` if not found
See Also:
  - `AbstractMessageSource.resolveCode(java.lang.String, java.util.Locale)`
  - `MessageFormat`

### resolveCode

@Nullable protected MessageFormat resolveCode(String code, Locale locale)
Description copied from class: `AbstractMessageSource`
Subclasses must implement this method to resolve a message.

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.

Specified by:
  `resolveCode` in class `AbstractMessageSource`
Parameters:
  `code` - the code of the message to resolve
  `locale` - the locale to resolve the code for (subclasses are encouraged to support internationalization)
Returns:
  the MessageFormat for the message, or `null` if not found
See Also:
  - `AbstractMessageSource.resolveCodeWithoutArguments(String, java.util.Locale)`

### addMessage

public void addMessage(String code, Locale locale, String msg)
Associate the given message with the given code.

Parameters:
  `code` - the lookup code
  `locale` - the locale that the message should be found within
  `msg` - the message associated with this lookup code

### addMessages

public void addMessages(Map<String,String> messages, Locale locale)
Associate the given message values with the given keys as codes.

Parameters:
  `messages` - the messages to register, with messages codes as keys and message texts as values
  `locale` - the locale that the messages should be found within

### toString

public String toString()

Overrides:
  `toString` in class `Object`