Skip to content

Commit d4b7578

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) # Conflicts: # spring-rabbit/src/test/java/org/springframework/amqp/rabbit/annotation/ContentTypeDelegatingMessageConverterIntegrationTests.java
1 parent efcba3a commit d4b7578

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
@@ -108,9 +108,9 @@ public org.springframework.amqp.core.Message toMessage(Object object, MessagePro
108108
input.getPayload(), messageProperties);
109109
// Default previous behavior of mapper wins for backwards compatibility.
110110
if (!Boolean.TRUE.equals(input.getHeaders().get(AmqpHeaders.CONTENT_TYPE_CONVERTER_WINS))) {
111-
String contentType = input.getHeaders().get(MessageHeaders.CONTENT_TYPE, String.class);
111+
Object contentType = input.getHeaders().get(MessageHeaders.CONTENT_TYPE);
112112
if (contentType != null) {
113-
messageProperties.setContentType(contentType);
113+
messageProperties.setContentType(contentType.toString());
114114
}
115115
}
116116
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
@@ -47,6 +47,7 @@
4747
import org.springframework.messaging.handler.annotation.SendTo;
4848
import org.springframework.messaging.support.MessageBuilder;
4949
import org.springframework.test.context.junit4.SpringRunner;
50+
import org.springframework.util.MimeType;
5051

5152
/**
5253
* @author Gary Russell
@@ -172,7 +173,7 @@ public AnonymousQueue queue2() {
172173
@SendTo("#{@queue2.name}")
173174
public org.springframework.messaging.Message<String> listen1(String in) {
174175
MessageBuilder<String> builder = MessageBuilder.withPayload(in)
175-
.setHeader(MessageHeaders.CONTENT_TYPE, "baz/qux");
176+
.setHeader(MessageHeaders.CONTENT_TYPE, MimeType.valueOf("baz/qux"));
176177
if ("bar".equals(in)) {
177178
builder.setHeader(AmqpHeaders.CONTENT_TYPE_CONVERTER_WINS, true);
178179
}

0 commit comments

Comments
 (0)