From 09b1b01da51ee8f49b2ec29c40a9a75094ed529f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Deleuze?= Date: Fri, 13 Feb 2026 12:06:10 +0100 Subject: [PATCH 1/3] Refine McpJsonDefaults method names As a follow-up of #779, this commit refines McpJsonDefaults method names by shortening them to not repeat the qualifiers already expressed at type level. --- .../client/McpClient.java | 11 ++---- .../HttpClientSseClientTransport.java | 2 +- .../HttpClientStreamableHttpTransport.java | 7 ++-- .../json/McpJsonDefaults.java | 8 ++-- .../server/McpServer.java | 39 +++++++++---------- ...HttpServletSseServerTransportProvider.java | 4 +- .../HttpServletStatelessServerTransport.java | 4 +- ...vletStreamableServerTransportProvider.java | 4 +- .../util/McpJsonMapperUtils.java | 2 +- .../json/McpJsonMapperTest.java | 2 +- .../json/schema/JsonSchemaValidatorTest.java | 2 +- .../json/McpJsonMapperTest.java | 2 +- .../json/schema/JsonSchemaValidatorTest.java | 2 +- .../WebClientStreamableHttpTransport.java | 5 +-- .../transport/WebFluxSseClientTransport.java | 2 +- .../WebFluxSseServerTransportProvider.java | 5 +-- .../WebFluxStatelessServerTransport.java | 5 +-- ...FluxStreamableServerTransportProvider.java | 4 +- ...rverTransportSecurityIntegrationTests.java | 6 +-- .../utils/McpJsonMapperUtils.java | 2 +- .../WebMvcSseServerTransportProvider.java | 5 +-- .../WebMvcStatelessServerTransport.java | 5 +-- ...bMvcStreamableServerTransportProvider.java | 4 +- ...rverTransportSecurityIntegrationTests.java | 6 +-- ...WebMvcSseServerTransportProviderTests.java | 2 +- .../util/McpJsonMapperUtils.java | 2 +- .../MockMcpClientTransport.java | 2 +- .../MockMcpServerTransport.java | 2 +- ...rverTransportSecurityIntegrationTests.java | 6 +-- .../StdioServerTransportProviderTests.java | 10 ++--- .../CompleteCompletionSerializationTest.java | 2 +- 31 files changed, 75 insertions(+), 89 deletions(-) diff --git a/mcp-core/src/main/java/io/modelcontextprotocol/client/McpClient.java b/mcp-core/src/main/java/io/modelcontextprotocol/client/McpClient.java index 1210b9078..12f34e60a 100644 --- a/mcp-core/src/main/java/io/modelcontextprotocol/client/McpClient.java +++ b/mcp-core/src/main/java/io/modelcontextprotocol/client/McpClient.java @@ -492,12 +492,9 @@ public McpSyncClient build() { McpClientFeatures.Async asyncFeatures = McpClientFeatures.Async.fromSync(syncFeatures); - return new McpSyncClient( - new McpAsyncClient(transport, this.requestTimeout, this.initializationTimeout, - jsonSchemaValidator != null ? jsonSchemaValidator - : McpJsonDefaults.getDefaultJsonSchemaValidator(), - asyncFeatures), - this.contextProvider); + return new McpSyncClient(new McpAsyncClient(transport, this.requestTimeout, this.initializationTimeout, + jsonSchemaValidator != null ? jsonSchemaValidator : McpJsonDefaults.getSchemaValidator(), + asyncFeatures), this.contextProvider); } } @@ -830,7 +827,7 @@ public AsyncSpec enableCallToolSchemaCaching(boolean enableCallToolSchemaCaching */ public McpAsyncClient build() { var jsonSchemaValidator = (this.jsonSchemaValidator != null) ? this.jsonSchemaValidator - : McpJsonDefaults.getDefaultJsonSchemaValidator(); + : McpJsonDefaults.getSchemaValidator(); return new McpAsyncClient(this.transport, this.requestTimeout, this.initializationTimeout, jsonSchemaValidator, new McpClientFeatures.Async(this.clientInfo, this.capabilities, this.roots, diff --git a/mcp-core/src/main/java/io/modelcontextprotocol/client/transport/HttpClientSseClientTransport.java b/mcp-core/src/main/java/io/modelcontextprotocol/client/transport/HttpClientSseClientTransport.java index b9ed2711d..66e0b9d44 100644 --- a/mcp-core/src/main/java/io/modelcontextprotocol/client/transport/HttpClientSseClientTransport.java +++ b/mcp-core/src/main/java/io/modelcontextprotocol/client/transport/HttpClientSseClientTransport.java @@ -328,7 +328,7 @@ public Builder connectTimeout(Duration connectTimeout) { public HttpClientSseClientTransport build() { HttpClient httpClient = this.clientBuilder.connectTimeout(this.connectTimeout).build(); return new HttpClientSseClientTransport(httpClient, requestBuilder, baseUri, sseEndpoint, - jsonMapper == null ? McpJsonDefaults.getDefaultMcpJsonMapper() : jsonMapper, httpRequestCustomizer); + jsonMapper == null ? McpJsonDefaults.getMapper() : jsonMapper, httpRequestCustomizer); } } diff --git a/mcp-core/src/main/java/io/modelcontextprotocol/client/transport/HttpClientStreamableHttpTransport.java b/mcp-core/src/main/java/io/modelcontextprotocol/client/transport/HttpClientStreamableHttpTransport.java index 00b80f1d5..d6b01e17f 100644 --- a/mcp-core/src/main/java/io/modelcontextprotocol/client/transport/HttpClientStreamableHttpTransport.java +++ b/mcp-core/src/main/java/io/modelcontextprotocol/client/transport/HttpClientStreamableHttpTransport.java @@ -843,10 +843,9 @@ public Builder supportedProtocolVersions(List supportedProtocolVersions) */ public HttpClientStreamableHttpTransport build() { HttpClient httpClient = this.clientBuilder.connectTimeout(this.connectTimeout).build(); - return new HttpClientStreamableHttpTransport( - jsonMapper == null ? McpJsonDefaults.getDefaultMcpJsonMapper() : jsonMapper, httpClient, - requestBuilder, baseUri, endpoint, resumableStreams, openConnectionOnStartup, httpRequestCustomizer, - supportedProtocolVersions); + return new HttpClientStreamableHttpTransport(jsonMapper == null ? McpJsonDefaults.getMapper() : jsonMapper, + httpClient, requestBuilder, baseUri, endpoint, resumableStreams, openConnectionOnStartup, + httpRequestCustomizer, supportedProtocolVersions); } } diff --git a/mcp-core/src/main/java/io/modelcontextprotocol/json/McpJsonDefaults.java b/mcp-core/src/main/java/io/modelcontextprotocol/json/McpJsonDefaults.java index b8bdd900f..bbed0094a 100644 --- a/mcp-core/src/main/java/io/modelcontextprotocol/json/McpJsonDefaults.java +++ b/mcp-core/src/main/java/io/modelcontextprotocol/json/McpJsonDefaults.java @@ -9,8 +9,8 @@ /** * This class is to be used to provide access to the default McpJsonMapper and to the - * default JsonSchemaValidator instances via the static methods: getDefaultMcpJsonMapper - * and getDefaultJsonSchemaValidator. + * default JsonSchemaValidator instances via the static methods: getMapper and + * getSchemaValidator. *

