diff --git a/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/ldap/LdapAutoConfiguration.java b/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/ldap/LdapAutoConfiguration.java index 58dbedc194..a4707e6364 100644 --- a/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/ldap/LdapAutoConfiguration.java +++ b/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/ldap/LdapAutoConfiguration.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2019 the original author or authors. + * Copyright 2012-2020 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -22,6 +22,7 @@ import org.springframework.beans.factory.ObjectProvider; import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; +import org.springframework.boot.autoconfigure.ldap.LdapProperties.Template; import org.springframework.boot.context.properties.EnableConfigurationProperties; import org.springframework.boot.context.properties.PropertyMapper; import org.springframework.context.annotation.Bean; @@ -65,13 +66,13 @@ public class LdapAutoConfiguration { @Bean @ConditionalOnMissingBean(LdapOperations.class) public LdapTemplate ldapTemplate(LdapProperties properties, ContextSource contextSource) { + Template template = properties.getTemplate(); PropertyMapper propertyMapper = PropertyMapper.get().alwaysApplyingWhenNonNull(); LdapTemplate ldapTemplate = new LdapTemplate(contextSource); - propertyMapper.from(properties.isIgnorePartialResultException()) + propertyMapper.from(template.isIgnorePartialResultException()) .to(ldapTemplate::setIgnorePartialResultException); - propertyMapper.from(properties.isIgnoreNameNotFoundException()) - .to(ldapTemplate::setIgnoreNameNotFoundException); - propertyMapper.from(properties.isIgnoreSizeLimitExceededException()) + propertyMapper.from(template.isIgnoreNameNotFoundException()).to(ldapTemplate::setIgnoreNameNotFoundException); + propertyMapper.from(template.isIgnoreSizeLimitExceededException()) .to(ldapTemplate::setIgnoreSizeLimitExceededException); return ldapTemplate; } diff --git a/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/ldap/LdapProperties.java b/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/ldap/LdapProperties.java index 8ba4bed505..5b16e4403a 100644 --- a/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/ldap/LdapProperties.java +++ b/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/ldap/LdapProperties.java @@ -21,6 +21,7 @@ import java.util.Map; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.core.env.Environment; +import org.springframework.ldap.core.LdapTemplate; import org.springframework.util.Assert; import org.springframework.util.ObjectUtils; @@ -66,21 +67,7 @@ public class LdapProperties { */ private final Map baseEnvironment = new HashMap<>(); - /** - * Whether PartialResultException should be ignored in searches via the LdapTemplate. - */ - private boolean ignorePartialResultException = false; - - /** - * Whether NameNotFoundException should be ignored in searches via the LdapTemplate. - */ - private boolean ignoreNameNotFoundException = false; - - /** - * Whether SizeLimitExceededException should be ignored in searches via the - * LdapTemplate. - */ - private boolean ignoreSizeLimitExceededException = true; + private Template template = new Template(); public String[] getUrls() { return this.urls; @@ -126,28 +113,8 @@ public class LdapProperties { return this.baseEnvironment; } - public boolean isIgnorePartialResultException() { - return this.ignorePartialResultException; - } - - public void setIgnorePartialResultException(boolean ignorePartialResultException) { - this.ignorePartialResultException = ignorePartialResultException; - } - - public boolean isIgnoreNameNotFoundException() { - return this.ignoreNameNotFoundException; - } - - public void setIgnoreNameNotFoundException(boolean ignoreNameNotFoundException) { - this.ignoreNameNotFoundException = ignoreNameNotFoundException; - } - - public boolean isIgnoreSizeLimitExceededException() { - return this.ignoreSizeLimitExceededException; - } - - public void setIgnoreSizeLimitExceededException(Boolean ignoreSizeLimitExceededException) { - this.ignoreSizeLimitExceededException = ignoreSizeLimitExceededException; + public Template getTemplate() { + return this.template; } public String[] determineUrls(Environment environment) { @@ -166,4 +133,53 @@ public class LdapProperties { return DEFAULT_PORT; } + /** + * {@link LdapTemplate settings}. + */ + public static class Template { + + /** + * Whether PartialResultException should be ignored in searches via the + * LdapTemplate. + */ + private boolean ignorePartialResultException = false; + + /** + * Whether NameNotFoundException should be ignored in searches via the + * LdapTemplate. + */ + private boolean ignoreNameNotFoundException = false; + + /** + * Whether SizeLimitExceededException should be ignored in searches via the + * LdapTemplate. + */ + private boolean ignoreSizeLimitExceededException = true; + + public boolean isIgnorePartialResultException() { + return this.ignorePartialResultException; + } + + public void setIgnorePartialResultException(boolean ignorePartialResultException) { + this.ignorePartialResultException = ignorePartialResultException; + } + + public boolean isIgnoreNameNotFoundException() { + return this.ignoreNameNotFoundException; + } + + public void setIgnoreNameNotFoundException(boolean ignoreNameNotFoundException) { + this.ignoreNameNotFoundException = ignoreNameNotFoundException; + } + + public boolean isIgnoreSizeLimitExceededException() { + return this.ignoreSizeLimitExceededException; + } + + public void setIgnoreSizeLimitExceededException(Boolean ignoreSizeLimitExceededException) { + this.ignoreSizeLimitExceededException = ignoreSizeLimitExceededException; + } + + } + } diff --git a/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/ldap/LdapAutoConfigurationTests.java b/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/ldap/LdapAutoConfigurationTests.java index 6c7355db7b..db4aa5da81 100644 --- a/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/ldap/LdapAutoConfigurationTests.java +++ b/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/ldap/LdapAutoConfigurationTests.java @@ -122,10 +122,11 @@ class LdapAutoConfigurationTests { } @Test - void templateWithCustomConfigurationExists() { + void templateConfigurationCanBeCustomized() { this.contextRunner.withPropertyValues("spring.ldap.urls:ldap://localhost:389", - "spring.ldap.ignorePartialResultException=true", "spring.ldap.ignoreNameNotFoundException=true", - "spring.ldap.ignoreSizeLimitExceededException=false").run((context) -> { + "spring.ldap.template.ignorePartialResultException=true", + "spring.ldap.template.ignoreNameNotFoundException=true", + "spring.ldap.template.ignoreSizeLimitExceededException=false").run((context) -> { assertThat(context).hasSingleBean(LdapTemplate.class); LdapTemplate ldapTemplate = context.getBean(LdapTemplate.class); assertThat(ldapTemplate).hasFieldOrPropertyWithValue("ignorePartialResultException", true); diff --git a/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/ldap/LdapPropertiesTests.java b/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/ldap/LdapPropertiesTests.java index 6163b48e66..c8d4a295e5 100644 --- a/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/ldap/LdapPropertiesTests.java +++ b/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/ldap/LdapPropertiesTests.java @@ -18,6 +18,7 @@ package org.springframework.boot.autoconfigure.ldap; import org.junit.jupiter.api.Test; +import org.springframework.boot.autoconfigure.ldap.LdapProperties.Template; import org.springframework.ldap.core.LdapTemplate; import static org.assertj.core.api.Assertions.assertThat; @@ -29,18 +30,16 @@ import static org.assertj.core.api.Assertions.assertThat; */ class LdapPropertiesTests { - private final LdapProperties properties = new LdapProperties(); - @Test void ldapTemplatePropertiesUseConsistentLdapTemplateDefaultValues() { + Template templateProperties = new LdapProperties().getTemplate(); LdapTemplate ldapTemplate = new LdapTemplate(); - assertThat(ldapTemplate).hasFieldOrPropertyWithValue("ignorePartialResultException", - this.properties.isIgnorePartialResultException()); + templateProperties.isIgnorePartialResultException()); assertThat(ldapTemplate).hasFieldOrPropertyWithValue("ignoreNameNotFoundException", - this.properties.isIgnoreNameNotFoundException()); + templateProperties.isIgnoreNameNotFoundException()); assertThat(ldapTemplate).hasFieldOrPropertyWithValue("ignoreSizeLimitExceededException", - this.properties.isIgnoreSizeLimitExceededException()); + templateProperties.isIgnoreSizeLimitExceededException()); } }