Skip to content

Commit 5f767a8

Browse files
committed
Always invoke Jackson serialization with AtomicReference cause
Issue: SPR-15760
1 parent 8359201 commit 5f767a8

File tree

2 files changed

+11
-25
lines changed

2 files changed

+11
-25
lines changed

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

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -146,9 +146,6 @@ protected boolean canConvertFrom(Message<?> message, @Nullable Class<?> targetCl
146146
return false;
147147
}
148148
JavaType javaType = this.objectMapper.constructType(targetClass);
149-
if (!logger.isWarnEnabled()) {
150-
return this.objectMapper.canDeserialize(javaType);
151-
}
152149
AtomicReference<Throwable> causeRef = new AtomicReference<>();
153150
if (this.objectMapper.canDeserialize(javaType, causeRef)) {
154151
return true;
@@ -162,9 +159,6 @@ protected boolean canConvertTo(Object payload, @Nullable MessageHeaders headers)
162159
if (!supportsMimeType(headers)) {
163160
return false;
164161
}
165-
if (!logger.isWarnEnabled()) {
166-
return this.objectMapper.canSerialize(payload.getClass());
167-
}
168162
AtomicReference<Throwable> causeRef = new AtomicReference<>();
169163
if (this.objectMapper.canSerialize(payload.getClass(), causeRef)) {
170164
return true;

spring-web/src/main/java/org/springframework/http/converter/json/AbstractJackson2HttpMessageConverter.java

Lines changed: 11 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,8 @@
2020
import java.lang.reflect.Type;
2121
import java.nio.charset.Charset;
2222
import java.nio.charset.StandardCharsets;
23+
import java.util.Arrays;
24+
import java.util.Collections;
2325
import java.util.concurrent.atomic.AtomicReference;
2426

2527
import com.fasterxml.jackson.core.JsonEncoding;
@@ -79,25 +81,21 @@ public abstract class AbstractJackson2HttpMessageConverter extends AbstractGener
7981

8082

8183
protected AbstractJackson2HttpMessageConverter(ObjectMapper objectMapper) {
82-
init(objectMapper);
84+
this.objectMapper = objectMapper;
85+
setDefaultCharset(DEFAULT_CHARSET);
86+
DefaultPrettyPrinter prettyPrinter = new DefaultPrettyPrinter();
87+
prettyPrinter.indentObjectsWith(new DefaultIndenter(" ", "\ndata:"));
88+
this.ssePrettyPrinter = prettyPrinter;
8389
}
8490

8591
protected AbstractJackson2HttpMessageConverter(ObjectMapper objectMapper, MediaType supportedMediaType) {
86-
super(supportedMediaType);
87-
init(objectMapper);
92+
this(objectMapper);
93+
setSupportedMediaTypes(Collections.singletonList(supportedMediaType));
8894
}
8995

9096
protected AbstractJackson2HttpMessageConverter(ObjectMapper objectMapper, MediaType... supportedMediaTypes) {
91-
super(supportedMediaTypes);
92-
init(objectMapper);
93-
}
94-
95-
protected void init(ObjectMapper objectMapper) {
96-
this.objectMapper = objectMapper;
97-
setDefaultCharset(DEFAULT_CHARSET);
98-
DefaultPrettyPrinter prettyPrinter = new DefaultPrettyPrinter();
99-
prettyPrinter.indentObjectsWith(new DefaultIndenter(" ", "\ndata:"));
100-
this.ssePrettyPrinter = prettyPrinter;
97+
this(objectMapper);
98+
setSupportedMediaTypes(Arrays.asList(supportedMediaTypes));
10199
}
102100

103101

@@ -158,9 +156,6 @@ public boolean canRead(Type type, @Nullable Class<?> contextClass, @Nullable Med
158156
return false;
159157
}
160158
JavaType javaType = getJavaType(type, contextClass);
161-
if (!logger.isWarnEnabled()) {
162-
return this.objectMapper.canDeserialize(javaType);
163-
}
164159
AtomicReference<Throwable> causeRef = new AtomicReference<>();
165160
if (this.objectMapper.canDeserialize(javaType, causeRef)) {
166161
return true;
@@ -174,9 +169,6 @@ public boolean canWrite(Class<?> clazz, @Nullable MediaType mediaType) {
174169
if (!canWrite(mediaType)) {
175170
return false;
176171
}
177-
if (!logger.isWarnEnabled()) {
178-
return this.objectMapper.canSerialize(clazz);
179-
}
180172
AtomicReference<Throwable> causeRef = new AtomicReference<>();
181173
if (this.objectMapper.canSerialize(clazz, causeRef)) {
182174
return true;

0 commit comments

Comments
 (0)