Properly handle Flux<?> and Flux<Object> in WebFlux

Issue: SPR-15464
This commit is contained in:
Rossen Stoyanchev
2017-04-20 08:40:15 -04:00
parent a93698487e
commit cc102c2fcd
22 changed files with 72 additions and 37 deletions

View File

@@ -1,5 +1,5 @@
/*
* Copyright 2002-2016 the original author or authors.
* Copyright 2002-2017 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.
@@ -42,8 +42,8 @@ public class ByteArrayEncoder extends AbstractEncoder<byte[]> {
@Override
public boolean canEncode(ResolvableType elementType, MimeType mimeType) {
Class<?> clazz = elementType.getRawClass();
return (super.canEncode(elementType, mimeType) && byte[].class.isAssignableFrom(clazz));
Class<?> clazz = elementType.resolve(Object.class);
return super.canEncode(elementType, mimeType) && byte[].class.isAssignableFrom(clazz);
}
@Override

View File

@@ -1,5 +1,5 @@
/*
* Copyright 2002-2016 the original author or authors.
* Copyright 2002-2017 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.
@@ -43,8 +43,8 @@ public class ByteBufferEncoder extends AbstractEncoder<ByteBuffer> {
@Override
public boolean canEncode(ResolvableType elementType, MimeType mimeType) {
Class<?> clazz = elementType.getRawClass();
return (super.canEncode(elementType, mimeType) && ByteBuffer.class.isAssignableFrom(clazz));
Class<?> clazz = elementType.resolve(Object.class);
return super.canEncode(elementType, mimeType) && ByteBuffer.class.isAssignableFrom(clazz);
}
@Override

View File

@@ -52,8 +52,8 @@ public class CharSequenceEncoder extends AbstractEncoder<CharSequence> {
@Override
public boolean canEncode(ResolvableType elementType, MimeType mimeType) {
Class<?> clazz = elementType.getRawClass();
return (super.canEncode(elementType, mimeType) && CharSequence.class.isAssignableFrom(clazz));
Class<?> clazz = elementType.resolve(Object.class);
return super.canEncode(elementType, mimeType) && CharSequence.class.isAssignableFrom(clazz);
}
@Override

View File

@@ -42,8 +42,8 @@ public class DataBufferEncoder extends AbstractEncoder<DataBuffer> {
@Override
public boolean canEncode(ResolvableType elementType, MimeType mimeType) {
Class<?> clazz = elementType.getRawClass();
return (super.canEncode(elementType, mimeType) && DataBuffer.class.isAssignableFrom(clazz));
Class<?> clazz = elementType.resolve(Object.class);
return super.canEncode(elementType, mimeType) && DataBuffer.class.isAssignableFrom(clazz);
}
@Override

View File

@@ -61,7 +61,7 @@ public class ResourceEncoder extends AbstractSingleValueEncoder<Resource> {
@Override
public boolean canEncode(ResolvableType elementType, MimeType mimeType) {
Class<?> clazz = elementType.getRawClass();
Class<?> clazz = elementType.resolve(Object.class);
return (super.canEncode(elementType, mimeType) && Resource.class.isAssignableFrom(clazz));
}

View File

@@ -69,9 +69,8 @@ public class ResourceRegionEncoder extends AbstractEncoder<ResourceRegion> {
@Override
public boolean canEncode(ResolvableType elementType, MimeType mimeType) {
return super.canEncode(elementType, mimeType)
&& ResourceRegion.class.isAssignableFrom(elementType.getRawClass());
&& ResourceRegion.class.isAssignableFrom(elementType.resolve(Object.class));
}
@Override