diff --git a/spring-cloud-stream-binders/spring-cloud-stream-binder-test/src/test/java/org/springframework/cloud/stream/binder/MessageChannelBinderSupportTests.java b/spring-cloud-stream-binders/spring-cloud-stream-binder-test/src/test/java/org/springframework/cloud/stream/binder/MessageChannelBinderSupportTests.java
index c8389214e..3a2481f68 100644
--- a/spring-cloud-stream-binders/spring-cloud-stream-binder-test/src/test/java/org/springframework/cloud/stream/binder/MessageChannelBinderSupportTests.java
+++ b/spring-cloud-stream-binders/spring-cloud-stream-binder-test/src/test/java/org/springframework/cloud/stream/binder/MessageChannelBinderSupportTests.java
@@ -111,6 +111,19 @@ public class MessageChannelBinderSupportTests {
assertNull(reconstructed.get(MessageHeaders.CONTENT_TYPE));
}
+ @Test
+ public void testStringXML() throws IOException {
+ Message> message = MessageBuilder
+ .withPayload("")
+ .setHeader(MessageHeaders.CONTENT_TYPE, MimeTypeUtils.TEXT_XML)
+ .build();
+ Message> converted = binder.serializePayloadIfNecessary(message).toMessage();
+ assertEquals(MimeTypeUtils.TEXT_PLAIN, contentTypeResolver.resolve(converted.getHeaders()));
+ MessageValues reconstructed = binder.deserializePayloadIfNecessary(converted);
+ assertEquals("", reconstructed.getPayload());
+ assertEquals(MimeTypeUtils.TEXT_XML.toString(), reconstructed.get(MessageHeaders.CONTENT_TYPE));
+ }
+
@Test
public void testContentTypePreserved() throws IOException {
Message inbound = MessageBuilder.withPayload("{\"foo\":\"foo\"}")
diff --git a/spring-cloud-stream/src/main/java/org/springframework/cloud/stream/binder/AbstractBinder.java b/spring-cloud-stream/src/main/java/org/springframework/cloud/stream/binder/AbstractBinder.java
index a5a2bae91..540aa5f28 100644
--- a/spring-cloud-stream/src/main/java/org/springframework/cloud/stream/binder/AbstractBinder.java
+++ b/spring-cloud-stream/src/main/java/org/springframework/cloud/stream/binder/AbstractBinder.java
@@ -18,7 +18,6 @@ package org.springframework.cloud.stream.binder;
import static org.springframework.util.MimeTypeUtils.APPLICATION_JSON;
import static org.springframework.util.MimeTypeUtils.APPLICATION_OCTET_STREAM;
-import static org.springframework.util.MimeTypeUtils.TEXT_PLAIN;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
@@ -426,7 +425,7 @@ public abstract class AbstractBinder implements ApplicationContextAware, Init
}
private Object deserializePayload(byte[] bytes, MimeType contentType) {
- if (TEXT_PLAIN.equals(contentType) || APPLICATION_JSON.equals(contentType)) {
+ if ("text".equalsIgnoreCase(contentType.getType()) || APPLICATION_JSON.equals(contentType)) {
try {
return new String(bytes, "UTF-8");
}