package net.techreadiness.text;
import java.util.Collection;
import java.util.Map;
import javax.inject.Named;
import org.springframework.beans.BeansException;
import org.springframework.beans.factory.config.BeanDefinition;
import org.springframework.beans.factory.config.BeanFactoryPostProcessor;
import org.springframework.beans.factory.config.ConfigurableListableBeanFactory;
import org.springframework.beans.factory.config.TypedStringValue;
import org.springframework.beans.factory.support.ManagedList;
@Named
public class MessageSourceBeanFactoryPostProcessor implements BeanFactoryPostProcessor {
@Override
public void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory) throws BeansException {
Map<String, ResourceBundleNameProvider> beans = beanFactory.getBeansOfType(ResourceBundleNameProvider.class);
if (beans != null) {
BeanDefinition messageSourceDef = beanFactory.getBeanDefinition("messageSource");
ManagedList<TypedStringValue> bundleNames = new ManagedList<>();
bundleNames.setMergeEnabled(true);
Collection<ResourceBundleNameProvider> nameProviders = beans.values();
for (ResourceBundleNameProvider resourceBundleNameProvider : nameProviders) {
for (String bundleName : resourceBundleNameProvider.getBundleNames()) {
bundleNames.add(new TypedStringValue(bundleName));
}
}
messageSourceDef.getPropertyValues().add("basenames", bundleNames);
}
}
}