diff --git a/core/src/main/java/org/acegisecurity/config/AuthenticationRepositoryDependenciesConfigurer.java b/core/src/main/java/org/acegisecurity/config/AuthenticationRepositoryDependenciesConfigurer.java new file mode 100644 index 0000000000..96ef731816 --- /dev/null +++ b/core/src/main/java/org/acegisecurity/config/AuthenticationRepositoryDependenciesConfigurer.java @@ -0,0 +1,37 @@ +/** + * + */ +package org.acegisecurity.config; + +import org.acegisecurity.providers.dao.DaoAuthenticationProvider; +import org.acegisecurity.userdetails.UserDetailsService; +import org.springframework.beans.BeansException; +import org.springframework.beans.factory.config.BeanFactoryPostProcessor; +import org.springframework.beans.factory.config.ConfigurableListableBeanFactory; +import org.springframework.beans.factory.config.RuntimeBeanReference; +import org.springframework.beans.factory.support.RootBeanDefinition; + +/** + * @author vpuri + * + */ +public class AuthenticationRepositoryDependenciesConfigurer implements BeanFactoryPostProcessor { + + public void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory) throws BeansException { + System.out.println("whyyyy??????"); + String[] userDetailServices = beanFactory.getBeanNamesForType(UserDetailsService.class); + + String[] authenticationProvider = beanFactory.getBeanNamesForType(DaoAuthenticationProvider.class); + + RootBeanDefinition definition = (RootBeanDefinition) beanFactory.getBeanDefinition(authenticationProvider[0]); + + // there should be only one principal-repository defined, pick the first + // one + if (userDetailServices.length != 0) { + definition.getPropertyValues().addPropertyValue("userDetailsService", + new RuntimeBeanReference(userDetailServices[0])); + } + + } + +} diff --git a/core/src/main/java/org/acegisecurity/config/RemeberMeServicesDependenciesConfigurer.java b/core/src/main/java/org/acegisecurity/config/RemeberMeServicesDependenciesConfigurer.java new file mode 100644 index 0000000000..24f1b68b8e --- /dev/null +++ b/core/src/main/java/org/acegisecurity/config/RemeberMeServicesDependenciesConfigurer.java @@ -0,0 +1,35 @@ +/** + * + */ +package org.acegisecurity.config; + +import org.acegisecurity.ui.rememberme.RememberMeServices; +import org.acegisecurity.userdetails.UserDetailsService; +import org.springframework.beans.BeansException; +import org.springframework.beans.factory.config.BeanFactoryPostProcessor; +import org.springframework.beans.factory.config.ConfigurableListableBeanFactory; +import org.springframework.beans.factory.config.RuntimeBeanReference; +import org.springframework.beans.factory.support.RootBeanDefinition; + +/** + * @author vpuri + * + */ +public class RemeberMeServicesDependenciesConfigurer implements BeanFactoryPostProcessor { + + public void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory) throws BeansException { + + String [] userDetailServices = beanFactory.getBeanNamesForType(UserDetailsService.class); + + String [] rememberMeService = beanFactory.getBeanNamesForType(RememberMeServices.class); + + RootBeanDefinition definition=(RootBeanDefinition) beanFactory.getBeanDefinition(rememberMeService[0]); + + // there should be only one principal-repository defined, pick the first one + if(userDetailServices.length!=0) { + definition.getPropertyValues().addPropertyValue("userDetailsService", new RuntimeBeanReference(userDetailServices[0])); + } + + } + +}