Skip to content

Commit 2ddb1a6

Browse files
committed
Apply code review feedback
* Remove `Jackson3` suffix from deserializer/serializer classes * Copy `DEFAULT_TRUSTED_PACKAGES` from `JacksonJsonUtils` for future deprecation * Inline dedicated method and constants in test Signed-off-by: Jooyoung Pyoung <[email protected]>
1 parent 2cb1597 commit 2ddb1a6

File tree

10 files changed

+75
-53
lines changed

10 files changed

+75
-53
lines changed
Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright 2017-present the original author or authors.
2+
* Copyright 2025-present the original author or authors.
33
*
44
* Licensed under the Apache License, Version 2.0 (the "License");
55
* you may not use this file except in compliance with the License.
@@ -25,22 +25,23 @@
2525
import org.springframework.messaging.Message;
2626

2727
/**
28-
* The {@link MessageJackson3Deserializer} implementation for the {@link AdviceMessage}.
28+
* The {@link MessageJsonDeserializer} implementation for the {@link AdviceMessage}.
2929
*
3030
* @author Jooyoung Pyoung
3131
*
3232
* @since 7.0
3333
*/
34-
public class AdviceMessageJackson3Deserializer extends MessageJackson3Deserializer<AdviceMessage<?>> {
34+
public class AdviceMessageJsonDeserializer extends MessageJsonDeserializer<AdviceMessage<?>> {
3535

3636
@SuppressWarnings("unchecked")
37-
public AdviceMessageJackson3Deserializer() {
37+
public AdviceMessageJsonDeserializer() {
3838
super((Class<AdviceMessage<?>>) (Class<?>) AdviceMessage.class);
3939
}
4040

4141
@Override
4242
protected AdviceMessage<?> buildMessage(MutableMessageHeaders headers, Object payload, JsonNode root,
4343
DeserializationContext ctxt) throws JacksonException {
44+
4445
Message<?> inputMessage = getMapper().readValue(root.get("inputMessage").traverse(ctxt), Message.class);
4546
return new AdviceMessage<>(payload, headers, inputMessage);
4647
}
Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright 2017-present the original author or authors.
2+
* Copyright 2025-present the original author or authors.
33
*
44
* Licensed under the Apache License, Version 2.0 (the "License");
55
* you may not use this file except in compliance with the License.
@@ -26,23 +26,24 @@
2626
import org.springframework.messaging.support.ErrorMessage;
2727

2828
/**
29-
* The {@link MessageJackson3Deserializer} implementation for the {@link ErrorMessage}.
29+
* The {@link MessageJsonDeserializer} implementation for the {@link ErrorMessage}.
3030
*
3131
* @author Jooyoung Pyoung
3232
*
3333
* @since 7.0
3434
*/
35-
public class ErrorMessageJackson3Deserializer extends MessageJackson3Deserializer<ErrorMessage> {
35+
public class ErrorMessageJsonDeserializer extends MessageJsonDeserializer<ErrorMessage> {
3636

3737
@SuppressWarnings("this-escape")
38-
public ErrorMessageJackson3Deserializer() {
38+
public ErrorMessageJsonDeserializer() {
3939
super(ErrorMessage.class);
4040
setPayloadType(TypeFactory.createDefaultInstance().constructType(Throwable.class));
4141
}
4242

4343
@Override
4444
protected ErrorMessage buildMessage(MutableMessageHeaders headers, Object payload, JsonNode root,
4545
DeserializationContext ctxt) throws JacksonException {
46+
4647
Message<?> originalMessage = getMapper().readValue(root.get("originalMessage").traverse(ctxt), Message.class);
4748
return new ErrorMessage((Throwable) payload, headers, originalMessage);
4849
}
Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright 2017-present the original author or authors.
2+
* Copyright 2025-present the original author or authors.
33
*
44
* Licensed under the Apache License, Version 2.0 (the "License");
55
* you may not use this file except in compliance with the License.
@@ -24,23 +24,24 @@
2424
import org.springframework.messaging.support.GenericMessage;
2525

2626
/**
27-
* The {@link MessageJackson3Deserializer} implementation for the {@link GenericMessage}.
27+
* The {@link MessageJsonDeserializer} implementation for the {@link GenericMessage}.
2828
*
2929
* @author Jooyoung Pyoung
3030
*
3131
* @since 7.0
3232
*/
33-
public class GenericMessageJackson3Deserializer extends MessageJackson3Deserializer<GenericMessage<?>> {
33+
public class GenericMessageJsonDeserializer extends MessageJsonDeserializer<GenericMessage<?>> {
3434

3535
@SuppressWarnings("unchecked")
36-
public GenericMessageJackson3Deserializer() {
36+
public GenericMessageJsonDeserializer() {
3737
super((Class<GenericMessage<?>>) (Class<?>) GenericMessage.class);
3838
}
3939

4040
@Override
4141
protected GenericMessage<?> buildMessage(MutableMessageHeaders headers, Object payload, JsonNode root,
4242
DeserializationContext ctxt) throws JacksonException {
43-
return new GenericMessage<Object>(payload, headers);
43+
44+
return new GenericMessage<>(payload, headers);
4445
}
4546

4647
}

spring-integration-core/src/main/java/org/springframework/integration/support/json/JacksonJsonUtils.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -146,9 +146,9 @@ private static final class AllowListTypeResolverBuilder extends ObjectMapper.Def
146146

147147
@Override
148148
protected TypeIdResolver idResolver(MapperConfig<?> config,
149-
JavaType baseType,
150-
PolymorphicTypeValidator subtypeValidator,
151-
Collection<NamedType> subtypes, boolean forSer, boolean forDeser) {
149+
JavaType baseType,
150+
PolymorphicTypeValidator subtypeValidator,
151+
Collection<NamedType> subtypes, boolean forSer, boolean forDeser) {
152152

153153
TypeIdResolver result = super.idResolver(config, baseType, subtypeValidator, subtypes, forSer, forDeser);
154154
return new AllowListTypeIdResolver(result, this.trustedPackages);
@@ -168,7 +168,7 @@ private static final class AllowListTypeIdResolver implements TypeIdResolver {
168168

169169
private final TypeIdResolver delegate;
170170

171-
private final Set<String> trustedPackages = new LinkedHashSet<>(JacksonJsonUtils.DEFAULT_TRUSTED_PACKAGES);
171+
private final Set<String> trustedPackages = new LinkedHashSet<>(DEFAULT_TRUSTED_PACKAGES);
172172

173173
AllowListTypeIdResolver(TypeIdResolver delegate, String... trustedPackages) {
174174
this.delegate = delegate;

spring-integration-core/src/main/java/org/springframework/integration/support/json/JacksonMessagingUtils.java

Lines changed: 23 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
import java.util.Arrays;
2121
import java.util.Collection;
2222
import java.util.LinkedHashSet;
23+
import java.util.List;
2324
import java.util.Set;
2425

2526
import com.fasterxml.jackson.annotation.JsonTypeInfo;
@@ -53,6 +54,21 @@
5354
*/
5455
public final class JacksonMessagingUtils {
5556

57+
/**
58+
* The packages to trust on JSON deserialization by default.
59+
*/
60+
public static final List<String> DEFAULT_TRUSTED_PACKAGES =
61+
List.of(
62+
"java.util",
63+
"java.lang",
64+
"org.springframework.messaging.support",
65+
"org.springframework.integration.support",
66+
"org.springframework.integration.message",
67+
"org.springframework.integration.store",
68+
"org.springframework.integration.history",
69+
"org.springframework.integration.handler"
70+
);
71+
5672
private JacksonMessagingUtils() {
5773
}
5874

@@ -67,14 +83,14 @@ private JacksonMessagingUtils() {
6783
*/
6884
public static ObjectMapper messagingAwareMapper(String... trustedPackages) {
6985
if (JacksonPresent.isJackson3Present()) {
70-
GenericMessageJackson3Deserializer genericMessageDeserializer = new GenericMessageJackson3Deserializer();
71-
ErrorMessageJackson3Deserializer errorMessageDeserializer = new ErrorMessageJackson3Deserializer();
72-
AdviceMessageJackson3Deserializer adviceMessageDeserializer = new AdviceMessageJackson3Deserializer();
73-
MutableMessageJackson3Deserializer mutableMessageDeserializer = new MutableMessageJackson3Deserializer();
86+
GenericMessageJsonDeserializer genericMessageDeserializer = new GenericMessageJsonDeserializer();
87+
ErrorMessageJsonDeserializer errorMessageDeserializer = new ErrorMessageJsonDeserializer();
88+
AdviceMessageJsonDeserializer adviceMessageDeserializer = new AdviceMessageJsonDeserializer();
89+
MutableMessageJsonDeserializer mutableMessageDeserializer = new MutableMessageJsonDeserializer();
7490

7591
SimpleModule simpleModule = new SimpleModule()
76-
.addSerializer(new MessageHeadersJackson3Serializer())
77-
.addSerializer(new MimeTypeJackson3Serializer())
92+
.addSerializer(new MessageHeadersJsonSerializer())
93+
.addSerializer(new MimeTypeJsonSerializer())
7894
.addDeserializer(GenericMessage.class, genericMessageDeserializer)
7995
.addDeserializer(ErrorMessage.class, errorMessageDeserializer)
8096
.addDeserializer(AdviceMessage.class, adviceMessageDeserializer)
@@ -143,7 +159,7 @@ private static final class AllowListTypeIdResolver implements TypeIdResolver {
143159

144160
private final TypeIdResolver delegate;
145161

146-
private final Set<String> trustedPackages = new LinkedHashSet<>(JacksonJsonUtils.DEFAULT_TRUSTED_PACKAGES);
162+
private final Set<String> trustedPackages = new LinkedHashSet<>(DEFAULT_TRUSTED_PACKAGES);
147163

148164
AllowListTypeIdResolver(TypeIdResolver delegate, String... trustedPackages) {
149165
this.delegate = delegate;
Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright 2017-present the original author or authors.
2+
* Copyright 2025-present the original author or authors.
33
*
44
* Licensed under the Apache License, Version 2.0 (the "License");
55
* you may not use this file except in compliance with the License.
@@ -37,14 +37,16 @@
3737
*
3838
* @since 7.0
3939
*/
40-
public class MessageHeadersJackson3Serializer extends StdSerializer<MessageHeaders> {
40+
public class MessageHeadersJsonSerializer extends StdSerializer<MessageHeaders> {
4141

42-
public MessageHeadersJackson3Serializer() {
42+
public MessageHeadersJsonSerializer() {
4343
super(MessageHeaders.class);
4444
}
4545

4646
@Override
47-
public void serializeWithType(MessageHeaders value, JsonGenerator gen, SerializationContext ctxt, TypeSerializer typeSer) throws JacksonException {
47+
public void serializeWithType(MessageHeaders value, JsonGenerator gen, SerializationContext ctxt,
48+
TypeSerializer typeSer) throws JacksonException {
49+
4850
serialize(value, gen, ctxt);
4951
}
5052

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright 2017-present the original author or authors.
2+
* Copyright 2025-present the original author or authors.
33
*
44
* Licensed under the Apache License, Version 2.0 (the "License");
55
* you may not use this file except in compliance with the License.
@@ -42,13 +42,13 @@
4242
*
4343
* @since 7.0
4444
*/
45-
public abstract class MessageJackson3Deserializer<T extends Message<?>> extends StdNodeBasedDeserializer<T> {
45+
public abstract class MessageJsonDeserializer<T extends Message<?>> extends StdNodeBasedDeserializer<T> {
4646

4747
private JavaType payloadType = TypeFactory.createDefaultInstance().constructType(Object.class);
4848

4949
private ObjectMapper mapper = new ObjectMapper();
5050

51-
protected MessageJackson3Deserializer(Class<T> targetType) {
51+
protected MessageJsonDeserializer(Class<T> targetType) {
5252
super(targetType);
5353
}
5454

@@ -76,7 +76,7 @@ public Object deserializeWithType(JsonParser jp, DeserializationContext ctxt, Ty
7676
@Override
7777
public T convert(JsonNode root, DeserializationContext ctxt) throws JacksonException {
7878
Map<String, Object> headers = this.mapper.readValue(root.get("headers").traverse(ctxt),
79-
TypeFactory.createDefaultInstance().constructMapType(HashMap.class, String.class, Object.class));
79+
this.mapper.getTypeFactory().constructMapType(HashMap.class, String.class, Object.class));
8080
Object payload = this.mapper.readValue(root.get("payload").traverse(ctxt), this.payloadType);
8181
return buildMessage(new MutableMessageHeaders(headers), payload, root, ctxt);
8282
}
Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright 2020-present the original author or authors.
2+
* Copyright 2025-present the original author or authors.
33
*
44
* Licensed under the Apache License, Version 2.0 (the "License");
55
* you may not use this file except in compliance with the License.
@@ -32,14 +32,16 @@
3232
*
3333
* @since 7.0
3434
*/
35-
public class MimeTypeJackson3Serializer extends StdSerializer<MimeType> {
35+
public class MimeTypeJsonSerializer extends StdSerializer<MimeType> {
3636

37-
public MimeTypeJackson3Serializer() {
37+
public MimeTypeJsonSerializer() {
3838
super(MimeType.class);
3939
}
4040

4141
@Override
42-
public void serializeWithType(MimeType value, JsonGenerator gen, SerializationContext ctxt, TypeSerializer typeSer) throws JacksonException {
42+
public void serializeWithType(MimeType value, JsonGenerator gen, SerializationContext ctxt,
43+
TypeSerializer typeSer) throws JacksonException {
44+
4345
serialize(value, gen, ctxt);
4446
}
4547

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright 2017-present the original author or authors.
2+
* Copyright 2025-present the original author or authors.
33
*
44
* Licensed under the Apache License, Version 2.0 (the "License");
55
* you may not use this file except in compliance with the License.
@@ -24,23 +24,24 @@
2424
import org.springframework.integration.support.MutableMessageHeaders;
2525

2626
/**
27-
* The {@link MessageJackson3Deserializer} implementation for the {@link MutableMessage}.
27+
* The {@link MessageJsonDeserializer} implementation for the {@link MutableMessage}.
2828
*
2929
* @author Jooyoung Pyoung
3030
*
3131
* @since 7.0
3232
*/
33-
public class MutableMessageJackson3Deserializer extends MessageJackson3Deserializer<MutableMessage<?>> {
33+
public class MutableMessageJsonDeserializer extends MessageJsonDeserializer<MutableMessage<?>> {
3434

3535
@SuppressWarnings("unchecked")
36-
public MutableMessageJackson3Deserializer() {
36+
public MutableMessageJsonDeserializer() {
3737
super((Class<MutableMessage<?>>) (Class<?>) MutableMessage.class);
3838
}
3939

4040
@Override
4141
protected MutableMessage<?> buildMessage(MutableMessageHeaders headers, Object payload, JsonNode root,
4242
DeserializationContext ctxt) throws JacksonException {
43-
return new MutableMessage<Object>(payload, headers);
43+
44+
return new MutableMessage<>(payload, headers);
4445
}
4546

4647
}

spring-integration-core/src/test/java/org/springframework/integration/support/json/JacksonMessagingUtilsTests.java

Lines changed: 10 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616

1717
package org.springframework.integration.support.json;
1818

19+
import java.util.Arrays;
1920
import java.util.Collection;
2021
import java.util.List;
2122
import java.util.Set;
@@ -44,10 +45,6 @@
4445
*/
4546
class JacksonMessagingUtilsTests {
4647

47-
private static final JacksonModule JODA_MODULE = new JodaModule();
48-
49-
private static final JacksonModule KOTLIN_MODULE = new KotlinModule.Builder().build();
50-
5148
private ObjectMapper mapper;
5249

5350
@BeforeEach
@@ -56,11 +53,16 @@ void setUp() {
5653
}
5754

5855
@Test
59-
void shouldAutoDiscoverAllWellKnownModules() {
60-
Set<String> collectedModuleNames = getModuleNames(collectWellKnownModulesIfAvailable());
56+
void shouldIncludeWellKnownModules() {
57+
List<JacksonModule> wellKnownModules = Arrays.asList(
58+
new JodaModule(),
59+
new KotlinModule.Builder().build()
60+
);
61+
62+
Set<String> wellKnownModuleNames = getModuleNames(wellKnownModules);
63+
Set<String> registeredModuleNames = getModuleNames(mapper.getRegisteredModules());
6164

62-
Set<String> autoModuleNames = getModuleNames(mapper.getRegisteredModules());
63-
assertThat(autoModuleNames).containsAll(collectedModuleNames);
65+
assertThat(registeredModuleNames).containsAll(wellKnownModuleNames);
6466
}
6567

6668
@Test
@@ -138,8 +140,4 @@ private Set<String> getModuleNames(Collection<JacksonModule> modules) {
138140
.collect(Collectors.toUnmodifiableSet());
139141
}
140142

141-
private List<JacksonModule> collectWellKnownModulesIfAvailable() {
142-
return List.of(JODA_MODULE, KOTLIN_MODULE);
143-
}
144-
145143
}

0 commit comments

Comments
 (0)