diff --git a/spring-integration-http/src/main/java/org/springframework/integration/http/support/DefaultHttpHeaderMapper.java b/spring-integration-http/src/main/java/org/springframework/integration/http/support/DefaultHttpHeaderMapper.java index e4c2bd5fa0..7a3c7c1e28 100644 --- a/spring-integration-http/src/main/java/org/springframework/integration/http/support/DefaultHttpHeaderMapper.java +++ b/spring-integration-http/src/main/java/org/springframework/integration/http/support/DefaultHttpHeaderMapper.java @@ -55,6 +55,7 @@ import org.springframework.integration.support.utils.IntegrationUtils; import org.springframework.messaging.MessageHeaders; import org.springframework.util.Assert; import org.springframework.util.CollectionUtils; +import org.springframework.util.MimeType; import org.springframework.util.ObjectUtils; import org.springframework.util.PatternMatchUtils; import org.springframework.util.StringUtils; @@ -591,8 +592,8 @@ public class DefaultHttpHeaderMapper implements HeaderMapper, BeanF if (!CollectionUtils.isEmpty(values)) { List acceptableMediaTypes = new ArrayList<>(); for (Object type : values) { - if (type instanceof MediaType) { - acceptableMediaTypes.add((MediaType) type); + if (type instanceof MimeType) { + acceptableMediaTypes.add(MediaType.asMediaType((MimeType) type)); } else if (type instanceof String) { acceptableMediaTypes.addAll(MediaType.parseMediaTypes((String) type)); @@ -749,8 +750,8 @@ public class DefaultHttpHeaderMapper implements HeaderMapper, BeanF } } else if (MessageHeaders.CONTENT_TYPE.equalsIgnoreCase(name)) { - if (value instanceof MediaType) { - target.setContentType((MediaType) value); + if (value instanceof MimeType) { + target.setContentType(MediaType.asMediaType((MimeType) value)); } else if (value instanceof String) { target.setContentType(MediaType.parseMediaType((String) value)); diff --git a/spring-integration-http/src/test/java/org/springframework/integration/http/support/DefaultHttpHeaderMapperFromMessageOutboundTests.java b/spring-integration-http/src/test/java/org/springframework/integration/http/support/DefaultHttpHeaderMapperFromMessageOutboundTests.java index 3136e3d1d8..a135749f57 100644 --- a/spring-integration-http/src/test/java/org/springframework/integration/http/support/DefaultHttpHeaderMapperFromMessageOutboundTests.java +++ b/spring-integration-http/src/test/java/org/springframework/integration/http/support/DefaultHttpHeaderMapperFromMessageOutboundTests.java @@ -43,6 +43,7 @@ import org.springframework.integration.mapping.HeaderMapper; import org.springframework.integration.support.MessageBuilder; import org.springframework.messaging.Message; import org.springframework.messaging.MessageHeaders; +import org.springframework.util.MimeType; import org.springframework.util.StopWatch; /** @@ -345,6 +346,18 @@ public class DefaultHttpHeaderMapperFromMessageOutboundTests { assertEquals("html", headers.getContentType().getSubtype()); } + @Test + public void validateContentTypeAsMimeType() { + HeaderMapper mapper = DefaultHttpHeaderMapper.outboundMapper(); + Map messageHeaders = new HashMap<>(); + messageHeaders.put(MessageHeaders.CONTENT_TYPE, new MimeType("text", "plain")); + HttpHeaders headers = new HttpHeaders(); + + mapper.fromHeaders(new MessageHeaders(messageHeaders), headers); + assertEquals("text", headers.getContentType().getType()); + assertEquals("plain", headers.getContentType().getSubtype()); + } + // Date test @Test