diff --git a/module/spring-boot-data-mongodb/src/main/java/org/springframework/boot/data/mongodb/autoconfigure/MongoDatabaseFactoryDependentConfiguration.java b/module/spring-boot-data-mongodb/src/main/java/org/springframework/boot/data/mongodb/autoconfigure/MongoDatabaseFactoryDependentConfiguration.java index 95c7a00f5ac..1e08bdc5913 100644 --- a/module/spring-boot-data-mongodb/src/main/java/org/springframework/boot/data/mongodb/autoconfigure/MongoDatabaseFactoryDependentConfiguration.java +++ b/module/spring-boot-data-mongodb/src/main/java/org/springframework/boot/data/mongodb/autoconfigure/MongoDatabaseFactoryDependentConfiguration.java @@ -23,8 +23,6 @@ import org.jspecify.annotations.Nullable; import org.springframework.boot.autoconfigure.condition.ConditionalOnBean; import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; -import org.springframework.boot.mongodb.autoconfigure.MongoConnectionDetails; -import org.springframework.boot.mongodb.autoconfigure.MongoConnectionDetails.GridFs; import org.springframework.boot.mongodb.autoconfigure.MongoProperties; import org.springframework.boot.mongodb.autoconfigure.MongoProperties.Gridfs; import org.springframework.context.annotation.Bean; @@ -59,34 +57,32 @@ class MongoDatabaseFactoryDependentConfiguration { @Bean @ConditionalOnMissingBean(GridFsOperations.class) - GridFsTemplate gridFsTemplate(MongoProperties properties, MongoDatabaseFactory factory, MongoTemplate mongoTemplate, - MongoConnectionDetails connectionDetails) { - return new GridFsTemplate(new GridFsMongoDatabaseFactory(factory, connectionDetails), - mongoTemplate.getConverter(), - (connectionDetails.getGridFs() != null) ? connectionDetails.getGridFs().getBucket() : null); + GridFsTemplate gridFsTemplate(MongoProperties properties, MongoDatabaseFactory factory, + MongoTemplate mongoTemplate) { + return new GridFsTemplate(new GridFsMongoDatabaseFactory(factory, properties), mongoTemplate.getConverter(), + properties.getGridfs().getBucket()); } /** - * {@link MongoDatabaseFactory} decorator to respect {@link Gridfs#getDatabase()} or - * {@link GridFs#getGridFs()} from the {@link MongoConnectionDetails} if set. + * {@link MongoDatabaseFactory} decorator to respect {@link Gridfs#getDatabase()} if + * set. */ static class GridFsMongoDatabaseFactory implements MongoDatabaseFactory { private final MongoDatabaseFactory mongoDatabaseFactory; - private final MongoConnectionDetails connectionDetails; + private final MongoProperties properties; - GridFsMongoDatabaseFactory(MongoDatabaseFactory mongoDatabaseFactory, - MongoConnectionDetails connectionDetails) { + GridFsMongoDatabaseFactory(MongoDatabaseFactory mongoDatabaseFactory, MongoProperties properties) { Assert.notNull(mongoDatabaseFactory, "'mongoDatabaseFactory' must not be null"); - Assert.notNull(connectionDetails, "'connectionDetails' must not be null"); + Assert.notNull(properties, "'properties' must not be null"); this.mongoDatabaseFactory = mongoDatabaseFactory; - this.connectionDetails = connectionDetails; + this.properties = properties; } @Override public MongoDatabase getMongoDatabase() throws DataAccessException { - String gridFsDatabase = getGridFsDatabase(this.connectionDetails); + String gridFsDatabase = getGridFsDatabase(); if (StringUtils.hasText(gridFsDatabase)) { return this.mongoDatabaseFactory.getMongoDatabase(gridFsDatabase); } @@ -113,8 +109,8 @@ class MongoDatabaseFactoryDependentConfiguration { return this.mongoDatabaseFactory.withSession(session); } - private @Nullable String getGridFsDatabase(MongoConnectionDetails connectionDetails) { - return (connectionDetails.getGridFs() != null) ? connectionDetails.getGridFs().getDatabase() : null; + private @Nullable String getGridFsDatabase() { + return this.properties.getGridfs().getDatabase(); } } diff --git a/module/spring-boot-data-mongodb/src/main/java/org/springframework/boot/data/mongodb/autoconfigure/MongoReactiveDataAutoConfiguration.java b/module/spring-boot-data-mongodb/src/main/java/org/springframework/boot/data/mongodb/autoconfigure/MongoReactiveDataAutoConfiguration.java index 3cc17df9072..cf4952a2e72 100644 --- a/module/spring-boot-data-mongodb/src/main/java/org/springframework/boot/data/mongodb/autoconfigure/MongoReactiveDataAutoConfiguration.java +++ b/module/spring-boot-data-mongodb/src/main/java/org/springframework/boot/data/mongodb/autoconfigure/MongoReactiveDataAutoConfiguration.java @@ -34,8 +34,8 @@ import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; import org.springframework.boot.context.properties.EnableConfigurationProperties; import org.springframework.boot.mongodb.autoconfigure.MongoConnectionDetails; -import org.springframework.boot.mongodb.autoconfigure.MongoConnectionDetails.GridFs; import org.springframework.boot.mongodb.autoconfigure.MongoProperties; +import org.springframework.boot.mongodb.autoconfigure.MongoProperties.Gridfs; import org.springframework.boot.mongodb.autoconfigure.MongoReactiveAutoConfiguration; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Import; @@ -76,18 +76,19 @@ import org.springframework.util.StringUtils; @Import(MongoDataConfiguration.class) public final class MongoReactiveDataAutoConfiguration { - private final MongoConnectionDetails connectionDetails; + private final MongoProperties properties; - MongoReactiveDataAutoConfiguration(MongoConnectionDetails connectionDetails) { - this.connectionDetails = connectionDetails; + MongoReactiveDataAutoConfiguration(MongoProperties properties) { + this.properties = properties; } @Bean @ConditionalOnMissingBean(ReactiveMongoDatabaseFactory.class) - SimpleReactiveMongoDatabaseFactory reactiveMongoDatabaseFactory(MongoClient mongo, MongoProperties properties) { - String database = properties.getDatabase(); + SimpleReactiveMongoDatabaseFactory reactiveMongoDatabaseFactory(MongoClient mongo, + MongoConnectionDetails connectionDetails) { + String database = this.properties.getDatabase(); if (database == null) { - database = this.connectionDetails.getConnectionString().getDatabase(); + database = connectionDetails.getConnectionString().getDatabase(); } Assert.hasText(database, "Database name must not be empty"); return new SimpleReactiveMongoDatabaseFactory(mongo, database); @@ -111,25 +112,23 @@ public final class MongoReactiveDataAutoConfiguration { ReactiveGridFsTemplate reactiveGridFsTemplate(ReactiveMongoDatabaseFactory reactiveMongoDatabaseFactory, MappingMongoConverter mappingMongoConverter, DataBufferFactory dataBufferFactory) { return new ReactiveGridFsTemplate(dataBufferFactory, - new GridFsReactiveMongoDatabaseFactory(reactiveMongoDatabaseFactory, this.connectionDetails), - mappingMongoConverter, - (this.connectionDetails.getGridFs() != null) ? this.connectionDetails.getGridFs().getBucket() : null); + new GridFsReactiveMongoDatabaseFactory(reactiveMongoDatabaseFactory, this.properties), + mappingMongoConverter, this.properties.getGridfs().getBucket()); } /** - * {@link ReactiveMongoDatabaseFactory} decorator to use {@link GridFs#getGridFs()} - * from the {@link MongoConnectionDetails} when set. + * {@link ReactiveMongoDatabaseFactory} decorator to use {@link Gridfs#getDatabase()} + * from the {@link MongoProperties} when set. */ static class GridFsReactiveMongoDatabaseFactory implements ReactiveMongoDatabaseFactory { private final ReactiveMongoDatabaseFactory delegate; - private final MongoConnectionDetails connectionDetails; + private final MongoProperties properties; - GridFsReactiveMongoDatabaseFactory(ReactiveMongoDatabaseFactory delegate, - MongoConnectionDetails connectionDetails) { + GridFsReactiveMongoDatabaseFactory(ReactiveMongoDatabaseFactory delegate, MongoProperties properties) { this.delegate = delegate; - this.connectionDetails = connectionDetails; + this.properties = properties; } @Override @@ -139,15 +138,15 @@ public final class MongoReactiveDataAutoConfiguration { @Override public Mono getMongoDatabase() throws DataAccessException { - String gridFsDatabase = getGridFsDatabase(this.connectionDetails); + String gridFsDatabase = getGridFsDatabase(); if (StringUtils.hasText(gridFsDatabase)) { return this.delegate.getMongoDatabase(gridFsDatabase); } return this.delegate.getMongoDatabase(); } - private @Nullable String getGridFsDatabase(MongoConnectionDetails connectionDetails) { - return (connectionDetails.getGridFs() != null) ? connectionDetails.getGridFs().getDatabase() : null; + private @Nullable String getGridFsDatabase() { + return this.properties.getGridfs().getDatabase(); } @Override diff --git a/module/spring-boot-data-mongodb/src/test/java/org/springframework/boot/data/mongodb/autoconfigure/MongoDataAutoConfigurationTests.java b/module/spring-boot-data-mongodb/src/test/java/org/springframework/boot/data/mongodb/autoconfigure/MongoDataAutoConfigurationTests.java index 5656bc6452f..fa7d70ab4a0 100644 --- a/module/spring-boot-data-mongodb/src/test/java/org/springframework/boot/data/mongodb/autoconfigure/MongoDataAutoConfigurationTests.java +++ b/module/spring-boot-data-mongodb/src/test/java/org/springframework/boot/data/mongodb/autoconfigure/MongoDataAutoConfigurationTests.java @@ -97,21 +97,6 @@ class MongoDataAutoConfigurationTests { }); } - @Test - @SuppressWarnings("unchecked") - void usesMongoConnectionDetailsIfAvailable() { - this.contextRunner.withUserConfiguration(ConnectionDetailsConfiguration.class).run((context) -> { - assertThat(context).hasSingleBean(GridFsTemplate.class); - GridFsTemplate template = context.getBean(GridFsTemplate.class); - GridFSBucket bucket = ((Supplier) ReflectionTestUtils.getField(template, "bucketSupplier")) - .get(); - assertThat(bucket.getBucketName()).isEqualTo("connection-details-bucket"); - assertThat(bucket).extracting("filesCollection", InstanceOfAssertFactories.type(MongoCollection.class)) - .extracting((collection) -> collection.getNamespace().getDatabaseName()) - .isEqualTo("grid-database-1"); - }); - } - @Test @SuppressWarnings("unchecked") void whenGridFsBucketIsConfiguredThenGridFsTemplateIsAutoConfiguredAndUsesIt() { @@ -370,28 +355,6 @@ class MongoDataAutoConfigurationTests { } - @Configuration(proxyBeanMethods = false) - static class ConnectionDetailsConfiguration { - - @Bean - MongoConnectionDetails mongoConnectionDetails() { - return new MongoConnectionDetails() { - - @Override - public ConnectionString getConnectionString() { - return new ConnectionString("mongodb://localhost/db"); - } - - @Override - public GridFs getGridFs() { - return GridFs.of("grid-database-1", "connection-details-bucket"); - } - - }; - } - - } - static class MyConverter implements Converter { @Override diff --git a/module/spring-boot-data-mongodb/src/test/java/org/springframework/boot/data/mongodb/autoconfigure/MongoReactiveDataAutoConfigurationTests.java b/module/spring-boot-data-mongodb/src/test/java/org/springframework/boot/data/mongodb/autoconfigure/MongoReactiveDataAutoConfigurationTests.java index 2ffbe4f03ef..8428e89e311 100644 --- a/module/spring-boot-data-mongodb/src/test/java/org/springframework/boot/data/mongodb/autoconfigure/MongoReactiveDataAutoConfigurationTests.java +++ b/module/spring-boot-data-mongodb/src/test/java/org/springframework/boot/data/mongodb/autoconfigure/MongoReactiveDataAutoConfigurationTests.java @@ -18,7 +18,6 @@ package org.springframework.boot.data.mongodb.autoconfigure; import java.time.Duration; -import com.mongodb.ConnectionString; import com.mongodb.reactivestreams.client.MongoCollection; import com.mongodb.reactivestreams.client.gridfs.GridFSBucket; import org.junit.jupiter.api.Test; @@ -26,12 +25,9 @@ import reactor.core.publisher.Mono; import org.springframework.boot.autoconfigure.AutoConfigurations; import org.springframework.boot.autoconfigure.context.PropertyPlaceholderAutoConfiguration; -import org.springframework.boot.mongodb.autoconfigure.MongoConnectionDetails; import org.springframework.boot.mongodb.autoconfigure.MongoReactiveAutoConfiguration; import org.springframework.boot.test.context.assertj.AssertableApplicationContext; import org.springframework.boot.test.context.runner.ApplicationContextRunner; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; import org.springframework.data.mongodb.ReactiveMongoDatabaseFactory; import org.springframework.data.mongodb.core.ReactiveMongoTemplate; import org.springframework.data.mongodb.core.SimpleReactiveMongoDatabaseFactory; @@ -74,18 +70,6 @@ class MongoReactiveDataAutoConfigurationTests { .run((context) -> assertThat(grisFsTemplateDatabaseName(context)).isEqualTo("grid")); } - @Test - @SuppressWarnings("unchecked") - void usesMongoConnectionDetailsIfAvailable() { - this.contextRunner.withUserConfiguration(ConnectionDetailsConfiguration.class).run((context) -> { - assertThat(grisFsTemplateDatabaseName(context)).isEqualTo("grid-database-1"); - ReactiveGridFsTemplate template = context.getBean(ReactiveGridFsTemplate.class); - GridFSBucket bucket = ((Mono) ReflectionTestUtils.getField(template, "bucketSupplier")) - .block(Duration.ofSeconds(30)); - assertThat(bucket.getBucketName()).isEqualTo("connection-details-bucket"); - }); - } - @Test @SuppressWarnings("unchecked") void whenGridFsBucketIsConfiguredThenGridFsTemplateUsesIt() { @@ -181,38 +165,4 @@ class MongoReactiveDataAutoConfigurationTests { return collection.getNamespace().getDatabaseName(); } - @Configuration(proxyBeanMethods = false) - static class ConnectionDetailsConfiguration { - - @Bean - MongoConnectionDetails mongoConnectionDetails() { - return new MongoConnectionDetails() { - - @Override - public ConnectionString getConnectionString() { - return new ConnectionString("mongodb://localhost/db"); - } - - @Override - public GridFs getGridFs() { - return new GridFs() { - - @Override - public String getDatabase() { - return "grid-database-1"; - } - - @Override - public String getBucket() { - return "connection-details-bucket"; - } - - }; - } - - }; - } - - } - } diff --git a/module/spring-boot-mongodb/src/dockerTest/java/org/springframework/boot/mongodb/docker/compose/MongoDockerComposeConnectionDetailsFactoryIntegrationTests.java b/module/spring-boot-mongodb/src/dockerTest/java/org/springframework/boot/mongodb/docker/compose/MongoDockerComposeConnectionDetailsFactoryIntegrationTests.java index b2e09545db1..b162d00b2d1 100644 --- a/module/spring-boot-mongodb/src/dockerTest/java/org/springframework/boot/mongodb/docker/compose/MongoDockerComposeConnectionDetailsFactoryIntegrationTests.java +++ b/module/spring-boot-mongodb/src/dockerTest/java/org/springframework/boot/mongodb/docker/compose/MongoDockerComposeConnectionDetailsFactoryIntegrationTests.java @@ -55,7 +55,6 @@ class MongoDockerComposeConnectionDetailsFactoryIntegrationTests { assertThat(connectionString.getCredential().getPassword()).isEqualTo("secret".toCharArray()); assertThat(connectionString.getCredential().getSource()).isEqualTo("admin"); assertThat(connectionString.getDatabase()).isEqualTo(database); - assertThat(connectionDetails.getGridFs()).isNull(); } } diff --git a/module/spring-boot-mongodb/src/main/java/org/springframework/boot/mongodb/autoconfigure/MongoConnectionDetails.java b/module/spring-boot-mongodb/src/main/java/org/springframework/boot/mongodb/autoconfigure/MongoConnectionDetails.java index cc544c987a4..b766c1b5ede 100644 --- a/module/spring-boot-mongodb/src/main/java/org/springframework/boot/mongodb/autoconfigure/MongoConnectionDetails.java +++ b/module/spring-boot-mongodb/src/main/java/org/springframework/boot/mongodb/autoconfigure/MongoConnectionDetails.java @@ -46,53 +46,4 @@ public interface MongoConnectionDetails extends ConnectionDetails { return null; } - /** - * GridFS configuration. - * @return the GridFS configuration or {@code null} - */ - default @Nullable GridFs getGridFs() { - return null; - } - - /** - * GridFS configuration. - */ - interface GridFs { - - /** - * GridFS database name. - * @return the GridFS database name or {@code null} - */ - @Nullable String getDatabase(); - - /** - * GridFS bucket name. - * @return the GridFS bucket name or {@code null} - */ - @Nullable String getBucket(); - - /** - * Factory method to create a new {@link GridFs} instance. - * @param database the database - * @param bucket the bucket name - * @return a new {@link GridFs} instance - */ - static GridFs of(@Nullable String database, @Nullable String bucket) { - return new GridFs() { - - @Override - public @Nullable String getDatabase() { - return database; - } - - @Override - public @Nullable String getBucket() { - return bucket; - } - - }; - } - - } - } diff --git a/module/spring-boot-mongodb/src/main/java/org/springframework/boot/mongodb/autoconfigure/PropertiesMongoConnectionDetails.java b/module/spring-boot-mongodb/src/main/java/org/springframework/boot/mongodb/autoconfigure/PropertiesMongoConnectionDetails.java index f726b199589..2b24c0a0644 100644 --- a/module/spring-boot-mongodb/src/main/java/org/springframework/boot/mongodb/autoconfigure/PropertiesMongoConnectionDetails.java +++ b/module/spring-boot-mongodb/src/main/java/org/springframework/boot/mongodb/autoconfigure/PropertiesMongoConnectionDetails.java @@ -100,12 +100,6 @@ public class PropertiesMongoConnectionDetails implements MongoConnectionDetails return URLEncoder.encode(new String(input), StandardCharsets.UTF_8).toCharArray(); } - @Override - public GridFs getGridFs() { - return GridFs.of(PropertiesMongoConnectionDetails.this.properties.getGridfs().getDatabase(), - PropertiesMongoConnectionDetails.this.properties.getGridfs().getBucket()); - } - @Override public @Nullable SslBundle getSslBundle() { Ssl ssl = this.properties.getSsl();