SPR-6970 - AbstractHttpMessageConverter canWrite logic the wrong way round??

This commit is contained in:
Arjen Poutsma
2010-03-12 16:43:57 +00:00
parent 4c4f19ec94
commit 85b8befbd1
6 changed files with 122 additions and 29 deletions

View File

@@ -34,10 +34,15 @@ public class MediaTypeTests {
MediaType textPlain = MediaType.TEXT_PLAIN;
assertTrue("Equal types is not inclusive", textPlain.includes(textPlain));
MediaType allText = new MediaType("text");
assertTrue("All subtypes is not inclusive", allText.includes(textPlain));
assertFalse("All subtypes is not inclusive", textPlain.includes(allText));
assertFalse("All subtypes is inclusive", textPlain.includes(allText));
assertTrue("All types is not inclusive", MediaType.ALL.includes(textPlain));
assertFalse("All types is not inclusive", textPlain.includes(MediaType.ALL));
assertFalse("All types is inclusive", textPlain.includes(MediaType.ALL));
assertTrue("All types is not inclusive", MediaType.ALL.includes(textPlain));
assertFalse("All types is inclusive", textPlain.includes(MediaType.ALL));
MediaType applicationSoapXml = new MediaType("application", "soap+xml");
MediaType applicationWildcardXml = new MediaType("application", "*+xml");
@@ -48,6 +53,31 @@ public class MediaTypeTests {
assertTrue(applicationWildcardXml.includes(applicationSoapXml));
assertFalse(applicationSoapXml.includes(applicationWildcardXml));
}
@Test
public void isCompatible() throws Exception {
MediaType textPlain = MediaType.TEXT_PLAIN;
assertTrue("Equal types is not compatible", textPlain.isCompatibleWith(textPlain));
MediaType allText = new MediaType("text");
assertTrue("All subtypes is not compatible", allText.isCompatibleWith(textPlain));
assertTrue("All subtypes is not compatible", textPlain.isCompatibleWith(allText));
assertTrue("All types is not compatible", MediaType.ALL.isCompatibleWith(textPlain));
assertTrue("All types is not compatible", textPlain.isCompatibleWith(MediaType.ALL));
assertTrue("All types is not compatible", MediaType.ALL.isCompatibleWith(textPlain));
assertTrue("All types is compatible", textPlain.isCompatibleWith(MediaType.ALL));
MediaType applicationSoapXml = new MediaType("application", "soap+xml");
MediaType applicationWildcardXml = new MediaType("application", "*+xml");
assertTrue(applicationSoapXml.isCompatibleWith(applicationSoapXml));
assertTrue(applicationWildcardXml.isCompatibleWith(applicationWildcardXml));
assertTrue(applicationWildcardXml.isCompatibleWith(applicationSoapXml));
assertTrue(applicationSoapXml.isCompatibleWith(applicationWildcardXml));
}
@Test
public void testToString() throws Exception {

View File

@@ -1,5 +1,5 @@
/*
* Copyright 2002-2009 the original author or authors.
* Copyright 2002-2010 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -25,7 +25,7 @@ import javax.xml.transform.sax.SAXSource;
import javax.xml.transform.stream.StreamSource;
import static org.custommonkey.xmlunit.XMLAssert.*;
import static org.junit.Assert.assertEquals;
import org.junit.Before;
import org.junit.Test;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
@@ -37,26 +37,45 @@ import org.springframework.http.MockHttpOutputMessage;
import org.springframework.util.FileCopyUtils;
/** @author Arjen Poutsma */
@SuppressWarnings("unchecked")
public class SourceHttpMessageConverterTests {
private SourceHttpMessageConverter<Source> converter;
@Before
public void setUp() {
converter = new SourceHttpMessageConverter<Source>();
}
@Test
public void canRead() {
assertTrue(converter.canRead(Source.class, new MediaType("application", "xml")));
assertTrue(converter.canRead(Source.class, new MediaType("application", "soap+xml")));
}
@Test
public void canWrite() {
assertTrue(converter.canWrite(Source.class, new MediaType("application", "xml")));
assertTrue(converter.canWrite(Source.class, new MediaType("application", "soap+xml")));
assertTrue(converter.canWrite(Source.class, MediaType.ALL));
}
@Test
public void readDOMSource() throws Exception {
SourceHttpMessageConverter<DOMSource> converter = new SourceHttpMessageConverter<DOMSource>();
String body = "<root>Hello World</root>";
MockHttpInputMessage inputMessage = new MockHttpInputMessage(body.getBytes("UTF-8"));
inputMessage.getHeaders().setContentType(new MediaType("application", "xml"));
DOMSource result = converter.read(DOMSource.class, inputMessage);
DOMSource result = (DOMSource) converter.read(DOMSource.class, inputMessage);
Document document = (Document) result.getNode();
assertEquals("Invalid result", "root", document.getDocumentElement().getLocalName());
}
@Test
public void readSAXSource() throws Exception {
SourceHttpMessageConverter<SAXSource> converter = new SourceHttpMessageConverter<SAXSource>();
String body = "<root>Hello World</root>";
MockHttpInputMessage inputMessage = new MockHttpInputMessage(body.getBytes("UTF-8"));
inputMessage.getHeaders().setContentType(new MediaType("application", "xml"));
SAXSource result = converter.read(SAXSource.class, inputMessage);
SAXSource result = (SAXSource) converter.read(SAXSource.class, inputMessage);
InputSource inputSource = result.getInputSource();
String s = FileCopyUtils.copyToString(new InputStreamReader(inputSource.getByteStream()));
assertXMLEqual("Invalid result", body, s);
@@ -64,18 +83,16 @@ public class SourceHttpMessageConverterTests {
@Test
public void readStreamSource() throws Exception {
SourceHttpMessageConverter<StreamSource> converter = new SourceHttpMessageConverter<StreamSource>();
String body = "<root>Hello World</root>";
MockHttpInputMessage inputMessage = new MockHttpInputMessage(body.getBytes("UTF-8"));
inputMessage.getHeaders().setContentType(new MediaType("application", "xml"));
StreamSource result = converter.read(StreamSource.class, inputMessage);
StreamSource result = (StreamSource) converter.read(StreamSource.class, inputMessage);
String s = FileCopyUtils.copyToString(new InputStreamReader(result.getInputStream()));
assertXMLEqual("Invalid result", body, s);
}
@Test
public void readSource() throws Exception {
SourceHttpMessageConverter<Source> converter = new SourceHttpMessageConverter<Source>();
String body = "<root>Hello World</root>";
MockHttpInputMessage inputMessage = new MockHttpInputMessage(body.getBytes("UTF-8"));
inputMessage.getHeaders().setContentType(new MediaType("application", "xml"));
@@ -92,7 +109,6 @@ public class SourceHttpMessageConverterTests {
rootElement.setTextContent("Hello World");
DOMSource domSource = new DOMSource(document);
SourceHttpMessageConverter<Source> converter = new SourceHttpMessageConverter<Source>();
MockHttpOutputMessage outputMessage = new MockHttpOutputMessage();
converter.write(domSource, null, outputMessage);
assertXMLEqual("Invalid result", "<root>Hello World</root>",