Fix issue with copying headers in NativeMessageHeaderAccessor

Closes gh-25821
This commit is contained in:
Rossen Stoyanchev
2020-09-30 21:42:12 +01:00
parent 4b9c3fa739
commit 7ad60d385b
2 changed files with 45 additions and 4 deletions

View File

@@ -224,4 +224,21 @@ public class NativeMessageHeaderAccessorTests {
headerAccessor.setImmutable();
}
@Test // gh-25821
void copyImmutableToMutable() {
NativeMessageHeaderAccessor source = new NativeMessageHeaderAccessor();
source.addNativeHeader("foo", "bar");
Message<String> message = MessageBuilder.createMessage("payload", source.getMessageHeaders());
NativeMessageHeaderAccessor target = new NativeMessageHeaderAccessor();
target.copyHeaders(message.getHeaders());
target.setLeaveMutable(true);
message = MessageBuilder.createMessage(message.getPayload(), target.getMessageHeaders());
MessageHeaderAccessor accessor = MessageHeaderAccessor.getMutableAccessor(message);
assertThat(accessor.isMutable());
((NativeMessageHeaderAccessor) accessor).addNativeHeader("foo", "baz");
assertThat(((NativeMessageHeaderAccessor) accessor).getNativeHeader("foo")).containsExactly("bar", "baz");
}
}