diff --git a/spring-integration-core/src/main/java/org/springframework/integration/support/json/EmbeddedJsonHeadersMessageMapper.java b/spring-integration-core/src/main/java/org/springframework/integration/support/json/EmbeddedJsonHeadersMessageMapper.java index 373ceb9d34..d83ca2bad4 100644 --- a/spring-integration-core/src/main/java/org/springframework/integration/support/json/EmbeddedJsonHeadersMessageMapper.java +++ b/spring-integration-core/src/main/java/org/springframework/integration/support/json/EmbeddedJsonHeadersMessageMapper.java @@ -1,5 +1,5 @@ /* - * Copyright 2017-2022 the original author or authors. + * Copyright 2017-2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -42,15 +42,16 @@ import org.springframework.messaging.support.GenericMessage; /** * For outbound messages, uses a message-aware Jackson object 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 the {@link #setRawBytes(boolean) rawBytes} - * property is true (default), the result has the form - * <headersLen><headers><payloadLen><payload>; with the headers + * 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. *
* By default, all headers are included; you can provide simple patterns to specify a * subset of headers. *
- * If neither expected format is detected, or an error occurs during conversion, the + * If neither expected format is detected, nor an error occurs during conversion, the * payload of the message is the original {@code byte[]}. *
* IMPORTANT @@ -63,7 +64,9 @@ import org.springframework.messaging.support.GenericMessage; * "org.springframework.messaging.support", * "org.springframework.integration.support", * "org.springframework.integration.message", - * "org.springframework.integration.store" + * "org.springframework.integration.store", + * "org.springframework.integration.history", + * "org.springframework.integration.handler" * *
* To add more packages, create an object mapper using
@@ -133,9 +136,9 @@ public class EmbeddedJsonHeadersMessageMapper implements BytesMessageMapper {
/**
* For messages with {@code byte[]} payloads, if rendered as JSON, Jackson performs
* Base64 conversion on the bytes. If this property is true (default), the result has
- * the form <headersLen><headers><payloadLen><payload>; with
- * the headers rendered in JSON and the payload unchanged. Set to false to render
- * the bytes as base64.
+ * the form {@code [headersLen][headers][payloadLen][payload]}; with
+ * the headers rendered in JSON and the payload unchanged.
+ * Set to {@code false} to render the bytes as base64.
* @param rawBytes false to encode as base64.
*/
public void setRawBytes(boolean rawBytes) {
@@ -143,9 +146,9 @@ public class EmbeddedJsonHeadersMessageMapper implements BytesMessageMapper {
}
/**
- * Set to true to make the header name pattern match case sensitive.
+ * Set to true to make the header name pattern match case-sensitive.
* Default false.
- * @param caseSensitive true to make case sensitive.
+ * @param caseSensitive true to make case-sensitive.
*/
public void setCaseSensitive(boolean caseSensitive) {
this.caseSensitive = caseSensitive;
@@ -162,8 +165,8 @@ public class EmbeddedJsonHeadersMessageMapper implements BytesMessageMapper {
? message.getHeaders()
: pruneHeaders(message.getHeaders());
- if (this.rawBytes && message.getPayload() instanceof byte[]) {
- return fromBytesPayload((byte[]) message.getPayload(), headersToEncode);
+ if (this.rawBytes && message.getPayload() instanceof byte[] bytes) {
+ return fromBytesPayload(bytes, headersToEncode);
}
else {
Message> messageToEncode = message;
@@ -182,8 +185,8 @@ public class EmbeddedJsonHeadersMessageMapper implements BytesMessageMapper {
try {
return this.objectMapper.writeValueAsBytes(messageToEncode);
}
- catch (JsonProcessingException e) {
- throw new UncheckedIOException(e);
+ catch (JsonProcessingException ex) {
+ throw new UncheckedIOException(ex);
}
}
}
@@ -212,8 +215,8 @@ public class EmbeddedJsonHeadersMessageMapper implements BytesMessageMapper {
buffer.put(payload);
return buffer.array();
}
- catch (JsonProcessingException e) {
- throw new UncheckedIOException(e);
+ catch (JsonProcessingException ex) {
+ throw new UncheckedIOException(ex);
}
}
@@ -223,15 +226,15 @@ public class EmbeddedJsonHeadersMessageMapper implements BytesMessageMapper {
try {
message = decodeNativeFormat(bytes, headers);
}
- catch (@SuppressWarnings("unused") Exception e) {
- this.logger.debug("Failed to decode native format", e);
+ catch (@SuppressWarnings("unused") Exception ex) {
+ this.logger.debug("Failed to decode native format", ex);
}
if (message == null) {
try {
message = (Message>) this.objectMapper.readValue(bytes, Object.class);
}
- catch (Exception e) {
- this.logger.debug("Failed to decode JSON", e);
+ catch (Exception ex) {
+ this.logger.debug("Failed to decode JSON", ex);
}
}
if (message != null) {
diff --git a/spring-integration-core/src/test/java/org/springframework/integration/support/json/EmbeddedJsonHeadersMessageMapperTests.java b/spring-integration-core/src/test/java/org/springframework/integration/support/json/EmbeddedJsonHeadersMessageMapperTests.java
index 0f0f32ab80..b91085390e 100644
--- a/spring-integration-core/src/test/java/org/springframework/integration/support/json/EmbeddedJsonHeadersMessageMapperTests.java
+++ b/spring-integration-core/src/test/java/org/springframework/integration/support/json/EmbeddedJsonHeadersMessageMapperTests.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2017-2022 the original author or authors.
+ * Copyright 2017-2024 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -22,7 +22,7 @@ import java.util.Map;
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
import org.springframework.messaging.Message;
import org.springframework.messaging.MessageHeaders;
@@ -57,7 +57,7 @@ public class EmbeddedJsonHeadersMessageMapperTests {
ObjectMapper objectMapper = new ObjectMapper();
Map