package eu.codearte.resteeth.config; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.BeansException; import org.springframework.beans.factory.config.BeanFactoryPostProcessor; import org.springframework.beans.factory.config.ConfigurableListableBeanFactory; import org.springframework.beans.factory.support.DefaultListableBeanFactory; import org.springframework.core.annotation.AnnotationAttributes; import java.lang.invoke.MethodHandles; /** * @author Jakub Kubrynski */ class ResteethBeanFactoryPostProcessor implements BeanFactoryPostProcessor { private final static Logger LOG = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass()); private final AnnotationAttributes enableResteethAttributes; public ResteethBeanFactoryPostProcessor(AnnotationAttributes enableResteethAttributes) { this.enableResteethAttributes = enableResteethAttributes; } @Override public void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory) throws BeansException { LOG.info("Resteeth is being registered in Spring BeanFactory..."); DefaultListableBeanFactory defaultListableBeanFactory = (DefaultListableBeanFactory) beanFactory; ResteethAutowireCandidateResolverDelegate resteethAutowireCandidateResolverDelegate = new ResteethAutowireCandidateResolverDelegate( defaultListableBeanFactory.getAutowireCandidateResolver(), enableResteethAttributes); defaultListableBeanFactory.setAutowireCandidateResolver(resteethAutowireCandidateResolverDelegate); } }