diff --git a/spring-integration-core/src/main/java/org/springframework/integration/json/JacksonPropertyAccessor.java b/spring-integration-core/src/main/java/org/springframework/integration/json/JacksonPropertyAccessor.java index 17be286db63..d73e16d33ea 100644 --- a/spring-integration-core/src/main/java/org/springframework/integration/json/JacksonPropertyAccessor.java +++ b/spring-integration-core/src/main/java/org/springframework/integration/json/JacksonPropertyAccessor.java @@ -22,7 +22,6 @@ import org.jspecify.annotations.Nullable; import tools.jackson.core.JacksonException; import tools.jackson.databind.JsonNode; -import tools.jackson.databind.ObjectMapper; import tools.jackson.databind.json.JsonMapper; import tools.jackson.databind.node.ArrayNode; import tools.jackson.databind.node.NullNode; @@ -55,13 +54,13 @@ public class JacksonPropertyAccessor implements PropertyAccessor { JsonNode.class }; - private ObjectMapper objectMapper = JsonMapper.builder() + private JsonMapper jsonMapper = JsonMapper.builder() .findAndAddModules(JacksonPropertyAccessor.class.getClassLoader()) .build(); - public void setObjectMapper(ObjectMapper objectMapper) { - Assert.notNull(objectMapper, "'objectMapper' cannot be null"); - this.objectMapper = objectMapper; + public void setObjectMapper(JsonMapper jsonMapper) { + Assert.notNull(jsonMapper, "'jsonMapper' cannot be null"); + this.jsonMapper = jsonMapper; } @Override @@ -94,7 +93,7 @@ else if (target instanceof JsonNodeWrapper jsonNodeWrapper) { } else if (target instanceof String content) { try { - return this.objectMapper.readTree(content); + return this.jsonMapper.readTree(content); } catch (JacksonException e) { throw new AccessException("Exception while trying to deserialize String", e); diff --git a/spring-integration-core/src/main/java/org/springframework/integration/support/json/EmbeddedHeadersJsonMessageMapper.java b/spring-integration-core/src/main/java/org/springframework/integration/support/json/EmbeddedHeadersJsonMessageMapper.java index bdf2898125a..97377461198 100644 --- a/spring-integration-core/src/main/java/org/springframework/integration/support/json/EmbeddedHeadersJsonMessageMapper.java +++ b/spring-integration-core/src/main/java/org/springframework/integration/support/json/EmbeddedHeadersJsonMessageMapper.java @@ -29,7 +29,7 @@ import org.apache.commons.logging.LogFactory; import org.jspecify.annotations.Nullable; import tools.jackson.core.JacksonException; -import tools.jackson.databind.ObjectMapper; +import tools.jackson.databind.json.JsonMapper; import org.springframework.integration.mapping.BytesMessageMapper; import org.springframework.integration.support.MutableMessage; @@ -40,13 +40,13 @@ import org.springframework.messaging.support.GenericMessage; /** - * For outbound messages, uses a message-aware Jackson object mapper to render the message + * For outbound messages, uses a message-aware Jackson JSON mapper to render the message * as JSON. For messages with {@code byte[]} payloads, if rendered as JSON, Jackson * performs Base64 conversion on the bytes. If payload is {@code byte[]} and * the {@link #setRawBytes(boolean) rawBytes} property is true (default), the result has the form * {@code [headersLen][headers][payloadLen][payload]}; with the headers * rendered in JSON and the payload unchanged. - * Otherwise, message is fully serialized and deserialized with Jackson object mapper. + * Otherwise, message is fully serialized and deserialized with Jackson JSON mapper. *

* By default, all headers are included; you can provide simple patterns to specify a * subset of headers. @@ -56,7 +56,7 @@ *

* IMPORTANT *

- * The default object mapper will only deserialize classes in certain packages. + * The default JSON mapper will only deserialize classes in certain packages. * *

  *	"java.util",
@@ -69,10 +69,10 @@
  * 	"org.springframework.integration.handler"
  * 
*

- * To add more packages, create an object mapper using + * To add more packages, create an JSON mapper using * {@link JacksonMessagingUtils#messagingAwareMapper(String...)}. *

- * A constructor is provided allowing the provision of such a configured object mapper. + * A constructor is provided allowing the provision of such a configured JSON mapper. * * @author Jooyoung Pyoung * @@ -82,7 +82,7 @@ public class EmbeddedHeadersJsonMessageMapper implements BytesMessageMapper { protected final Log logger = LogFactory.getLog(getClass()); - private final ObjectMapper objectMapper; + private final JsonMapper jsonMapper; private final String[] headerPatterns; @@ -113,20 +113,20 @@ public EmbeddedHeadersJsonMessageMapper(String... headerPatterns) { /** * Construct an instance that embeds all headers, using the * supplied JSON object mapper. - * @param objectMapper the object mapper. + * @param jsonMapper the JSON mapper. */ - public EmbeddedHeadersJsonMessageMapper(ObjectMapper objectMapper) { - this(objectMapper, "*"); + public EmbeddedHeadersJsonMessageMapper(JsonMapper jsonMapper) { + this(jsonMapper, "*"); } /** * Construct an instance that embeds headers matching the supplied patterns using the * supplied JSON object mapper. - * @param objectMapper the object mapper. + * @param jsonMapper the JSON mapper. * @param headerPatterns the patterns. */ - public EmbeddedHeadersJsonMessageMapper(ObjectMapper objectMapper, String... headerPatterns) { - this.objectMapper = objectMapper; + public EmbeddedHeadersJsonMessageMapper(JsonMapper jsonMapper, String... headerPatterns) { + this.jsonMapper = jsonMapper; this.headerPatterns = Arrays.copyOf(headerPatterns, headerPatterns.length); this.allHeaders = this.headerPatterns.length == 1 && this.headerPatterns[0].equals("*"); } @@ -181,7 +181,7 @@ public byte[] fromMessage(Message message) { } try { - return this.objectMapper.writeValueAsBytes(messageToEncode); + return this.jsonMapper.writeValueAsBytes(messageToEncode); } catch (JacksonException ex) { throw new UncheckedIOException(new IOException(ex)); @@ -205,7 +205,7 @@ private boolean matchHeader(String header) { private byte[] fromBytesPayload(byte[] payload, Map headersToEncode) { try { - byte[] headers = this.objectMapper.writeValueAsBytes(headersToEncode); + byte[] headers = this.jsonMapper.writeValueAsBytes(headersToEncode); ByteBuffer buffer = ByteBuffer.wrap(new byte[8 + headers.length + payload.length]); buffer.putInt(headers.length); buffer.put(headers); @@ -229,7 +229,7 @@ public Message toMessage(byte[] bytes, @Nullable Map headers) } if (message == null) { try { - message = (Message) this.objectMapper.readValue(bytes, Object.class); + message = (Message) this.jsonMapper.readValue(bytes, Object.class); } catch (Exception ex) { this.logger.debug("Failed to decode JSON", ex); @@ -244,7 +244,7 @@ public Message toMessage(byte[] bytes, @Nullable Map headers) } @Nullable - private Message decodeNativeFormat(byte[] bytes, @Nullable Map headersToAdd) throws IOException { + private Message decodeNativeFormat(byte[] bytes, @Nullable Map headersToAdd) { ByteBuffer buffer = ByteBuffer.wrap(bytes); if (buffer.remaining() > 4) { int headersLen = buffer.getInt(); @@ -257,7 +257,7 @@ private Message decodeNativeFormat(byte[] bytes, @Nullable Map headers = this.objectMapper.readValue(bytes, buffer.position(), headersLen, + Map headers = this.jsonMapper.readValue(bytes, buffer.position(), headersLen, Map.class); ((Buffer) buffer).position(buffer.position() + headersLen); diff --git a/spring-integration-core/src/main/java/org/springframework/integration/support/json/JacksonJsonObjectMapper.java b/spring-integration-core/src/main/java/org/springframework/integration/support/json/JacksonJsonObjectMapper.java index c3788a8a1e0..42132f69131 100644 --- a/spring-integration-core/src/main/java/org/springframework/integration/support/json/JacksonJsonObjectMapper.java +++ b/spring-integration-core/src/main/java/org/springframework/integration/support/json/JacksonJsonObjectMapper.java @@ -31,7 +31,6 @@ import tools.jackson.databind.DeserializationFeature; import tools.jackson.databind.JavaType; import tools.jackson.databind.JsonNode; -import tools.jackson.databind.ObjectMapper; import tools.jackson.databind.json.JsonMapper; import org.springframework.integration.mapping.support.JsonHeaders; @@ -41,7 +40,7 @@ * Jackson 3 JSON-processor (@link https://github.com/FasterXML) * {@linkplain JsonObjectMapper} implementation. * Delegates {@link #toJson} and {@link #fromJson} - * to the {@linkplain ObjectMapper} + * to the {@linkplain JsonMapper} *

* It customizes Jackson's default properties with the following ones: *