Use JsonMapper instead of ObjectMapper when relevant

This commit updates Jackson 3 JSON support to use JsonMapper
instead of ObjectMapper in converters, codecs and view constructors.

As a consequence, AbstractJacksonDecoder, AbstractJacksonEncoder,
AbstractJacksonHttpMessageConverter and JacksonCodecSupport are
now parameterized with <T extends ObjectMapper>.

Closes gh-35282
This commit is contained in:
Sébastien Deleuze
2025-08-22 18:39:23 +02:00
parent 8f4107953d
commit dc26aaa0ec
34 changed files with 221 additions and 230 deletions
@@ -45,7 +45,7 @@ import org.junit.jupiter.params.provider.ValueSource;
import org.skyscreamer.jsonassert.JSONCompareMode;
import org.skyscreamer.jsonassert.JSONCompareResult;
import org.skyscreamer.jsonassert.comparator.JSONComparator;
import tools.jackson.databind.ObjectMapper;
import tools.jackson.databind.json.JsonMapper;
import org.springframework.core.io.ByteArrayResource;
import org.springframework.core.io.ClassPathResource;
@@ -86,7 +86,7 @@ class AbstractJsonContentAssertTests {
private static final String DIFFERENT = loadJson("different.json");
private static final HttpMessageContentConverter jsonContentConverter = HttpMessageContentConverter.of(
new JacksonJsonHttpMessageConverter(new ObjectMapper()));
new JacksonJsonHttpMessageConverter(new JsonMapper()));
private static final JsonComparator comparator = JsonAssert.comparator(JsonCompareMode.LENIENT);
@@ -27,7 +27,7 @@ import org.assertj.core.data.Offset;
import org.jspecify.annotations.Nullable;
import org.junit.jupiter.api.Nested;
import org.junit.jupiter.api.Test;
import tools.jackson.databind.ObjectMapper;
import tools.jackson.databind.json.JsonMapper;
import org.springframework.http.converter.json.JacksonJsonHttpMessageConverter;
import org.springframework.test.http.HttpMessageContentConverter;
@@ -206,7 +206,7 @@ class JsonPathValueAssertTests {
class ConvertToTests {
private static final HttpMessageContentConverter jsonContentConverter = HttpMessageContentConverter.of(
new JacksonJsonHttpMessageConverter(new ObjectMapper()));
new JacksonJsonHttpMessageConverter(new JsonMapper()));
@Test
void convertToWithoutHttpMessageConverter() {
@@ -27,7 +27,7 @@ import org.junit.jupiter.api.Test;
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.ValueSource;
import tools.jackson.databind.JavaType;
import tools.jackson.databind.ObjectMapper;
import tools.jackson.databind.json.JsonMapper;
import org.springframework.core.ParameterizedTypeReference;
@@ -385,14 +385,14 @@ class JsonPathExpectationsHelperTests {
*/
private static class JacksonMappingProvider implements MappingProvider {
private final ObjectMapper objectMapper;
private final JsonMapper jsonMapper;
public JacksonMappingProvider() {
this(new ObjectMapper());
this(new JsonMapper());
}
public JacksonMappingProvider(ObjectMapper objectMapper) {
this.objectMapper = objectMapper;
public JacksonMappingProvider(JsonMapper jsonMapper) {
this.jsonMapper = jsonMapper;
}
@@ -402,7 +402,7 @@ class JsonPathExpectationsHelperTests {
return null;
}
try {
return objectMapper.convertValue(source, targetType);
return jsonMapper.convertValue(source, targetType);
}
catch (Exception ex) {
throw new MappingException(ex);
@@ -416,10 +416,10 @@ class JsonPathExpectationsHelperTests {
if (source == null){
return null;
}
JavaType type = objectMapper.getTypeFactory().constructType(targetType.getType());
JavaType type = jsonMapper.getTypeFactory().constructType(targetType.getType());
try {
return (T) objectMapper.convertValue(source, type);
return (T) jsonMapper.convertValue(source, type);
}
catch (Exception ex) {
throw new MappingException(ex);
@@ -22,7 +22,7 @@ import java.util.Map;
import com.jayway.jsonpath.Configuration;
import com.jayway.jsonpath.TypeRef;
import org.junit.jupiter.api.Test;
import tools.jackson.databind.ObjectMapper;
import tools.jackson.databind.json.JsonMapper;
import org.springframework.http.codec.json.JacksonJsonDecoder;
import org.springframework.http.codec.json.JacksonJsonEncoder;
@@ -36,10 +36,10 @@ import static org.assertj.core.api.Assertions.assertThat;
*/
class EncoderDecoderMappingProviderTests {
private static final ObjectMapper objectMapper = new ObjectMapper();
private static final JsonMapper jsonMapper = new JsonMapper();
private final EncoderDecoderMappingProvider mappingProvider = new EncoderDecoderMappingProvider(
new JacksonJsonEncoder(objectMapper), new JacksonJsonDecoder(objectMapper));
new JacksonJsonEncoder(jsonMapper), new JacksonJsonDecoder(jsonMapper));
@Test
@@ -19,7 +19,7 @@ package org.springframework.test.web.reactive.server;
import java.util.List;
import org.junit.jupiter.api.Test;
import tools.jackson.databind.ObjectMapper;
import tools.jackson.databind.json.JsonMapper;
import org.springframework.http.codec.DecoderHttpMessageReader;
import org.springframework.http.codec.EncoderHttpMessageWriter;
@@ -39,13 +39,13 @@ import static org.assertj.core.api.Assertions.assertThat;
*/
class JsonEncoderDecoderTests {
private static final ObjectMapper objectMapper = new ObjectMapper();
private static final JsonMapper jsonMapper = new JsonMapper();
private static final HttpMessageWriter<?> jacksonMessageWriter = new EncoderHttpMessageWriter<>(
new JacksonJsonEncoder(objectMapper));
new JacksonJsonEncoder(jsonMapper));
private static final HttpMessageReader<?> jacksonMessageReader = new DecoderHttpMessageReader<>(
new JacksonJsonDecoder(objectMapper));
new JacksonJsonDecoder(jsonMapper));
@Test
void fromWithEmptyWriters() {