INT-4284: Remove info about readOnly headers

JIRA: https://jira.spring.io/browse/INT-4284

**Cherry-pick to 4.3.x**

Conflicts:
	src/reference/asciidoc/message.adoc
Resolved.
This commit is contained in:
Artem Bilan
2017-06-15 10:33:21 -04:00
committed by Gary Russell
parent 882f38633f
commit 840558f9e0
2 changed files with 10 additions and 7 deletions

View File

@@ -183,11 +183,9 @@ public final class MessageBuilder<T> extends AbstractIntegrationMessageBuilder<T
public MessageBuilder<T> copyHeadersIfAbsent(Map<String, ?> headersToCopy) {
if (headersToCopy != null) {
for (Map.Entry<String, ?> entry : headersToCopy.entrySet()) {
if (!this.headerAccessor.isReadOnly(entry.getKey())) {
this.headerAccessor.setHeaderIfAbsent(entry.getKey(), entry.getValue());
}
else if (logger.isInfoEnabled()) {
logger.info("The header [" + entry + "] is ignored for population because it is is readOnly.");
String headerName = entry.getKey();
if (!this.headerAccessor.isReadOnly(headerName)) {
this.headerAccessor.setHeaderIfAbsent(headerName, entry.getValue());
}
}
}

View File

@@ -373,8 +373,13 @@ In addition to the default strategy, two additional `IdGenerators` are provided;
[[read-only-headers]]
===== Read-only Headers
The `MessageHeaders.ID` and `MessageHeaders.TIMESTAMP` are read-only headers and the cannot be overridden.
With the `spring.integration.readOnly.headers` global property (see <<global-properties>>) you can specify any header names which become read-only.
The `MessageHeaders.ID` and `MessageHeaders.TIMESTAMP` are read-only headers and they cannot be overridden.
Since _version 4.3.2_, the `MessageBuilder` provides the `readOnlyHeaders(String... readOnlyHeaders)` API to customize a list of headers which should not be copied from an upstream `Message`.
Just the `MessageHeaders.ID` and `MessageHeaders.TIMESTAMP` are read only by default.
The global `spring.integration.readOnly.headers` property (see <<global-properties>>) is provided to customize `DefaultMessageBuilderFactory` for Framework components.
This can be useful when you would like do not populate some out-of-the-box headers, like `contentType` by the `ObjectToJsonTransformer` (see <<json-transformers>>).
When you try to build a new message using `MessageBuilder`, this kind of headers are ignored and particular `INFO` message is emitted to logs.
[[message-implementations]]