diff --git a/org.springframework.integration/src/main/java/org/springframework/integration/message/MessageBuilder.java b/org.springframework.integration/src/main/java/org/springframework/integration/message/MessageBuilder.java index a4192b3ed1..50cab9aad8 100644 --- a/org.springframework.integration/src/main/java/org/springframework/integration/message/MessageBuilder.java +++ b/org.springframework.integration/src/main/java/org/springframework/integration/message/MessageBuilder.java @@ -96,6 +96,16 @@ public final class MessageBuilder { return this; } + /** + * Remove the value for the given header name. + */ + public MessageBuilder removeHeader(String headerName) { + if (StringUtils.hasLength(headerName)) { + this.headers.remove(headerName); + } + return this; + } + /** * Copy the name-value pairs from the provided Map. This operation will * overwrite any existing values. Use {{@link #copyHeadersIfAbsent(Map)} diff --git a/org.springframework.integration/src/test/java/org/springframework/integration/message/MessageBuilderTests.java b/org.springframework.integration/src/test/java/org/springframework/integration/message/MessageBuilderTests.java index 4821246628..0ded280a78 100644 --- a/org.springframework.integration/src/test/java/org/springframework/integration/message/MessageBuilderTests.java +++ b/org.springframework.integration/src/test/java/org/springframework/integration/message/MessageBuilderTests.java @@ -17,6 +17,7 @@ package org.springframework.integration.message; import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; import java.util.Date; @@ -116,4 +117,24 @@ public class MessageBuilderTests { assertEquals(past, expiredMessage.getHeaders().getExpirationDate()); } + @Test + public void testRemove() { + Message message1 = MessageBuilder.fromPayload(1) + .setHeader("foo", "bar").build(); + Message message2 = MessageBuilder.fromMessage(message1) + .removeHeader("foo") + .build(); + assertFalse(message2.getHeaders().containsKey("foo")); + } + + @Test + public void testSettingToNullRemoves() { + Message message1 = MessageBuilder.fromPayload(1) + .setHeader("foo", "bar").build(); + Message message2 = MessageBuilder.fromMessage(message1) + .setHeader("foo", null) + .build(); + assertFalse(message2.getHeaders().containsKey("foo")); + } + }