Skip to content

Commit 76ca66d

Browse files
tzolovilayaperumalg
authored andcommitted
fix: improve configuration metadata generation for IDE auto-completion
- Make @NestedConfigurationProperty fields final to fix metadata generation - Remove setters for nested configuration properties ensuring immutability - Add missing @NestedConfigurationProperty annotations where needed This fixes Spring Boot's configuration processor to properly generate metadata for nested properties, enabling better IDE auto-completion and contextual help in application.properties/yaml files for all Spring AI model configurations. Signed-off-by: Christian Tzolov <christian.tzolov@broadcom.com>
1 parent f4a2aa9 commit 76ca66d

File tree

32 files changed

+46
-159
lines changed

32 files changed

+46
-159
lines changed

auto-configurations/common/spring-ai-autoconfigure-retry/src/main/java/org/springframework/ai/retry/autoconfigure/SpringAiRetryProperties.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ public class SpringAiRetryProperties {
4242
* Exponential Backoff properties.
4343
*/
4444
@NestedConfigurationProperty
45-
private Backoff backoff = new Backoff();
45+
private final Backoff backoff = new Backoff();
4646

4747
/**
4848
* If false, throw a NonTransientAiException, and do not attempt retry for 4xx client

auto-configurations/models/spring-ai-autoconfigure-model-anthropic/src/main/java/org/springframework/ai/model/anthropic/autoconfigure/AnthropicChatProperties.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ public class AnthropicChatProperties {
3939
* generative's defaults.
4040
*/
4141
@NestedConfigurationProperty
42-
private AnthropicChatOptions options = AnthropicChatOptions.builder()
42+
private final AnthropicChatOptions options = AnthropicChatOptions.builder()
4343
.model(AnthropicChatModel.DEFAULT_MODEL_NAME)
4444
.maxTokens(AnthropicChatModel.DEFAULT_MAX_TOKENS)
4545
.temperature(AnthropicChatModel.DEFAULT_TEMPERATURE)

auto-configurations/models/spring-ai-autoconfigure-model-azure-openai/src/main/java/org/springframework/ai/model/azure/openai/autoconfigure/AzureOpenAiAudioTranscriptionProperties.java

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -31,14 +31,10 @@ public class AzureOpenAiAudioTranscriptionProperties {
3131
public static final String CONFIG_PREFIX = "spring.ai.azure.openai.audio.transcription";
3232

3333
@NestedConfigurationProperty
34-
private AzureOpenAiAudioTranscriptionOptions options = AzureOpenAiAudioTranscriptionOptions.builder().build();
34+
private final AzureOpenAiAudioTranscriptionOptions options = AzureOpenAiAudioTranscriptionOptions.builder().build();
3535

3636
public AzureOpenAiAudioTranscriptionOptions getOptions() {
3737
return this.options;
3838
}
3939

40-
public void setOptions(AzureOpenAiAudioTranscriptionOptions options) {
41-
this.options = options;
42-
}
43-
4440
}

auto-configurations/models/spring-ai-autoconfigure-model-azure-openai/src/main/java/org/springframework/ai/model/azure/openai/autoconfigure/AzureOpenAiChatProperties.java

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ public class AzureOpenAiChatProperties {
3030
private static final Double DEFAULT_TEMPERATURE = 0.7;
3131

3232
@NestedConfigurationProperty
33-
private AzureOpenAiChatOptions options = AzureOpenAiChatOptions.builder()
33+
private final AzureOpenAiChatOptions options = AzureOpenAiChatOptions.builder()
3434
.deploymentName(DEFAULT_DEPLOYMENT_NAME)
3535
.temperature(DEFAULT_TEMPERATURE)
3636
.build();
@@ -39,8 +39,4 @@ public AzureOpenAiChatOptions getOptions() {
3939
return this.options;
4040
}
4141

42-
public void setOptions(AzureOpenAiChatOptions options) {
43-
this.options = options;
44-
}
45-
4642
}

auto-configurations/models/spring-ai-autoconfigure-model-azure-openai/src/main/java/org/springframework/ai/model/azure/openai/autoconfigure/AzureOpenAiEmbeddingProperties.java

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ public class AzureOpenAiEmbeddingProperties {
2828
public static final String CONFIG_PREFIX = "spring.ai.azure.openai.embedding";
2929

3030
@NestedConfigurationProperty
31-
private AzureOpenAiEmbeddingOptions options = AzureOpenAiEmbeddingOptions.builder()
31+
private final AzureOpenAiEmbeddingOptions options = AzureOpenAiEmbeddingOptions.builder()
3232
.deploymentName("text-embedding-ada-002")
3333
.build();
3434

@@ -38,11 +38,6 @@ public AzureOpenAiEmbeddingOptions getOptions() {
3838
return this.options;
3939
}
4040

41-
public void setOptions(AzureOpenAiEmbeddingOptions options) {
42-
Assert.notNull(options, "Options must not be null");
43-
this.options = options;
44-
}
45-
4641
public MetadataMode getMetadataMode() {
4742
return this.metadataMode;
4843
}

auto-configurations/models/spring-ai-autoconfigure-model-azure-openai/src/main/java/org/springframework/ai/model/azure/openai/autoconfigure/AzureOpenAiImageOptionsProperties.java

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -32,14 +32,10 @@ public class AzureOpenAiImageOptionsProperties {
3232
public static final String CONFIG_PREFIX = "spring.ai.azure.openai.image";
3333

3434
@NestedConfigurationProperty
35-
private AzureOpenAiImageOptions options = AzureOpenAiImageOptions.builder().build();
35+
private final AzureOpenAiImageOptions options = AzureOpenAiImageOptions.builder().build();
3636

3737
public AzureOpenAiImageOptions getOptions() {
3838
return this.options;
3939
}
4040

41-
public void setOptions(AzureOpenAiImageOptions options) {
42-
this.options = options;
43-
}
44-
4541
}

auto-configurations/models/spring-ai-autoconfigure-model-bedrock-ai/src/main/java/org/springframework/ai/model/bedrock/cohere/autoconfigure/BedrockCohereEmbeddingProperties.java

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ public class BedrockCohereEmbeddingProperties {
4646
private String model = CohereEmbeddingModel.COHERE_EMBED_MULTILINGUAL_V3.id();
4747

4848
@NestedConfigurationProperty
49-
private BedrockCohereEmbeddingOptions options = BedrockCohereEmbeddingOptions.builder()
49+
private final BedrockCohereEmbeddingOptions options = BedrockCohereEmbeddingOptions.builder()
5050
.inputType(InputType.SEARCH_DOCUMENT)
5151
.truncate(CohereEmbeddingRequest.Truncate.NONE)
5252
.build();
@@ -63,10 +63,6 @@ public BedrockCohereEmbeddingOptions getOptions() {
6363
return this.options;
6464
}
6565

66-
public void setOptions(BedrockCohereEmbeddingOptions options) {
67-
this.options = options;
68-
}
69-
7066
public boolean isEnabled() {
7167
return this.enabled;
7268
}

auto-configurations/models/spring-ai-autoconfigure-model-bedrock-ai/src/main/java/org/springframework/ai/model/bedrock/converse/autoconfigure/BedrockConverseProxyChatProperties.java

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright 2024-2024 the original author or authors.
2+
* Copyright 2024-2025 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.
@@ -19,7 +19,6 @@
1919
import org.springframework.ai.model.tool.ToolCallingChatOptions;
2020
import org.springframework.boot.context.properties.ConfigurationProperties;
2121
import org.springframework.boot.context.properties.NestedConfigurationProperty;
22-
import org.springframework.util.Assert;
2322

2423
/**
2524
* Configuration properties for Bedrock Converse.
@@ -39,17 +38,15 @@ public class BedrockConverseProxyChatProperties {
3938
private boolean enabled;
4039

4140
@NestedConfigurationProperty
42-
private ToolCallingChatOptions options = ToolCallingChatOptions.builder().temperature(0.7).maxTokens(300).build();
41+
private final ToolCallingChatOptions options = ToolCallingChatOptions.builder()
42+
.temperature(0.7)
43+
.maxTokens(300)
44+
.build();
4345

4446
public ToolCallingChatOptions getOptions() {
4547
return this.options;
4648
}
4749

48-
public void setOptions(ToolCallingChatOptions options) {
49-
Assert.notNull(options, "ToolCallingChatOptions must not be null");
50-
this.options = options;
51-
}
52-
5350
public boolean isEnabled() {
5451
return this.enabled;
5552
}

auto-configurations/models/spring-ai-autoconfigure-model-deepseek/src/main/java/org/springframework/ai/model/deepseek/autoconfigure/DeepSeekChatProperties.java

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ public class DeepSeekChatProperties extends DeepSeekParentProperties {
4949
private String betaPrefixPath = DEFAULT_BETA_PREFIX_PATH;
5050

5151
@NestedConfigurationProperty
52-
private DeepSeekChatOptions options = DeepSeekChatOptions.builder()
52+
private final DeepSeekChatOptions options = DeepSeekChatOptions.builder()
5353
.model(DEFAULT_CHAT_MODEL)
5454
.temperature(DEFAULT_TEMPERATURE)
5555
.build();
@@ -58,10 +58,6 @@ public DeepSeekChatOptions getOptions() {
5858
return this.options;
5959
}
6060

61-
public void setOptions(DeepSeekChatOptions options) {
62-
this.options = options;
63-
}
64-
6561
public boolean isEnabled() {
6662
return this.enabled;
6763
}

auto-configurations/models/spring-ai-autoconfigure-model-minimax/src/main/java/org/springframework/ai/model/minimax/autoconfigure/MiniMaxChatProperties.java

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ public class MiniMaxChatProperties extends MiniMaxParentProperties {
3636
private static final Double DEFAULT_TEMPERATURE = 0.7;
3737

3838
@NestedConfigurationProperty
39-
private MiniMaxChatOptions options = MiniMaxChatOptions.builder()
39+
private final MiniMaxChatOptions options = MiniMaxChatOptions.builder()
4040
.model(DEFAULT_CHAT_MODEL)
4141
.temperature(DEFAULT_TEMPERATURE)
4242
.build();
@@ -45,8 +45,4 @@ public MiniMaxChatOptions getOptions() {
4545
return this.options;
4646
}
4747

48-
public void setOptions(MiniMaxChatOptions options) {
49-
this.options = options;
50-
}
51-
5248
}

0 commit comments

Comments
 (0)