Merge branch '6.2.x'

This commit is contained in:
Sam Brannen
2025-06-02 10:12:36 +02:00
2 changed files with 22 additions and 3 deletions

View File

@@ -1,5 +1,5 @@
/*
* Copyright 2002-2023 the original author or authors.
* Copyright 2002-2025 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -331,7 +331,7 @@ public class MessageHeaderAccessor {
protected void verifyType(@Nullable String headerName, @Nullable Object headerValue) {
if (headerName != null && headerValue != null) {
if (MessageHeaders.ERROR_CHANNEL.equals(headerName) ||
MessageHeaders.REPLY_CHANNEL.endsWith(headerName)) {
MessageHeaders.REPLY_CHANNEL.equals(headerName)) {
if (!(headerValue instanceof MessageChannel || headerValue instanceof String)) {
throw new IllegalArgumentException(
"'" + headerName + "' header value must be a MessageChannel or String");

View File

@@ -1,5 +1,5 @@
/*
* Copyright 2002-2024 the original author or authors.
* Copyright 2002-2025 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -34,6 +34,7 @@ import static org.assertj.core.api.Assertions.assertThatIllegalStateException;
/**
* @author Mark Fisher
* @author Rossen Stoyanchev
* @author Mengqi Xu
*/
class MessageBuilderTests {
@@ -238,4 +239,22 @@ class MessageBuilderTests {
assertThat(message3.getHeaders().get("foo")).isEqualTo("bar3");
}
@Test // gh-34949
void buildMessageWithReplyChannelHeader() {
MessageHeaderAccessor headerAccessor = new MessageHeaderAccessor();
MessageBuilder<?> messageBuilder = MessageBuilder.withPayload("payload").setHeaders(headerAccessor);
headerAccessor.setHeader(MessageHeaders.REPLY_CHANNEL, "foo");
Message<?> message1 = messageBuilder.build();
assertThat(message1.getHeaders().get(MessageHeaders.REPLY_CHANNEL)).isEqualTo("foo");
headerAccessor.setHeader("hannel", 0);
Message<?> message2 = messageBuilder.build();
assertThat(message2.getHeaders().get("hannel")).isEqualTo(0);
assertThatIllegalArgumentException()
.isThrownBy(() -> headerAccessor.setHeader(MessageHeaders.REPLY_CHANNEL, 0))
.withMessage("'%s' header value must be a MessageChannel or String", MessageHeaders.REPLY_CHANNEL);
}
}