SPR-6771 - HttpMessageConverter should accept Class<? extends T> on can read

This commit is contained in:
Arjen Poutsma 2010-01-28 09:23:34 +00:00
parent 1cda8cb6fa
commit f2fdf9fa6b
11 changed files with 18 additions and 20 deletions

View File

@ -91,7 +91,7 @@ public abstract class AbstractHttpMessageConverter<T> implements HttpMessageConv
* #getSupportedMediaTypes() supported media types} {@linkplain MediaType#includes(MediaType) include} the given media
* type.
*/
public boolean canRead(Class<? extends T> clazz, MediaType mediaType) {
public boolean canRead(Class<?> clazz, MediaType 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
* type.
*/
public boolean canWrite(Class<? extends T> clazz, MediaType mediaType) {
public boolean canWrite(Class<?> clazz, MediaType 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
* @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}

View File

@ -113,7 +113,7 @@ public class BufferedImageHttpMessageConverter implements HttpMessageConverter<B
this.cacheDir = cacheDir;
}
public boolean canRead(Class<? extends BufferedImage> clazz, MediaType mediaType) {
public boolean canRead(Class<?> clazz, MediaType mediaType) {
if (BufferedImage.class.equals(clazz)) {
return isReadable(mediaType);
}
@ -130,7 +130,7 @@ public class BufferedImageHttpMessageConverter implements HttpMessageConverter<B
return imageReaders.hasNext();
}
public boolean canWrite(Class<? extends BufferedImage> clazz, MediaType mediaType) {
public boolean canWrite(Class<?> clazz, MediaType mediaType) {
if (BufferedImage.class.equals(clazz)) {
return isWritable(mediaType);
}

View File

@ -42,7 +42,7 @@ public class ByteArrayHttpMessageConverter extends AbstractHttpMessageConverter<
}
@Override
public boolean supports(Class<? extends byte[]> clazz) {
public boolean supports(Class<?> clazz) {
return byte[].class.equals(clazz);
}

View File

@ -56,7 +56,7 @@ public class FormHttpMessageConverter extends AbstractHttpMessageConverter<Multi
}
@Override
public boolean supports(Class<? extends MultiValueMap<String, String>> clazz) {
public boolean supports(Class<?> clazz) {
return MultiValueMap.class.isAssignableFrom(clazz);
}

View File

@ -37,7 +37,7 @@ public interface HttpMessageConverter<T> {
* @param mediaType the media type to read, can be {@code null} if not specified
* @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.
@ -45,7 +45,7 @@ public interface HttpMessageConverter<T> {
* @param mediaType the media type to write, can be {@code null} if not specified
* @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.

View File

@ -51,7 +51,7 @@ public class StringHttpMessageConverter extends AbstractHttpMessageConverter<Str
}
@Override
public boolean supports(Class<? extends String> clazz) {
public boolean supports(Class<?> clazz) {
return String.class.equals(clazz);
}

View File

@ -97,6 +97,7 @@ public class MarshallingHttpMessageConverter extends AbstractXmlHttpMessageConve
this.unmarshaller = unmarshaller;
}
@Override
public boolean supports(Class<?> clazz) {
return unmarshaller.supports(clazz);
}

View File

@ -45,7 +45,7 @@ import org.springframework.http.converter.HttpMessageNotWritableException;
public class SourceHttpMessageConverter<T extends Source> extends AbstractXmlHttpMessageConverter<T> {
@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) ||
Source.class.equals(clazz);
}

View File

@ -43,14 +43,14 @@ public class FormHttpMessageConverterTests {
@Test
@SuppressWarnings("unchecked")
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
@SuppressWarnings("unchecked")
public void canWrite() {
assertTrue(converter.canWrite((Class<? extends MultiValueMap<String, String>>) 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, new MediaType("application", "x-www-form-urlencoded")));
assertTrue(converter.canWrite(MultiValueMap.class, MediaType.ALL));
}
@SuppressWarnings("unchecked")

View File

@ -39,7 +39,7 @@ public class HttpMessageConverterTests {
public void canRead() {
AbstractHttpMessageConverter<MyType> converter = new MyHttpMessageConverter<MyType>(MEDIA_TYPE) {
@Override
protected boolean supports(Class<? extends MyType> clazz) {
protected boolean supports(Class<?> clazz) {
return MyType.class.equals(clazz);
}
@ -54,7 +54,7 @@ public class HttpMessageConverterTests {
public void canWrite() {
AbstractHttpMessageConverter<MyType> converter = new MyHttpMessageConverter<MyType>(MEDIA_TYPE) {
@Override
protected boolean supports(Class<? extends MyType> clazz) {
protected boolean supports(Class<?> clazz) {
return MyType.class.equals(clazz);
}
@ -73,7 +73,7 @@ public class HttpMessageConverterTests {
}
@Override
protected boolean supports(Class<? extends T> clazz) {
protected boolean supports(Class<?> clazz) {
fail("Not expected");
return false;
}

View File

@ -43,15 +43,12 @@ public class Jaxb2RootElementHttpMessageConverterTest {
private RootElement rootElement;
private Type type;
private RootElement rootElementCglib;
@Before
public void setUp() {
converter = new Jaxb2RootElementHttpMessageConverter();
rootElement = new RootElement();
type = new Type();
DefaultAopProxyFactory proxyFactory = new DefaultAopProxyFactory();
AdvisedSupport advisedSupport = new AdvisedSupport();
advisedSupport.setTarget(rootElement);