SPR-6771 - HttpMessageConverter should accept Class<? extends T> on can read
This commit is contained in:
parent
1cda8cb6fa
commit
f2fdf9fa6b
|
|
@ -91,7 +91,7 @@ public abstract class AbstractHttpMessageConverter<T> implements HttpMessageConv
|
||||||
* #getSupportedMediaTypes() supported media types} {@linkplain MediaType#includes(MediaType) include} the given media
|
* #getSupportedMediaTypes() supported media types} {@linkplain MediaType#includes(MediaType) include} the given media
|
||||||
* type.
|
* type.
|
||||||
*/
|
*/
|
||||||
public boolean canRead(Class<? extends T> clazz, MediaType mediaType) {
|
public boolean canRead(Class<?> clazz, MediaType mediaType) {
|
||||||
return supports(clazz) && canRead(mediaType);
|
return supports(clazz) && canRead(mediaType);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -121,7 +121,7 @@ public abstract class AbstractHttpMessageConverter<T> implements HttpMessageConv
|
||||||
* #getSupportedMediaTypes() supported media types} {@linkplain MediaType#includes(MediaType) include} the given media
|
* #getSupportedMediaTypes() supported media types} {@linkplain MediaType#includes(MediaType) include} the given media
|
||||||
* type.
|
* type.
|
||||||
*/
|
*/
|
||||||
public boolean canWrite(Class<? extends T> clazz, MediaType mediaType) {
|
public boolean canWrite(Class<?> clazz, MediaType mediaType) {
|
||||||
return supports(clazz) && canWrite(mediaType);
|
return supports(clazz) && canWrite(mediaType);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -150,7 +150,7 @@ public abstract class AbstractHttpMessageConverter<T> implements HttpMessageConv
|
||||||
* @param clazz the class to test for support
|
* @param clazz the class to test for support
|
||||||
* @return <code>true</code> if supported; <code>false</code> otherwise
|
* @return <code>true</code> if supported; <code>false</code> otherwise
|
||||||
*/
|
*/
|
||||||
protected abstract boolean supports(Class<? extends T> clazz);
|
protected abstract boolean supports(Class<?> clazz);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* {@inheritDoc}
|
* {@inheritDoc}
|
||||||
|
|
|
||||||
|
|
@ -113,7 +113,7 @@ public class BufferedImageHttpMessageConverter implements HttpMessageConverter<B
|
||||||
this.cacheDir = cacheDir;
|
this.cacheDir = cacheDir;
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean canRead(Class<? extends BufferedImage> clazz, MediaType mediaType) {
|
public boolean canRead(Class<?> clazz, MediaType mediaType) {
|
||||||
if (BufferedImage.class.equals(clazz)) {
|
if (BufferedImage.class.equals(clazz)) {
|
||||||
return isReadable(mediaType);
|
return isReadable(mediaType);
|
||||||
}
|
}
|
||||||
|
|
@ -130,7 +130,7 @@ public class BufferedImageHttpMessageConverter implements HttpMessageConverter<B
|
||||||
return imageReaders.hasNext();
|
return imageReaders.hasNext();
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean canWrite(Class<? extends BufferedImage> clazz, MediaType mediaType) {
|
public boolean canWrite(Class<?> clazz, MediaType mediaType) {
|
||||||
if (BufferedImage.class.equals(clazz)) {
|
if (BufferedImage.class.equals(clazz)) {
|
||||||
return isWritable(mediaType);
|
return isWritable(mediaType);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -42,7 +42,7 @@ public class ByteArrayHttpMessageConverter extends AbstractHttpMessageConverter<
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean supports(Class<? extends byte[]> clazz) {
|
public boolean supports(Class<?> clazz) {
|
||||||
return byte[].class.equals(clazz);
|
return byte[].class.equals(clazz);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -56,7 +56,7 @@ public class FormHttpMessageConverter extends AbstractHttpMessageConverter<Multi
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean supports(Class<? extends MultiValueMap<String, String>> clazz) {
|
public boolean supports(Class<?> clazz) {
|
||||||
return MultiValueMap.class.isAssignableFrom(clazz);
|
return MultiValueMap.class.isAssignableFrom(clazz);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -37,7 +37,7 @@ public interface HttpMessageConverter<T> {
|
||||||
* @param mediaType the media type to read, can be {@code null} if not specified
|
* @param mediaType the media type to read, can be {@code null} if not specified
|
||||||
* @return <code>true</code> if readable; <code>false</code> otherwise
|
* @return <code>true</code> if readable; <code>false</code> otherwise
|
||||||
*/
|
*/
|
||||||
boolean canRead(Class<? extends T> clazz, MediaType mediaType);
|
boolean canRead(Class<?> clazz, MediaType mediaType);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Indicates whether the given class can be written by this converter.
|
* Indicates whether the given class can be written by this converter.
|
||||||
|
|
@ -45,7 +45,7 @@ public interface HttpMessageConverter<T> {
|
||||||
* @param mediaType the media type to write, can be {@code null} if not specified
|
* @param mediaType the media type to write, can be {@code null} if not specified
|
||||||
* @return <code>true</code> if writable; <code>false</code> otherwise
|
* @return <code>true</code> if writable; <code>false</code> otherwise
|
||||||
*/
|
*/
|
||||||
boolean canWrite(Class<? extends T> clazz, MediaType mediaType);
|
boolean canWrite(Class<?> clazz, MediaType mediaType);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Return the list of {@link MediaType} objects supported by this converter.
|
* Return the list of {@link MediaType} objects supported by this converter.
|
||||||
|
|
|
||||||
|
|
@ -51,7 +51,7 @@ public class StringHttpMessageConverter extends AbstractHttpMessageConverter<Str
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean supports(Class<? extends String> clazz) {
|
public boolean supports(Class<?> clazz) {
|
||||||
return String.class.equals(clazz);
|
return String.class.equals(clazz);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -97,6 +97,7 @@ public class MarshallingHttpMessageConverter extends AbstractXmlHttpMessageConve
|
||||||
this.unmarshaller = unmarshaller;
|
this.unmarshaller = unmarshaller;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public boolean supports(Class<?> clazz) {
|
public boolean supports(Class<?> clazz) {
|
||||||
return unmarshaller.supports(clazz);
|
return unmarshaller.supports(clazz);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -45,7 +45,7 @@ import org.springframework.http.converter.HttpMessageNotWritableException;
|
||||||
public class SourceHttpMessageConverter<T extends Source> extends AbstractXmlHttpMessageConverter<T> {
|
public class SourceHttpMessageConverter<T extends Source> extends AbstractXmlHttpMessageConverter<T> {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean supports(Class<? extends T> clazz) {
|
public boolean supports(Class<?> clazz) {
|
||||||
return DOMSource.class.equals(clazz) || SAXSource.class.equals(clazz) || StreamSource.class.equals(clazz) ||
|
return DOMSource.class.equals(clazz) || SAXSource.class.equals(clazz) || StreamSource.class.equals(clazz) ||
|
||||||
Source.class.equals(clazz);
|
Source.class.equals(clazz);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -43,14 +43,14 @@ public class FormHttpMessageConverterTests {
|
||||||
@Test
|
@Test
|
||||||
@SuppressWarnings("unchecked")
|
@SuppressWarnings("unchecked")
|
||||||
public void canRead() {
|
public void canRead() {
|
||||||
assertTrue(converter.canRead((Class<? extends MultiValueMap<String, String>>) MultiValueMap.class, new MediaType("application", "x-www-form-urlencoded")));
|
assertTrue(converter.canRead(MultiValueMap.class, new MediaType("application", "x-www-form-urlencoded")));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@SuppressWarnings("unchecked")
|
@SuppressWarnings("unchecked")
|
||||||
public void canWrite() {
|
public void canWrite() {
|
||||||
assertTrue(converter.canWrite((Class<? extends MultiValueMap<String, String>>) MultiValueMap.class, new MediaType("application", "x-www-form-urlencoded")));
|
assertTrue(converter.canWrite(MultiValueMap.class, new MediaType("application", "x-www-form-urlencoded")));
|
||||||
assertTrue(converter.canWrite((Class<? extends MultiValueMap<String, String>>) MultiValueMap.class, MediaType.ALL));
|
assertTrue(converter.canWrite(MultiValueMap.class, MediaType.ALL));
|
||||||
}
|
}
|
||||||
|
|
||||||
@SuppressWarnings("unchecked")
|
@SuppressWarnings("unchecked")
|
||||||
|
|
|
||||||
|
|
@ -39,7 +39,7 @@ public class HttpMessageConverterTests {
|
||||||
public void canRead() {
|
public void canRead() {
|
||||||
AbstractHttpMessageConverter<MyType> converter = new MyHttpMessageConverter<MyType>(MEDIA_TYPE) {
|
AbstractHttpMessageConverter<MyType> converter = new MyHttpMessageConverter<MyType>(MEDIA_TYPE) {
|
||||||
@Override
|
@Override
|
||||||
protected boolean supports(Class<? extends MyType> clazz) {
|
protected boolean supports(Class<?> clazz) {
|
||||||
return MyType.class.equals(clazz);
|
return MyType.class.equals(clazz);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -54,7 +54,7 @@ public class HttpMessageConverterTests {
|
||||||
public void canWrite() {
|
public void canWrite() {
|
||||||
AbstractHttpMessageConverter<MyType> converter = new MyHttpMessageConverter<MyType>(MEDIA_TYPE) {
|
AbstractHttpMessageConverter<MyType> converter = new MyHttpMessageConverter<MyType>(MEDIA_TYPE) {
|
||||||
@Override
|
@Override
|
||||||
protected boolean supports(Class<? extends MyType> clazz) {
|
protected boolean supports(Class<?> clazz) {
|
||||||
return MyType.class.equals(clazz);
|
return MyType.class.equals(clazz);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -73,7 +73,7 @@ public class HttpMessageConverterTests {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected boolean supports(Class<? extends T> clazz) {
|
protected boolean supports(Class<?> clazz) {
|
||||||
fail("Not expected");
|
fail("Not expected");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -43,15 +43,12 @@ public class Jaxb2RootElementHttpMessageConverterTest {
|
||||||
|
|
||||||
private RootElement rootElement;
|
private RootElement rootElement;
|
||||||
|
|
||||||
private Type type;
|
|
||||||
|
|
||||||
private RootElement rootElementCglib;
|
private RootElement rootElementCglib;
|
||||||
|
|
||||||
@Before
|
@Before
|
||||||
public void setUp() {
|
public void setUp() {
|
||||||
converter = new Jaxb2RootElementHttpMessageConverter();
|
converter = new Jaxb2RootElementHttpMessageConverter();
|
||||||
rootElement = new RootElement();
|
rootElement = new RootElement();
|
||||||
type = new Type();
|
|
||||||
DefaultAopProxyFactory proxyFactory = new DefaultAopProxyFactory();
|
DefaultAopProxyFactory proxyFactory = new DefaultAopProxyFactory();
|
||||||
AdvisedSupport advisedSupport = new AdvisedSupport();
|
AdvisedSupport advisedSupport = new AdvisedSupport();
|
||||||
advisedSupport.setTarget(rootElement);
|
advisedSupport.setTarget(rootElement);
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue