mirror of
https://github.com/spring-projects/spring-framework.git
synced 2026-10-02 20:49:02 +00:00
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 <froggy0m0a@gmail.com>
This commit is contained in:
committed by
Brian Clozel
parent
82018e1510
commit
19fdc0b77c
+13
-11
@@ -42,8 +42,7 @@ import org.springframework.http.MediaType;
|
||||
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 @@ class RequestMappingHandlerAdapterTests {
|
||||
}
|
||||
|
||||
@Test // gh-15486
|
||||
@SuppressWarnings("removal")
|
||||
// TODO Migrate from MappingJackson2HttpMessageConverter and MappingJacksonValue to JacksonJsonHttpMessageConverter.
|
||||
void responseBodyAdvice() throws Exception {
|
||||
List<HttpMessageConverter<?>> 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 @@ class RequestMappingHandlerAdapterTests {
|
||||
*/
|
||||
@ControllerAdvice
|
||||
private static class ResponseCodeSuppressingAdvice
|
||||
extends AbstractMappingJacksonResponseBodyAdvice implements RequestBodyAdvice {
|
||||
implements ResponseBodyAdvice<Object>, RequestBodyAdvice {
|
||||
|
||||
@Override
|
||||
@SuppressWarnings("removal")
|
||||
protected void beforeBodyWriteInternal(MappingJacksonValue bodyContainer, MediaType contentType,
|
||||
MethodParameter returnType, ServerHttpRequest request, ServerHttpResponse response) {
|
||||
public boolean supports(MethodParameter returnType, Class<? extends HttpMessageConverter<?>> converterType) {
|
||||
return JacksonJsonHttpMessageConverter.class.equals(converterType);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object beforeBodyWrite(Object body, MethodParameter returnType,
|
||||
MediaType contentType, Class<? extends HttpMessageConverter<?>> converterType,
|
||||
ServerHttpRequest request, ServerHttpResponse response) {
|
||||
|
||||
int status = ((ServletServerHttpResponse) response).getServletResponse().getStatus();
|
||||
response.setStatusCode(HttpStatus.OK);
|
||||
|
||||
Map<String, Object> map = new LinkedHashMap<>();
|
||||
map.put("status", status);
|
||||
map.put("message", bodyContainer.getValue());
|
||||
bodyContainer.setValue(map);
|
||||
map.put("message", body);
|
||||
return map;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
Reference in New Issue
Block a user