Skip to content

Commit 2731671

Browse files
Use ValueHolder
Signed-off-by: Tran Ngoc Nhan <ngocnhan.tran1996@gmail.com>
1 parent d984adb commit 2731671

File tree

2 files changed

+8
-2
lines changed

2 files changed

+8
-2
lines changed

config/src/main/java/org/springframework/security/config/authentication/AbstractUserDetailsServiceBeanDefinitionParser.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616

1717
package org.springframework.security.config.authentication;
1818

19+
import org.springframework.beans.factory.config.ConstructorArgumentValues.ValueHolder;
1920
import org.w3c.dom.Element;
2021

2122
import org.springframework.beans.factory.BeanDefinitionStoreException;
@@ -73,8 +74,10 @@ private String resolveId(Element element, AbstractBeanDefinition definition, Par
7374
if (!StringUtils.hasText(id)) {
7475
id = pc.getReaderContext().generateBeanName(definition);
7576
}
77+
ValueHolder userDetailsServiceValueHolder = new ValueHolder(new RuntimeBeanReference(id));
78+
userDetailsServiceValueHolder.setName("userDetailsService");
7679
BeanDefinition container = pc.getContainingBeanDefinition();
77-
container.getConstructorArgumentValues().addIndexedArgumentValue(0, new RuntimeBeanReference(id));
80+
container.getConstructorArgumentValues().addGenericArgumentValue(userDetailsServiceValueHolder);
7881
}
7982
if (StringUtils.hasText(id)) {
8083
return id;

config/src/main/java/org/springframework/security/config/authentication/AuthenticationProviderBeanDefinitionParser.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616

1717
package org.springframework.security.config.authentication;
1818

19+
import org.springframework.beans.factory.config.ConstructorArgumentValues.ValueHolder;
1920
import org.w3c.dom.Element;
2021

2122
import org.springframework.beans.BeanMetadataElement;
@@ -64,7 +65,9 @@ public BeanDefinition parse(Element element, ParserContext pc) {
6465
+ "elements '" + Elements.USER_SERVICE + "', '" + Elements.JDBC_USER_SERVICE + "' or '"
6566
+ Elements.LDAP_USER_SERVICE + "'", element);
6667
}
67-
authProvider.getConstructorArgumentValues().addIndexedArgumentValue(0, new RuntimeBeanReference(ref));
68+
ValueHolder userDetailsServiceValueHolder = new ValueHolder(new RuntimeBeanReference(ref));
69+
userDetailsServiceValueHolder.setName("userDetailsService");
70+
authProvider.getConstructorArgumentValues().addGenericArgumentValue(userDetailsServiceValueHolder);
6871
}
6972
else {
7073
// Use the child elements to create the UserDetailsService

0 commit comments

Comments
 (0)