Browse Source

Honor headers in AbstractMessageSendingTemplate.convertAndSend() variant

Prior to this commit, the following method in AbstractMessageSendingTemplate
simply ignored the supplied headers map.

convertAndSend(Object, Map<String, Object>, MessagePostProcessor)

Closes gh-36120
pull/36125/head
Sam Brannen 3 weeks ago
parent
commit
8d4320e9ef
  1. 2
      spring-messaging/src/main/java/org/springframework/messaging/core/AbstractMessageSendingTemplate.java
  2. 16
      spring-messaging/src/test/java/org/springframework/messaging/core/GenericMessagingTemplateTests.java

2
spring-messaging/src/main/java/org/springframework/messaging/core/AbstractMessageSendingTemplate.java

@ -148,7 +148,7 @@ public abstract class AbstractMessageSendingTemplate<D> implements MessageSendin
public void convertAndSend(Object payload, @Nullable Map<String, Object> headers, public void convertAndSend(Object payload, @Nullable Map<String, Object> headers,
@Nullable MessagePostProcessor postProcessor) throws MessagingException { @Nullable MessagePostProcessor postProcessor) throws MessagingException {
convertAndSend(getRequiredDefaultDestination(), payload, null, postProcessor); convertAndSend(getRequiredDefaultDestination(), payload, headers, postProcessor);
} }
@Override @Override

16
spring-messaging/src/test/java/org/springframework/messaging/core/GenericMessagingTemplateTests.java

@ -17,6 +17,7 @@
package org.springframework.messaging.core; package org.springframework.messaging.core;
import java.util.List; import java.util.List;
import java.util.Map;
import java.util.concurrent.CountDownLatch; import java.util.concurrent.CountDownLatch;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicReference; import java.util.concurrent.atomic.AtomicReference;
@ -50,6 +51,7 @@ import static org.mockito.Mockito.verify;
* *
* @author Rossen Stoyanchev * @author Rossen Stoyanchev
* @author Gary Russell * @author Gary Russell
* @author Sam Brannen
*/ */
class GenericMessagingTemplateTests { class GenericMessagingTemplateTests {
@ -248,6 +250,20 @@ class GenericMessagingTemplateTests {
assertThat(accessor.isMutable()).isFalse(); assertThat(accessor.isMutable()).isFalse();
} }
@Test
void convertAndSendWithDefaultDestinationAndSimpMessageHeaders() {
Map<String, Object> headers = Map.of("foo", "bar");
Object payload = "Hello";
TestMessagePostProcessor postProcessor = new TestMessagePostProcessor();
this.template.convertAndSend(payload, headers, postProcessor);
List<Message<byte[]>> messages = this.messageChannel.getMessages();
Message<byte[]> message = messages.get(0);
assertThat(postProcessor.getMessage().getPayload()).isEqualTo(payload);
assertThat(message.getHeaders()).containsKeys("foo");
}
private class TestDestinationResolver implements DestinationResolver<MessageChannel> { private class TestDestinationResolver implements DestinationResolver<MessageChannel> {

Loading…
Cancel
Save