package com.feisystems.polrep.config;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.function.BiConsumer;
import org.springframework.beans.BeansException;
import org.springframework.beans.factory.config.BeanPostProcessor;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping;
@Configuration
public class BeanPostPorcessorConfig implements BeanPostProcessor {
@SuppressWarnings("rawtypes")
private final Map<Class, List<BiConsumer<Object, String>>> beanHandlers = new HashMap<Class, List<BiConsumer<Object, String>>>();
public BeanPostPorcessorConfig() {
// Register bean handlers by type
beanHandlers.put(RequestMappingHandlerMapping.class, Arrays.asList(
RequestMappingHandlerMappingBeanHandlers::setRemoveSemicolonContent,
RequestMappingHandlerMappingBeanHandlers::setUseSuffixPatternMatch));
}
@Override
public Object postProcessAfterInitialization(Object bean, String beanName)
throws BeansException {
return bean;
}
@Override
public Object postProcessBeforeInitialization(Object bean, String beanName)
throws BeansException {
if (beanHandlers.keySet().contains(bean.getClass())) {
beanHandlers.get(bean.getClass()).stream()
.forEach(handler -> handler.accept(bean, beanName));
}
return bean;
}
}