Package org.springframework.context.support

# Class MessageSourceSupport

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

Direct Known Subclasses:
  `AbstractMessageSource`, `DelegatingMessageSource`

public abstract class MessageSourceSupport extends Object
Base class for message source implementations, providing support infrastructure such as `MessageFormat` handling but not implementing concrete methods defined in the `MessageSource`.

`AbstractMessageSource` derives from this class, providing concrete `getMessage` implementations that delegate to a central template method for message code resolution.

Since:
  2.5.5
Author:
  Juergen Hoeller

## Field Summary

Fields
Modifier and Type
Field
Description
`protected final org.apache.commons.logging.Log`
`logger`
Logger available to subclasses.

## Constructor Summary

Constructors
Constructor
Description
`MessageSourceSupport()`

## Method Summary

Modifier and Type
Method
Description
`protected MessageFormat`
`createMessageFormat(String msg, Locale locale)`
Create a `MessageFormat` for the given message and Locale.
`protected String`
`formatMessage(String msg, Object[] args, Locale locale)`
Format the given message String, using cached MessageFormats.
`protected boolean`
`isAlwaysUseMessageFormat()`
Return whether to always apply the `MessageFormat` rules, parsing even messages without arguments.
`protected String`
`renderDefaultMessage(String defaultMessage, Object[] args, Locale locale)`
Render the given default message String.
`protected Object[]`
`resolveArguments(Object[] args, Locale locale)`
Template method for resolving argument objects.
`void`
`setAlwaysUseMessageFormat(boolean alwaysUseMessageFormat)`
Set whether to always apply the `MessageFormat` rules, parsing even messages without arguments.

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

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

## Field Details

### logger

protected final org.apache.commons.logging.Log logger
Logger available to subclasses.

## Constructor Details

### MessageSourceSupport

public MessageSourceSupport()

## Method Details

### setAlwaysUseMessageFormat

public void setAlwaysUseMessageFormat(boolean alwaysUseMessageFormat)
Set whether to always apply the `MessageFormat` rules, parsing even messages without arguments.

Default is `false`: Messages without arguments are by default returned as-is, without parsing them through `MessageFormat`. Set this to `true` to enforce `MessageFormat` for all messages, expecting all message texts to be written with `MessageFormat` escaping.

For example, `MessageFormat` expects a single quote to be escaped as two adjacent single quotes (`"''"`). If your message texts are all written with such escaping, even when not defining argument placeholders, you need to set this flag to `true`. Otherwise, only message texts with actual arguments are supposed to be written with `MessageFormat` escaping.

See Also:
  - `MessageFormat`

### isAlwaysUseMessageFormat

protected boolean isAlwaysUseMessageFormat()
Return whether to always apply the `MessageFormat` rules, parsing even messages without arguments.

### renderDefaultMessage

protected String renderDefaultMessage(String defaultMessage, @Nullable Object[] args, Locale locale)
Render the given default message String. The default message is passed in as specified by the caller and can be rendered into a fully formatted default message shown to the user.

The default implementation passes the String to `formatMessage`, resolving any argument placeholders found in them. Subclasses may override this method to plug in custom processing of default messages.

Parameters:
  `defaultMessage` - the passed-in default message String
  `args` - array of arguments that will be filled in for params within the message, or `null` if none.
  `locale` - the Locale used for formatting
Returns:
  the rendered default message (with resolved arguments)
See Also:
  - `formatMessage(String, Object[], java.util.Locale)`

### formatMessage

protected String formatMessage(String msg, @Nullable Object[] args, Locale locale)
Format the given message String, using cached MessageFormats. By default invoked for passed-in default messages, to resolve any argument placeholders found in them.

Parameters:
  `msg` - the message to format
  `args` - array of arguments that will be filled in for params within the message, or `null` if none
  `locale` - the Locale used for formatting
Returns:
  the formatted message (with resolved arguments)

### createMessageFormat

protected MessageFormat createMessageFormat(String msg, Locale locale)
Create a `MessageFormat` for the given message and Locale.

Parameters:
  `msg` - the message to create a `MessageFormat` for
  `locale` - the Locale to create a `MessageFormat` for
Returns:
  the `MessageFormat` instance

### resolveArguments

protected Object[] resolveArguments(@Nullable Object[] args, Locale locale)
Template method for resolving argument objects.

The default implementation simply returns the given argument array as-is. Can be overridden in subclasses in order to resolve special argument types.

Parameters:
  `args` - the original argument array
  `locale` - the Locale to resolve against
Returns:
  the resolved argument array