Class EmbeddedJsonHeadersMessageMapper
java.lang.Object
org.springframework.integration.support.json.EmbeddedJsonHeadersMessageMapper
- All Implemented Interfaces:
BytesMessageMapper,InboundMessageMapper<byte[]>,OutboundMessageMapper<byte[]>
public class EmbeddedJsonHeadersMessageMapper extends java.lang.Object implements BytesMessageMapper
For outbound messages, uses a message-aware Jackson object mapper to render the message
as JSON. For messages with
byte[] payloads, if rendered as JSON, Jackson
performs Base64 conversion on the bytes. If the rawBytes
property is true (default), the result has the form
<headersLen><headers><payloadLen><payload>; with the headers
rendered in JSON and the payload unchanged.
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
payload of the message is the original byte[].
IMPORTANT
The default object mapper will only deserialize classes in certain packages.
"java.util",
"java.lang",
"org.springframework.messaging.support",
"org.springframework.integration.support",
"org.springframework.integration.message",
"org.springframework.integration.store"
To add more packages, create an object mapper using
JacksonJsonUtils.messagingAwareMapper(String...).
A constructor is provided allowing the provision of such a configured object mapper.
- Since:
- 5.0
-
Field Summary
Fields Modifier and Type Field Description protected org.apache.commons.logging.Loglogger -
Constructor Summary
Constructors Constructor Description EmbeddedJsonHeadersMessageMapper()Construct an instance that embeds all headers, using the default JSON Object mapper.EmbeddedJsonHeadersMessageMapper(com.fasterxml.jackson.databind.ObjectMapper objectMapper)Construct an instance that embeds all headers, using the supplied JSON object mapper.EmbeddedJsonHeadersMessageMapper(com.fasterxml.jackson.databind.ObjectMapper objectMapper, java.lang.String... headerPatterns)Construct an instance that embeds headers matching the supplied patterns using the supplied JSON object mapper.EmbeddedJsonHeadersMessageMapper(java.lang.String... headerPatterns)Construct an instance that embeds headers matching the supplied patterns, using the default JSON object mapper. -
Method Summary
Modifier and Type Method Description byte[]fromMessage(org.springframework.messaging.Message<?> message)java.util.Collection<java.lang.String>getHeaderPatterns()voidsetCaseSensitive(boolean caseSensitive)Set to true to make the header name pattern match case sensitive.voidsetRawBytes(boolean rawBytes)For messages withbyte[]payloads, if rendered as JSON, Jackson performs Base64 conversion on the bytes.org.springframework.messaging.Message<?>toMessage(byte[] bytes, java.util.Map<java.lang.String,java.lang.Object> headers)Convert a provided object to theMessageand supply with headers if necessary and provided.Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface org.springframework.integration.mapping.BytesMessageMapper
toMessage
-
Field Details
-
logger
protected final org.apache.commons.logging.Log logger
-
-
Constructor Details
-
EmbeddedJsonHeadersMessageMapper
public EmbeddedJsonHeadersMessageMapper()Construct an instance that embeds all headers, using the default JSON Object mapper. -
EmbeddedJsonHeadersMessageMapper
public EmbeddedJsonHeadersMessageMapper(java.lang.String... headerPatterns)Construct an instance that embeds headers matching the supplied patterns, using the default JSON object mapper.- Parameters:
headerPatterns- the patterns.- See Also:
PatternMatchUtils.smartMatch(String, String...)
-
EmbeddedJsonHeadersMessageMapper
public EmbeddedJsonHeadersMessageMapper(com.fasterxml.jackson.databind.ObjectMapper objectMapper)Construct an instance that embeds all headers, using the supplied JSON object mapper.- Parameters:
objectMapper- the object mapper.
-
EmbeddedJsonHeadersMessageMapper
public EmbeddedJsonHeadersMessageMapper(com.fasterxml.jackson.databind.ObjectMapper objectMapper, java.lang.String... headerPatterns)Construct an instance that embeds headers matching the supplied patterns using the supplied JSON object mapper.- Parameters:
objectMapper- the object mapper.headerPatterns- the patterns.
-
-
Method Details
-
setRawBytes
public void setRawBytes(boolean rawBytes)For messages withbyte[]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.- Parameters:
rawBytes- false to encode as base64.
-
setCaseSensitive
public void setCaseSensitive(boolean caseSensitive)Set to true to make the header name pattern match case sensitive. Default false.- Parameters:
caseSensitive- true to make case sensitive.
-
getHeaderPatterns
public java.util.Collection<java.lang.String> getHeaderPatterns() -
fromMessage
public byte[] fromMessage(org.springframework.messaging.Message<?> message)- Specified by:
fromMessagein interfaceOutboundMessageMapper<byte[]>
-
toMessage
public org.springframework.messaging.Message<?> toMessage(byte[] bytes, @Nullable java.util.Map<java.lang.String,java.lang.Object> headers)Description copied from interface:InboundMessageMapperConvert a provided object to theMessageand supply with headers if necessary and provided.- Specified by:
toMessagein interfaceBytesMessageMapper- Specified by:
toMessagein interfaceInboundMessageMapper<byte[]>- Parameters:
bytes- the object for message payload or some other conversion logicheaders- additional headers for building message. Can be null- Returns:
- the message as a result of mapping
-