From 1af95a0704944629a530113939ee960b49ad05fd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Deleuze?= Date: Tue, 12 Aug 2025 11:42:53 +0200 Subject: [PATCH] Upgrade to Jackson 3.0.0-rc8 and 2.20.0-rc1 Closes gh-35295 --- framework-platform/framework-platform.gradle | 4 ++-- .../http/converter/json/Jackson2ObjectMapperBuilderTests.java | 3 ++- .../converter/json/Jackson2ObjectMapperFactoryBeanTests.java | 3 ++- .../web/reactive/DispatcherHandlerErrorTests.java | 2 +- .../RequestMappingExceptionHandlingIntegrationTests.java | 4 ++-- .../method/annotation/ResponseBodyResultHandlerTests.java | 2 +- .../method/annotation/ResponseEntityResultHandlerTests.java | 4 ++-- .../resource/ResourceHttpRequestHandlerIntegrationTests.java | 2 +- 8 files changed, 13 insertions(+), 11 deletions(-) diff --git a/framework-platform/framework-platform.gradle b/framework-platform/framework-platform.gradle index 2b8e3dab380..50fb2b65dc3 100644 --- a/framework-platform/framework-platform.gradle +++ b/framework-platform/framework-platform.gradle @@ -7,7 +7,7 @@ javaPlatform { } dependencies { - api(platform("com.fasterxml.jackson:jackson-bom:2.19.2")) + api(platform("com.fasterxml.jackson:jackson-bom:2.20.0-rc1")) api(platform("io.micrometer:micrometer-bom:1.16.0-M2")) api(platform("io.netty:netty-bom:4.2.3.Final")) api(platform("io.projectreactor:reactor-bom:2025.0.0-M6")) @@ -21,7 +21,7 @@ dependencies { api(platform("org.jetbrains.kotlinx:kotlinx-serialization-bom:1.9.0")) api(platform("org.junit:junit-bom:5.13.4")) api(platform("org.mockito:mockito-bom:5.18.0")) - api(platform("tools.jackson:jackson-bom:3.0.0-rc6")) + api(platform("tools.jackson:jackson-bom:3.0.0-rc8")) constraints { api("com.fasterxml:aalto-xml:1.3.2") diff --git a/spring-web/src/test/java/org/springframework/http/converter/json/Jackson2ObjectMapperBuilderTests.java b/spring-web/src/test/java/org/springframework/http/converter/json/Jackson2ObjectMapperBuilderTests.java index ca30c2e539a..83f7c82a640 100644 --- a/spring-web/src/test/java/org/springframework/http/converter/json/Jackson2ObjectMapperBuilderTests.java +++ b/spring-web/src/test/java/org/springframework/http/converter/json/Jackson2ObjectMapperBuilderTests.java @@ -52,6 +52,7 @@ import com.fasterxml.jackson.databind.JsonSerializer; import com.fasterxml.jackson.databind.MapperFeature; import com.fasterxml.jackson.databind.Module; import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.PropertyNamingStrategies; import com.fasterxml.jackson.databind.PropertyNamingStrategy; import com.fasterxml.jackson.databind.SerializationFeature; import com.fasterxml.jackson.databind.SerializerProvider; @@ -375,7 +376,7 @@ class Jackson2ObjectMapperBuilderTests { @Test void propertyNamingStrategy() { - PropertyNamingStrategy strategy = new PropertyNamingStrategy.SnakeCaseStrategy(); + PropertyNamingStrategy strategy = new PropertyNamingStrategies.SnakeCaseStrategy(); ObjectMapper objectMapper = Jackson2ObjectMapperBuilder.json().propertyNamingStrategy(strategy).build(); assertThat(objectMapper.getSerializationConfig().getPropertyNamingStrategy()).isSameAs(strategy); assertThat(objectMapper.getDeserializationConfig().getPropertyNamingStrategy()).isSameAs(strategy); diff --git a/spring-web/src/test/java/org/springframework/http/converter/json/Jackson2ObjectMapperFactoryBeanTests.java b/spring-web/src/test/java/org/springframework/http/converter/json/Jackson2ObjectMapperFactoryBeanTests.java index 1255f6e02c7..3763042f841 100644 --- a/spring-web/src/test/java/org/springframework/http/converter/json/Jackson2ObjectMapperFactoryBeanTests.java +++ b/spring-web/src/test/java/org/springframework/http/converter/json/Jackson2ObjectMapperFactoryBeanTests.java @@ -39,6 +39,7 @@ import com.fasterxml.jackson.databind.JsonSerializer; import com.fasterxml.jackson.databind.MapperFeature; import com.fasterxml.jackson.databind.Module; import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.PropertyNamingStrategies; import com.fasterxml.jackson.databind.PropertyNamingStrategy; import com.fasterxml.jackson.databind.SerializationFeature; import com.fasterxml.jackson.databind.SerializerProvider; @@ -222,7 +223,7 @@ public class Jackson2ObjectMapperFactoryBeanTests { @Test void propertyNamingStrategy() { - PropertyNamingStrategy strategy = new PropertyNamingStrategy.SnakeCaseStrategy(); + PropertyNamingStrategy strategy = new PropertyNamingStrategies.SnakeCaseStrategy(); this.factory.setPropertyNamingStrategy(strategy); this.factory.afterPropertiesSet(); diff --git a/spring-webflux/src/test/java/org/springframework/web/reactive/DispatcherHandlerErrorTests.java b/spring-webflux/src/test/java/org/springframework/web/reactive/DispatcherHandlerErrorTests.java index aab6f80d9b4..d94049d4288 100644 --- a/spring-webflux/src/test/java/org/springframework/web/reactive/DispatcherHandlerErrorTests.java +++ b/spring-webflux/src/test/java/org/springframework/web/reactive/DispatcherHandlerErrorTests.java @@ -123,7 +123,7 @@ public class DispatcherHandlerErrorTests { assertThat(response.getBodyAsString().block()).isEqualTo(""" {\ "detail":"No static resource non-existing.",\ - "instance":"\\/resources\\/non-existing",\ + "instance":"/resources/non-existing",\ "status":404,\ "title":"Not Found"}\ """); diff --git a/spring-webflux/src/test/java/org/springframework/web/reactive/result/method/annotation/RequestMappingExceptionHandlingIntegrationTests.java b/spring-webflux/src/test/java/org/springframework/web/reactive/result/method/annotation/RequestMappingExceptionHandlingIntegrationTests.java index 1ed443e7e96..1a7fc03ecaf 100644 --- a/spring-webflux/src/test/java/org/springframework/web/reactive/result/method/annotation/RequestMappingExceptionHandlingIntegrationTests.java +++ b/spring-webflux/src/test/java/org/springframework/web/reactive/result/method/annotation/RequestMappingExceptionHandlingIntegrationTests.java @@ -123,7 +123,7 @@ class RequestMappingExceptionHandlingIntegrationTests extends AbstractRequestMap .satisfies(ex -> { assertThat(ex.getStatusCode()).isEqualTo(HttpStatus.NOT_FOUND); assertThat(ex.getResponseBodyAsString()).isEqualTo("{" + - "\"instance\":\"\\/no-such-handler\"," + + "\"instance\":\"/no-such-handler\"," + "\"status\":404," + "\"title\":\"Not Found\"}"); }); @@ -139,7 +139,7 @@ class RequestMappingExceptionHandlingIntegrationTests extends AbstractRequestMap assertThat(ex.getStatusCode()).isEqualTo(HttpStatus.BAD_REQUEST); assertThat(ex.getResponseBodyAsString()).isEqualTo("{" + "\"detail\":\"Required query parameter 'q' is not present.\"," + - "\"instance\":\"\\/missing-request-parameter\"," + + "\"instance\":\"/missing-request-parameter\"," + "\"status\":400," + "\"title\":\"Bad Request\"}"); }); diff --git a/spring-webflux/src/test/java/org/springframework/web/reactive/result/method/annotation/ResponseBodyResultHandlerTests.java b/spring-webflux/src/test/java/org/springframework/web/reactive/result/method/annotation/ResponseBodyResultHandlerTests.java index 714c5cdbdc3..17fa500d6f2 100644 --- a/spring-webflux/src/test/java/org/springframework/web/reactive/result/method/annotation/ResponseBodyResultHandlerTests.java +++ b/spring-webflux/src/test/java/org/springframework/web/reactive/result/method/annotation/ResponseBodyResultHandlerTests.java @@ -151,7 +151,7 @@ class ResponseBodyResultHandlerTests { assertResponseBody(exchange,""" {\ "status":400,\ - "instance":"\\/path",\ + "instance":"/path",\ "title":"Bad Request"\ }"""); } diff --git a/spring-webflux/src/test/java/org/springframework/web/reactive/result/method/annotation/ResponseEntityResultHandlerTests.java b/spring-webflux/src/test/java/org/springframework/web/reactive/result/method/annotation/ResponseEntityResultHandlerTests.java index 9c3932fbb6d..98a31e66a0a 100644 --- a/spring-webflux/src/test/java/org/springframework/web/reactive/result/method/annotation/ResponseEntityResultHandlerTests.java +++ b/spring-webflux/src/test/java/org/springframework/web/reactive/result/method/annotation/ResponseEntityResultHandlerTests.java @@ -242,7 +242,7 @@ class ResponseEntityResultHandlerTests { assertThat(exchange.getResponse().getHeaders().getContentType()).isEqualTo(MediaType.APPLICATION_PROBLEM_JSON); assertResponseBody(exchange,""" {\ - "instance":"\\/path",\ + "instance":"/path",\ "status":400,\ "title":"Bad Request"\ }"""); @@ -262,7 +262,7 @@ class ResponseEntityResultHandlerTests { assertThat(exchange.getResponse().getHeaders().getContentType()).isEqualTo(MediaType.APPLICATION_PROBLEM_JSON); assertResponseBody(exchange,""" {\ - "instance":"\\/path",\ + "instance":"/path",\ "status":400,\ "title":"Bad Request"\ }"""); diff --git a/spring-webmvc/src/test/java/org/springframework/web/servlet/resource/ResourceHttpRequestHandlerIntegrationTests.java b/spring-webmvc/src/test/java/org/springframework/web/servlet/resource/ResourceHttpRequestHandlerIntegrationTests.java index 39cc11763f7..4fcdab8d061 100644 --- a/spring-webmvc/src/test/java/org/springframework/web/servlet/resource/ResourceHttpRequestHandlerIntegrationTests.java +++ b/spring-webmvc/src/test/java/org/springframework/web/servlet/resource/ResourceHttpRequestHandlerIntegrationTests.java @@ -142,7 +142,7 @@ class ResourceHttpRequestHandlerIntegrationTests { assertThat(response.getContentAsString()).isEqualTo(""" {\ "detail":"No static resource non-existing.",\ - "instance":"\\/cp\\/non-existing",\ + "instance":"/cp/non-existing",\ "status":404,\ "title":"Not Found"\ }\