* The initialization of (singleton) instances of this class is different in non-OSGi * environments and OSGi environments. Specifically, in non-OSGi environments The @@ -51,7 +51,7 @@ void unsetMcpJsonMapperSupplier(McpJsonMapperSupplier supplier) { mcpMapperServiceLoader.unsetSupplier(supplier); } - public synchronized static McpJsonMapper getDefaultMcpJsonMapper() { + public synchronized static McpJsonMapper getMapper() { if (mcpMapperServiceLoader == null) { new McpJsonDefaults(); } @@ -66,7 +66,7 @@ void unsetJsonSchemaValidatorSupplier(JsonSchemaValidatorSupplier supplier) { mcpValidatorServiceLoader.unsetSupplier(supplier); } - public synchronized static JsonSchemaValidator getDefaultJsonSchemaValidator() { + public synchronized static JsonSchemaValidator getSchemaValidator() { if (mcpValidatorServiceLoader == null) { new McpJsonDefaults(); } diff --git a/mcp-core/src/main/java/io/modelcontextprotocol/server/McpServer.java b/mcp-core/src/main/java/io/modelcontextprotocol/server/McpServer.java index 73a50162f..7fe9ef2a2 100644 --- a/mcp-core/src/main/java/io/modelcontextprotocol/server/McpServer.java +++ b/mcp-core/src/main/java/io/modelcontextprotocol/server/McpServer.java @@ -240,11 +240,10 @@ public McpAsyncServer build() { this.instructions); var jsonSchemaValidator = (this.jsonSchemaValidator != null) ? this.jsonSchemaValidator - : McpJsonDefaults.getDefaultJsonSchemaValidator(); + : McpJsonDefaults.getSchemaValidator(); - return new McpAsyncServer(transportProvider, - jsonMapper == null ? McpJsonDefaults.getDefaultMcpJsonMapper() : jsonMapper, features, - requestTimeout, uriTemplateManagerFactory, jsonSchemaValidator); + return new McpAsyncServer(transportProvider, jsonMapper == null ? McpJsonDefaults.getMapper() : jsonMapper, + features, requestTimeout, uriTemplateManagerFactory, jsonSchemaValidator); } } @@ -268,10 +267,9 @@ public McpAsyncServer build() { this.resources, this.resourceTemplates, this.prompts, this.completions, this.rootsChangeHandlers, this.instructions); var jsonSchemaValidator = this.jsonSchemaValidator != null ? this.jsonSchemaValidator - : McpJsonDefaults.getDefaultJsonSchemaValidator(); - return new McpAsyncServer(transportProvider, - jsonMapper == null ? McpJsonDefaults.getDefaultMcpJsonMapper() : jsonMapper, features, - requestTimeout, uriTemplateManagerFactory, jsonSchemaValidator); + : McpJsonDefaults.getSchemaValidator(); + return new McpAsyncServer(transportProvider, jsonMapper == null ? McpJsonDefaults.getMapper() : jsonMapper, + features, requestTimeout, uriTemplateManagerFactory, jsonSchemaValidator); } } @@ -858,9 +856,9 @@ public McpSyncServer build() { this.immediateExecution); var asyncServer = new McpAsyncServer(transportProvider, - jsonMapper == null ? McpJsonDefaults.getDefaultMcpJsonMapper() : jsonMapper, asyncFeatures, - requestTimeout, uriTemplateManagerFactory, jsonSchemaValidator != null ? jsonSchemaValidator - : McpJsonDefaults.getDefaultJsonSchemaValidator()); + jsonMapper == null ? McpJsonDefaults.getMapper() : jsonMapper, asyncFeatures, requestTimeout, + uriTemplateManagerFactory, + jsonSchemaValidator != null ? jsonSchemaValidator : McpJsonDefaults.getSchemaValidator()); return new McpSyncServer(asyncServer, this.immediateExecution); } @@ -888,10 +886,10 @@ public McpSyncServer build() { McpServerFeatures.Async asyncFeatures = McpServerFeatures.Async.fromSync(syncFeatures, this.immediateExecution); var jsonSchemaValidator = this.jsonSchemaValidator != null ? this.jsonSchemaValidator - : McpJsonDefaults.getDefaultJsonSchemaValidator(); + : McpJsonDefaults.getSchemaValidator(); var asyncServer = new McpAsyncServer(transportProvider, - jsonMapper == null ? McpJsonDefaults.getDefaultMcpJsonMapper() : jsonMapper, asyncFeatures, - this.requestTimeout, this.uriTemplateManagerFactory, jsonSchemaValidator); + jsonMapper == null ? McpJsonDefaults.getMapper() : jsonMapper, asyncFeatures, this.requestTimeout, + this.uriTemplateManagerFactory, jsonSchemaValidator); return new McpSyncServer(asyncServer, this.immediateExecution); } @@ -1938,10 +1936,9 @@ public StatelessAsyncSpecification jsonSchemaValidator(JsonSchemaValidator jsonS public McpStatelessAsyncServer build() { var features = new McpStatelessServerFeatures.Async(this.serverInfo, this.serverCapabilities, this.tools, this.resources, this.resourceTemplates, this.prompts, this.completions, this.instructions); - return new McpStatelessAsyncServer(transport, - jsonMapper == null ? McpJsonDefaults.getDefaultMcpJsonMapper() : jsonMapper, features, - requestTimeout, uriTemplateManagerFactory, jsonSchemaValidator != null ? jsonSchemaValidator - : McpJsonDefaults.getDefaultJsonSchemaValidator()); + return new McpStatelessAsyncServer(transport, jsonMapper == null ? McpJsonDefaults.getMapper() : jsonMapper, + features, requestTimeout, uriTemplateManagerFactory, + jsonSchemaValidator != null ? jsonSchemaValidator : McpJsonDefaults.getSchemaValidator()); } } @@ -2440,9 +2437,9 @@ public McpStatelessSyncServer build() { this.resources, this.resourceTemplates, this.prompts, this.completions, this.instructions); var asyncFeatures = McpStatelessServerFeatures.Async.fromSync(syncFeatures, this.immediateExecution); var asyncServer = new McpStatelessAsyncServer(transport, - jsonMapper == null ? McpJsonDefaults.getDefaultMcpJsonMapper() : jsonMapper, asyncFeatures, - requestTimeout, uriTemplateManagerFactory, this.jsonSchemaValidator != null - ? this.jsonSchemaValidator : McpJsonDefaults.getDefaultJsonSchemaValidator()); + jsonMapper == null ? McpJsonDefaults.getMapper() : jsonMapper, asyncFeatures, requestTimeout, + uriTemplateManagerFactory, + this.jsonSchemaValidator != null ? this.jsonSchemaValidator : McpJsonDefaults.getSchemaValidator()); return new McpStatelessSyncServer(asyncServer, this.immediateExecution); } diff --git a/mcp-core/src/main/java/io/modelcontextprotocol/server/transport/HttpServletSseServerTransportProvider.java b/mcp-core/src/main/java/io/modelcontextprotocol/server/transport/HttpServletSseServerTransportProvider.java index 3b31eb949..d84518778 100644 --- a/mcp-core/src/main/java/io/modelcontextprotocol/server/transport/HttpServletSseServerTransportProvider.java +++ b/mcp-core/src/main/java/io/modelcontextprotocol/server/transport/HttpServletSseServerTransportProvider.java @@ -672,8 +672,8 @@ public HttpServletSseServerTransportProvider build() { throw new IllegalStateException("MessageEndpoint must be set"); } return new HttpServletSseServerTransportProvider( - jsonMapper == null ? McpJsonDefaults.getDefaultMcpJsonMapper() : jsonMapper, baseUrl, - messageEndpoint, sseEndpoint, keepAliveInterval, contextExtractor, securityValidator); + jsonMapper == null ? McpJsonDefaults.getMapper() : jsonMapper, baseUrl, messageEndpoint, + sseEndpoint, keepAliveInterval, contextExtractor, securityValidator); } } diff --git a/mcp-core/src/main/java/io/modelcontextprotocol/server/transport/HttpServletStatelessServerTransport.java b/mcp-core/src/main/java/io/modelcontextprotocol/server/transport/HttpServletStatelessServerTransport.java index af01c709d..af25df28e 100644 --- a/mcp-core/src/main/java/io/modelcontextprotocol/server/transport/HttpServletStatelessServerTransport.java +++ b/mcp-core/src/main/java/io/modelcontextprotocol/server/transport/HttpServletStatelessServerTransport.java @@ -331,8 +331,8 @@ public Builder securityValidator(ServerTransportSecurityValidator securityValida public HttpServletStatelessServerTransport build() { Assert.notNull(mcpEndpoint, "Message endpoint must be set"); return new HttpServletStatelessServerTransport( - jsonMapper == null ? McpJsonDefaults.getDefaultMcpJsonMapper() : jsonMapper, mcpEndpoint, - contextExtractor, securityValidator); + jsonMapper == null ? McpJsonDefaults.getMapper() : jsonMapper, mcpEndpoint, contextExtractor, + securityValidator); } } diff --git a/mcp-core/src/main/java/io/modelcontextprotocol/server/transport/HttpServletStreamableServerTransportProvider.java b/mcp-core/src/main/java/io/modelcontextprotocol/server/transport/HttpServletStreamableServerTransportProvider.java index 07dc3467b..ccd1d1ccb 100644 --- a/mcp-core/src/main/java/io/modelcontextprotocol/server/transport/HttpServletStreamableServerTransportProvider.java +++ b/mcp-core/src/main/java/io/modelcontextprotocol/server/transport/HttpServletStreamableServerTransportProvider.java @@ -895,8 +895,8 @@ public Builder securityValidator(ServerTransportSecurityValidator securityValida public HttpServletStreamableServerTransportProvider build() { Assert.notNull(this.mcpEndpoint, "MCP endpoint must be set"); return new HttpServletStreamableServerTransportProvider( - jsonMapper == null ? McpJsonDefaults.getDefaultMcpJsonMapper() : jsonMapper, mcpEndpoint, - disallowDelete, contextExtractor, keepAliveInterval, securityValidator); + jsonMapper == null ? McpJsonDefaults.getMapper() : jsonMapper, mcpEndpoint, disallowDelete, + contextExtractor, keepAliveInterval, securityValidator); } } diff --git a/mcp-core/src/test/java/io/modelcontextprotocol/util/McpJsonMapperUtils.java b/mcp-core/src/test/java/io/modelcontextprotocol/util/McpJsonMapperUtils.java index 0af4815c9..803372056 100644 --- a/mcp-core/src/test/java/io/modelcontextprotocol/util/McpJsonMapperUtils.java +++ b/mcp-core/src/test/java/io/modelcontextprotocol/util/McpJsonMapperUtils.java @@ -8,6 +8,6 @@ public final class McpJsonMapperUtils { private McpJsonMapperUtils() { } - public static final McpJsonMapper JSON_MAPPER = McpJsonDefaults.getDefaultMcpJsonMapper(); + public static final McpJsonMapper JSON_MAPPER = McpJsonDefaults.getMapper(); } diff --git a/mcp-json-jackson2/src/test/java/io/modelcontextprotocol/json/McpJsonMapperTest.java b/mcp-json-jackson2/src/test/java/io/modelcontextprotocol/json/McpJsonMapperTest.java index bf865a087..7ae5d0887 100644 --- a/mcp-json-jackson2/src/test/java/io/modelcontextprotocol/json/McpJsonMapperTest.java +++ b/mcp-json-jackson2/src/test/java/io/modelcontextprotocol/json/McpJsonMapperTest.java @@ -14,7 +14,7 @@ class McpJsonMapperTest { @Test void shouldUseJackson2Mapper() { - assertThat(McpJsonDefaults.getDefaultMcpJsonMapper()).isInstanceOf(JacksonMcpJsonMapper.class); + assertThat(McpJsonDefaults.getMapper()).isInstanceOf(JacksonMcpJsonMapper.class); } } diff --git a/mcp-json-jackson2/src/test/java/io/modelcontextprotocol/json/schema/JsonSchemaValidatorTest.java b/mcp-json-jackson2/src/test/java/io/modelcontextprotocol/json/schema/JsonSchemaValidatorTest.java index 0c5864a2e..92a80cb9b 100644 --- a/mcp-json-jackson2/src/test/java/io/modelcontextprotocol/json/schema/JsonSchemaValidatorTest.java +++ b/mcp-json-jackson2/src/test/java/io/modelcontextprotocol/json/schema/JsonSchemaValidatorTest.java @@ -15,7 +15,7 @@ class JsonSchemaValidatorTest { @Test void shouldUseJackson2Mapper() { - assertThat(McpJsonDefaults.getDefaultJsonSchemaValidator()).isInstanceOf(DefaultJsonSchemaValidator.class); + assertThat(McpJsonDefaults.getSchemaValidator()).isInstanceOf(DefaultJsonSchemaValidator.class); } } diff --git a/mcp-json-jackson3/src/test/java/io/modelcontextprotocol/json/McpJsonMapperTest.java b/mcp-json-jackson3/src/test/java/io/modelcontextprotocol/json/McpJsonMapperTest.java index 58f7e01dc..0307fceb5 100644 --- a/mcp-json-jackson3/src/test/java/io/modelcontextprotocol/json/McpJsonMapperTest.java +++ b/mcp-json-jackson3/src/test/java/io/modelcontextprotocol/json/McpJsonMapperTest.java @@ -14,7 +14,7 @@ class McpJsonMapperTest { @Test void shouldUseJackson2Mapper() { - assertThat(McpJsonDefaults.getDefaultMcpJsonMapper()).isInstanceOf(JacksonMcpJsonMapper.class); + assertThat(McpJsonDefaults.getMapper()).isInstanceOf(JacksonMcpJsonMapper.class); } } diff --git a/mcp-json-jackson3/src/test/java/io/modelcontextprotocol/json/schema/JsonSchemaValidatorTest.java b/mcp-json-jackson3/src/test/java/io/modelcontextprotocol/json/schema/JsonSchemaValidatorTest.java index 89197579b..05dba4f42 100644 --- a/mcp-json-jackson3/src/test/java/io/modelcontextprotocol/json/schema/JsonSchemaValidatorTest.java +++ b/mcp-json-jackson3/src/test/java/io/modelcontextprotocol/json/schema/JsonSchemaValidatorTest.java @@ -15,7 +15,7 @@ class JsonSchemaValidatorTest { @Test void shouldUseJackson2Mapper() { - assertThat(McpJsonDefaults.getDefaultJsonSchemaValidator()).isInstanceOf(DefaultJsonSchemaValidator.class); + assertThat(McpJsonDefaults.getSchemaValidator()).isInstanceOf(DefaultJsonSchemaValidator.class); } } diff --git a/mcp-spring/mcp-spring-webflux/src/main/java/io/modelcontextprotocol/client/transport/WebClientStreamableHttpTransport.java b/mcp-spring/mcp-spring-webflux/src/main/java/io/modelcontextprotocol/client/transport/WebClientStreamableHttpTransport.java index e3a7091be..18e9d8ecc 100644 --- a/mcp-spring/mcp-spring-webflux/src/main/java/io/modelcontextprotocol/client/transport/WebClientStreamableHttpTransport.java +++ b/mcp-spring/mcp-spring-webflux/src/main/java/io/modelcontextprotocol/client/transport/WebClientStreamableHttpTransport.java @@ -616,9 +616,8 @@ public Builder supportedProtocolVersions(List supportedProtocolVersions) * @return a new instance of {@link WebClientStreamableHttpTransport} */ public WebClientStreamableHttpTransport build() { - return new WebClientStreamableHttpTransport( - jsonMapper == null ? McpJsonDefaults.getDefaultMcpJsonMapper() : jsonMapper, webClientBuilder, - endpoint, resumableStreams, openConnectionOnStartup, supportedProtocolVersions); + return new WebClientStreamableHttpTransport(jsonMapper == null ? McpJsonDefaults.getMapper() : jsonMapper, + webClientBuilder, endpoint, resumableStreams, openConnectionOnStartup, supportedProtocolVersions); } } diff --git a/mcp-spring/mcp-spring-webflux/src/main/java/io/modelcontextprotocol/client/transport/WebFluxSseClientTransport.java b/mcp-spring/mcp-spring-webflux/src/main/java/io/modelcontextprotocol/client/transport/WebFluxSseClientTransport.java index 3c3a008b1..304a3435f 100644 --- a/mcp-spring/mcp-spring-webflux/src/main/java/io/modelcontextprotocol/client/transport/WebFluxSseClientTransport.java +++ b/mcp-spring/mcp-spring-webflux/src/main/java/io/modelcontextprotocol/client/transport/WebFluxSseClientTransport.java @@ -405,7 +405,7 @@ public Builder jsonMapper(McpJsonMapper jsonMapper) { */ public WebFluxSseClientTransport build() { return new WebFluxSseClientTransport(webClientBuilder, - jsonMapper == null ? McpJsonDefaults.getDefaultMcpJsonMapper() : jsonMapper, sseEndpoint); + jsonMapper == null ? McpJsonDefaults.getMapper() : jsonMapper, sseEndpoint); } } diff --git a/mcp-spring/mcp-spring-webflux/src/main/java/io/modelcontextprotocol/server/transport/WebFluxSseServerTransportProvider.java b/mcp-spring/mcp-spring-webflux/src/main/java/io/modelcontextprotocol/server/transport/WebFluxSseServerTransportProvider.java index de2b0e271..e950417d4 100644 --- a/mcp-spring/mcp-spring-webflux/src/main/java/io/modelcontextprotocol/server/transport/WebFluxSseServerTransportProvider.java +++ b/mcp-spring/mcp-spring-webflux/src/main/java/io/modelcontextprotocol/server/transport/WebFluxSseServerTransportProvider.java @@ -562,9 +562,8 @@ public Builder securityValidator(ServerTransportSecurityValidator securityValida */ public WebFluxSseServerTransportProvider build() { Assert.notNull(messageEndpoint, "Message endpoint must be set"); - return new WebFluxSseServerTransportProvider( - jsonMapper == null ? McpJsonDefaults.getDefaultMcpJsonMapper() : jsonMapper, baseUrl, - messageEndpoint, sseEndpoint, keepAliveInterval, contextExtractor, securityValidator); + return new WebFluxSseServerTransportProvider(jsonMapper == null ? McpJsonDefaults.getMapper() : jsonMapper, + baseUrl, messageEndpoint, sseEndpoint, keepAliveInterval, contextExtractor, securityValidator); } } diff --git a/mcp-spring/mcp-spring-webflux/src/main/java/io/modelcontextprotocol/server/transport/WebFluxStatelessServerTransport.java b/mcp-spring/mcp-spring-webflux/src/main/java/io/modelcontextprotocol/server/transport/WebFluxStatelessServerTransport.java index 748821768..bbb0493e4 100644 --- a/mcp-spring/mcp-spring-webflux/src/main/java/io/modelcontextprotocol/server/transport/WebFluxStatelessServerTransport.java +++ b/mcp-spring/mcp-spring-webflux/src/main/java/io/modelcontextprotocol/server/transport/WebFluxStatelessServerTransport.java @@ -245,9 +245,8 @@ public Builder securityValidator(ServerTransportSecurityValidator securityValida */ public WebFluxStatelessServerTransport build() { Assert.notNull(mcpEndpoint, "Message endpoint must be set"); - return new WebFluxStatelessServerTransport( - jsonMapper == null ? McpJsonDefaults.getDefaultMcpJsonMapper() : jsonMapper, mcpEndpoint, - contextExtractor, securityValidator); + return new WebFluxStatelessServerTransport(jsonMapper == null ? McpJsonDefaults.getMapper() : jsonMapper, + mcpEndpoint, contextExtractor, securityValidator); } } diff --git a/mcp-spring/mcp-spring-webflux/src/main/java/io/modelcontextprotocol/server/transport/WebFluxStreamableServerTransportProvider.java b/mcp-spring/mcp-spring-webflux/src/main/java/io/modelcontextprotocol/server/transport/WebFluxStreamableServerTransportProvider.java index bb469b9df..223c2f009 100644 --- a/mcp-spring/mcp-spring-webflux/src/main/java/io/modelcontextprotocol/server/transport/WebFluxStreamableServerTransportProvider.java +++ b/mcp-spring/mcp-spring-webflux/src/main/java/io/modelcontextprotocol/server/transport/WebFluxStreamableServerTransportProvider.java @@ -533,8 +533,8 @@ public Builder securityValidator(ServerTransportSecurityValidator securityValida public WebFluxStreamableServerTransportProvider build() { Assert.notNull(mcpEndpoint, "Message endpoint must be set"); return new WebFluxStreamableServerTransportProvider( - jsonMapper == null ? McpJsonDefaults.getDefaultMcpJsonMapper() : jsonMapper, mcpEndpoint, - contextExtractor, disallowDelete, keepAliveInterval, securityValidator); + jsonMapper == null ? McpJsonDefaults.getMapper() : jsonMapper, mcpEndpoint, contextExtractor, + disallowDelete, keepAliveInterval, securityValidator); } } diff --git a/mcp-spring/mcp-spring-webflux/src/test/java/io/modelcontextprotocol/security/WebFluxServerTransportSecurityIntegrationTests.java b/mcp-spring/mcp-spring-webflux/src/test/java/io/modelcontextprotocol/security/WebFluxServerTransportSecurityIntegrationTests.java index 4802b9652..3a5fba573 100644 --- a/mcp-spring/mcp-spring-webflux/src/test/java/io/modelcontextprotocol/security/WebFluxServerTransportSecurityIntegrationTests.java +++ b/mcp-spring/mcp-spring-webflux/src/test/java/io/modelcontextprotocol/security/WebFluxServerTransportSecurityIntegrationTests.java @@ -221,7 +221,7 @@ public Sse() { public McpSyncClient createMcpClient(String baseUrl, TestHeaderExchangeFilterFunction exchangeFilterFunction) { var transport = WebFluxSseClientTransport .builder(WebClient.builder().baseUrl(baseUrl).filter(exchangeFilterFunction)) - .jsonMapper(McpJsonDefaults.getDefaultMcpJsonMapper()) + .jsonMapper(McpJsonDefaults.getMapper()) .build(); return McpClient.sync(transport).initializationTimeout(Duration.ofMillis(500)).build(); } @@ -254,7 +254,7 @@ public StreamableHttp() { public McpSyncClient createMcpClient(String baseUrl, TestHeaderExchangeFilterFunction exchangeFilterFunction) { var transport = WebClientStreamableHttpTransport .builder(WebClient.builder().baseUrl(baseUrl).filter(exchangeFilterFunction)) - .jsonMapper(McpJsonDefaults.getDefaultMcpJsonMapper()) + .jsonMapper(McpJsonDefaults.getMapper()) .openConnectionOnStartup(true) .build(); return McpClient.sync(transport).initializationTimeout(Duration.ofMillis(500)).build(); @@ -288,7 +288,7 @@ public Stateless() { public McpSyncClient createMcpClient(String baseUrl, TestHeaderExchangeFilterFunction exchangeFilterFunction) { var transport = WebClientStreamableHttpTransport .builder(WebClient.builder().baseUrl(baseUrl).filter(exchangeFilterFunction)) - .jsonMapper(McpJsonDefaults.getDefaultMcpJsonMapper()) + .jsonMapper(McpJsonDefaults.getMapper()) .openConnectionOnStartup(true) .build(); return McpClient.sync(transport).initializationTimeout(Duration.ofMillis(500)).build(); diff --git a/mcp-spring/mcp-spring-webflux/src/test/java/io/modelcontextprotocol/utils/McpJsonMapperUtils.java b/mcp-spring/mcp-spring-webflux/src/test/java/io/modelcontextprotocol/utils/McpJsonMapperUtils.java index 0177932cc..05d789704 100644 --- a/mcp-spring/mcp-spring-webflux/src/test/java/io/modelcontextprotocol/utils/McpJsonMapperUtils.java +++ b/mcp-spring/mcp-spring-webflux/src/test/java/io/modelcontextprotocol/utils/McpJsonMapperUtils.java @@ -8,6 +8,6 @@ public final class McpJsonMapperUtils { private McpJsonMapperUtils() { } - public static final McpJsonMapper JSON_MAPPER = McpJsonDefaults.getDefaultMcpJsonMapper(); + public static final McpJsonMapper JSON_MAPPER = McpJsonDefaults.getMapper(); } \ No newline at end of file diff --git a/mcp-spring/mcp-spring-webmvc/src/main/java/io/modelcontextprotocol/server/transport/WebMvcSseServerTransportProvider.java b/mcp-spring/mcp-spring-webmvc/src/main/java/io/modelcontextprotocol/server/transport/WebMvcSseServerTransportProvider.java index bd6d75c36..e1eb67311 100644 --- a/mcp-spring/mcp-spring-webmvc/src/main/java/io/modelcontextprotocol/server/transport/WebMvcSseServerTransportProvider.java +++ b/mcp-spring/mcp-spring-webmvc/src/main/java/io/modelcontextprotocol/server/transport/WebMvcSseServerTransportProvider.java @@ -600,9 +600,8 @@ public WebMvcSseServerTransportProvider build() { if (messageEndpoint == null) { throw new IllegalStateException("MessageEndpoint must be set"); } - return new WebMvcSseServerTransportProvider( - jsonMapper == null ? McpJsonDefaults.getDefaultMcpJsonMapper() : jsonMapper, baseUrl, - messageEndpoint, sseEndpoint, keepAliveInterval, contextExtractor, securityValidator); + return new WebMvcSseServerTransportProvider(jsonMapper == null ? McpJsonDefaults.getMapper() : jsonMapper, + baseUrl, messageEndpoint, sseEndpoint, keepAliveInterval, contextExtractor, securityValidator); } } diff --git a/mcp-spring/mcp-spring-webmvc/src/main/java/io/modelcontextprotocol/server/transport/WebMvcStatelessServerTransport.java b/mcp-spring/mcp-spring-webmvc/src/main/java/io/modelcontextprotocol/server/transport/WebMvcStatelessServerTransport.java index 665d86ec8..2c379192c 100644 --- a/mcp-spring/mcp-spring-webmvc/src/main/java/io/modelcontextprotocol/server/transport/WebMvcStatelessServerTransport.java +++ b/mcp-spring/mcp-spring-webmvc/src/main/java/io/modelcontextprotocol/server/transport/WebMvcStatelessServerTransport.java @@ -264,9 +264,8 @@ public Builder securityValidator(ServerTransportSecurityValidator securityValida */ public WebMvcStatelessServerTransport build() { Assert.notNull(mcpEndpoint, "Message endpoint must be set"); - return new WebMvcStatelessServerTransport( - jsonMapper == null ? McpJsonDefaults.getDefaultMcpJsonMapper() : jsonMapper, mcpEndpoint, - contextExtractor, securityValidator); + return new WebMvcStatelessServerTransport(jsonMapper == null ? McpJsonDefaults.getMapper() : jsonMapper, + mcpEndpoint, contextExtractor, securityValidator); } } diff --git a/mcp-spring/mcp-spring-webmvc/src/main/java/io/modelcontextprotocol/server/transport/WebMvcStreamableServerTransportProvider.java b/mcp-spring/mcp-spring-webmvc/src/main/java/io/modelcontextprotocol/server/transport/WebMvcStreamableServerTransportProvider.java index 4f8216c94..4f701a9db 100644 --- a/mcp-spring/mcp-spring-webmvc/src/main/java/io/modelcontextprotocol/server/transport/WebMvcStreamableServerTransportProvider.java +++ b/mcp-spring/mcp-spring-webmvc/src/main/java/io/modelcontextprotocol/server/transport/WebMvcStreamableServerTransportProvider.java @@ -731,8 +731,8 @@ public Builder securityValidator(ServerTransportSecurityValidator securityValida public WebMvcStreamableServerTransportProvider build() { Assert.notNull(this.mcpEndpoint, "MCP endpoint must be set"); return new WebMvcStreamableServerTransportProvider( - jsonMapper == null ? McpJsonDefaults.getDefaultMcpJsonMapper() : jsonMapper, mcpEndpoint, - disallowDelete, contextExtractor, keepAliveInterval, securityValidator); + jsonMapper == null ? McpJsonDefaults.getMapper() : jsonMapper, mcpEndpoint, disallowDelete, + contextExtractor, keepAliveInterval, securityValidator); } } diff --git a/mcp-spring/mcp-spring-webmvc/src/test/java/io/modelcontextprotocol/security/ServerTransportSecurityIntegrationTests.java b/mcp-spring/mcp-spring-webmvc/src/test/java/io/modelcontextprotocol/security/ServerTransportSecurityIntegrationTests.java index 517232322..4b8ea73be 100644 --- a/mcp-spring/mcp-spring-webmvc/src/test/java/io/modelcontextprotocol/security/ServerTransportSecurityIntegrationTests.java +++ b/mcp-spring/mcp-spring-webmvc/src/test/java/io/modelcontextprotocol/security/ServerTransportSecurityIntegrationTests.java @@ -239,7 +239,7 @@ static class SseConfig { McpSyncClient createMcpClient(McpSyncHttpClientRequestCustomizer requestCustomizer) { var transport = HttpClientSseClientTransport.builder(baseUrl) .httpRequestCustomizer(requestCustomizer) - .jsonMapper(McpJsonDefaults.getDefaultMcpJsonMapper()) + .jsonMapper(McpJsonDefaults.getMapper()) .build(); return McpClient.sync(transport).initializationTimeout(Duration.ofMillis(500)).build(); } @@ -278,7 +278,7 @@ static class StreamableHttpConfig { McpSyncClient createMcpClient(McpSyncHttpClientRequestCustomizer requestCustomizer) { var transport = HttpClientStreamableHttpTransport.builder(baseUrl) .httpRequestCustomizer(requestCustomizer) - .jsonMapper(McpJsonDefaults.getDefaultMcpJsonMapper()) + .jsonMapper(McpJsonDefaults.getMapper()) .openConnectionOnStartup(true) .build(); return McpClient.sync(transport).initializationTimeout(Duration.ofMillis(500)).build(); @@ -316,7 +316,7 @@ static class StatelessConfig { McpSyncClient createMcpClient(McpSyncHttpClientRequestCustomizer requestCustomizer) { var transport = HttpClientStreamableHttpTransport.builder(baseUrl) .httpRequestCustomizer(requestCustomizer) - .jsonMapper(McpJsonDefaults.getDefaultMcpJsonMapper()) + .jsonMapper(McpJsonDefaults.getMapper()) .openConnectionOnStartup(true) .build(); return McpClient.sync(transport).initializationTimeout(Duration.ofMillis(500)).build(); diff --git a/mcp-spring/mcp-spring-webmvc/src/test/java/io/modelcontextprotocol/server/transport/WebMvcSseServerTransportProviderTests.java b/mcp-spring/mcp-spring-webmvc/src/test/java/io/modelcontextprotocol/server/transport/WebMvcSseServerTransportProviderTests.java index 36ea2d354..89fd3d75f 100644 --- a/mcp-spring/mcp-spring-webmvc/src/test/java/io/modelcontextprotocol/server/transport/WebMvcSseServerTransportProviderTests.java +++ b/mcp-spring/mcp-spring-webmvc/src/test/java/io/modelcontextprotocol/server/transport/WebMvcSseServerTransportProviderTests.java @@ -105,7 +105,7 @@ public WebMvcSseServerTransportProvider webMvcSseServerTransportProvider() { .baseUrl("http://localhost:" + PORT + "/") .messageEndpoint(MESSAGE_ENDPOINT) .sseEndpoint(WebMvcSseServerTransportProvider.DEFAULT_SSE_ENDPOINT) - .jsonMapper(McpJsonDefaults.getDefaultMcpJsonMapper()) + .jsonMapper(McpJsonDefaults.getMapper()) .contextExtractor(req -> McpTransportContext.EMPTY) .build(); } diff --git a/mcp-test/src/main/java/io/modelcontextprotocol/util/McpJsonMapperUtils.java b/mcp-test/src/main/java/io/modelcontextprotocol/util/McpJsonMapperUtils.java index 45e4a4e3c..a72fc1db8 100644 --- a/mcp-test/src/main/java/io/modelcontextprotocol/util/McpJsonMapperUtils.java +++ b/mcp-test/src/main/java/io/modelcontextprotocol/util/McpJsonMapperUtils.java @@ -8,6 +8,6 @@ public final class McpJsonMapperUtils { private McpJsonMapperUtils() { } - public static final McpJsonMapper JSON_MAPPER = McpJsonDefaults.getDefaultMcpJsonMapper(); + public static final McpJsonMapper JSON_MAPPER = McpJsonDefaults.getMapper(); } \ No newline at end of file diff --git a/mcp-test/src/test/java/io/modelcontextprotocol/MockMcpClientTransport.java b/mcp-test/src/test/java/io/modelcontextprotocol/MockMcpClientTransport.java index 04b058973..f93e760f1 100644 --- a/mcp-test/src/test/java/io/modelcontextprotocol/MockMcpClientTransport.java +++ b/mcp-test/src/test/java/io/modelcontextprotocol/MockMcpClientTransport.java @@ -100,7 +100,7 @@ public Mono closeGracefully() { @Override public T unmarshalFrom(Object data, TypeRef typeRef) { - return McpJsonDefaults.getDefaultMcpJsonMapper().convertValue(data, typeRef); + return McpJsonDefaults.getMapper().convertValue(data, typeRef); } } diff --git a/mcp-test/src/test/java/io/modelcontextprotocol/MockMcpServerTransport.java b/mcp-test/src/test/java/io/modelcontextprotocol/MockMcpServerTransport.java index 5fefb892d..fac26596a 100644 --- a/mcp-test/src/test/java/io/modelcontextprotocol/MockMcpServerTransport.java +++ b/mcp-test/src/test/java/io/modelcontextprotocol/MockMcpServerTransport.java @@ -68,7 +68,7 @@ public Mono closeGracefully() { @Override public T unmarshalFrom(Object data, TypeRef typeRef) { - return McpJsonDefaults.getDefaultMcpJsonMapper().convertValue(data, typeRef); + return McpJsonDefaults.getMapper().convertValue(data, typeRef); } } diff --git a/mcp-test/src/test/java/io/modelcontextprotocol/server/transport/ServerTransportSecurityIntegrationTests.java b/mcp-test/src/test/java/io/modelcontextprotocol/server/transport/ServerTransportSecurityIntegrationTests.java index 667915e6d..10bb30568 100644 --- a/mcp-test/src/test/java/io/modelcontextprotocol/server/transport/ServerTransportSecurityIntegrationTests.java +++ b/mcp-test/src/test/java/io/modelcontextprotocol/server/transport/ServerTransportSecurityIntegrationTests.java @@ -223,7 +223,7 @@ public Sse() { public McpSyncClient createMcpClient(String baseUrl, TestRequestCustomizer requestCustomizer) { var transport = HttpClientSseClientTransport.builder(baseUrl) .httpRequestCustomizer(requestCustomizer) - .jsonMapper(McpJsonDefaults.getDefaultMcpJsonMapper()) + .jsonMapper(McpJsonDefaults.getMapper()) .build(); return McpClient.sync(transport).initializationTimeout(Duration.ofMillis(500)).build(); } @@ -256,7 +256,7 @@ public StreamableHttp() { public McpSyncClient createMcpClient(String baseUrl, TestRequestCustomizer requestCustomizer) { var transport = HttpClientStreamableHttpTransport.builder(baseUrl) .httpRequestCustomizer(requestCustomizer) - .jsonMapper(McpJsonDefaults.getDefaultMcpJsonMapper()) + .jsonMapper(McpJsonDefaults.getMapper()) .openConnectionOnStartup(true) .build(); return McpClient.sync(transport).initializationTimeout(Duration.ofMillis(500)).build(); @@ -290,7 +290,7 @@ public Stateless() { public McpSyncClient createMcpClient(String baseUrl, TestRequestCustomizer requestCustomizer) { var transport = HttpClientStreamableHttpTransport.builder(baseUrl) .httpRequestCustomizer(requestCustomizer) - .jsonMapper(McpJsonDefaults.getDefaultMcpJsonMapper()) + .jsonMapper(McpJsonDefaults.getMapper()) .openConnectionOnStartup(true) .build(); return McpClient.sync(transport).initializationTimeout(Duration.ofMillis(500)).build(); diff --git a/mcp-test/src/test/java/io/modelcontextprotocol/server/transport/StdioServerTransportProviderTests.java b/mcp-test/src/test/java/io/modelcontextprotocol/server/transport/StdioServerTransportProviderTests.java index 996166fc9..873d48e36 100644 --- a/mcp-test/src/test/java/io/modelcontextprotocol/server/transport/StdioServerTransportProviderTests.java +++ b/mcp-test/src/test/java/io/modelcontextprotocol/server/transport/StdioServerTransportProviderTests.java @@ -70,7 +70,7 @@ void setUp() { when(mockSession.closeGracefully()).thenReturn(Mono.empty()); when(mockSession.sendNotification(any(), any())).thenReturn(Mono.empty()); - transportProvider = new StdioServerTransportProvider(McpJsonDefaults.getDefaultMcpJsonMapper(), System.in, + transportProvider = new StdioServerTransportProvider(McpJsonDefaults.getMapper(), System.in, testOutPrintStream); } @@ -101,8 +101,7 @@ void shouldHandleIncomingMessages() throws Exception { String jsonMessage = "{\"jsonrpc\":\"2.0\",\"method\":\"test\",\"params\":{},\"id\":1}\n"; InputStream stream = new ByteArrayInputStream(jsonMessage.getBytes(StandardCharsets.UTF_8)); - transportProvider = new StdioServerTransportProvider(McpJsonDefaults.getDefaultMcpJsonMapper(), stream, - System.out); + transportProvider = new StdioServerTransportProvider(McpJsonDefaults.getMapper(), stream, System.out); // Set up a real session to capture the message AtomicReference capturedMessage = new AtomicReference<>(); CountDownLatch messageLatch = new CountDownLatch(1); @@ -182,7 +181,7 @@ void shouldHandleMultipleCloseGracefullyCalls() { @Test void shouldHandleNotificationBeforeSessionFactoryIsSet() { - transportProvider = new StdioServerTransportProvider(McpJsonDefaults.getDefaultMcpJsonMapper()); + transportProvider = new StdioServerTransportProvider(McpJsonDefaults.getMapper()); // Send notification before setting session factory StepVerifier.create(transportProvider.notifyClients("testNotification", Map.of("key", "value"))) .verifyErrorSatisfies(error -> { @@ -197,8 +196,7 @@ void shouldHandleInvalidJsonMessage() throws Exception { String jsonMessage = "{invalid json}\n"; InputStream stream = new ByteArrayInputStream(jsonMessage.getBytes(StandardCharsets.UTF_8)); - transportProvider = new StdioServerTransportProvider(McpJsonDefaults.getDefaultMcpJsonMapper(), stream, - testOutPrintStream); + transportProvider = new StdioServerTransportProvider(McpJsonDefaults.getMapper(), stream, testOutPrintStream); // Set up a session factory transportProvider.setSessionFactory(sessionFactory); diff --git a/mcp-test/src/test/java/io/modelcontextprotocol/spec/CompleteCompletionSerializationTest.java b/mcp-test/src/test/java/io/modelcontextprotocol/spec/CompleteCompletionSerializationTest.java index da5422e4e..195b6ec6d 100644 --- a/mcp-test/src/test/java/io/modelcontextprotocol/spec/CompleteCompletionSerializationTest.java +++ b/mcp-test/src/test/java/io/modelcontextprotocol/spec/CompleteCompletionSerializationTest.java @@ -11,7 +11,7 @@ class CompleteCompletionSerializationTest { @Test void codeCompletionSerialization() throws IOException { - McpJsonMapper jsonMapper = McpJsonDefaults.getDefaultMcpJsonMapper(); + McpJsonMapper jsonMapper = McpJsonDefaults.getMapper(); McpSchema.CompleteResult.CompleteCompletion codeComplete = new McpSchema.CompleteResult.CompleteCompletion( Collections.emptyList(), 0, false); String json = jsonMapper.writeValueAsString(codeComplete); From 51616990c3a7a8c09264e6d78670a79530bc7ccc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Deleuze?= Date: Fri, 13 Feb 2026 12:10:04 +0100 Subject: [PATCH 2/3] Polish McpJsonDefaults Javadoc --- .../json/McpJsonDefaults.java | 36 ++++++++++--------- 1 file changed, 19 insertions(+), 17 deletions(-) diff --git a/mcp-core/src/main/java/io/modelcontextprotocol/json/McpJsonDefaults.java b/mcp-core/src/main/java/io/modelcontextprotocol/json/McpJsonDefaults.java index bbed0094a..ccbb792f4 100644 --- a/mcp-core/src/main/java/io/modelcontextprotocol/json/McpJsonDefaults.java +++ b/mcp-core/src/main/java/io/modelcontextprotocol/json/McpJsonDefaults.java @@ -8,27 +8,29 @@ import io.modelcontextprotocol.util.McpServiceLoader; /** - * This class is to be used to provide access to the default McpJsonMapper and to the - * default JsonSchemaValidator instances via the static methods: getMapper and - * getSchemaValidator. + * This class is to be used to provide access to the default {@link McpJsonMapper} and to + * the default {@link JsonSchemaValidator} instances via the static methods: + * {@link #getMapper()} and {@link #getSchemaValidator()}. *

* The initialization of (singleton) instances of this class is different in non-OSGi - * environments and OSGi environments. Specifically, in non-OSGi environments The - * McpJsonDefaults class will be loaded by whatever classloader is used to call one of the - * existing static get methods for the first time. For servers, this will usually be in - * response to the creation of the first McpServer instance. At that first time, the - * mcpMapperServiceLoader and mcpValidatorServiceLoader will be null, and the - * McpJsonDefaults constructor will be called, creating/initializing the - * mcpMapperServiceLoader and the mcpValidatorServiceLoader...which will then be used to - * call the ServiceLoader.load method. + * environments and OSGi environments. Specifically, in non-OSGi environments the + * {@code McpJsonDefaults} class will be loaded by whatever classloader is used to call + * one of the existing static get methods for the first time. For servers, this will + * usually be in response to the creation of the first {@code McpServer} instance. At that + * first time, the {@code mcpMapperServiceLoader} and {@code mcpValidatorServiceLoader} + * will be null, and the {@code McpJsonDefaults} constructor will be called, + * creating/initializing the {@code mcpMapperServiceLoader} and the + * {@code mcpValidatorServiceLoader}...which will then be used to call the + * {@code ServiceLoader.load} method. *

* In OSGi environments, upon bundle activation SCR will create a new (singleton) instance - * of McpJsonDefaults (via the constructor), and then inject suppliers via the - * setMcpJsonMapperSupplier and setJsonSchemaValidatorSupplier methods with the - * SCR-discovered instances of those services. This does depend upon the jars/bundles - * providing those suppliers to be started/activated. This SCR behavior is dictated by xml - * files in OSGi-INF directory of mcp-core (this project/jar/bundle), and the jsonmapper - * and jsonschemvalidator provider jars/bundles (e.g. mcp-json-jackson2, 3, or others). + * of {@code McpJsonDefaults} (via the constructor), and then inject suppliers via the + * {@code setMcpJsonMapperSupplier} and {@code setJsonSchemaValidatorSupplier} methods + * with the SCR-discovered instances of those services. This does depend upon the + * jars/bundles providing those suppliers to be started/activated. This SCR behavior is + * dictated by xml files in {@code OSGi-INF} directory of {@code mcp-core} (this + * project/jar/bundle), and the jsonmapper and jsonschemavalidator provider jars/bundles + * (e.g. {@code mcp-json-jackson2}, {@code mcp-json-jackson3}, or others). */ public class McpJsonDefaults { From b356bb3037e69a144c5999024e17196ff528717c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Deleuze?= Date: Fri, 13 Feb 2026 12:18:38 +0100 Subject: [PATCH 3/3] Use diamond syntax in McpJsonDefaults --- .../java/io/modelcontextprotocol/json/McpJsonDefaults.java | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/mcp-core/src/main/java/io/modelcontextprotocol/json/McpJsonDefaults.java b/mcp-core/src/main/java/io/modelcontextprotocol/json/McpJsonDefaults.java index ccbb792f4..11b370ed8 100644 --- a/mcp-core/src/main/java/io/modelcontextprotocol/json/McpJsonDefaults.java +++ b/mcp-core/src/main/java/io/modelcontextprotocol/json/McpJsonDefaults.java @@ -39,10 +39,8 @@ public class McpJsonDefaults { protected static McpServiceLoader mcpValidatorServiceLoader; public McpJsonDefaults() { - mcpMapperServiceLoader = new McpServiceLoader( - McpJsonMapperSupplier.class); - mcpValidatorServiceLoader = new McpServiceLoader( - JsonSchemaValidatorSupplier.class); + mcpMapperServiceLoader = new McpServiceLoader<>(McpJsonMapperSupplier.class); + mcpValidatorServiceLoader = new McpServiceLoader<>(JsonSchemaValidatorSupplier.class); } void setMcpJsonMapperSupplier(McpJsonMapperSupplier supplier) {