From 930981bd6106264ab304510f9c592bcbaaa68ab3 Mon Sep 17 00:00:00 2001 From: Sunghyun Shin Date: Mon, 15 Jun 2026 03:02:43 +0900 Subject: [PATCH] Migrate responseBodyAdvice test to Jackson 3 converter Migrate RequestMappingHandlerAdapterTests#responseBodyAdvice from the deprecated MappingJackson2HttpMessageConverter to JacksonJsonHttpMessageConverter. The test advice now implements ResponseBodyAdvice directly and returns a map body that is written by the selected converter. This maintains the test coverage for gh-22638, verifying that a ControllerAdvice implementing both ResponseBodyAdvice and RequestBodyAdvice is not registered twice. Signed-off-by: Sunghyun Shin --- .../RequestMappingHandlerAdapterTests.java | 24 ++++++++++--------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/spring-webmvc/src/test/java/org/springframework/web/servlet/mvc/method/annotation/RequestMappingHandlerAdapterTests.java b/spring-webmvc/src/test/java/org/springframework/web/servlet/mvc/method/annotation/RequestMappingHandlerAdapterTests.java index 123168ca25ed..4a0426c58dd4 100644 --- a/spring-webmvc/src/test/java/org/springframework/web/servlet/mvc/method/annotation/RequestMappingHandlerAdapterTests.java +++ b/spring-webmvc/src/test/java/org/springframework/web/servlet/mvc/method/annotation/RequestMappingHandlerAdapterTests.java @@ -42,8 +42,7 @@ import org.springframework.http.ResponseEntity; import org.springframework.http.converter.HttpMessageConverter; import org.springframework.http.converter.StringHttpMessageConverter; -import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter; -import org.springframework.http.converter.json.MappingJacksonValue; +import org.springframework.http.converter.json.JacksonJsonHttpMessageConverter; import org.springframework.http.server.ServerHttpRequest; import org.springframework.http.server.ServerHttpResponse; import org.springframework.http.server.ServletServerHttpResponse; @@ -279,11 +278,9 @@ void modelAttributePackageNameAdvice() throws Exception { } @Test // gh-15486 - @SuppressWarnings("removal") - // TODO Migrate from MappingJackson2HttpMessageConverter and MappingJacksonValue to JacksonJsonHttpMessageConverter. void responseBodyAdvice() throws Exception { List> converters = new ArrayList<>(); - converters.add(new MappingJackson2HttpMessageConverter()); + converters.add(new JacksonJsonHttpMessageConverter()); this.handlerAdapter.setMessageConverters(converters); this.webAppContext.registerSingleton("rba", ResponseCodeSuppressingAdvice.class); @@ -455,20 +452,25 @@ public void addAttributes(Model model) { */ @ControllerAdvice private static class ResponseCodeSuppressingAdvice - extends AbstractMappingJacksonResponseBodyAdvice implements RequestBodyAdvice { + implements ResponseBodyAdvice, RequestBodyAdvice { @Override - @SuppressWarnings("removal") - protected void beforeBodyWriteInternal(MappingJacksonValue bodyContainer, MediaType contentType, - MethodParameter returnType, ServerHttpRequest request, ServerHttpResponse response) { + public boolean supports(MethodParameter returnType, Class> converterType) { + return JacksonJsonHttpMessageConverter.class.equals(converterType); + } + + @Override + public Object beforeBodyWrite(Object body, MethodParameter returnType, + MediaType contentType, Class> converterType, + ServerHttpRequest request, ServerHttpResponse response) { int status = ((ServletServerHttpResponse) response).getServletResponse().getStatus(); response.setStatusCode(HttpStatus.OK); Map map = new LinkedHashMap<>(); map.put("status", status); - map.put("message", bodyContainer.getValue()); - bodyContainer.setValue(map); + map.put("message", body); + return map; } @Override