Skip to content

Commit 6837e70

Browse files
committed
Fix tests
1 parent 4ff4b01 commit 6837e70

17 files changed

+150
-66
lines changed

start-site/src/main/java/io/spring/start/site/extension/dependency/springai/SpringAiChromaProjectGenerationConfiguration.java

+10-8
Original file line numberDiff line numberDiff line change
@@ -16,33 +16,34 @@
1616

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

19-
import io.spring.initializr.generator.buildsystem.Build;
2019
import io.spring.initializr.generator.condition.ConditionalOnRequestedDependency;
20+
import io.spring.initializr.generator.project.ProjectDescription;
21+
import io.spring.initializr.generator.project.ProjectGenerationConfiguration;
22+
import io.spring.initializr.metadata.InitializrMetadata;
2123
import io.spring.start.site.container.ComposeFileCustomizer;
2224
import io.spring.start.site.container.DockerServiceResolver;
2325
import io.spring.start.site.container.ServiceConnections.ServiceConnection;
2426
import io.spring.start.site.container.ServiceConnectionsCustomizer;
2527

2628
import org.springframework.context.annotation.Bean;
27-
import org.springframework.context.annotation.Configuration;
2829

2930
/**
3031
* Configuration for generation of projects that depend on Chroma.
3132
*
3233
* @author Eddú Meléndez
3334
*/
34-
@Configuration(proxyBeanMethods = false)
35+
@ProjectGenerationConfiguration
3536
@ConditionalOnRequestedDependency("spring-ai-vectordb-chroma")
3637
class SpringAiChromaProjectGenerationConfiguration {
3738

3839
private static final String TESTCONTAINERS_CLASS_NAME = "org.testcontainers.chromadb.ChromaDBContainer";
3940

4041
@Bean
4142
@ConditionalOnRequestedDependency("testcontainers")
42-
ServiceConnectionsCustomizer chromaServiceConnectionsCustomizer(Build build,
43-
DockerServiceResolver serviceResolver) {
43+
ServiceConnectionsCustomizer chromaServiceConnectionsCustomizer(InitializrMetadata metadata,
44+
ProjectDescription description, DockerServiceResolver serviceResolver) {
4445
return (serviceConnections) -> {
45-
if (SpringAiVersion.version1OrLater(build)) {
46+
if (SpringAiVersion.version1OrLater(metadata, description.getPlatformVersion())) {
4647
serviceResolver.doWith("chroma", (service) -> serviceConnections
4748
.addServiceConnection(ServiceConnection.ofContainer("chroma", service, TESTCONTAINERS_CLASS_NAME)));
4849
}
@@ -51,9 +52,10 @@ ServiceConnectionsCustomizer chromaServiceConnectionsCustomizer(Build build,
5152

5253
@Bean
5354
@ConditionalOnRequestedDependency("docker-compose")
54-
ComposeFileCustomizer chromaComposeFileCustomizer(Build build, DockerServiceResolver serviceResolver) {
55+
ComposeFileCustomizer chromaComposeFileCustomizer(InitializrMetadata metadata, ProjectDescription description,
56+
DockerServiceResolver serviceResolver) {
5557
return (composeFile) -> {
56-
if (SpringAiVersion.version1OrLater(build)) {
58+
if (SpringAiVersion.version1OrLater(metadata, description.getPlatformVersion())) {
5759
serviceResolver.doWith("chroma", (service) -> composeFile.services().add("chroma", service));
5860
}
5961
};

start-site/src/main/java/io/spring/start/site/extension/dependency/springai/DockerComposeConfiguration.java renamed to start-site/src/main/java/io/spring/start/site/extension/dependency/springai/SpringAiDockerComposeProjectGenerationConfiguration.java

+9-6
Original file line numberDiff line numberDiff line change
@@ -20,24 +20,27 @@
2020
import io.spring.initializr.generator.buildsystem.Dependency;
2121
import io.spring.initializr.generator.buildsystem.DependencyScope;
2222
import io.spring.initializr.generator.condition.ConditionalOnRequestedDependency;
23+
import io.spring.initializr.generator.project.ProjectDescription;
24+
import io.spring.initializr.generator.project.ProjectGenerationConfiguration;
2325
import io.spring.initializr.generator.spring.build.BuildCustomizer;
2426

27+
import io.spring.initializr.metadata.InitializrMetadata;
2528
import org.springframework.context.annotation.Bean;
26-
import org.springframework.context.annotation.Configuration;
2729

2830
/**
2931
* Configuration for generation of projects that depend on Spring AI Docker Compose.
3032
*
3133
* @author Eddú Meléndez
3234
*/
33-
@Configuration(proxyBeanMethods = false)
34-
class DockerComposeConfiguration {
35+
@ProjectGenerationConfiguration
36+
@ConditionalOnRequestedDependency("docker-compose")
37+
class SpringAiDockerComposeProjectGenerationConfiguration {
3538

3639
@Bean
37-
@ConditionalOnRequestedDependency("docker-compose")
38-
BuildCustomizer<Build> springBootTestcontainersBuildCustomizer() {
40+
BuildCustomizer<Build> springBootTestcontainersBuildCustomizer(InitializrMetadata metadata,
41+
ProjectDescription description) {
3942
return (build) -> {
40-
if (SpringAiVersion.version1OrLater(build)) {
43+
if (SpringAiVersion.version1OrLater(metadata, description.getPlatformVersion())) {
4144
build.dependencies()
4245
.add("spring-ai-docker-compose",
4346
Dependency.withCoordinates("org.springframework.ai", "spring-ai-spring-boot-docker-compose")

start-site/src/main/java/io/spring/start/site/extension/dependency/springai/SpringAiMilvusProjectGenerationConfiguration.java

+7-6
Original file line numberDiff line numberDiff line change
@@ -16,32 +16,33 @@
1616

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

19-
import io.spring.initializr.generator.buildsystem.Build;
2019
import io.spring.initializr.generator.condition.ConditionalOnRequestedDependency;
20+
import io.spring.initializr.generator.project.ProjectDescription;
21+
import io.spring.initializr.generator.project.ProjectGenerationConfiguration;
22+
import io.spring.initializr.metadata.InitializrMetadata;
2123
import io.spring.start.site.container.DockerServiceResolver;
2224
import io.spring.start.site.container.ServiceConnections.ServiceConnection;
2325
import io.spring.start.site.container.ServiceConnectionsCustomizer;
2426

2527
import org.springframework.context.annotation.Bean;
26-
import org.springframework.context.annotation.Configuration;
2728

2829
/**
2930
* Configuration for generation of projects that depend on Milvus.
3031
*
3132
* @author Eddú Meléndez
3233
*/
33-
@Configuration(proxyBeanMethods = false)
34+
@ProjectGenerationConfiguration
3435
@ConditionalOnRequestedDependency("spring-ai-vectordb-milvus")
3536
class SpringAiMilvusProjectGenerationConfiguration {
3637

3738
private static final String TESTCONTAINERS_CLASS_NAME = "org.testcontainers.milvus.MilvusContainer";
3839

3940
@Bean
4041
@ConditionalOnRequestedDependency("testcontainers")
41-
ServiceConnectionsCustomizer milvusServiceConnectionsCustomizer(Build build,
42-
DockerServiceResolver serviceResolver) {
42+
ServiceConnectionsCustomizer milvusServiceConnectionsCustomizer(InitializrMetadata metadata,
43+
ProjectDescription description, DockerServiceResolver serviceResolver) {
4344
return (serviceConnections) -> {
44-
if (SpringAiVersion.version1OrLater(build)) {
45+
if (SpringAiVersion.version1OrLater(metadata, description.getPlatformVersion())) {
4546
serviceResolver.doWith("milvus", (service) -> serviceConnections
4647
.addServiceConnection(ServiceConnection.ofContainer("milvus", service, TESTCONTAINERS_CLASS_NAME)));
4748
}

start-site/src/main/java/io/spring/start/site/extension/dependency/springai/SpringAiOllamaProjectGenerationConfiguration.java

+10-8
Original file line numberDiff line numberDiff line change
@@ -16,33 +16,34 @@
1616

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

19-
import io.spring.initializr.generator.buildsystem.Build;
2019
import io.spring.initializr.generator.condition.ConditionalOnRequestedDependency;
20+
import io.spring.initializr.generator.project.ProjectDescription;
21+
import io.spring.initializr.generator.project.ProjectGenerationConfiguration;
22+
import io.spring.initializr.metadata.InitializrMetadata;
2123
import io.spring.start.site.container.ComposeFileCustomizer;
2224
import io.spring.start.site.container.DockerServiceResolver;
2325
import io.spring.start.site.container.ServiceConnections.ServiceConnection;
2426
import io.spring.start.site.container.ServiceConnectionsCustomizer;
2527

2628
import org.springframework.context.annotation.Bean;
27-
import org.springframework.context.annotation.Configuration;
2829

2930
/**
3031
* Configuration for generation of projects that depend on Ollama.
3132
*
3233
* @author Eddú Meléndez
3334
*/
34-
@Configuration(proxyBeanMethods = false)
35+
@ProjectGenerationConfiguration
3536
@ConditionalOnRequestedDependency("spring-ai-ollama")
3637
class SpringAiOllamaProjectGenerationConfiguration {
3738

3839
private static final String TESTCONTAINERS_CLASS_NAME = "org.testcontainers.ollama.OllamaContainer";
3940

4041
@Bean
4142
@ConditionalOnRequestedDependency("testcontainers")
42-
ServiceConnectionsCustomizer ollamaServiceConnectionsCustomizer(Build build,
43-
DockerServiceResolver serviceResolver) {
43+
ServiceConnectionsCustomizer ollamaServiceConnectionsCustomizer(InitializrMetadata metadata,
44+
ProjectDescription description, DockerServiceResolver serviceResolver) {
4445
return (serviceConnections) -> {
45-
if (SpringAiVersion.version1OrLater(build)) {
46+
if (SpringAiVersion.version1OrLater(metadata, description.getPlatformVersion())) {
4647
serviceResolver.doWith("ollama", (service) -> serviceConnections
4748
.addServiceConnection(ServiceConnection.ofContainer("ollama", service, TESTCONTAINERS_CLASS_NAME)));
4849
}
@@ -51,9 +52,10 @@ ServiceConnectionsCustomizer ollamaServiceConnectionsCustomizer(Build build,
5152

5253
@Bean
5354
@ConditionalOnRequestedDependency("docker-compose")
54-
ComposeFileCustomizer ollamaComposeFileCustomizer(Build build, DockerServiceResolver serviceResolver) {
55+
ComposeFileCustomizer ollamaComposeFileCustomizer(InitializrMetadata metadata, ProjectDescription description,
56+
DockerServiceResolver serviceResolver) {
5557
return (composeFile) -> {
56-
if (SpringAiVersion.version1OrLater(build)) {
58+
if (SpringAiVersion.version1OrLater(metadata, description.getPlatformVersion())) {
5759
serviceResolver.doWith("ollama", (service) -> composeFile.services().add("ollama", service));
5860
}
5961
};

start-site/src/main/java/io/spring/start/site/extension/dependency/springai/SpringAiQdrantProjectGenerationConfiguration.java

+10-8
Original file line numberDiff line numberDiff line change
@@ -16,33 +16,34 @@
1616

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

19-
import io.spring.initializr.generator.buildsystem.Build;
2019
import io.spring.initializr.generator.condition.ConditionalOnRequestedDependency;
20+
import io.spring.initializr.generator.project.ProjectDescription;
21+
import io.spring.initializr.generator.project.ProjectGenerationConfiguration;
22+
import io.spring.initializr.metadata.InitializrMetadata;
2123
import io.spring.start.site.container.ComposeFileCustomizer;
2224
import io.spring.start.site.container.DockerServiceResolver;
2325
import io.spring.start.site.container.ServiceConnections.ServiceConnection;
2426
import io.spring.start.site.container.ServiceConnectionsCustomizer;
2527

2628
import org.springframework.context.annotation.Bean;
27-
import org.springframework.context.annotation.Configuration;
2829

2930
/**
3031
* Configuration for generation of projects that depend on Qdrant.
3132
*
3233
* @author Eddú Meléndez
3334
*/
34-
@Configuration(proxyBeanMethods = false)
35+
@ProjectGenerationConfiguration
3536
@ConditionalOnRequestedDependency("spring-ai-vectordb-qdrant")
3637
class SpringAiQdrantProjectGenerationConfiguration {
3738

3839
private static final String TESTCONTAINERS_CLASS_NAME = "org.testcontainers.qdrant.QdrantContainer";
3940

4041
@Bean
4142
@ConditionalOnRequestedDependency("testcontainers")
42-
ServiceConnectionsCustomizer qdrantServiceConnectionsCustomizer(Build build,
43-
DockerServiceResolver serviceResolver) {
43+
ServiceConnectionsCustomizer qdrantServiceConnectionsCustomizer(InitializrMetadata metadata,
44+
ProjectDescription description, DockerServiceResolver serviceResolver) {
4445
return (serviceConnections) -> {
45-
if (SpringAiVersion.version1OrLater(build)) {
46+
if (SpringAiVersion.version1OrLater(metadata, description.getPlatformVersion())) {
4647
serviceResolver.doWith("qdrant", (service) -> serviceConnections
4748
.addServiceConnection(ServiceConnection.ofContainer("qdrant", service, TESTCONTAINERS_CLASS_NAME)));
4849
}
@@ -51,9 +52,10 @@ ServiceConnectionsCustomizer qdrantServiceConnectionsCustomizer(Build build,
5152

5253
@Bean
5354
@ConditionalOnRequestedDependency("docker-compose")
54-
ComposeFileCustomizer qdrantComposeFileCustomizer(Build build, DockerServiceResolver serviceResolver) {
55+
ComposeFileCustomizer qdrantComposeFileCustomizer(InitializrMetadata metadata, ProjectDescription description,
56+
DockerServiceResolver serviceResolver) {
5557
return (composeFile) -> {
56-
if (SpringAiVersion.version1OrLater(build)) {
58+
if (SpringAiVersion.version1OrLater(metadata, description.getPlatformVersion())) {
5759
serviceResolver.doWith("qdrant", (service) -> composeFile.services().add("qdrant", service));
5860
}
5961
};

start-site/src/main/java/io/spring/start/site/extension/dependency/springai/TestcontainersConfiguration.java renamed to start-site/src/main/java/io/spring/start/site/extension/dependency/springai/SpringAiTestcontainersProjectGenerationConfiguration.java

+9-6
Original file line numberDiff line numberDiff line change
@@ -20,24 +20,27 @@
2020
import io.spring.initializr.generator.buildsystem.Dependency;
2121
import io.spring.initializr.generator.buildsystem.DependencyScope;
2222
import io.spring.initializr.generator.condition.ConditionalOnRequestedDependency;
23+
import io.spring.initializr.generator.project.ProjectDescription;
24+
import io.spring.initializr.generator.project.ProjectGenerationConfiguration;
2325
import io.spring.initializr.generator.spring.build.BuildCustomizer;
2426

27+
import io.spring.initializr.metadata.InitializrMetadata;
2528
import org.springframework.context.annotation.Bean;
26-
import org.springframework.context.annotation.Configuration;
2729

2830
/**
2931
* Configuration for generation of projects that depend on Spring AI Testcontainers.
3032
*
3133
* @author Eddú Meléndez
3234
*/
33-
@Configuration(proxyBeanMethods = false)
34-
class TestcontainersConfiguration {
35+
@ProjectGenerationConfiguration
36+
@ConditionalOnRequestedDependency("testcontainers")
37+
class SpringAiTestcontainersProjectGenerationConfiguration {
3538

3639
@Bean
37-
@ConditionalOnRequestedDependency("testcontainers")
38-
BuildCustomizer<Build> springBootTestcontainersBuildCustomizer() {
40+
BuildCustomizer<Build> springAiTestcontainersBuildCustomizer(InitializrMetadata metadata,
41+
ProjectDescription description) {
3942
return (build) -> {
40-
if (SpringAiVersion.version1OrLater(build)) {
43+
if (SpringAiVersion.version1OrLater(metadata, description.getPlatformVersion())) {
4144
build.dependencies()
4245
.add("spring-ai-testcontainers",
4346
Dependency.withCoordinates("org.springframework.ai", "spring-ai-spring-boot-testcontainers")

start-site/src/main/java/io/spring/start/site/extension/dependency/springai/SpringAiVersion.java

+9-4
Original file line numberDiff line numberDiff line change
@@ -16,21 +16,26 @@
1616

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

19-
import io.spring.initializr.generator.buildsystem.Build;
2019
import io.spring.initializr.generator.version.Version;
2120
import io.spring.initializr.generator.version.VersionParser;
2221
import io.spring.initializr.generator.version.VersionRange;
22+
import io.spring.initializr.metadata.InitializrMetadata;
2323

2424
final class SpringAiVersion {
2525

26-
private static final VersionRange SPRING_AI_1_0_0_OR_LATER = VersionParser.DEFAULT.parseRange("1.0.0");
26+
private static final VersionRange SPRING_AI_1_0_0_OR_LATER = VersionParser.DEFAULT.parseRange("1.0.0-M2");
2727

2828
private SpringAiVersion() {
2929

3030
}
3131

32-
static boolean version1OrLater(Build build) {
33-
var springAiBomVersion = build.boms().get("spring-ai").getVersion().getValue();
32+
static boolean version1OrLater(InitializrMetadata metadata, Version platformVersion) {
33+
var springAiBomVersion = metadata.getConfiguration()
34+
.getEnv()
35+
.getBoms()
36+
.get("spring-ai")
37+
.resolve(platformVersion)
38+
.getVersion();
3439
return SPRING_AI_1_0_0_OR_LATER.match(Version.parse(springAiBomVersion));
3540
}
3641

start-site/src/main/java/io/spring/start/site/extension/dependency/springai/SpringAiWeaviateProjectGenerationConfiguration.java

+10-8
Original file line numberDiff line numberDiff line change
@@ -16,33 +16,34 @@
1616

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

19-
import io.spring.initializr.generator.buildsystem.Build;
2019
import io.spring.initializr.generator.condition.ConditionalOnRequestedDependency;
20+
import io.spring.initializr.generator.project.ProjectDescription;
21+
import io.spring.initializr.generator.project.ProjectGenerationConfiguration;
22+
import io.spring.initializr.metadata.InitializrMetadata;
2123
import io.spring.start.site.container.ComposeFileCustomizer;
2224
import io.spring.start.site.container.DockerServiceResolver;
2325
import io.spring.start.site.container.ServiceConnections.ServiceConnection;
2426
import io.spring.start.site.container.ServiceConnectionsCustomizer;
2527

2628
import org.springframework.context.annotation.Bean;
27-
import org.springframework.context.annotation.Configuration;
2829

2930
/**
3031
* Configuration for generation of projects that depend on Weaviate.
3132
*
3233
* @author Eddú Meléndez
3334
*/
34-
@Configuration(proxyBeanMethods = false)
35+
@ProjectGenerationConfiguration
3536
@ConditionalOnRequestedDependency("spring-ai-vectordb-weaviate")
3637
class SpringAiWeaviateProjectGenerationConfiguration {
3738

3839
private static final String TESTCONTAINERS_CLASS_NAME = "org.testcontainers.weaviate.WeaviateContainer";
3940

4041
@Bean
4142
@ConditionalOnRequestedDependency("testcontainers")
42-
ServiceConnectionsCustomizer weaviateServiceConnectionsCustomizer(Build build,
43-
DockerServiceResolver serviceResolver) {
43+
ServiceConnectionsCustomizer weaviateServiceConnectionsCustomizer(InitializrMetadata metadata,
44+
ProjectDescription description, DockerServiceResolver serviceResolver) {
4445
return (serviceConnections) -> {
45-
if (SpringAiVersion.version1OrLater(build)) {
46+
if (SpringAiVersion.version1OrLater(metadata, description.getPlatformVersion())) {
4647
serviceResolver.doWith("weaviate", (service) -> serviceConnections.addServiceConnection(
4748
ServiceConnection.ofContainer("weaviate", service, TESTCONTAINERS_CLASS_NAME)));
4849
}
@@ -51,9 +52,10 @@ ServiceConnectionsCustomizer weaviateServiceConnectionsCustomizer(Build build,
5152

5253
@Bean
5354
@ConditionalOnRequestedDependency("docker-compose")
54-
ComposeFileCustomizer weaviateComposeFileCustomizer(Build build, DockerServiceResolver serviceResolver) {
55+
ComposeFileCustomizer weaviateComposeFileCustomizer(InitializrMetadata metadata, ProjectDescription description,
56+
DockerServiceResolver serviceResolver) {
5557
return (composeFile) -> {
56-
if (SpringAiVersion.version1OrLater(build)) {
58+
if (SpringAiVersion.version1OrLater(metadata, description.getPlatformVersion())) {
5759
serviceResolver.doWith("weaviate", (service) -> composeFile.services().add("weaviate", service));
5860
}
5961
};

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

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

start-site/src/main/resources/META-INF/spring.factories

+7
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,13 @@ io.spring.start.site.extension.dependency.postgresql.PostgresqlProjectGeneration
2626
io.spring.start.site.extension.dependency.redis.RedisProjectGenerationConfiguration,\
2727
io.spring.start.site.extension.dependency.sbom.SbomProjectGenerationConfiguration,\
2828
io.spring.start.site.extension.dependency.solace.SolaceProjectGenerationConfiguration,\
29+
io.spring.start.site.extension.dependency.springai.SpringAiChromaProjectGenerationConfiguration,\
30+
io.spring.start.site.extension.dependency.springai.SpringAiDockerComposeProjectGenerationConfiguration,\
31+
io.spring.start.site.extension.dependency.springai.SpringAiMilvusProjectGenerationConfiguration,\
32+
io.spring.start.site.extension.dependency.springai.SpringAiOllamaProjectGenerationConfiguration,\
33+
io.spring.start.site.extension.dependency.springai.SpringAiQdrantProjectGenerationConfiguration,\
34+
io.spring.start.site.extension.dependency.springai.SpringAiTestcontainersProjectGenerationConfiguration,\
35+
io.spring.start.site.extension.dependency.springai.SpringAiWeaviateProjectGenerationConfiguration,\
2936
io.spring.start.site.extension.dependency.springamqp.SpringAmqpProjectGenerationConfiguration,\
3037
io.spring.start.site.extension.dependency.springazure.SpringAzureProjectGenerationConfiguration,\
3138
io.spring.start.site.extension.dependency.springboot.SpringBootProjectGenerationConfiguration,\

0 commit comments

Comments
 (0)