Skip to content

Commit 8c7e4f9

Browse files
garyrussellartembilan
authored andcommitted
GH-1236: Handle non-String contentType
Resolves #1236 The user may set the contentType to a `MimeType`. Always use `toString()` when replacing the `contentType`. **cherry-pick to 2.2.x, 2.1.x, 1.7.x**
1 parent 165b838 commit 8c7e4f9

File tree

2 files changed

+4
-3
lines changed

2 files changed

+4
-3
lines changed

spring-amqp/src/main/java/org/springframework/amqp/support/converter/MessagingMessageConverter.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -114,9 +114,9 @@ public org.springframework.amqp.core.Message toMessage(Object object, MessagePro
114114
input.getPayload(), messageProperties);
115115
// Default previous behavior of mapper wins for backwards compatibility.
116116
if (!Boolean.TRUE.equals(input.getHeaders().get(AmqpHeaders.CONTENT_TYPE_CONVERTER_WINS))) {
117-
String contentType = input.getHeaders().get(MessageHeaders.CONTENT_TYPE, String.class);
117+
Object contentType = input.getHeaders().get(MessageHeaders.CONTENT_TYPE);
118118
if (contentType != null) {
119-
messageProperties.setContentType(contentType);
119+
messageProperties.setContentType(contentType.toString());
120120
}
121121
}
122122
return amqpMessage;

spring-rabbit/src/test/java/org/springframework/amqp/rabbit/annotation/ContentTypeDelegatingMessageConverterIntegrationTests.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@
4545
import org.springframework.messaging.handler.annotation.SendTo;
4646
import org.springframework.messaging.support.MessageBuilder;
4747
import org.springframework.test.context.junit.jupiter.SpringJUnitConfig;
48+
import org.springframework.util.MimeType;
4849

4950
/**
5051
* @author Gary Russell
@@ -166,7 +167,7 @@ public AnonymousQueue queue2() {
166167
@SendTo("#{@queue2.name}")
167168
public org.springframework.messaging.Message<String> listen1(String in) {
168169
MessageBuilder<String> builder = MessageBuilder.withPayload(in)
169-
.setHeader(MessageHeaders.CONTENT_TYPE, "baz/qux");
170+
.setHeader(MessageHeaders.CONTENT_TYPE, MimeType.valueOf("baz/qux"));
170171
if ("bar".equals(in)) {
171172
builder.setHeader(AmqpHeaders.CONTENT_TYPE_CONVERTER_WINS, true);
172173
}

0 commit comments

Comments
 (0)