Skip to content

Commit 0389e3e

Browse files
committed
Revert "Use JsonMapper instead of ObjectMapper when relevant"
This reverts commit d115f36. See gh-35282
1 parent 49b28be commit 0389e3e

File tree

17 files changed

+105
-94
lines changed

17 files changed

+105
-94
lines changed

spring-jms/src/main/java/org/springframework/jms/support/converter/JacksonJsonMessageConverter.java

Lines changed: 17 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@
3232
import jakarta.jms.TextMessage;
3333
import org.jspecify.annotations.Nullable;
3434
import tools.jackson.databind.JavaType;
35+
import tools.jackson.databind.ObjectMapper;
3536
import tools.jackson.databind.ObjectWriter;
3637
import tools.jackson.databind.cfg.MapperBuilder;
3738
import tools.jackson.databind.json.JsonMapper;
@@ -62,7 +63,7 @@ public class JacksonJsonMessageConverter implements SmartMessageConverter, BeanC
6263
public static final String DEFAULT_ENCODING = "UTF-8";
6364

6465

65-
private final JsonMapper jsonMapper;
66+
private final ObjectMapper objectMapper;
6667

6768
private MessageType targetType = MessageType.BYTES;
6869

@@ -85,17 +86,17 @@ public class JacksonJsonMessageConverter implements SmartMessageConverter, BeanC
8586
* {@link MapperBuilder#findModules(ClassLoader)}.
8687
*/
8788
public JacksonJsonMessageConverter() {
88-
this.jsonMapper = JsonMapper.builder().findAndAddModules(JacksonJsonMessageConverter.class.getClassLoader()).build();
89+
this.objectMapper = JsonMapper.builder().findAndAddModules(JacksonJsonMessageConverter.class.getClassLoader()).build();
8990
}
9091

9192
/**
92-
* Construct a new instance with the provided {@link JsonMapper}.
93+
* Construct a new instance with the provided {@link ObjectMapper}.
9394
* @see JsonMapper#builder()
9495
* @see MapperBuilder#findModules(ClassLoader)
9596
*/
96-
public JacksonJsonMessageConverter(JsonMapper jsonMapper) {
97-
Assert.notNull(jsonMapper, "JsonMapper must not be null");
98-
this.jsonMapper = jsonMapper;
97+
public JacksonJsonMessageConverter(ObjectMapper objectMapper) {
98+
Assert.notNull(objectMapper, "ObjectMapper must not be null");
99+
this.objectMapper = objectMapper;
99100
}
100101

101102
/**
@@ -172,9 +173,9 @@ public Message toMessage(Object object, Session session) throws JMSException, Me
172173
Message message;
173174
try {
174175
message = switch (this.targetType) {
175-
case TEXT -> mapToTextMessage(object, session, this.jsonMapper.writer());
176-
case BYTES -> mapToBytesMessage(object, session, this.jsonMapper.writer());
177-
default -> mapToMessage(object, session, this.jsonMapper.writer(), this.targetType);
176+
case TEXT -> mapToTextMessage(object, session, this.objectMapper.writer());
177+
case BYTES -> mapToBytesMessage(object, session, this.objectMapper.writer());
178+
default -> mapToMessage(object, session, this.objectMapper.writer(), this.targetType);
178179
};
179180
}
180181
catch (IOException ex) {
@@ -205,10 +206,10 @@ public Message toMessage(Object object, Session session, @Nullable Class<?> json
205206
throws JMSException, MessageConversionException {
206207

207208
if (jsonView != null) {
208-
return toMessage(object, session, this.jsonMapper.writerWithView(jsonView));
209+
return toMessage(object, session, this.objectMapper.writerWithView(jsonView));
209210
}
210211
else {
211-
return toMessage(object, session, this.jsonMapper.writer());
212+
return toMessage(object, session, this.objectMapper.writer());
212213
}
213214
}
214215

@@ -362,7 +363,7 @@ protected Object convertFromTextMessage(TextMessage message, JavaType targetJava
362363
throws JMSException, IOException {
363364

364365
String body = message.getText();
365-
return this.jsonMapper.readValue(body, targetJavaType);
366+
return this.objectMapper.readValue(body, targetJavaType);
366367
}
367368

368369
/**
@@ -385,15 +386,15 @@ protected Object convertFromBytesMessage(BytesMessage message, JavaType targetJa
385386
if (encoding != null) {
386387
try {
387388
String body = new String(bytes, encoding);
388-
return this.jsonMapper.readValue(body, targetJavaType);
389+
return this.objectMapper.readValue(body, targetJavaType);
389390
}
390391
catch (UnsupportedEncodingException ex) {
391392
throw new MessageConversionException("Cannot convert bytes to String", ex);
392393
}
393394
}
394395
else {
395396
// Jackson internally performs encoding detection, falling back to UTF-8.
396-
return this.jsonMapper.readValue(bytes, targetJavaType);
397+
return this.objectMapper.readValue(bytes, targetJavaType);
397398
}
398399
}
399400

@@ -436,11 +437,11 @@ protected JavaType getJavaTypeForMessage(Message message) throws JMSException {
436437
}
437438
Class<?> mappedClass = this.idClassMappings.get(typeId);
438439
if (mappedClass != null) {
439-
return this.jsonMapper.constructType(mappedClass);
440+
return this.objectMapper.constructType(mappedClass);
440441
}
441442
try {
442443
Class<?> typeClass = ClassUtils.forName(typeId, this.beanClassLoader);
443-
return this.jsonMapper.constructType(typeClass);
444+
return this.objectMapper.constructType(typeClass);
444445
}
445446
catch (Throwable ex) {
446447
throw new MessageConversionException("Failed to resolve type id [" + typeId + "]", ex);

spring-messaging/src/main/java/org/springframework/messaging/converter/JacksonJsonMessageConverter.java

Lines changed: 23 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
import tools.jackson.core.JsonEncoding;
2828
import tools.jackson.core.JsonGenerator;
2929
import tools.jackson.databind.JavaType;
30+
import tools.jackson.databind.ObjectMapper;
3031
import tools.jackson.databind.cfg.MapperBuilder;
3132
import tools.jackson.databind.json.JsonMapper;
3233

@@ -51,7 +52,7 @@ public class JacksonJsonMessageConverter extends AbstractMessageConverter {
5152
private static final MimeType[] DEFAULT_MIME_TYPES = new MimeType[] {
5253
new MimeType("application", "json"), new MimeType("application", "*+json")};
5354

54-
private final JsonMapper jsonMapper;
55+
private final ObjectMapper objectMapper;
5556

5657

5758
/**
@@ -72,35 +73,35 @@ public JacksonJsonMessageConverter() {
7273
*/
7374
public JacksonJsonMessageConverter(MimeType... supportedMimeTypes) {
7475
super(supportedMimeTypes);
75-
this.jsonMapper = JsonMapper.builder().findAndAddModules(JacksonJsonMessageConverter.class.getClassLoader()).build();
76+
this.objectMapper = JsonMapper.builder().findAndAddModules(JacksonJsonMessageConverter.class.getClassLoader()).build();
7677
}
7778

7879
/**
79-
* Construct a new instance with the provided {@link JsonMapper}.
80+
* Construct a new instance with the provided {@link ObjectMapper}.
8081
* @see JsonMapper#builder()
8182
* @see MapperBuilder#findModules(ClassLoader)
8283
*/
83-
public JacksonJsonMessageConverter(JsonMapper jsonMapper) {
84-
this(jsonMapper, DEFAULT_MIME_TYPES);
84+
public JacksonJsonMessageConverter(ObjectMapper objectMapper) {
85+
this(objectMapper, DEFAULT_MIME_TYPES);
8586
}
8687

8788
/**
88-
* Construct a new instance with the provided {@link JsonMapper} and the
89+
* Construct a new instance with the provided {@link ObjectMapper} and the
8990
* provided {@link MimeType}s.
9091
* @see JsonMapper#builder()
9192
* @see MapperBuilder#findModules(ClassLoader)
9293
*/
93-
public JacksonJsonMessageConverter(JsonMapper jsonMapper, MimeType... supportedMimeTypes) {
94+
public JacksonJsonMessageConverter(ObjectMapper objectMapper, MimeType... supportedMimeTypes) {
9495
super(supportedMimeTypes);
95-
Assert.notNull(jsonMapper, "JsonMapper must not be null");
96-
this.jsonMapper = jsonMapper;
96+
Assert.notNull(objectMapper, "ObjectMapper must not be null");
97+
this.objectMapper = objectMapper;
9798
}
9899

99100
/**
100-
* Return the underlying {@code JsonMapper} for this converter.
101+
* Return the underlying {@code ObjectMapper} for this converter.
101102
*/
102-
protected JsonMapper getJsonMapper() {
103-
return this.jsonMapper;
103+
protected ObjectMapper getObjectMapper() {
104+
return this.objectMapper;
104105
}
105106

106107
@Override
@@ -121,7 +122,7 @@ protected boolean supports(Class<?> clazz) {
121122

122123
@Override
123124
protected @Nullable Object convertFromInternal(Message<?> message, Class<?> targetClass, @Nullable Object conversionHint) {
124-
JavaType javaType = this.jsonMapper.constructType(getResolvedType(targetClass, conversionHint));
125+
JavaType javaType = this.objectMapper.constructType(getResolvedType(targetClass, conversionHint));
125126
Object payload = message.getPayload();
126127
Class<?> view = getSerializationView(conversionHint);
127128
try {
@@ -130,19 +131,19 @@ protected boolean supports(Class<?> clazz) {
130131
}
131132
else if (payload instanceof byte[] bytes) {
132133
if (view != null) {
133-
return this.jsonMapper.readerWithView(view).forType(javaType).readValue(bytes);
134+
return this.objectMapper.readerWithView(view).forType(javaType).readValue(bytes);
134135
}
135136
else {
136-
return this.jsonMapper.readValue(bytes, javaType);
137+
return this.objectMapper.readValue(bytes, javaType);
137138
}
138139
}
139140
else {
140141
// Assuming a text-based source payload
141142
if (view != null) {
142-
return this.jsonMapper.readerWithView(view).forType(javaType).readValue(payload.toString());
143+
return this.objectMapper.readerWithView(view).forType(javaType).readValue(payload.toString());
143144
}
144145
else {
145-
return this.jsonMapper.readValue(payload.toString(), javaType);
146+
return this.objectMapper.readValue(payload.toString(), javaType);
146147
}
147148
}
148149
}
@@ -160,12 +161,12 @@ else if (payload instanceof byte[] bytes) {
160161
if (byte[].class == getSerializedPayloadClass()) {
161162
ByteArrayOutputStream out = new ByteArrayOutputStream(1024);
162163
JsonEncoding encoding = getJsonEncoding(getMimeType(headers));
163-
try (JsonGenerator generator = this.jsonMapper.createGenerator(out, encoding)) {
164+
try (JsonGenerator generator = this.objectMapper.createGenerator(out, encoding)) {
164165
if (view != null) {
165-
this.jsonMapper.writerWithView(view).writeValue(generator, payload);
166+
this.objectMapper.writerWithView(view).writeValue(generator, payload);
166167
}
167168
else {
168-
this.jsonMapper.writeValue(generator, payload);
169+
this.objectMapper.writeValue(generator, payload);
169170
}
170171
payload = out.toByteArray();
171172
}
@@ -174,10 +175,10 @@ else if (payload instanceof byte[] bytes) {
174175
// Assuming a text-based target payload
175176
Writer writer = new StringWriter(1024);
176177
if (view != null) {
177-
this.jsonMapper.writerWithView(view).writeValue(writer, payload);
178+
this.objectMapper.writerWithView(view).writeValue(writer, payload);
178179
}
179180
else {
180-
this.jsonMapper.writeValue(writer, payload);
181+
this.objectMapper.writeValue(writer, payload);
181182
}
182183
payload = writer.toString();
183184
}

spring-test/src/test/java/org/springframework/test/json/AbstractJsonContentAssertTests.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@
4545
import org.skyscreamer.jsonassert.JSONCompareMode;
4646
import org.skyscreamer.jsonassert.JSONCompareResult;
4747
import org.skyscreamer.jsonassert.comparator.JSONComparator;
48-
import tools.jackson.databind.json.JsonMapper;
48+
import tools.jackson.databind.ObjectMapper;
4949

5050
import org.springframework.core.io.ByteArrayResource;
5151
import org.springframework.core.io.ClassPathResource;
@@ -86,7 +86,7 @@ class AbstractJsonContentAssertTests {
8686
private static final String DIFFERENT = loadJson("different.json");
8787

8888
private static final HttpMessageContentConverter jsonContentConverter = HttpMessageContentConverter.of(
89-
new JacksonJsonHttpMessageConverter(new JsonMapper()));
89+
new JacksonJsonHttpMessageConverter(new ObjectMapper()));
9090

9191
private static final JsonComparator comparator = JsonAssert.comparator(JsonCompareMode.LENIENT);
9292

spring-test/src/test/java/org/springframework/test/json/JsonPathValueAssertTests.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@
2727
import org.jspecify.annotations.Nullable;
2828
import org.junit.jupiter.api.Nested;
2929
import org.junit.jupiter.api.Test;
30-
import tools.jackson.databind.json.JsonMapper;
30+
import tools.jackson.databind.ObjectMapper;
3131

3232
import org.springframework.http.converter.json.JacksonJsonHttpMessageConverter;
3333
import org.springframework.test.http.HttpMessageContentConverter;
@@ -206,7 +206,7 @@ void asMapWithNullFails() {
206206
class ConvertToTests {
207207

208208
private static final HttpMessageContentConverter jsonContentConverter = HttpMessageContentConverter.of(
209-
new JacksonJsonHttpMessageConverter(new JsonMapper()));
209+
new JacksonJsonHttpMessageConverter(new ObjectMapper()));
210210

211211
@Test
212212
void convertToWithoutHttpMessageConverter() {

spring-test/src/test/java/org/springframework/test/util/JsonPathExpectationsHelperTests.java

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@
2727
import org.junit.jupiter.params.ParameterizedTest;
2828
import org.junit.jupiter.params.provider.ValueSource;
2929
import tools.jackson.databind.JavaType;
30-
import tools.jackson.databind.json.JsonMapper;
30+
import tools.jackson.databind.ObjectMapper;
3131

3232
import org.springframework.core.ParameterizedTypeReference;
3333

@@ -385,14 +385,14 @@ public record Member(String name) {}
385385
*/
386386
private static class JacksonMappingProvider implements MappingProvider {
387387

388-
private final JsonMapper jsonMapper;
388+
private final ObjectMapper objectMapper;
389389

390390
public JacksonMappingProvider() {
391-
this(new JsonMapper());
391+
this(new ObjectMapper());
392392
}
393393

394-
public JacksonMappingProvider(JsonMapper jsonMapper) {
395-
this.jsonMapper = jsonMapper;
394+
public JacksonMappingProvider(ObjectMapper objectMapper) {
395+
this.objectMapper = objectMapper;
396396
}
397397

398398

@@ -402,7 +402,7 @@ public <T> T map(Object source, Class<T> targetType, Configuration configuration
402402
return null;
403403
}
404404
try {
405-
return jsonMapper.convertValue(source, targetType);
405+
return objectMapper.convertValue(source, targetType);
406406
}
407407
catch (Exception ex) {
408408
throw new MappingException(ex);
@@ -416,10 +416,10 @@ public <T> T map(Object source, final TypeRef<T> targetType, Configuration confi
416416
if (source == null){
417417
return null;
418418
}
419-
JavaType type = jsonMapper.getTypeFactory().constructType(targetType.getType());
419+
JavaType type = objectMapper.getTypeFactory().constructType(targetType.getType());
420420

421421
try {
422-
return (T) jsonMapper.convertValue(source, type);
422+
return (T) objectMapper.convertValue(source, type);
423423
}
424424
catch (Exception ex) {
425425
throw new MappingException(ex);

spring-test/src/test/java/org/springframework/test/web/reactive/server/EncoderDecoderMappingProviderTests.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@
2222
import com.jayway.jsonpath.Configuration;
2323
import com.jayway.jsonpath.TypeRef;
2424
import org.junit.jupiter.api.Test;
25-
import tools.jackson.databind.json.JsonMapper;
25+
import tools.jackson.databind.ObjectMapper;
2626

2727
import org.springframework.http.codec.json.JacksonJsonDecoder;
2828
import org.springframework.http.codec.json.JacksonJsonEncoder;
@@ -36,10 +36,10 @@
3636
*/
3737
class EncoderDecoderMappingProviderTests {
3838

39-
private static final JsonMapper jsonMapper = new JsonMapper();
39+
private static final ObjectMapper objectMapper = new ObjectMapper();
4040

4141
private final EncoderDecoderMappingProvider mappingProvider = new EncoderDecoderMappingProvider(
42-
new JacksonJsonEncoder(jsonMapper), new JacksonJsonDecoder(jsonMapper));
42+
new JacksonJsonEncoder(objectMapper), new JacksonJsonDecoder(objectMapper));
4343

4444

4545
@Test

spring-test/src/test/java/org/springframework/test/web/reactive/server/JsonEncoderDecoderTests.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
import java.util.List;
2020

2121
import org.junit.jupiter.api.Test;
22-
import tools.jackson.databind.json.JsonMapper;
22+
import tools.jackson.databind.ObjectMapper;
2323

2424
import org.springframework.http.codec.DecoderHttpMessageReader;
2525
import org.springframework.http.codec.EncoderHttpMessageWriter;
@@ -39,13 +39,13 @@
3939
*/
4040
class JsonEncoderDecoderTests {
4141

42-
private static final JsonMapper jsonMapper = new JsonMapper();
42+
private static final ObjectMapper objectMapper = new ObjectMapper();
4343

4444
private static final HttpMessageWriter<?> jacksonMessageWriter = new EncoderHttpMessageWriter<>(
45-
new JacksonJsonEncoder(jsonMapper));
45+
new JacksonJsonEncoder(objectMapper));
4646

4747
private static final HttpMessageReader<?> jacksonMessageReader = new DecoderHttpMessageReader<>(
48-
new JacksonJsonDecoder(jsonMapper));
48+
new JacksonJsonDecoder(objectMapper));
4949

5050
@Test
5151
void fromWithEmptyWriters() {

spring-web/src/main/java/org/springframework/http/codec/json/JacksonJsonDecoder.java

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
import org.jspecify.annotations.Nullable;
2626
import org.reactivestreams.Publisher;
2727
import reactor.core.publisher.Flux;
28+
import tools.jackson.databind.ObjectMapper;
2829
import tools.jackson.databind.cfg.MapperBuilder;
2930
import tools.jackson.databind.json.JsonMapper;
3031

@@ -72,20 +73,20 @@ public JacksonJsonDecoder() {
7273
}
7374

7475
/**
75-
* Construct a new instance with the provided {@link JsonMapper}.
76+
* Construct a new instance with the provided {@link ObjectMapper}.
7677
* @see JsonMapper#builder()
7778
* @see MapperBuilder#findModules(ClassLoader)
7879
*/
79-
public JacksonJsonDecoder(JsonMapper mapper) {
80+
public JacksonJsonDecoder(ObjectMapper mapper) {
8081
this(mapper, DEFAULT_JSON_MIME_TYPES);
8182
}
8283

8384
/**
84-
* Construct a new instance with the provided {@link JsonMapper} and {@link MimeType}s.
85+
* Construct a new instance with the provided {@link ObjectMapper} and {@link MimeType}s.
8586
* @see JsonMapper#builder()
8687
* @see MapperBuilder#findModules(ClassLoader)
8788
*/
88-
public JacksonJsonDecoder(JsonMapper mapper, MimeType... mimeTypes) {
89+
public JacksonJsonDecoder(ObjectMapper mapper, MimeType... mimeTypes) {
8990
super(mapper, mimeTypes);
9091
}
9192

0 commit comments

Comments
 (0)