Consistent use of ResolvableType.toClass() for assignability checks
Issue: SPR-17086
This commit is contained in:
@@ -34,7 +34,6 @@ import org.springframework.util.MimeTypeUtils;
|
||||
*/
|
||||
public class ByteArrayDecoder extends AbstractDataBufferDecoder<byte[]> {
|
||||
|
||||
|
||||
public ByteArrayDecoder() {
|
||||
super(MimeTypeUtils.ALL);
|
||||
}
|
||||
@@ -42,8 +41,7 @@ public class ByteArrayDecoder extends AbstractDataBufferDecoder<byte[]> {
|
||||
|
||||
@Override
|
||||
public boolean canDecode(ResolvableType elementType, @Nullable MimeType mimeType) {
|
||||
Class<?> clazz = elementType.getRawClass();
|
||||
return (super.canDecode(elementType, mimeType) && byte[].class == clazz);
|
||||
return (elementType.resolve() == byte[].class && super.canDecode(elementType, mimeType));
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -36,7 +36,6 @@ import org.springframework.util.MimeTypeUtils;
|
||||
*/
|
||||
public class ByteBufferDecoder extends AbstractDataBufferDecoder<ByteBuffer> {
|
||||
|
||||
|
||||
public ByteBufferDecoder() {
|
||||
super(MimeTypeUtils.ALL);
|
||||
}
|
||||
@@ -44,8 +43,8 @@ public class ByteBufferDecoder extends AbstractDataBufferDecoder<ByteBuffer> {
|
||||
|
||||
@Override
|
||||
public boolean canDecode(ResolvableType elementType, @Nullable MimeType mimeType) {
|
||||
Class<?> clazz = elementType.getRawClass();
|
||||
return (super.canDecode(elementType, mimeType) && clazz != null && ByteBuffer.class.isAssignableFrom(clazz));
|
||||
return (ByteBuffer.class.isAssignableFrom(elementType.toClass()) &&
|
||||
super.canDecode(elementType, mimeType));
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -45,7 +45,6 @@ import org.springframework.util.MimeTypeUtils;
|
||||
*/
|
||||
public class DataBufferDecoder extends AbstractDataBufferDecoder<DataBuffer> {
|
||||
|
||||
|
||||
public DataBufferDecoder() {
|
||||
super(MimeTypeUtils.ALL);
|
||||
}
|
||||
@@ -53,9 +52,8 @@ public class DataBufferDecoder extends AbstractDataBufferDecoder<DataBuffer> {
|
||||
|
||||
@Override
|
||||
public boolean canDecode(ResolvableType elementType, @Nullable MimeType mimeType) {
|
||||
Class<?> clazz = elementType.getRawClass();
|
||||
return (super.canDecode(elementType, mimeType) &&
|
||||
clazz != null && DataBuffer.class.isAssignableFrom(clazz));
|
||||
return (DataBuffer.class.isAssignableFrom(elementType.toClass()) &&
|
||||
super.canDecode(elementType, mimeType));
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -29,7 +29,6 @@ import org.springframework.core.io.Resource;
|
||||
import org.springframework.core.io.buffer.DataBuffer;
|
||||
import org.springframework.core.io.buffer.DataBufferUtils;
|
||||
import org.springframework.lang.Nullable;
|
||||
import org.springframework.util.Assert;
|
||||
import org.springframework.util.MimeType;
|
||||
import org.springframework.util.MimeTypeUtils;
|
||||
|
||||
@@ -42,7 +41,6 @@ import org.springframework.util.MimeTypeUtils;
|
||||
*/
|
||||
public class ResourceDecoder extends AbstractDataBufferDecoder<Resource> {
|
||||
|
||||
|
||||
public ResourceDecoder() {
|
||||
super(MimeTypeUtils.ALL);
|
||||
}
|
||||
@@ -50,8 +48,8 @@ public class ResourceDecoder extends AbstractDataBufferDecoder<Resource> {
|
||||
|
||||
@Override
|
||||
public boolean canDecode(ResolvableType elementType, @Nullable MimeType mimeType) {
|
||||
Class<?> clazz = elementType.getRawClass();
|
||||
return clazz != null && Resource.class.isAssignableFrom(clazz) && super.canDecode(elementType, mimeType);
|
||||
return (Resource.class.isAssignableFrom(elementType.toClass()) &&
|
||||
super.canDecode(elementType, mimeType));
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -69,14 +67,12 @@ public class ResourceDecoder extends AbstractDataBufferDecoder<Resource> {
|
||||
dataBuffer.read(bytes);
|
||||
DataBufferUtils.release(dataBuffer);
|
||||
|
||||
Class<?> clazz = elementType.getRawClass();
|
||||
Assert.state(clazz != null, "No resource class");
|
||||
|
||||
if (logger.isDebugEnabled()) {
|
||||
logger.debug(Hints.getLogPrefix(hints) + "Read " + bytes.length + " bytes");
|
||||
}
|
||||
|
||||
if (InputStreamResource.class == clazz) {
|
||||
Class<?> clazz = elementType.toClass();
|
||||
if (clazz == InputStreamResource.class) {
|
||||
return new InputStreamResource(new ByteArrayInputStream(bytes));
|
||||
}
|
||||
else if (Resource.class.isAssignableFrom(clazz)) {
|
||||
|
||||
@@ -64,7 +64,7 @@ public final class StringDecoder extends AbstractDataBufferDecoder<String> {
|
||||
public static final List<String> DEFAULT_DELIMITERS = Arrays.asList("\r\n", "\n");
|
||||
|
||||
private static final List<byte[]> DEFAULT_DELIMITER_BYTES = DEFAULT_DELIMITERS.stream()
|
||||
.map(s -> s.getBytes(StandardCharsets.UTF_8))
|
||||
.map(str -> str.getBytes(StandardCharsets.UTF_8))
|
||||
.collect(Collectors.toList());
|
||||
|
||||
|
||||
@@ -83,8 +83,7 @@ public final class StringDecoder extends AbstractDataBufferDecoder<String> {
|
||||
|
||||
@Override
|
||||
public boolean canDecode(ResolvableType elementType, @Nullable MimeType mimeType) {
|
||||
return (super.canDecode(elementType, mimeType) &&
|
||||
String.class.equals(elementType.getRawClass()));
|
||||
return (elementType.resolve() == String.class && super.canDecode(elementType, mimeType));
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
Reference in New Issue
Block a user