public class EmbeddedJsonHeadersMessageMapper extends Object implements BytesMessageMapper
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.
Constructor and 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,
String... headerPatterns)
Construct an instance that embeds headers matching the supplied patterns using the
supplied JSON object mapper.
|
EmbeddedJsonHeadersMessageMapper(String... headerPatterns)
Construct an instance that embeds headers matching the supplied patterns, using
the default JSON object mapper.
|
Modifier and Type | Method and Description |
---|---|
byte[] |
fromMessage(Message<?> message) |
Collection<String> |
getHeaderPatterns() |
void |
setCaseSensitive(boolean caseSensitive)
Set to true to make the header name pattern match case sensitive.
|
void |
setRawBytes(boolean rawBytes)
For messages with
byte[] payloads, if rendered as JSON, Jackson performs
Base64 conversion on the bytes. |
Message<?> |
toMessage(byte[] bytes,
Map<String,Object> headers)
Convert a provided object to the
Message
and supply with headers if necessary and provided. |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
toMessage
protected final Log logger
public EmbeddedJsonHeadersMessageMapper()
public EmbeddedJsonHeadersMessageMapper(String... headerPatterns)
headerPatterns
- the patterns.PatternMatchUtils.smartMatch(String, String...)
public EmbeddedJsonHeadersMessageMapper(com.fasterxml.jackson.databind.ObjectMapper objectMapper)
objectMapper
- the object mapper.public EmbeddedJsonHeadersMessageMapper(com.fasterxml.jackson.databind.ObjectMapper objectMapper, String... headerPatterns)
objectMapper
- the object mapper.headerPatterns
- the patterns.public void setRawBytes(boolean rawBytes)
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.rawBytes
- false to encode as base64.public void setCaseSensitive(boolean caseSensitive)
caseSensitive
- true to make case sensitive.public Collection<String> getHeaderPatterns()
public byte[] fromMessage(Message<?> message)
fromMessage
in interface OutboundMessageMapper<byte[]>
public Message<?> toMessage(byte[] bytes, @Nullable Map<String,Object> headers)
InboundMessageMapper
Message
and supply with headers if necessary and provided.toMessage
in interface BytesMessageMapper
toMessage
in interface InboundMessageMapper<byte[]>
bytes
- the object for message payload or some other conversion logicheaders
- additional headers for building message. Can be null