Package org.springframework.context.support

# Class DelegatingMessageSource

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

All Implemented Interfaces:
  `HierarchicalMessageSource`, `MessageSource`

public class DelegatingMessageSource extends MessageSourceSupport implements HierarchicalMessageSource
Empty `MessageSource` that delegates all calls to the parent MessageSource. If no parent is available, it simply won't resolve any message.

Used as placeholder by AbstractApplicationContext, if the context doesn't define its own MessageSource. Not intended for direct use in applications.

Since:
  1.1.5
Author:
  Juergen Hoeller
See Also:
  - `AbstractApplicationContext`

## Field Summary

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

`logger`

## Constructor Summary

Constructors
Constructor
Description
`DelegatingMessageSource()`

## Method Summary

Modifier and Type
Method
Description
`String`
`getMessage(String code, Object[] args, String defaultMessage, Locale locale)`
Try to resolve the message.
`String`
`getMessage(String code, Object[] args, Locale locale)`
Try to resolve the message.
`String`
`getMessage(MessageSourceResolvable resolvable, Locale locale)`
Try to resolve the message using all the attributes contained within the `MessageSourceResolvable` argument that was passed in.
`MessageSource`
`getParentMessageSource()`
Return the parent of this MessageSource, or `null` if none.
`void`
`setParentMessageSource(MessageSource parent)`
Set the parent that will be used to try to resolve messages that this object can't resolve.
`String`
`toString()`

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

`createMessageFormat, formatMessage, isAlwaysUseMessageFormat, renderDefaultMessage, resolveArguments, setAlwaysUseMessageFormat`

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

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

## Constructor Details

### DelegatingMessageSource

public DelegatingMessageSource()

## Method Details

### setParentMessageSource

public void setParentMessageSource(@Nullable MessageSource parent)
Description copied from interface: `HierarchicalMessageSource`
Set the parent that will be used to try to resolve messages that this object can't resolve.

Specified by:
  `setParentMessageSource` in interface `HierarchicalMessageSource`
Parameters:
  `parent` - the parent MessageSource that will be used to resolve messages that this object can't resolve. May be `null`, in which case no further resolution is possible.

### getParentMessageSource

@Nullable public MessageSource getParentMessageSource()
Description copied from interface: `HierarchicalMessageSource`
Return the parent of this MessageSource, or `null` if none.

Specified by:
  `getParentMessageSource` in interface `HierarchicalMessageSource`

### getMessage

@Nullable public String getMessage(String code, @Nullable Object[] args, @Nullable String defaultMessage, @Nullable Locale locale)
Description copied from interface: `MessageSource`
Try to resolve the message. Return default message if no message was found.

Specified by:
  `getMessage` in interface `MessageSource`
Parameters:
  `code` - the message code to look up, for example, 'calculator.noRateSet'. MessageSource users are encouraged to base message names on qualified class or package names, avoiding potential conflicts and ensuring maximum clarity.
  `args` - an array of arguments that will be filled in for params within the message (params look like "{0}", "{1,date}", "{2,time}" within a message), or `null` if none
  `defaultMessage` - a default message to return if the lookup fails
  `locale` - the locale in which to do the lookup
Returns:
  the resolved message if the lookup was successful, otherwise the default message passed as a parameter (which may be `null`)
See Also:
  - `MessageSource.getMessage(MessageSourceResolvable, Locale)`
  - `MessageFormat`

### getMessage

public String getMessage(String code, @Nullable Object[] args, @Nullable Locale locale) throws NoSuchMessageException
Description copied from interface: `MessageSource`
Try to resolve the message. Treat as an error if the message can't be found.

Specified by:
  `getMessage` in interface `MessageSource`
Parameters:
  `code` - the message code to look up, for example, 'calculator.noRateSet'. MessageSource users are encouraged to base message names on qualified class or package names, avoiding potential conflicts and ensuring maximum clarity.
  `args` - an array of arguments that will be filled in for params within the message (params look like "{0}", "{1,date}", "{2,time}" within a message), or `null` if none
  `locale` - the locale in which to do the lookup
Returns:
  the resolved message (never `null`)
Throws:
  `NoSuchMessageException` - if no corresponding message was found
See Also:
  - `MessageSource.getMessage(MessageSourceResolvable, Locale)`
  - `MessageFormat`

### getMessage

public String getMessage(MessageSourceResolvable resolvable, @Nullable Locale locale) throws NoSuchMessageException
Description copied from interface: `MessageSource`
Try to resolve the message using all the attributes contained within the `MessageSourceResolvable` argument that was passed in.

NOTE: We must throw a `NoSuchMessageException` on this method since at the time of calling this method we aren't able to determine if the `defaultMessage` property of the resolvable is `null` or not.

Specified by:
  `getMessage` in interface `MessageSource`
Parameters:
  `resolvable` - the value object storing attributes required to resolve a message (may include a default message)
  `locale` - the locale in which to do the lookup
Returns:
  the resolved message (never `null` since even a `MessageSourceResolvable`-provided default message needs to be non-null)
Throws:
  `NoSuchMessageException` - if no corresponding message was found (and no default message was provided by the `MessageSourceResolvable`)
See Also:
  - `MessageSourceResolvable.getCodes()`
  - `MessageSourceResolvable.getArguments()`
  - `MessageSourceResolvable.getDefaultMessage()`
  - `MessageFormat`

### toString

public String toString()

Overrides:
  `toString` in class `Object`