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

    All Methods Instance Methods Concrete 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.
    `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 Detail

    - #### DelegatingMessageSource

          public DelegatingMessageSource()

  - ### Method Detail

    - #### 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,
                                             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, e.g. '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,
                                   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, e.g. '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,
                                   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`