Class MutableMessageBuilder<T>
java.lang.Object
org.springframework.integration.support.AbstractIntegrationMessageBuilder<T>
org.springframework.integration.support.MutableMessageBuilder<T>
public final class MutableMessageBuilder<T> extends AbstractIntegrationMessageBuilder<T>
Specialized message builder that can be used within a component to avoid the overhead
of having to build multiple messages for mutations within that component.
IMPORTANT: Mutable messages may share state (such as message headers); such messages should never be exposed to other components or undesirable side-effects may result.
It is generally recommended that messages transferred between components should always be immutable unless great care is taken with their use.
- Since:
- 4.0
- Author:
- Gary Russell, Artem Bilan
-
Method Summary
Modifier and Type Method Description Message<T>
build()
AbstractIntegrationMessageBuilder<T>
copyHeaders(Map<String,?> headersToCopy)
Copy the name-value pairs from the provided Map.AbstractIntegrationMessageBuilder<T>
copyHeadersIfAbsent(Map<String,?> headersToCopy)
Copy the name-value pairs from the provided Map.static <T> MutableMessageBuilder<T>
fromMessage(Message<T> message)
Create a builder for a newMessage
instance pre-populated with all of the headers copied from the provided message.protected Object
getCorrelationId()
<V> V
getHeader(String key, Class<V> type)
Map<String,Object>
getHeaders()
T
getPayload()
protected List<List<Object>>
getSequenceDetails()
protected Object
getSequenceNumber()
protected Object
getSequenceSize()
AbstractIntegrationMessageBuilder<T>
removeHeader(String headerName)
Remove the value for the given header name.AbstractIntegrationMessageBuilder<T>
removeHeaders(String... headerPatterns)
Removes all headers provided via array of 'headerPatterns'.AbstractIntegrationMessageBuilder<T>
setHeader(String headerName, Object headerValue)
Set the value for the given header name.AbstractIntegrationMessageBuilder<T>
setHeaderIfAbsent(String headerName, Object headerValue)
Set the value for the given header name only if the header name is not already associated with a value.static <T> MutableMessageBuilder<T>
withPayload(T payload)
Create a builder for a newMessage
instance with the provided payload.static <T> MutableMessageBuilder<T>
withPayload(T payload, boolean generateHeaders)
Create a builder for a newMessage
instance with the provided payload.Methods inherited from class org.springframework.integration.support.AbstractIntegrationMessageBuilder
filterAndCopyHeadersIfAbsent, popSequenceDetails, pushSequenceDetails, setCorrelationId, setErrorChannel, setErrorChannelName, setExpirationDate, setExpirationDate, setPriority, setReplyChannel, setReplyChannelName, setSequenceNumber, setSequenceSize
-
Method Details
-
getPayload
- Specified by:
getPayload
in classAbstractIntegrationMessageBuilder<T>
-
getHeaders
- Specified by:
getHeaders
in classAbstractIntegrationMessageBuilder<T>
-
getHeader
- Specified by:
getHeader
in classAbstractIntegrationMessageBuilder<T>
-
withPayload
Create a builder for a newMessage
instance with the provided payload.- Type Parameters:
T
- The type of the payload.- Parameters:
payload
- the payload for the new message- Returns:
- A MutableMessageBuilder.
-
withPayload
Create a builder for a newMessage
instance with the provided payload. ThegenerateHeaders
flag allows to disableMessageHeaders.ID
andMessageHeaders.TIMESTAMP
headers generation.- Type Parameters:
T
- The type of the payload.- Parameters:
payload
- the payload for the new messagegenerateHeaders
- whether generateMessageHeaders.ID
andMessageHeaders.TIMESTAMP
headers- Returns:
- A MutableMessageBuilder.
- Since:
- 5.0
-
fromMessage
Create a builder for a newMessage
instance pre-populated with all of the headers copied from the provided message. The payload of the provided Message will also be used as the payload for the new message.- Type Parameters:
T
- The type of the payload.- Parameters:
message
- the Message from which the payload and all headers will be copied- Returns:
- A MutableMessageBuilder.
-
setHeader
public AbstractIntegrationMessageBuilder<T> setHeader(String headerName, @Nullable Object headerValue)Description copied from class:AbstractIntegrationMessageBuilder
Set the value for the given header name. If the provided value isnull
, the header will be removed.- Specified by:
setHeader
in classAbstractIntegrationMessageBuilder<T>
- Parameters:
headerName
- The header name.headerValue
- The header value.- Returns:
- this.
-
setHeaderIfAbsent
public AbstractIntegrationMessageBuilder<T> setHeaderIfAbsent(String headerName, Object headerValue)Description copied from class:AbstractIntegrationMessageBuilder
Set the value for the given header name only if the header name is not already associated with a value.- Specified by:
setHeaderIfAbsent
in classAbstractIntegrationMessageBuilder<T>
- Parameters:
headerName
- The header name.headerValue
- The header value.- Returns:
- this.
-
removeHeaders
Description copied from class:AbstractIntegrationMessageBuilder
Removes all headers provided via array of 'headerPatterns'. As the name suggests the array may contain simple matching patterns for header names. Supported pattern styles are: "xxx*", "*xxx", "*xxx*" and "xxx*yyy".- Specified by:
removeHeaders
in classAbstractIntegrationMessageBuilder<T>
- Parameters:
headerPatterns
- The header patterns.- Returns:
- this.
-
removeHeader
Description copied from class:AbstractIntegrationMessageBuilder
Remove the value for the given header name.- Specified by:
removeHeader
in classAbstractIntegrationMessageBuilder<T>
- Parameters:
headerName
- The header name.- Returns:
- this.
-
copyHeaders
Description copied from class:AbstractIntegrationMessageBuilder
Copy the name-value pairs from the provided Map. This operation will overwrite any existing values. Use {AbstractIntegrationMessageBuilder.copyHeadersIfAbsent(Map)
to avoid overwriting values. Note that the 'id' and 'timestamp' header values will never be overwritten.- Specified by:
copyHeaders
in classAbstractIntegrationMessageBuilder<T>
- Parameters:
headersToCopy
- The headers to copy.- Returns:
- this.
- See Also:
MessageHeaders.ID
,MessageHeaders.TIMESTAMP
-
copyHeadersIfAbsent
public AbstractIntegrationMessageBuilder<T> copyHeadersIfAbsent(@Nullable Map<String,?> headersToCopy)Description copied from class:AbstractIntegrationMessageBuilder
Copy the name-value pairs from the provided Map. This operation will not overwrite any existing values.- Specified by:
copyHeadersIfAbsent
in classAbstractIntegrationMessageBuilder<T>
- Parameters:
headersToCopy
- The headers to copy.- Returns:
- this.
-
getSequenceDetails
- Specified by:
getSequenceDetails
in classAbstractIntegrationMessageBuilder<T>
-
getCorrelationId
- Specified by:
getCorrelationId
in classAbstractIntegrationMessageBuilder<T>
-
getSequenceNumber
- Specified by:
getSequenceNumber
in classAbstractIntegrationMessageBuilder<T>
-
getSequenceSize
- Specified by:
getSequenceSize
in classAbstractIntegrationMessageBuilder<T>
-
build
- Specified by:
build
in classAbstractIntegrationMessageBuilder<T>
-