Skip to content

Commit a9b0763

Browse files
committed
refactor(mcp): qualify ObjectMapper and upgrade jsonschema to 4.38.0
Add @qualifier annotation to ObjectMapper injections in MCP server auto-configurations and consolidate jsonschema version management across model modules. Signed-off-by: Christian Tzolov <[email protected]>
1 parent 647fc61 commit a9b0763

File tree

11 files changed

+27
-16
lines changed

11 files changed

+27
-16
lines changed

auto-configurations/mcp/spring-ai-autoconfigure-mcp-server-webflux/src/main/java/org/springframework/ai/mcp/server/autoconfigure/McpServerSseWebFluxAutoConfiguration.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
import org.springframework.ai.mcp.server.common.autoconfigure.McpServerStdioDisabledCondition;
2626
import org.springframework.ai.mcp.server.common.autoconfigure.properties.McpServerSseProperties;
2727
import org.springframework.beans.factory.ObjectProvider;
28+
import org.springframework.beans.factory.annotation.Qualifier;
2829
import org.springframework.boot.autoconfigure.AutoConfiguration;
2930
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
3031
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
@@ -82,7 +83,8 @@ public class McpServerSseWebFluxAutoConfiguration {
8283

8384
@Bean
8485
@ConditionalOnMissingBean
85-
public WebFluxSseServerTransportProvider webFluxTransport(ObjectProvider<ObjectMapper> objectMapperProvider,
86+
public WebFluxSseServerTransportProvider webFluxTransport(
87+
@Qualifier("mcpServerObjectMapper") ObjectProvider<ObjectMapper> objectMapperProvider,
8688
McpServerSseProperties serverProperties) {
8789

8890
ObjectMapper objectMapper = objectMapperProvider.getIfAvailable(ObjectMapper::new);

auto-configurations/mcp/spring-ai-autoconfigure-mcp-server-webflux/src/main/java/org/springframework/ai/mcp/server/autoconfigure/McpServerStatelessWebFluxAutoConfiguration.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
import org.springframework.ai.mcp.server.common.autoconfigure.McpServerStdioDisabledCondition;
2626
import org.springframework.ai.mcp.server.common.autoconfigure.properties.McpServerStreamableHttpProperties;
2727
import org.springframework.beans.factory.ObjectProvider;
28+
import org.springframework.beans.factory.annotation.Qualifier;
2829
import org.springframework.boot.autoconfigure.AutoConfiguration;
2930
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
3031
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
@@ -47,7 +48,8 @@ public class McpServerStatelessWebFluxAutoConfiguration {
4748
@Bean
4849
@ConditionalOnMissingBean
4950
public WebFluxStatelessServerTransport webFluxStatelessServerTransport(
50-
ObjectProvider<ObjectMapper> objectMapperProvider, McpServerStreamableHttpProperties serverProperties) {
51+
@Qualifier("mcpServerObjectMapper") ObjectProvider<ObjectMapper> objectMapperProvider,
52+
McpServerStreamableHttpProperties serverProperties) {
5153

5254
ObjectMapper objectMapper = objectMapperProvider.getIfAvailable(ObjectMapper::new);
5355

auto-configurations/mcp/spring-ai-autoconfigure-mcp-server-webflux/src/main/java/org/springframework/ai/mcp/server/autoconfigure/McpServerStreamableHttpWebFluxAutoConfiguration.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
import org.springframework.ai.mcp.server.common.autoconfigure.properties.McpServerProperties;
2727
import org.springframework.ai.mcp.server.common.autoconfigure.properties.McpServerStreamableHttpProperties;
2828
import org.springframework.beans.factory.ObjectProvider;
29+
import org.springframework.beans.factory.annotation.Qualifier;
2930
import org.springframework.boot.autoconfigure.AutoConfiguration;
3031
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
3132
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
@@ -48,7 +49,8 @@ public class McpServerStreamableHttpWebFluxAutoConfiguration {
4849
@Bean
4950
@ConditionalOnMissingBean
5051
public WebFluxStreamableServerTransportProvider webFluxStreamableServerTransportProvider(
51-
ObjectProvider<ObjectMapper> objectMapperProvider, McpServerStreamableHttpProperties serverProperties) {
52+
@Qualifier("mcpServerObjectMapper") ObjectProvider<ObjectMapper> objectMapperProvider,
53+
McpServerStreamableHttpProperties serverProperties) {
5254

5355
ObjectMapper objectMapper = objectMapperProvider.getIfAvailable(ObjectMapper::new);
5456

auto-configurations/mcp/spring-ai-autoconfigure-mcp-server-webmvc/src/main/java/org/springframework/ai/mcp/server/autoconfigure/McpServerSseWebMvcAutoConfiguration.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
import org.springframework.ai.mcp.server.common.autoconfigure.McpServerStdioDisabledCondition;
2727
import org.springframework.ai.mcp.server.common.autoconfigure.properties.McpServerSseProperties;
2828
import org.springframework.beans.factory.ObjectProvider;
29+
import org.springframework.beans.factory.annotation.Qualifier;
2930
import org.springframework.boot.autoconfigure.AutoConfiguration;
3031
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
3132
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
@@ -77,7 +78,8 @@ public class McpServerSseWebMvcAutoConfiguration {
7778
@Bean
7879
@ConditionalOnMissingBean
7980
public WebMvcSseServerTransportProvider webMvcSseServerTransportProvider(
80-
ObjectProvider<ObjectMapper> objectMapperProvider, McpServerSseProperties serverProperties) {
81+
@Qualifier("mcpServerObjectMapper") ObjectProvider<ObjectMapper> objectMapperProvider,
82+
McpServerSseProperties serverProperties) {
8183

8284
ObjectMapper objectMapper = McpServerObjectMapperFactory.getOrCreateObjectMapper(objectMapperProvider);
8385

auto-configurations/mcp/spring-ai-autoconfigure-mcp-server-webmvc/src/main/java/org/springframework/ai/mcp/server/autoconfigure/McpServerStatelessWebMvcAutoConfiguration.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
import org.springframework.ai.mcp.server.common.autoconfigure.McpServerStdioDisabledCondition;
2727
import org.springframework.ai.mcp.server.common.autoconfigure.properties.McpServerStreamableHttpProperties;
2828
import org.springframework.beans.factory.ObjectProvider;
29+
import org.springframework.beans.factory.annotation.Qualifier;
2930
import org.springframework.boot.autoconfigure.AutoConfiguration;
3031
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
3132
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
@@ -49,7 +50,8 @@ public class McpServerStatelessWebMvcAutoConfiguration {
4950
@Bean
5051
@ConditionalOnMissingBean
5152
public WebMvcStatelessServerTransport webMvcStatelessServerTransport(
52-
ObjectProvider<ObjectMapper> objectMapperProvider, McpServerStreamableHttpProperties serverProperties) {
53+
@Qualifier("mcpServerObjectMapper") ObjectProvider<ObjectMapper> objectMapperProvider,
54+
McpServerStreamableHttpProperties serverProperties) {
5355

5456
ObjectMapper objectMapper = McpServerObjectMapperFactory.getOrCreateObjectMapper(objectMapperProvider);
5557

auto-configurations/mcp/spring-ai-autoconfigure-mcp-server-webmvc/src/main/java/org/springframework/ai/mcp/server/autoconfigure/McpServerStreamableHttpWebMvcAutoConfiguration.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
import org.springframework.ai.mcp.server.common.autoconfigure.properties.McpServerProperties;
2828
import org.springframework.ai.mcp.server.common.autoconfigure.properties.McpServerStreamableHttpProperties;
2929
import org.springframework.beans.factory.ObjectProvider;
30+
import org.springframework.beans.factory.annotation.Qualifier;
3031
import org.springframework.boot.autoconfigure.AutoConfiguration;
3132
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
3233
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
@@ -50,7 +51,8 @@ public class McpServerStreamableHttpWebMvcAutoConfiguration {
5051
@Bean
5152
@ConditionalOnMissingBean
5253
public WebMvcStreamableServerTransportProvider webMvcStreamableServerTransportProvider(
53-
ObjectProvider<ObjectMapper> objectMapperProvider, McpServerStreamableHttpProperties serverProperties) {
54+
@Qualifier("mcpServerObjectMapper") ObjectProvider<ObjectMapper> objectMapperProvider,
55+
McpServerStreamableHttpProperties serverProperties) {
5456

5557
ObjectMapper objectMapper = McpServerObjectMapperFactory.getOrCreateObjectMapper(objectMapperProvider);
5658

models/spring-ai-anthropic/pom.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -63,13 +63,13 @@
6363
<dependency>
6464
<groupId>com.github.victools</groupId>
6565
<artifactId>jsonschema-generator</artifactId>
66-
<version>${victools.version}</version>
66+
<version>${jsonschema.version}</version>
6767
</dependency>
6868

6969
<dependency>
7070
<groupId>com.github.victools</groupId>
7171
<artifactId>jsonschema-module-jackson</artifactId>
72-
<version>${victools.version}</version>
72+
<version>${jsonschema.version}</version>
7373
</dependency>
7474

7575
<dependency>

models/spring-ai-google-genai/pom.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -51,12 +51,12 @@
5151
<dependency>
5252
<groupId>com.github.victools</groupId>
5353
<artifactId>jsonschema-generator</artifactId>
54-
<version>${victools.version}</version>
54+
<version>${jsonschema.version}</version>
5555
</dependency>
5656
<dependency>
5757
<groupId>com.github.victools</groupId>
5858
<artifactId>jsonschema-module-jackson</artifactId>
59-
<version>${victools.version}</version>
59+
<version>${jsonschema.version}</version>
6060
</dependency>
6161

6262
<!-- production dependencies -->

models/spring-ai-openai/pom.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -55,13 +55,13 @@
5555
<dependency>
5656
<groupId>com.github.victools</groupId>
5757
<artifactId>jsonschema-generator</artifactId>
58-
<version>${victools.version}</version>
58+
<version>${jsonschema.version}</version>
5959
</dependency>
6060

6161
<dependency>
6262
<groupId>com.github.victools</groupId>
6363
<artifactId>jsonschema-module-jackson</artifactId>
64-
<version>${victools.version}</version>
64+
<version>${jsonschema.version}</version>
6565
</dependency>
6666

6767
<dependency>

models/spring-ai-vertex-ai-gemini/pom.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -57,12 +57,12 @@
5757
<dependency>
5858
<groupId>com.github.victools</groupId>
5959
<artifactId>jsonschema-generator</artifactId>
60-
<version>${victools.version}</version>
60+
<version>${jsonschema.version}</version>
6161
</dependency>
6262
<dependency>
6363
<groupId>com.github.victools</groupId>
6464
<artifactId>jsonschema-module-jackson</artifactId>
65-
<version>${victools.version}</version>
65+
<version>${jsonschema.version}</version>
6666
</dependency>
6767

6868
<dependency>

0 commit comments

Comments
 (0)