INT-4288: Add blacklist headers at runtime

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

- Add `AbstractMessageProducingHandler.addNotPropagatedHeaders()`
so that new headers can be added without overriding existing ones.
- Add `AbstractMessageProducingHandler.getNotPropagatedHeaders()`
so that existing excluded headers can be consulted.

* Polishing JavaDocs and imports order

**Cherry-pick to 4.3.x**
This commit is contained in:
Marius Bogoevici
2017-06-06 14:17:53 -04:00
committed by Artem Bilan
parent f58106ec3c
commit ecc3006179
2 changed files with 69 additions and 1 deletions

View File

@@ -20,6 +20,8 @@ import static org.hamcrest.CoreMatchers.containsString;
import static org.hamcrest.CoreMatchers.equalTo;
import static org.hamcrest.CoreMatchers.notNullValue;
import static org.hamcrest.CoreMatchers.nullValue;
import static org.hamcrest.Matchers.containsInAnyOrder;
import static org.hamcrest.Matchers.emptyCollectionOf;
import static org.junit.Assert.assertThat;
import static org.junit.Assert.fail;
import static org.mockito.BDDMockito.given;
@@ -43,6 +45,7 @@ import org.springframework.messaging.support.GenericMessage;
* @author Iwein Fuld
* @author Gunnar Hillert
* @author Gary Russell
* @author Marius Bogoevici
*/
@RunWith(MockitoJUnitRunner.class)
public class AbstractReplyProducingMessageHandlerTests {
@@ -86,8 +89,10 @@ public class AbstractReplyProducingMessageHandlerTests {
}
};
assertThat(handler.getNotPropagatedHeaders(), emptyCollectionOf(String.class));
handler.setNotPropagatedHeaders("foo", "bar");
handler.setOutputChannel(this.channel);
assertThat(handler.getNotPropagatedHeaders(), containsInAnyOrder("foo", "bar"));
ArgumentCaptor<Message<?>> captor = ArgumentCaptor.forClass(Message.class);
willReturn(true).given(this.channel).send(captor.capture());
handler.handleMessage(MessageBuilder.withPayload("hello")
@@ -102,4 +107,35 @@ public class AbstractReplyProducingMessageHandlerTests {
assertThat(out.getHeaders().get("baz"), equalTo("BAZ"));
}
@Test
@SuppressWarnings("unchecked")
public void testNotPropagateAdd() {
AbstractReplyProducingMessageHandler handler = new AbstractReplyProducingMessageHandler() {
@Override
protected Object handleRequestMessage(Message<?> requestMessage) {
return new GenericMessage<String>("world", Collections.singletonMap("bar", "RAB"));
}
};
assertThat(handler.getNotPropagatedHeaders(), emptyCollectionOf(String.class));
handler.setNotPropagatedHeaders("foo");
handler.addNotPropagatedHeaders("bar");
handler.setOutputChannel(this.channel);
assertThat(handler.getNotPropagatedHeaders(), containsInAnyOrder("foo", "bar"));
ArgumentCaptor<Message<?>> captor =
(ArgumentCaptor<Message<?>>) (ArgumentCaptor<?>) ArgumentCaptor.forClass(Message.class);
willReturn(true).given(this.channel).send(captor.capture());
handler.handleMessage(MessageBuilder.withPayload("hello")
.setHeader("foo", "FOO")
.setHeader("bar", "BAR")
.setHeader("baz", "BAZ")
.build());
Message<?> out = captor.getValue();
assertThat(out, notNullValue());
assertThat(out.getHeaders().get("foo"), nullValue());
assertThat(out.getHeaders().get("bar"), equalTo("RAB"));
assertThat(out.getHeaders().get("baz"), equalTo("BAZ"));
}
}