[java-identity-provider] 03/03: IDP-1882 idp.attribute.resolver.LDAP.connectionStrategy ignored in attribute-resolver.xml
Rod Widdowson
rdw at steadingsoftware.com
Mon Dec 20 13:38:17 UTC 2021
This is an automated email from the git hooks/post-receive script.
rdw pushed a commit to branch maint-4.1
in repository java-identity-provider.
View the commit online:
http://git.shibboleth.net/view/?p=java-identity-provider.git;a=commit;h=cd8aa8d3f4245c0d18c56b9ab3cf268cb0d87fe3
commit cd8aa8d3f4245c0d18c56b9ab3cf268cb0d87fe3
Author: Rod Widdowson <rdw at steadingsoftware.com>
AuthorDate: Thu Dec 9 19:47:39 2021 +0000
IDP-1882 idp.attribute.resolver.LDAP.connectionStrategy ignored in attribute-resolver.xml
https://shibboleth.atlassian.net/browse/IDP-1882
Delegate the handling of the connection stragey to a factory method.
This gets called post property replacement.
---
.../dc/ldap/impl/LDAPDataConnectorParser.java | 61 +++++++++++++---------
1 file changed, 37 insertions(+), 24 deletions(-)
diff --git a/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/dc/ldap/impl/LDAPDataConnectorParser.java b/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/dc/ldap/impl/LDAPDataConnectorParser.java
index 6c13dc071..ecbcde848 100644
--- a/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/dc/ldap/impl/LDAPDataConnectorParser.java
+++ b/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/dc/ldap/impl/LDAPDataConnectorParser.java
@@ -28,6 +28,7 @@ import javax.xml.namespace.QName;
import org.ldaptive.ActivePassiveConnectionStrategy;
import org.ldaptive.BindConnectionInitializer;
import org.ldaptive.ConnectionConfig;
+import org.ldaptive.ConnectionStrategy;
import org.ldaptive.Credential;
import org.ldaptive.DefaultConnectionFactory;
import org.ldaptive.RandomConnectionStrategy;
@@ -244,7 +245,7 @@ public class LDAPDataConnectorParser extends AbstractDataConnectorParser {
* @param parserContext bean definition parsing context
* @return connection config bean definition
*/
- // CheckStyle: CyclomaticComplexity|MethodLength OFF
+ // CheckStyle: CyclomaticComplexity|MethodLength OFF*/
@Nonnull public BeanDefinition createConnectionConfig(@Nonnull final ParserContext parserContext) {
final String url = AttributeSupport.getAttributeValue(configElement, new QName("ldapURL"));
final String useStartTLS = AttributeSupport.getAttributeValue(configElement, new QName("useStartTLS"));
@@ -328,30 +329,11 @@ public class LDAPDataConnectorParser extends AbstractDataConnectorParser {
}
final String connectionStrategy = AttributeSupport.getAttributeValue(
configElement, new QName("connectionStrategy"));
- if (connectionStrategy == null) {
- connectionConfig.addPropertyValue("connectionStrategy", new ActivePassiveConnectionStrategy());
- } else {
- switch (connectionStrategy) {
- case "ROUND_ROBIN":
- connectionConfig.addPropertyValue("connectionStrategy", new RoundRobinConnectionStrategy());
- break;
+ final BeanDefinitionBuilder connectionStrategyBuilder =
+ BeanDefinitionBuilder.rootBeanDefinition(V2Parser.class, "buildConnectionStrategy");
+ connectionStrategyBuilder.addConstructorArgValue(connectionStrategy);
- case "RANDOM":
- connectionConfig.addPropertyValue("connectionStrategy", new RandomConnectionStrategy());
- break;
-
- case "DEFAULT":
- // V4 Deprecation
- DeprecationSupport.warn(ObjectType.CONFIGURATION, "connectionStrategy=DEFAULT", "LDAP Connector",
- "ACTIVE_PASSIVE");
- connectionConfig.addPropertyValue("connectionStrategy", new ActivePassiveConnectionStrategy());
- break;
-
- default:
- connectionConfig.addPropertyValue("connectionStrategy", new ActivePassiveConnectionStrategy());
- break;
- }
- }
+ connectionConfig.addPropertyValue("connectionStrategy", connectionStrategyBuilder.getBeanDefinition());
return connectionConfig.getBeanDefinition();
}
@@ -951,5 +933,36 @@ public class LDAPDataConnectorParser extends AbstractDataConnectorParser {
config.setMechanism(Mechanism.valueOf(mechanism));
return config;
}
+
+ /** Returns an appropriate {@link ConnectionStrategy}.
+ * @param connectionStrategy the provided string (with properties stripped)
+ * @return the appropriate {@link ConnectionStrategy}.
+ */
+ @Nonnull public static ConnectionStrategy buildConnectionStrategy(@Nonnull final String connectionStrategy) {
+
+ if (connectionStrategy == null) {
+ return new ActivePassiveConnectionStrategy();
+ }
+ switch (connectionStrategy) {
+ case "ROUND_ROBIN":
+ return new RoundRobinConnectionStrategy();
+
+ case "RANDOM":
+ return new RandomConnectionStrategy();
+
+ case "ACTIVE_PASSIVE":
+ return new ActivePassiveConnectionStrategy();
+
+ case "DEFAULT":
+ // V4 Deprecation
+ DeprecationSupport.warn(ObjectType.CONFIGURATION, "connectionStrategy=DEFAULT", "LDAP Connector",
+ "ACTIVE_PASSIVE");
+ return new ActivePassiveConnectionStrategy();
+
+ default:
+ LOG.warn("Unexpected connectionStrategy {}", connectionStrategy);
+ return new ActivePassiveConnectionStrategy();
+ }
+ }
}
}
--
To stop receiving notification emails like this one, please contact
the administrator of this repository.
More information about the commits
mailing list