diff --git a/module/spring-boot-data-mongodb/build.gradle b/module/spring-boot-data-mongodb/build.gradle index a45cfd3b76f..ec47e38cbcc 100644 --- a/module/spring-boot-data-mongodb/build.gradle +++ b/module/spring-boot-data-mongodb/build.gradle @@ -32,6 +32,7 @@ dependencies { api("org.springframework.data:spring-data-mongodb") compileOnly("com.fasterxml.jackson.core:jackson-annotations") + compileOnly("com.google.code.findbugs:jsr305") optional(project(":core:spring-boot-autoconfigure")) optional(project(":module:spring-boot-health")) diff --git a/module/spring-boot-data-mongodb/src/main/java/org/springframework/boot/data/mongodb/autoconfigure/MongoDatabaseFactoryConfiguration.java b/module/spring-boot-data-mongodb/src/main/java/org/springframework/boot/data/mongodb/autoconfigure/MongoDatabaseFactoryConfiguration.java index 59a57d27e8f..3eabbf04ebe 100644 --- a/module/spring-boot-data-mongodb/src/main/java/org/springframework/boot/data/mongodb/autoconfigure/MongoDatabaseFactoryConfiguration.java +++ b/module/spring-boot-data-mongodb/src/main/java/org/springframework/boot/data/mongodb/autoconfigure/MongoDatabaseFactoryConfiguration.java @@ -27,6 +27,7 @@ import org.springframework.context.annotation.Configuration; import org.springframework.data.mongodb.MongoDatabaseFactory; import org.springframework.data.mongodb.core.MongoDatabaseFactorySupport; import org.springframework.data.mongodb.core.SimpleMongoClientDatabaseFactory; +import org.springframework.util.Assert; /** * Configuration for a {@link MongoDatabaseFactory}. @@ -49,6 +50,7 @@ class MongoDatabaseFactoryConfiguration { if (database == null) { database = connectionDetails.getConnectionString().getDatabase(); } + Assert.hasText(database, "Database name must not be empty"); return new SimpleMongoClientDatabaseFactory(mongoClient, database); } 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 0b9106f0790..95c7a00f5ac 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 @@ -19,6 +19,7 @@ package org.springframework.boot.data.mongodb.autoconfigure; import com.mongodb.ClientSessionOptions; import com.mongodb.client.ClientSession; import com.mongodb.client.MongoDatabase; +import org.jspecify.annotations.Nullable; import org.springframework.boot.autoconfigure.condition.ConditionalOnBean; import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; @@ -112,7 +113,7 @@ class MongoDatabaseFactoryDependentConfiguration { return this.mongoDatabaseFactory.withSession(session); } - private String getGridFsDatabase(MongoConnectionDetails connectionDetails) { + private @Nullable String getGridFsDatabase(MongoConnectionDetails connectionDetails) { return (connectionDetails.getGridFs() != null) ? connectionDetails.getGridFs().getDatabase() : null; } 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 122229575dd..3cc17df9072 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 @@ -24,6 +24,7 @@ import com.mongodb.reactivestreams.client.MongoClient; import com.mongodb.reactivestreams.client.MongoDatabase; import org.bson.codecs.Codec; import org.bson.codecs.configuration.CodecRegistry; +import org.jspecify.annotations.Nullable; import reactor.core.publisher.Mono; import org.springframework.boot.autoconfigure.AutoConfiguration; @@ -50,6 +51,7 @@ import org.springframework.data.mongodb.core.convert.MappingMongoConverter; import org.springframework.data.mongodb.core.convert.MongoConverter; import org.springframework.data.mongodb.gridfs.ReactiveGridFsOperations; import org.springframework.data.mongodb.gridfs.ReactiveGridFsTemplate; +import org.springframework.util.Assert; import org.springframework.util.StringUtils; /** @@ -87,6 +89,7 @@ public final class MongoReactiveDataAutoConfiguration { if (database == null) { database = this.connectionDetails.getConnectionString().getDatabase(); } + Assert.hasText(database, "Database name must not be empty"); return new SimpleReactiveMongoDatabaseFactory(mongo, database); } @@ -143,7 +146,7 @@ public final class MongoReactiveDataAutoConfiguration { return this.delegate.getMongoDatabase(); } - private String getGridFsDatabase(MongoConnectionDetails connectionDetails) { + private @Nullable String getGridFsDatabase(MongoConnectionDetails connectionDetails) { return (connectionDetails.getGridFs() != null) ? connectionDetails.getGridFs().getDatabase() : null; } diff --git a/module/spring-boot-data-mongodb/src/main/java/org/springframework/boot/data/mongodb/autoconfigure/health/package-info.java b/module/spring-boot-data-mongodb/src/main/java/org/springframework/boot/data/mongodb/autoconfigure/health/package-info.java index 2268c26f4db..e22e168a0c1 100644 --- a/module/spring-boot-data-mongodb/src/main/java/org/springframework/boot/data/mongodb/autoconfigure/health/package-info.java +++ b/module/spring-boot-data-mongodb/src/main/java/org/springframework/boot/data/mongodb/autoconfigure/health/package-info.java @@ -17,4 +17,7 @@ /** * Auto-configuration for Spring Data MongoDB health. */ +@NullMarked package org.springframework.boot.data.mongodb.autoconfigure.health; + +import org.jspecify.annotations.NullMarked; diff --git a/module/spring-boot-data-mongodb/src/main/java/org/springframework/boot/data/mongodb/autoconfigure/package-info.java b/module/spring-boot-data-mongodb/src/main/java/org/springframework/boot/data/mongodb/autoconfigure/package-info.java index a0122086369..078df1b4961 100644 --- a/module/spring-boot-data-mongodb/src/main/java/org/springframework/boot/data/mongodb/autoconfigure/package-info.java +++ b/module/spring-boot-data-mongodb/src/main/java/org/springframework/boot/data/mongodb/autoconfigure/package-info.java @@ -17,4 +17,7 @@ /** * Auto-configuration for Spring Data MongoDB. */ +@NullMarked package org.springframework.boot.data.mongodb.autoconfigure; + +import org.jspecify.annotations.NullMarked; diff --git a/module/spring-boot-data-mongodb/src/main/java/org/springframework/boot/data/mongodb/health/package-info.java b/module/spring-boot-data-mongodb/src/main/java/org/springframework/boot/data/mongodb/health/package-info.java index b3404379a9d..4d93eff6db8 100644 --- a/module/spring-boot-data-mongodb/src/main/java/org/springframework/boot/data/mongodb/health/package-info.java +++ b/module/spring-boot-data-mongodb/src/main/java/org/springframework/boot/data/mongodb/health/package-info.java @@ -17,4 +17,7 @@ /** * MongoDB health integration using Spring Data MongoDB. */ +@NullMarked package org.springframework.boot.data.mongodb.health; + +import org.jspecify.annotations.NullMarked;