Skip to content

Commit 0bbca6d

Browse files
eddumelendezmhalbritter
authored andcommitted
Generate test application when spring ai oracle is selected
Add support for Testcontainers and Docker Compose. See gh-1577
1 parent e024240 commit 0bbca6d

File tree

4 files changed

+31
-9
lines changed

4 files changed

+31
-9
lines changed

start-site/src/main/java/io/spring/start/site/extension/dependency/oracle/OracleProjectGenerationConfiguration.java

+21-8
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright 2012-2023 the original author or authors.
2+
* Copyright 2012-2024 the original author or authors.
33
*
44
* Licensed under the Apache License, Version 2.0 (the "License");
55
* you may not use this file except in compliance with the License.
@@ -16,6 +16,7 @@
1616

1717
package io.spring.start.site.extension.dependency.oracle;
1818

19+
import io.spring.initializr.generator.buildsystem.Build;
1920
import io.spring.initializr.generator.condition.ConditionalOnRequestedDependency;
2021
import io.spring.start.site.container.ComposeFileCustomizer;
2122
import io.spring.start.site.container.DockerServiceResolver;
@@ -30,26 +31,38 @@
3031
*
3132
* @author Moritz Halbritter
3233
* @author Stephane Nicoll
34+
* @author Eddú Meléndez
3335
*/
3436
@Configuration(proxyBeanMethods = false)
35-
@ConditionalOnRequestedDependency("oracle")
3637
class OracleProjectGenerationConfiguration {
3738

3839
private static final String TESTCONTAINERS_CLASS_NAME = "org.testcontainers.oracle.OracleContainer";
3940

4041
@Bean
4142
@ConditionalOnRequestedDependency("testcontainers")
42-
ServiceConnectionsCustomizer oracleServiceConnectionsCustomizer(DockerServiceResolver serviceResolver) {
43-
return (serviceConnections) -> serviceResolver.doWith("oracleFree",
44-
(service) -> serviceConnections.addServiceConnection(
43+
ServiceConnectionsCustomizer oracleServiceConnectionsCustomizer(Build build,
44+
DockerServiceResolver serviceResolver) {
45+
return (serviceConnections) -> {
46+
if (isOracleEnabled(build)) {
47+
serviceResolver.doWith("oracleFree", (service) -> serviceConnections.addServiceConnection(
4548
ServiceConnection.ofContainer("oracleFree", service, TESTCONTAINERS_CLASS_NAME, false)));
49+
}
50+
};
4651
}
4752

4853
@Bean
4954
@ConditionalOnRequestedDependency("docker-compose")
50-
ComposeFileCustomizer oracleComposeFileCustomizer(DockerServiceResolver serviceResolver) {
51-
return (composeFile) -> serviceResolver.doWith("oracleFree", (service) -> composeFile.services()
52-
.add("oracle", service.andThen((builder) -> builder.environment("ORACLE_PASSWORD", "secret"))));
55+
ComposeFileCustomizer oracleComposeFileCustomizer(Build build, DockerServiceResolver serviceResolver) {
56+
return (composeFile) -> {
57+
if (isOracleEnabled(build)) {
58+
serviceResolver.doWith("oracleFree", (service) -> composeFile.services()
59+
.add("oracle", service.andThen((builder) -> builder.environment("ORACLE_PASSWORD", "secret"))));
60+
}
61+
};
62+
}
63+
64+
private boolean isOracleEnabled(Build build) {
65+
return build.dependencies().has("oracle") || build.dependencies().has("spring-ai-vectordb-oracle");
5366
}
5467

5568
}

start-site/src/main/java/io/spring/start/site/extension/dependency/testcontainers/TestcontainersModuleRegistry.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,7 @@ static Iterable<ImplicitDependency> create(Version platformVersion) {
7878
.customizeHelpDocument(addReferenceLink("MariaDB Module", "databases/mariadb/")));
7979
builders.add(onDependencies("mysql").customizeBuild(addModule("mysql"))
8080
.customizeHelpDocument(addReferenceLink("MySQL Module", "databases/mysql/")));
81-
builders.add(onDependencies("oracle").customizeBuild(addModule("oracle-free"))
81+
builders.add(onDependencies("oracle", "spring-ai-vectordb-oracle").customizeBuild(addModule("oracle-free"))
8282
.customizeHelpDocument(addReferenceLink("Oracle-Free Module", "databases/oraclefree/")));
8383
builders.add(onDependencies("postgresql", "spring-ai-vectordb-pgvector").customizeBuild(addModule("postgresql"))
8484
.customizeHelpDocument(addReferenceLink("Postgres Module", "databases/postgres/")));

start-site/src/test/java/io/spring/start/site/extension/dependency/oracle/OracleProjectGenerationConfigurationTests.java

+8
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929
* Tests for {@link OracleProjectGenerationConfiguration}.
3030
*
3131
* @author Moritz Halbritter
32+
* @author Eddú Meléndez
3233
*/
3334
class OracleProjectGenerationConfigurationTests extends AbstractExtensionTests {
3435

@@ -48,6 +49,13 @@ void createsOracleFreeServiceWithBoot32() {
4849
assertThat(composeFile(request)).hasSameContentAs(new ClassPathResource("compose/oracle-free.yaml"));
4950
}
5051

52+
@Test
53+
void createsOracleFreeServiceWithBoot32AndSpringAi() {
54+
ProjectRequest request = createProjectRequest("docker-compose", "spring-ai-vectordb-oracle");
55+
request.setBootVersion(SPRING_BOOT_VERSION);
56+
assertThat(composeFile(request)).hasSameContentAs(new ClassPathResource("compose/oracle-free.yaml"));
57+
}
58+
5159
@Test
5260
void declaresOracleFreeContainerBeanWithBoot32() {
5361
ProjectRequest request = createProjectRequest("testcontainers", "oracle");

start-site/src/test/java/io/spring/start/site/extension/dependency/testcontainers/TestcontainersProjectGenerationConfigurationTests.java

+1
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,7 @@ static Stream<Arguments> supportedEntriesBuild320() {
8787
Arguments.arguments("oracle", "oracle-free"), Arguments.arguments("pulsar", "pulsar"),
8888
Arguments.arguments("pulsar-reactive", "pulsar"), Arguments.arguments("solace", "solace"),
8989
Arguments.arguments("spring-ai-vectordb-neo4j", "neo4j"),
90+
Arguments.arguments("spring-ai-vectordb-oracle", "oracle-free"),
9091
Arguments.arguments("spring-ai-vectordb-pgvector", "postgresql"),
9192
Arguments.arguments("sqlserver", "mssqlserver"));
9293
}

0 commit comments

Comments
 (0)