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 and Description
    `DelegatingMessageSource()`

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `String` | `getMessage(MessageSourceResolvable resolvable, Locale locale)` Try to resolve the message using all the attributes contained within the `MessageSourceResolvable` argument that was passed in.
    `String` | `getMessage(String code, Object[] args, Locale locale)` Try to resolve the message.
    `String` | `getMessage(String code, Object[] args, String defaultMessage, Locale locale)` Try to resolve the message.
    `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.

    - ### 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, toString, wait, wait, wait`

- - ### Constructor Detail

    - #### DelegatingMessageSource

          public DelegatingMessageSource()

  - ### Method Detail

    - #### setParentMessageSource

          public void setParentMessageSource(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

          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

          public String getMessage(String code,
                          Object[] args,
                          String defaultMessage,
                          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 code to lookup up, such as 'calculator.noRateSet'. Users of this class are encouraged to base message names on the relevant fully qualified class name, thus avoiding conflict and ensuring maximum clarity.
        `args` - 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` - String 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
      See Also:
        `MessageFormat`

    - #### getMessage

          public String getMessage(String code,
                          Object[] args,
                          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 code to lookup up, such as 'calculator.noRateSet'
        `args` - 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
      Throws:
        `NoSuchMessageException` - if the message wasn't found
      See Also:
        `MessageFormat`

    - #### getMessage

          public String getMessage(MessageSourceResolvable resolvable,
                          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` - value object storing attributes required to properly resolve a message
        `locale` - the Locale in which to do the lookup
      Returns:
        the resolved message
      Throws:
        `NoSuchMessageException` - if the message wasn't found
      See Also:
        `MessageFormat`