diff --git a/start-site/src/main/java/io/spring/start/site/extension/dependency/mongodb/MongoDbProjectGenerationConfiguration.java b/start-site/src/main/java/io/spring/start/site/extension/dependency/mongodb/MongoDbProjectGenerationConfiguration.java index 160b778b7d4..b53d5f8502c 100644 --- a/start-site/src/main/java/io/spring/start/site/extension/dependency/mongodb/MongoDbProjectGenerationConfiguration.java +++ b/start-site/src/main/java/io/spring/start/site/extension/dependency/mongodb/MongoDbProjectGenerationConfiguration.java @@ -68,7 +68,8 @@ ComposeFileCustomizer mongoDbComposeFileCustomizer(Build build, DockerServiceRes private boolean isMongoEnabled(Build build) { return build.dependencies().has("mongodb") || build.dependencies().has("data-mongodb") - || build.dependencies().has("data-mongodb-reactive") || build.dependencies().has("session-data-mongodb") + || build.dependencies().has("data-mongodb-reactive") || build.dependencies().has("batch-data-mongodb") + || build.dependencies().has("session-data-mongodb") || build.dependencies().has("spring-ai-chat-memory-repository-mongodb"); } diff --git a/start-site/src/main/java/io/spring/start/site/extension/dependency/testcontainers/TestcontainersModuleRegistry.java b/start-site/src/main/java/io/spring/start/site/extension/dependency/testcontainers/TestcontainersModuleRegistry.java index ba20dbe5c4f..f2908429259 100644 --- a/start-site/src/main/java/io/spring/start/site/extension/dependency/testcontainers/TestcontainersModuleRegistry.java +++ b/start-site/src/main/java/io/spring/start/site/extension/dependency/testcontainers/TestcontainersModuleRegistry.java @@ -67,7 +67,7 @@ static Iterable create(Testcontainers testcontainers) { builders.add(onDependencies("elasticsearch", "data-elasticsearch", "spring-ai-vectordb-elasticsearch") .customizeBuild(addModule("elasticsearch", testcontainers, SupportedContainer.ELASTICSEARCH)) .customizeHelpDocument(addReferenceLink("Elasticsearch Container", "elasticsearch/"))); - builders.add(onDependencies("mongodb", "data-mongodb", "data-mongodb-reactive", + builders.add(onDependencies("mongodb", "data-mongodb", "data-mongodb-reactive", "batch-data-mongodb", "spring-ai-vectordb-mongodb-atlas", "session-data-mongodb", "spring-ai-chat-memory-repository-mongodb") .customizeBuild(addModule("mongodb", testcontainers, SupportedContainer.MONGODB)) .customizeHelpDocument(addReferenceLink("MongoDB Module", "databases/mongodb/"))); diff --git a/start-site/src/main/resources/application.yml b/start-site/src/main/resources/application.yml index 571d399d5e3..3805b3cce7d 100644 --- a/start-site/src/main/resources/application.yml +++ b/start-site/src/main/resources/application.yml @@ -1142,6 +1142,15 @@ initializr: links: - rel: reference href: https://docs.spring.io/spring-boot/{bootVersion}/how-to/batch.html + - name: Spring Batch MongoDB + id: batch-data-mongodb + groupId: org.springframework.boot + artifactId: spring-boot-starter-batch-data-mongodb + description: MongoDB support for Spring Batch applications. + compatibilityRange: "4.1.0-SNAPSHOT" + links: + - rel: reference + href: https://docs.spring.io/spring-boot/{bootVersion}/how-to/batch.html - name: Hazelcast id: hazelcast groupId: org.springframework.boot diff --git a/start-site/src/test/java/io/spring/start/site/extension/dependency/mongodb/MongoDbProjectGenerationConfigurationTests.java b/start-site/src/test/java/io/spring/start/site/extension/dependency/mongodb/MongoDbProjectGenerationConfigurationTests.java index d584e681aa2..da316a08886 100644 --- a/start-site/src/test/java/io/spring/start/site/extension/dependency/mongodb/MongoDbProjectGenerationConfigurationTests.java +++ b/start-site/src/test/java/io/spring/start/site/extension/dependency/mongodb/MongoDbProjectGenerationConfigurationTests.java @@ -78,4 +78,23 @@ void createsMongoDbServiceWhenSpringAiChatMemoryIsSelected() { assertThat(composeFile(request)).hasSameContentAs(new ClassPathResource("compose/mongodb.yaml")); } + @Test + void createsMongoDbServiceWhenBatchDataMongoDbIsSelected() { + ProjectRequest request = createProjectRequest(SupportedBootVersion.V4_1, "docker-compose", + "batch-data-mongodb"); + assertThat(composeFile(request)).hasSameContentAs(new ClassPathResource("compose/mongodb.yaml")); + } + + @Test + void createsMongoDbServiceConnectionWhenBatchDataMongoDbIsSelected() { + ProjectRequest request = createProjectRequest(SupportedBootVersion.V4_1, "testcontainers", + "batch-data-mongodb"); + request.setLanguage("java"); + assertThat(generateProject(request)).textFile("src/test/java/com/example/demo/TestcontainersConfiguration.java") + .contains("import org.testcontainers.mongodb.MongoDBContainer;") + .contains("@ServiceConnection") + .contains("MongoDBContainer mongoDbContainer()") + .contains("return new MongoDBContainer(DockerImageName.parse(\"mongo:latest\"));"); + } + } diff --git a/start-site/src/test/java/io/spring/start/site/extension/dependency/springbatch/SpringBatchTestBuildCustomizerTests.java b/start-site/src/test/java/io/spring/start/site/extension/dependency/springbatch/SpringBatchTestBuildCustomizerTests.java index 7d25283e115..f40114f3c3e 100755 --- a/start-site/src/test/java/io/spring/start/site/extension/dependency/springbatch/SpringBatchTestBuildCustomizerTests.java +++ b/start-site/src/test/java/io/spring/start/site/extension/dependency/springbatch/SpringBatchTestBuildCustomizerTests.java @@ -29,6 +29,7 @@ * * @author Tim Riemer * @author Moritz Halbritter + * @author EddĂș MelĂ©ndez */ class SpringBatchTestBuildCustomizerTests extends AbstractExtensionTests { @@ -52,6 +53,12 @@ void shouldNotAddTestDependencyForBoot4() { assertThat(mavenPom(request)).doesNotHaveDependency(dependency.getGroupId(), dependency.getArtifactId()); } + @Test + void shouldAddBatchDataMongoDbDependency() { + ProjectRequest request = createProjectRequest(SupportedBootVersion.V4_1, "batch-data-mongodb"); + assertThat(mavenPom(request)).hasDependency(getDependency(SupportedBootVersion.V4_1, "batch-data-mongodb")); + } + private static Dependency springBatchTest() { Dependency dependency = Dependency.withId("spring-batch-test", "org.springframework.batch", "spring-batch-test"); diff --git a/start-site/src/test/java/io/spring/start/site/extension/dependency/testcontainers/TestcontainersProjectGenerationConfigurationTests.java b/start-site/src/test/java/io/spring/start/site/extension/dependency/testcontainers/TestcontainersProjectGenerationConfigurationTests.java index 57958a3c2ac..fb6d088de78 100644 --- a/start-site/src/test/java/io/spring/start/site/extension/dependency/testcontainers/TestcontainersProjectGenerationConfigurationTests.java +++ b/start-site/src/test/java/io/spring/start/site/extension/dependency/testcontainers/TestcontainersProjectGenerationConfigurationTests.java @@ -86,6 +86,15 @@ void buildWithSpringBootAndTestcontainersSpringAi2Module() { .hasDependency(getDependency(bootVersion, "testcontainers")); } + @Test + void buildWithSpringBoot4AndTestcontainersBatchDataMongoDbModule() { + assertThat(generateProject(SupportedBootVersion.V4_1, "testcontainers", "batch-data-mongodb")).mavenBuild() + .doesNotHaveBom("org.testcontainers", "testcontainers-bom") + .hasDependency(getDependency(SupportedBootVersion.V4_1, "batch-data-mongodb")) + .hasDependency("org.testcontainers", "testcontainers-mongodb", null, "test") + .hasDependency(getDependency(SupportedBootVersion.V4_1, "testcontainers")); + } + static Stream supportedTestcontainersActiveMQEntriesBuild() { return Stream.of(Arguments.arguments("activemq", "activemq"), Arguments.arguments("artemis", "activemq")); } @@ -171,6 +180,19 @@ static Stream supportedEntriesHelpDocumentBoot4() { Arguments.arguments("neo4j", "https://java.testcontainers.org/modules/databases/neo4j/")); } + @Test + void linkToBatchDataMongoDbWhenTestContainerIsPresentIsAdded() { + ProjectRequest request = createProjectRequest(SupportedBootVersion.V4_1, "testcontainers", + "batch-data-mongodb"); + assertThat(helpDocument(request)).contains("https://java.testcontainers.org/modules/databases/mongodb/"); + } + + @Test + void linkToBatchDataMongoDbWhenTestContainerIsNotPresentIsNotAdded() { + ProjectRequest request = createProjectRequest(SupportedBootVersion.V4_1, "batch-data-mongodb"); + assertThat(helpDocument(request)).doesNotContain("https://java.testcontainers.org/modules/databases/mongodb/"); + } + @Test void linkToSupportedEntriesWhenTwoMatchesArePresentOnlyAddLinkOnce() { assertHelpDocument("testcontainers", "data-mongodb", "data-mongodb-reactive")