Fix issue in BufferedImageHttpMessageConverter

This change ensures BufferedImageHttpMessageConverter writes when
"*/*" is requested.

Issue: SPR-7763
master
Rossen Stoyanchev 12 years ago
parent 4611d150fe
commit 2391277115
  1. 4
      spring-web/src/main/java/org/springframework/http/converter/BufferedImageHttpMessageConverter.java
  2. 3
      spring-web/src/test/java/org/springframework/http/converter/BufferedImageHttpMessageConverterTests.java

@ -132,7 +132,7 @@ public class BufferedImageHttpMessageConverter implements HttpMessageConverter<B
}
private boolean isWritable(MediaType mediaType) {
if (mediaType == null) {
if (mediaType == null || MediaType.ALL.equals(mediaType)) {
return true;
}
Iterator<ImageWriter> imageWriters = ImageIO.getImageWritersByMIMEType(mediaType.toString());
@ -191,7 +191,7 @@ public class BufferedImageHttpMessageConverter implements HttpMessageConverter<B
public void write(BufferedImage image, MediaType contentType, HttpOutputMessage outputMessage)
throws IOException, HttpMessageNotWritableException {
if (contentType == null) {
if (contentType == null || contentType.isWildcardType() || contentType.isWildcardSubtype()) {
contentType = getDefaultContentType();
}
Assert.notNull(contentType,

@ -51,6 +51,7 @@ public class BufferedImageHttpMessageConverterTests {
public void canWrite() {
assertTrue("Image not supported", converter.canWrite(BufferedImage.class, null));
assertTrue("Image not supported", converter.canWrite(BufferedImage.class, new MediaType("image", "png")));
assertTrue("Image not supported", converter.canWrite(BufferedImage.class, new MediaType("*", "*")));
}
@Test
@ -85,7 +86,7 @@ public class BufferedImageHttpMessageConverterTests {
converter.setDefaultContentType(contentType);
BufferedImage body = ImageIO.read(logo.getFile());
MockHttpOutputMessage outputMessage = new MockHttpOutputMessage();
converter.write(body, contentType, outputMessage);
converter.write(body, new MediaType("*", "*"), outputMessage);
assertEquals("Invalid content type", contentType, outputMessage.getHeaders().getContentType());
assertTrue("Invalid size", outputMessage.getBodyAsBytes().length > 0);
BufferedImage result = ImageIO.read(new ByteArrayInputStream(outputMessage.getBodyAsBytes()));

Loading…
Cancel
Save