Skip to content

Commit 75c3a29

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** (cherry picked from commit 8c7e4f9)
1 parent 6b01c9a commit 75c3a29

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
@@ -112,9 +112,9 @@ public org.springframework.amqp.core.Message toMessage(Object object, MessagePro
112112
input.getPayload(), messageProperties);
113113
// Default previous behavior of mapper wins for backwards compatibility.
114114
if (!Boolean.TRUE.equals(input.getHeaders().get(AmqpHeaders.CONTENT_TYPE_CONVERTER_WINS))) {
115-
String contentType = input.getHeaders().get(MessageHeaders.CONTENT_TYPE, String.class);
115+
Object contentType = input.getHeaders().get(MessageHeaders.CONTENT_TYPE);
116116
if (contentType != null) {
117-
messageProperties.setContentType(contentType);
117+
messageProperties.setContentType(contentType.toString());
118118
}
119119
}
120120
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)