Class EmbeddedJsonHeadersMessageMapper
java.lang.Object
org.springframework.integration.support.json.EmbeddedJsonHeadersMessageMapper
- All Implemented Interfaces:
BytesMessageMapper
,InboundMessageMapper<byte[]>
,OutboundMessageMapper<byte[]>
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 payload is byte[]
and
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.
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, nor 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", "org.springframework.integration.history", "org.springframework.integration.handler"
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
- Author:
- Gary Russell, Artem Bilan
-
Field Summary
-
Constructor Summary
ConstructorDescriptionConstruct 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. -
Method Summary
Modifier and TypeMethodDescriptionbyte[]
fromMessage
(Message<?> message) void
setCaseSensitive
(boolean caseSensitive) Set to true to make the header name pattern match case-sensitive.void
setRawBytes
(boolean rawBytes) For messages withbyte[]
payloads, if rendered as JSON, Jackson performs Base64 conversion on the bytes.Message<?>
Convert a provided object to theMessage
and supply with headers if necessary and provided.Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Methods inherited from interface org.springframework.integration.mapping.BytesMessageMapper
toMessage
-
Field Details
-
logger
-
-
Constructor Details
-
EmbeddedJsonHeadersMessageMapper
public EmbeddedJsonHeadersMessageMapper()Construct an instance that embeds all headers, using the default JSON Object mapper. -
EmbeddedJsonHeadersMessageMapper
Construct an instance that embeds headers matching the supplied patterns, using the default JSON object mapper.- Parameters:
headerPatterns
- the patterns.- See Also:
-
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, 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 tofalse
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
-
fromMessage
- Specified by:
fromMessage
in interfaceOutboundMessageMapper<byte[]>
-
toMessage
Description copied from interface:InboundMessageMapper
Convert a provided object to theMessage
and supply with headers if necessary and provided.- Specified by:
toMessage
in interfaceBytesMessageMapper
- Specified by:
toMessage
in 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
-