Example usage for org.springframework.context HierarchicalMessageSource setParentMessageSource

List of usage examples for org.springframework.context HierarchicalMessageSource setParentMessageSource

Introduction

In this page you can find the example usage for org.springframework.context HierarchicalMessageSource setParentMessageSource.

Prototype

void setParentMessageSource(@Nullable MessageSource parent);

Source Link

Document

Set the parent that will be used to try to resolve messages that this object can't resolve.

Usage

From source file:cz.jirutka.spring.exhandler.RestHandlerExceptionResolverBuilder.java

public RestHandlerExceptionResolver build() {

    if (withDefaultMessageSource) {
        if (messageSource != null) {
            // set default message source as top parent
            HierarchicalMessageSource messages = resolveRootMessageSource(messageSource);
            if (messages != null) {
                messages.setParentMessageSource(createDefaultMessageSource());
            }//from   ww  w.  j a  v  a 2  s. co  m
        } else {
            messageSource = createDefaultMessageSource();
        }
    }

    if (withDefaultHandlers) {
        // add default handlers
        putAllIfAbsent(exceptionHandlers, getDefaultHandlers());
    }

    // initialize handlers
    for (RestExceptionHandler handler : exceptionHandlers.values()) {
        if (messageSource != null && handler instanceof MessageSourceAware) {
            ((MessageSourceAware) handler).setMessageSource(messageSource);
        }
        if (messageInterpolator != null && handler instanceof MessageInterpolatorAware) {
            ((MessageInterpolatorAware) handler).setMessageInterpolator(messageInterpolator);
        }
    }

    RestHandlerExceptionResolver resolver = new RestHandlerExceptionResolver();
    resolver.setExceptionHandlers((Map) exceptionHandlers);

    if (httpMessageConverters != null) {
        resolver.setMessageConverters(httpMessageConverters);
    }
    if (contentNegotiationManager != null) {
        resolver.setContentNegotiationManager(contentNegotiationManager);
    }
    if (defaultContentType != null) {
        resolver.setDefaultContentType(defaultContentType);
    }
    resolver.afterPropertiesSet();

    return resolver;
}

From source file:net.solarnetwork.node.backup.DefaultBackupManager.java

@Override
public MessageSource getMessageSource() {
    HierarchicalMessageSource source = getMessageSourceInstance();
    HierarchicalMessageSource child = source;
    for (BackupService backupService : backupServices) {
        PrefixedMessageSource ps = new PrefixedMessageSource();
        ps.setDelegate(backupService.getSettingSpecifierProvider().getMessageSource());
        ps.setPrefix(backupService.getKey() + ".");
        child.setParentMessageSource(ps);
        child = ps;/*from  w  w  w  .  java 2s. c  o  m*/
    }

    return source;
}

From source file:org.springframework.context.support.AbstractApplicationContext.java

/**
 * Initialize the MessageSource./*from   ww w  .ja v  a2  s. c o m*/
 * Use parent's if none defined in this context.
 */
protected void initMessageSource() {
    ConfigurableListableBeanFactory beanFactory = getBeanFactory();
    if (beanFactory.containsLocalBean(MESSAGE_SOURCE_BEAN_NAME)) {
        this.messageSource = beanFactory.getBean(MESSAGE_SOURCE_BEAN_NAME, MessageSource.class);
        // Make MessageSource aware of parent MessageSource.
        if (this.parent != null && this.messageSource instanceof HierarchicalMessageSource) {
            HierarchicalMessageSource hms = (HierarchicalMessageSource) this.messageSource;
            if (hms.getParentMessageSource() == null) {
                // Only set parent context as parent MessageSource if no parent MessageSource
                // registered already.
                hms.setParentMessageSource(getInternalParentMessageSource());
            }
        }
        if (logger.isDebugEnabled()) {
            logger.debug("Using MessageSource [" + this.messageSource + "]");
        }
    } else {
        // Use empty MessageSource to be able to accept getMessage calls.
        DelegatingMessageSource dms = new DelegatingMessageSource();
        dms.setParentMessageSource(getInternalParentMessageSource());
        this.messageSource = dms;
        beanFactory.registerSingleton(MESSAGE_SOURCE_BEAN_NAME, this.messageSource);
        if (logger.isDebugEnabled()) {
            logger.debug("Unable to locate MessageSource with name '" + MESSAGE_SOURCE_BEAN_NAME
                    + "': using default [" + this.messageSource + "]");
        }
    }
}

From source file:org.springframework.ui.context.support.ResourceBundleThemeSource.java

/**
 * Initialize the MessageSource of the given theme with the
 * one from the corresponding parent of this ThemeSource.
 * @param theme the Theme to (re-)initialize
 *///from w w  w  .  j a  v  a2s .c om
protected void initParent(Theme theme) {
    if (theme.getMessageSource() instanceof HierarchicalMessageSource) {
        HierarchicalMessageSource messageSource = (HierarchicalMessageSource) theme.getMessageSource();
        if (getParentThemeSource() != null && messageSource.getParentMessageSource() == null) {
            Theme parentTheme = getParentThemeSource().getTheme(theme.getName());
            if (parentTheme != null) {
                messageSource.setParentMessageSource(parentTheme.getMessageSource());
            }
        }
    }
}