
com.github.anonymousmister.bootfastconfig.config.MessageSourceConfiguration Maven / Gradle / Ivy
package com.github.anonymousmister.bootfastconfig.config;
import com.github.anonymousmister.bootfastconfig.expand.MessageSource;
import lombok.extern.log4j.Log4j2;
import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
import org.springframework.context.ResourceLoaderAware;
import org.springframework.context.annotation.Bean;
import org.springframework.context.support.AbstractMessageSource;
import org.springframework.core.io.DefaultResourceLoader;
import org.springframework.core.io.ResourceLoader;
import java.text.MessageFormat;
import java.util.Locale;
import java.util.Map;
/**
* @author mister
*/
@Log4j2
public class MessageSourceConfiguration {
@Bean
@ConditionalOnBean(value = MessageSource.class)
public org.springframework.context.MessageSource messageSource(MessageSource properties) {
return new MyMessageSourceService(properties);
}
public class MyMessageSourceService extends AbstractMessageSource implements ResourceLoaderAware {
private MessageSource messageSource;
private ResourceLoader resourceLoader;
public MyMessageSourceService(MessageSource messageSource) {
this.messageSource = messageSource;
}
public String getSourceFromCache(String code, Locale locale) {
Map props = messageSource.getMessageByLocale(code, locale);
if (null != props && props.containsKey(code)) {
return props.get(code);
} else {
try {
if (null != this.getParentMessageSource()) {
return this.getParentMessageSource().getMessage(code, null, locale);
}
} catch (Exception ex) {
logger.error(ex.getMessage(), ex);
}
return code;
}
}
@Override
public void setResourceLoader(ResourceLoader resourceLoader) {
this.resourceLoader = (resourceLoader == null ? new DefaultResourceLoader() : resourceLoader);
}
@Override
protected String resolveCodeWithoutArguments(String code, Locale locale) {
return getSourceFromCache(code, locale);
}
@Override
protected MessageFormat resolveCode(String code, Locale locale) {
String msg = getSourceFromCache(code, locale);
MessageFormat messageFormat = new MessageFormat(msg, locale);
return messageFormat;
}
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy