diff --git a/module/spring-boot-cassandra/src/main/java/org/springframework/boot/cassandra/autoconfigure/CassandraProperties.java b/module/spring-boot-cassandra/src/main/java/org/springframework/boot/cassandra/autoconfigure/CassandraProperties.java index 9b9835ed029..f5a1bda567d 100644 --- a/module/spring-boot-cassandra/src/main/java/org/springframework/boot/cassandra/autoconfigure/CassandraProperties.java +++ b/module/spring-boot-cassandra/src/main/java/org/springframework/boot/cassandra/autoconfigure/CassandraProperties.java @@ -24,6 +24,7 @@ import org.jspecify.annotations.Nullable; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.core.io.Resource; +import org.springframework.util.StringUtils; /** * Configuration properties for Cassandra. @@ -237,7 +238,7 @@ public class CassandraProperties { private @Nullable String bundle; public boolean isEnabled() { - return (this.enabled != null) ? this.enabled : this.bundle != null; + return (this.enabled != null) ? this.enabled : StringUtils.hasText(this.bundle); } public void setEnabled(boolean enabled) { diff --git a/module/spring-boot-cassandra/src/test/java/org/springframework/boot/cassandra/autoconfigure/CassandraPropertiesTests.java b/module/spring-boot-cassandra/src/test/java/org/springframework/boot/cassandra/autoconfigure/CassandraPropertiesTests.java index aed4b5dea9e..3368bac037c 100644 --- a/module/spring-boot-cassandra/src/test/java/org/springframework/boot/cassandra/autoconfigure/CassandraPropertiesTests.java +++ b/module/spring-boot-cassandra/src/test/java/org/springframework/boot/cassandra/autoconfigure/CassandraPropertiesTests.java @@ -58,4 +58,11 @@ class CassandraPropertiesTests { assertThat(driverDefaults.get(TypedDriverOption.HEARTBEAT_TIMEOUT)).isEqualTo(Duration.ofSeconds(5)); } + @Test + void sslIsNotEnabledWhenBundleIsEmpty() { + CassandraProperties properties = new CassandraProperties(); + properties.getSsl().setBundle(""); + assertThat(properties.getSsl().isEnabled()).isFalse(); + } + } diff --git a/module/spring-boot-data-redis/src/main/java/org/springframework/boot/data/redis/autoconfigure/DataRedisProperties.java b/module/spring-boot-data-redis/src/main/java/org/springframework/boot/data/redis/autoconfigure/DataRedisProperties.java index b830197093b..3f09ba9865e 100644 --- a/module/spring-boot-data-redis/src/main/java/org/springframework/boot/data/redis/autoconfigure/DataRedisProperties.java +++ b/module/spring-boot-data-redis/src/main/java/org/springframework/boot/data/redis/autoconfigure/DataRedisProperties.java @@ -22,6 +22,7 @@ import java.util.List; import org.jspecify.annotations.Nullable; import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.util.StringUtils; /** * Configuration properties for Redis. @@ -463,7 +464,7 @@ public class DataRedisProperties { private @Nullable String bundle; public boolean isEnabled() { - return (this.enabled != null) ? this.enabled : this.bundle != null; + return (this.enabled != null) ? this.enabled : StringUtils.hasText(this.bundle); } public void setEnabled(boolean enabled) { diff --git a/module/spring-boot-data-redis/src/test/java/org/springframework/boot/data/redis/autoconfigure/RedisPropertiesTests.java b/module/spring-boot-data-redis/src/test/java/org/springframework/boot/data/redis/autoconfigure/DataRedisPropertiesTests.java similarity index 85% rename from module/spring-boot-data-redis/src/test/java/org/springframework/boot/data/redis/autoconfigure/RedisPropertiesTests.java rename to module/spring-boot-data-redis/src/test/java/org/springframework/boot/data/redis/autoconfigure/DataRedisPropertiesTests.java index ab1e72d24b3..e495932ea88 100644 --- a/module/spring-boot-data-redis/src/test/java/org/springframework/boot/data/redis/autoconfigure/RedisPropertiesTests.java +++ b/module/spring-boot-data-redis/src/test/java/org/springframework/boot/data/redis/autoconfigure/DataRedisPropertiesTests.java @@ -28,7 +28,7 @@ import static org.assertj.core.api.Assertions.assertThat; * * @author Stephane Nicoll */ -class RedisPropertiesTests { +class DataRedisPropertiesTests { @Test void lettuceDefaultsAreConsistent() { @@ -39,4 +39,11 @@ class RedisPropertiesTests { .isEqualTo(defaultClusterTopologyRefreshOptions.useDynamicRefreshSources()); } + @Test + void sslIsNotEnabledWhenBundleIsEmpty() { + DataRedisProperties properties = new DataRedisProperties(); + properties.getSsl().setBundle(""); + assertThat(properties.getSsl().isEnabled()).isFalse(); + } + } diff --git a/module/spring-boot-mail/src/main/java/org/springframework/boot/mail/autoconfigure/MailSenderPropertiesConfiguration.java b/module/spring-boot-mail/src/main/java/org/springframework/boot/mail/autoconfigure/MailSenderPropertiesConfiguration.java index edfa6f2411c..ae030d8f015 100644 --- a/module/spring-boot-mail/src/main/java/org/springframework/boot/mail/autoconfigure/MailSenderPropertiesConfiguration.java +++ b/module/spring-boot-mail/src/main/java/org/springframework/boot/mail/autoconfigure/MailSenderPropertiesConfiguration.java @@ -73,7 +73,7 @@ class MailSenderPropertiesConfiguration { if (ssl.isEnabled()) { javaMailProperties.setProperty("mail." + protocol + ".ssl.enable", "true"); } - if (ssl.getBundle() != null) { + if (StringUtils.hasLength(ssl.getBundle())) { Assert.state(sslBundles != null, "'sslBundles' must not be null"); SslBundle sslBundle = sslBundles.getBundle(ssl.getBundle()); javaMailProperties.put("mail." + protocol + ".ssl.socketFactory", diff --git a/module/spring-boot-mail/src/test/java/org/springframework/boot/mail/autoconfigure/MailSenderAutoConfigurationTests.java b/module/spring-boot-mail/src/test/java/org/springframework/boot/mail/autoconfigure/MailSenderAutoConfigurationTests.java index 7b44e26a7e8..1997ffae392 100644 --- a/module/spring-boot-mail/src/test/java/org/springframework/boot/mail/autoconfigure/MailSenderAutoConfigurationTests.java +++ b/module/spring-boot-mail/src/test/java/org/springframework/boot/mail/autoconfigure/MailSenderAutoConfigurationTests.java @@ -245,6 +245,21 @@ class MailSenderAutoConfigurationTests { }); } + @Test + @WithPackageResources("test.jks") + void sslIsNotEnabledWhenBundleIsEmpty() { + this.contextRunner + .withPropertyValues("spring.mail.host:localhost", "spring.mail.ssl.bundle: ", + "spring.ssl.bundle.jks.test-bundle.keystore.location:classpath:test.jks", + "spring.ssl.bundle.jks.test-bundle.keystore.password:secret", + "spring.ssl.bundle.jks.test-bundle.key.password:password") + .run((context) -> { + assertThat(context).hasSingleBean(JavaMailSenderImpl.class); + JavaMailSenderImpl mailSender = context.getBean(JavaMailSenderImpl.class); + assertThat(mailSender.getJavaMailProperties().get("mail.smtp.ssl.socketFactory")).isNull(); + }); + } + @Test void smtpSslEnabled() { this.contextRunner.withPropertyValues("spring.mail.host:localhost", "spring.mail.ssl.enabled:true") diff --git a/module/spring-boot-mongodb/src/main/java/org/springframework/boot/mongodb/autoconfigure/MongoProperties.java b/module/spring-boot-mongodb/src/main/java/org/springframework/boot/mongodb/autoconfigure/MongoProperties.java index cae688a005a..32337a17cb3 100644 --- a/module/spring-boot-mongodb/src/main/java/org/springframework/boot/mongodb/autoconfigure/MongoProperties.java +++ b/module/spring-boot-mongodb/src/main/java/org/springframework/boot/mongodb/autoconfigure/MongoProperties.java @@ -23,6 +23,7 @@ import org.bson.UuidRepresentation; import org.jspecify.annotations.Nullable; import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.util.StringUtils; /** * Configuration properties for Mongo. @@ -238,7 +239,7 @@ public class MongoProperties { private @Nullable String bundle; public boolean isEnabled() { - return (this.enabled != null) ? this.enabled : this.bundle != null; + return (this.enabled != null) ? this.enabled : StringUtils.hasText(this.bundle); } public void setEnabled(boolean enabled) { diff --git a/module/spring-boot-mongodb/src/test/java/org/springframework/boot/mongodb/autoconfigure/MongoPropertiesTests.java b/module/spring-boot-mongodb/src/test/java/org/springframework/boot/mongodb/autoconfigure/MongoPropertiesTests.java index ab2de427382..77f8669bd92 100644 --- a/module/spring-boot-mongodb/src/test/java/org/springframework/boot/mongodb/autoconfigure/MongoPropertiesTests.java +++ b/module/spring-boot-mongodb/src/test/java/org/springframework/boot/mongodb/autoconfigure/MongoPropertiesTests.java @@ -49,6 +49,13 @@ class MongoPropertiesTests { }); } + @Test + void sslIsNotEnabledWhenBundleIsEmpty() { + MongoProperties properties = new MongoProperties(); + properties.getSsl().setBundle(""); + assertThat(properties.getSsl().isEnabled()).isFalse(); + } + private UuidRepresentation springDataDefaultUuidRepresentation() { return new MongoConfigurationSupport() {