提交 38f3d12e 编写于 作者: S Sebastien Deleuze

Do not provide hints for can*() methods anymore

Issue: SPR-14557
上级 b83a6daf
...@@ -50,7 +50,7 @@ public abstract class AbstractDecoder<T> implements Decoder<T> { ...@@ -50,7 +50,7 @@ public abstract class AbstractDecoder<T> implements Decoder<T> {
} }
@Override @Override
public boolean canDecode(ResolvableType elementType, MimeType mimeType, Map<String, Object> hints) { public boolean canDecode(ResolvableType elementType, MimeType mimeType) {
if (mimeType == null) { if (mimeType == null) {
return true; return true;
} }
......
...@@ -46,7 +46,7 @@ public abstract class AbstractEncoder<T> implements Encoder<T> { ...@@ -46,7 +46,7 @@ public abstract class AbstractEncoder<T> implements Encoder<T> {
} }
@Override @Override
public boolean canEncode(ResolvableType elementType, MimeType mimeType, Map<String, Object> hints) { public boolean canEncode(ResolvableType elementType, MimeType mimeType) {
if (mimeType == null) { if (mimeType == null) {
return true; return true;
} }
......
...@@ -43,9 +43,9 @@ public class ByteBufferDecoder extends AbstractDecoder<ByteBuffer> { ...@@ -43,9 +43,9 @@ public class ByteBufferDecoder extends AbstractDecoder<ByteBuffer> {
@Override @Override
public boolean canDecode(ResolvableType elementType, MimeType mimeType, Map<String, Object> hints) { public boolean canDecode(ResolvableType elementType, MimeType mimeType) {
Class<?> clazz = elementType.getRawClass(); Class<?> clazz = elementType.getRawClass();
return (super.canDecode(elementType, mimeType, hints) && ByteBuffer.class.isAssignableFrom(clazz)); return (super.canDecode(elementType, mimeType) && ByteBuffer.class.isAssignableFrom(clazz));
} }
@Override @Override
......
...@@ -42,9 +42,9 @@ public class ByteBufferEncoder extends AbstractEncoder<ByteBuffer> { ...@@ -42,9 +42,9 @@ public class ByteBufferEncoder extends AbstractEncoder<ByteBuffer> {
@Override @Override
public boolean canEncode(ResolvableType elementType, MimeType mimeType, Map<String, Object> hints) { public boolean canEncode(ResolvableType elementType, MimeType mimeType) {
Class<?> clazz = elementType.getRawClass(); Class<?> clazz = elementType.getRawClass();
return (super.canEncode(elementType, mimeType, hints) && ByteBuffer.class.isAssignableFrom(clazz)); return (super.canEncode(elementType, mimeType) && ByteBuffer.class.isAssignableFrom(clazz));
} }
@Override @Override
......
...@@ -49,9 +49,9 @@ public class CharSequenceEncoder extends AbstractEncoder<CharSequence> { ...@@ -49,9 +49,9 @@ public class CharSequenceEncoder extends AbstractEncoder<CharSequence> {
@Override @Override
public boolean canEncode(ResolvableType elementType, MimeType mimeType, Map<String, Object> hints) { public boolean canEncode(ResolvableType elementType, MimeType mimeType) {
Class<?> clazz = elementType.getRawClass(); Class<?> clazz = elementType.getRawClass();
return (super.canEncode(elementType, mimeType, hints) && CharSequence.class.isAssignableFrom(clazz)); return (super.canEncode(elementType, mimeType) && CharSequence.class.isAssignableFrom(clazz));
} }
@Override @Override
......
...@@ -43,10 +43,9 @@ public interface Decoder<T> { ...@@ -43,10 +43,9 @@ public interface Decoder<T> {
* type of the source stream. * type of the source stream.
* @param elementType the target element type for the output stream * @param elementType the target element type for the output stream
* @param mimeType the mime type associated with the stream to decode * @param mimeType the mime type associated with the stream to decode
* @param hints additional information about how to do encode
* @return {@code true} if supported, {@code false} otherwise * @return {@code true} if supported, {@code false} otherwise
*/ */
boolean canDecode(ResolvableType elementType, MimeType mimeType, Map<String, Object> hints); boolean canDecode(ResolvableType elementType, MimeType mimeType);
/** /**
* Decode a {@link DataBuffer} input stream into a Flux of {@code T}. * Decode a {@link DataBuffer} input stream into a Flux of {@code T}.
......
...@@ -44,10 +44,9 @@ public interface Encoder<T> { ...@@ -44,10 +44,9 @@ public interface Encoder<T> {
* type for the output stream. * type for the output stream.
* @param elementType the type of elements in the source stream * @param elementType the type of elements in the source stream
* @param mimeType the MIME type for the output stream * @param mimeType the MIME type for the output stream
* @param hints additional information about how to do encode
* @return {@code true} if supported, {@code false} otherwise * @return {@code true} if supported, {@code false} otherwise
*/ */
boolean canEncode(ResolvableType elementType, MimeType mimeType, Map<String, Object> hints); boolean canEncode(ResolvableType elementType, MimeType mimeType);
/** /**
* Encode a stream of Objects of type {@code T} into a {@link DataBuffer} * Encode a stream of Objects of type {@code T} into a {@link DataBuffer}
......
...@@ -46,11 +46,11 @@ public class ResourceDecoder extends AbstractDecoder<Resource> { ...@@ -46,11 +46,11 @@ public class ResourceDecoder extends AbstractDecoder<Resource> {
@Override @Override
public boolean canDecode(ResolvableType elementType, MimeType mimeType, Map<String, Object> hints) { public boolean canDecode(ResolvableType elementType, MimeType mimeType) {
Class<?> clazz = elementType.getRawClass(); Class<?> clazz = elementType.getRawClass();
return (InputStreamResource.class.equals(clazz) || return (InputStreamResource.class.equals(clazz) ||
clazz.isAssignableFrom(ByteArrayResource.class)) && clazz.isAssignableFrom(ByteArrayResource.class)) &&
super.canDecode(elementType, mimeType, hints); super.canDecode(elementType, mimeType);
} }
@Override @Override
......
...@@ -57,9 +57,9 @@ public class ResourceEncoder extends AbstractSingleValueEncoder<Resource> { ...@@ -57,9 +57,9 @@ public class ResourceEncoder extends AbstractSingleValueEncoder<Resource> {
@Override @Override
public boolean canEncode(ResolvableType elementType, MimeType mimeType, Map<String, Object> hints) { public boolean canEncode(ResolvableType elementType, MimeType mimeType) {
Class<?> clazz = elementType.getRawClass(); Class<?> clazz = elementType.getRawClass();
return (super.canEncode(elementType, mimeType, hints) && Resource.class.isAssignableFrom(clazz)); return (super.canEncode(elementType, mimeType) && Resource.class.isAssignableFrom(clazz));
} }
@Override @Override
......
...@@ -78,8 +78,8 @@ public class StringDecoder extends AbstractDecoder<String> { ...@@ -78,8 +78,8 @@ public class StringDecoder extends AbstractDecoder<String> {
@Override @Override
public boolean canDecode(ResolvableType elementType, MimeType mimeType, Map<String, Object> hints) { public boolean canDecode(ResolvableType elementType, MimeType mimeType) {
return (super.canDecode(elementType, mimeType, hints) && return (super.canDecode(elementType, mimeType) &&
String.class.equals(elementType.getRawClass())); String.class.equals(elementType.getRawClass()));
} }
......
...@@ -42,11 +42,11 @@ public class ByteBufferDecoderTests extends AbstractDataBufferAllocatingTestCase ...@@ -42,11 +42,11 @@ public class ByteBufferDecoderTests extends AbstractDataBufferAllocatingTestCase
@Test @Test
public void canDecode() { public void canDecode() {
assertTrue(this.decoder.canDecode(ResolvableType.forClass(ByteBuffer.class), assertTrue(this.decoder.canDecode(ResolvableType.forClass(ByteBuffer.class),
MimeTypeUtils.TEXT_PLAIN, Collections.emptyMap())); MimeTypeUtils.TEXT_PLAIN));
assertFalse(this.decoder.canDecode(ResolvableType.forClass(Integer.class), assertFalse(this.decoder.canDecode(ResolvableType.forClass(Integer.class),
MimeTypeUtils.TEXT_PLAIN, Collections.emptyMap())); MimeTypeUtils.TEXT_PLAIN));
assertTrue(this.decoder.canDecode(ResolvableType.forClass(ByteBuffer.class), assertTrue(this.decoder.canDecode(ResolvableType.forClass(ByteBuffer.class),
MimeTypeUtils.APPLICATION_JSON, Collections.emptyMap())); MimeTypeUtils.APPLICATION_JSON));
} }
@Test @Test
......
...@@ -50,11 +50,11 @@ public class ByteBufferEncoderTests extends AbstractDataBufferAllocatingTestCase ...@@ -50,11 +50,11 @@ public class ByteBufferEncoderTests extends AbstractDataBufferAllocatingTestCase
@Test @Test
public void canEncode() { public void canEncode() {
assertTrue(this.encoder.canEncode(ResolvableType.forClass(ByteBuffer.class), assertTrue(this.encoder.canEncode(ResolvableType.forClass(ByteBuffer.class),
MimeTypeUtils.TEXT_PLAIN, Collections.emptyMap())); MimeTypeUtils.TEXT_PLAIN));
assertFalse(this.encoder.canEncode(ResolvableType.forClass(Integer.class), assertFalse(this.encoder.canEncode(ResolvableType.forClass(Integer.class),
MimeTypeUtils.TEXT_PLAIN, Collections.emptyMap())); MimeTypeUtils.TEXT_PLAIN));
assertTrue(this.encoder.canEncode(ResolvableType.forClass(ByteBuffer.class), assertTrue(this.encoder.canEncode(ResolvableType.forClass(ByteBuffer.class),
MimeTypeUtils.APPLICATION_JSON, Collections.emptyMap())); MimeTypeUtils.APPLICATION_JSON));
} }
@Test @Test
......
...@@ -49,15 +49,15 @@ public class CharSequenceEncoderTests extends AbstractDataBufferAllocatingTestCa ...@@ -49,15 +49,15 @@ public class CharSequenceEncoderTests extends AbstractDataBufferAllocatingTestCa
@Test @Test
public void canWrite() { public void canWrite() {
assertTrue(this.encoder.canEncode(ResolvableType.forClass(String.class), assertTrue(this.encoder.canEncode(ResolvableType.forClass(String.class),
MimeTypeUtils.TEXT_PLAIN, Collections.emptyMap())); MimeTypeUtils.TEXT_PLAIN));
assertTrue(this.encoder.canEncode(ResolvableType.forClass(StringBuilder.class), assertTrue(this.encoder.canEncode(ResolvableType.forClass(StringBuilder.class),
MimeTypeUtils.TEXT_PLAIN, Collections.emptyMap())); MimeTypeUtils.TEXT_PLAIN));
assertTrue(this.encoder.canEncode(ResolvableType.forClass(StringBuffer.class), assertTrue(this.encoder.canEncode(ResolvableType.forClass(StringBuffer.class),
MimeTypeUtils.TEXT_PLAIN, Collections.emptyMap())); MimeTypeUtils.TEXT_PLAIN));
assertFalse(this.encoder.canEncode(ResolvableType.forClass(Integer.class), assertFalse(this.encoder.canEncode(ResolvableType.forClass(Integer.class),
MimeTypeUtils.TEXT_PLAIN, Collections.emptyMap())); MimeTypeUtils.TEXT_PLAIN));
assertFalse(this.encoder.canEncode(ResolvableType.forClass(String.class), assertFalse(this.encoder.canEncode(ResolvableType.forClass(String.class),
MimeTypeUtils.APPLICATION_JSON, Collections.emptyMap())); MimeTypeUtils.APPLICATION_JSON));
} }
@Test @Test
......
...@@ -46,13 +46,13 @@ public class ResourceDecoderTests extends AbstractDataBufferAllocatingTestCase { ...@@ -46,13 +46,13 @@ public class ResourceDecoderTests extends AbstractDataBufferAllocatingTestCase {
@Test @Test
public void canDecode() throws Exception { public void canDecode() throws Exception {
assertTrue(this.decoder.canDecode(ResolvableType.forClass(InputStreamResource.class), assertTrue(this.decoder.canDecode(ResolvableType.forClass(InputStreamResource.class),
MimeTypeUtils.TEXT_PLAIN, Collections.emptyMap())); MimeTypeUtils.TEXT_PLAIN));
assertTrue(this.decoder.canDecode(ResolvableType.forClass(ByteArrayResource.class), assertTrue(this.decoder.canDecode(ResolvableType.forClass(ByteArrayResource.class),
MimeTypeUtils.TEXT_PLAIN, Collections.emptyMap())); MimeTypeUtils.TEXT_PLAIN));
assertTrue(this.decoder.canDecode(ResolvableType.forClass(Resource.class), assertTrue(this.decoder.canDecode(ResolvableType.forClass(Resource.class),
MimeTypeUtils.TEXT_PLAIN, Collections.emptyMap())); MimeTypeUtils.TEXT_PLAIN));
assertTrue(this.decoder.canDecode(ResolvableType.forClass(InputStreamResource.class), assertTrue(this.decoder.canDecode(ResolvableType.forClass(InputStreamResource.class),
MimeTypeUtils.APPLICATION_JSON, Collections.emptyMap())); MimeTypeUtils.APPLICATION_JSON));
} }
@Test @Test
......
...@@ -44,13 +44,13 @@ public class ResourceEncoderTests extends AbstractDataBufferAllocatingTestCase { ...@@ -44,13 +44,13 @@ public class ResourceEncoderTests extends AbstractDataBufferAllocatingTestCase {
@Test @Test
public void canEncode() throws Exception { public void canEncode() throws Exception {
assertTrue(this.encoder.canEncode(ResolvableType.forClass(InputStreamResource.class), assertTrue(this.encoder.canEncode(ResolvableType.forClass(InputStreamResource.class),
MimeTypeUtils.TEXT_PLAIN, Collections.emptyMap())); MimeTypeUtils.TEXT_PLAIN));
assertTrue(this.encoder.canEncode(ResolvableType.forClass(ByteArrayResource.class), assertTrue(this.encoder.canEncode(ResolvableType.forClass(ByteArrayResource.class),
MimeTypeUtils.TEXT_PLAIN, Collections.emptyMap())); MimeTypeUtils.TEXT_PLAIN));
assertTrue(this.encoder.canEncode(ResolvableType.forClass(Resource.class), assertTrue(this.encoder.canEncode(ResolvableType.forClass(Resource.class),
MimeTypeUtils.TEXT_PLAIN, Collections.emptyMap())); MimeTypeUtils.TEXT_PLAIN));
assertTrue(this.encoder.canEncode(ResolvableType.forClass(InputStreamResource.class), assertTrue(this.encoder.canEncode(ResolvableType.forClass(InputStreamResource.class),
MimeTypeUtils.APPLICATION_JSON, Collections.emptyMap())); MimeTypeUtils.APPLICATION_JSON));
} }
@Test @Test
......
...@@ -44,15 +44,15 @@ public class StringDecoderTests extends AbstractDataBufferAllocatingTestCase { ...@@ -44,15 +44,15 @@ public class StringDecoderTests extends AbstractDataBufferAllocatingTestCase {
@Test @Test
public void canDecode() { public void canDecode() {
assertTrue(this.decoder.canDecode(ResolvableType.forClass(String.class), assertTrue(this.decoder.canDecode(ResolvableType.forClass(String.class),
MimeTypeUtils.TEXT_PLAIN, Collections.emptyMap())); MimeTypeUtils.TEXT_PLAIN));
assertTrue(this.decoder.canDecode(ResolvableType.forClass(String.class), assertTrue(this.decoder.canDecode(ResolvableType.forClass(String.class),
MimeTypeUtils.TEXT_HTML, Collections.emptyMap())); MimeTypeUtils.TEXT_HTML));
assertTrue(this.decoder.canDecode(ResolvableType.forClass(String.class), assertTrue(this.decoder.canDecode(ResolvableType.forClass(String.class),
MimeTypeUtils.APPLICATION_JSON, Collections.emptyMap())); MimeTypeUtils.APPLICATION_JSON));
assertFalse(this.decoder.canDecode(ResolvableType.forClass(Integer.class), assertFalse(this.decoder.canDecode(ResolvableType.forClass(Integer.class),
MimeTypeUtils.TEXT_PLAIN, Collections.emptyMap())); MimeTypeUtils.TEXT_PLAIN));
assertFalse(this.decoder.canDecode(ResolvableType.forClass(Object.class), assertFalse(this.decoder.canDecode(ResolvableType.forClass(Object.class),
MimeTypeUtils.APPLICATION_JSON, Collections.emptyMap())); MimeTypeUtils.APPLICATION_JSON));
} }
@Test @Test
......
...@@ -102,7 +102,7 @@ public abstract class BodyExtractors { ...@@ -102,7 +102,7 @@ public abstract class BodyExtractors {
MediaType contentType = contentType(request); MediaType contentType = contentType(request);
Supplier<Stream<HttpMessageReader<?>>> messageReaders = strategies.messageReaders(); Supplier<Stream<HttpMessageReader<?>>> messageReaders = strategies.messageReaders();
return messageReaders.get() return messageReaders.get()
.filter(r -> r.canRead(elementType, contentType, Collections.emptyMap())) .filter(r -> r.canRead(elementType, contentType))
.findFirst() .findFirst()
.map(BodyExtractors::<T>cast) .map(BodyExtractors::<T>cast)
.map(readerFunction) .map(readerFunction)
......
...@@ -208,8 +208,7 @@ public abstract class BodyInserters { ...@@ -208,8 +208,7 @@ public abstract class BodyInserters {
// TODO: use ContentNegotiatingResultHandlerSupport // TODO: use ContentNegotiatingResultHandlerSupport
MediaType contentType = response.getHeaders().getContentType(); MediaType contentType = response.getHeaders().getContentType();
return strategies.messageWriters().get() return strategies.messageWriters().get()
.filter(messageWriter -> messageWriter.canWrite(bodyType, contentType, Collections .filter(messageWriter -> messageWriter.canWrite(bodyType, contentType))
.emptyMap()))
.findFirst() .findFirst()
.map(BodyInserters::cast) .map(BodyInserters::cast)
.map(messageWriter -> messageWriter .map(messageWriter -> messageWriter
......
...@@ -124,7 +124,7 @@ public class HttpMessageWriterView implements View { ...@@ -124,7 +124,7 @@ public class HttpMessageWriterView implements View {
else if (map.size() == 1) { else if (map.size() == 1) {
return map.values().iterator().next(); return map.values().iterator().next();
} }
else if (getMessageWriter().canWrite(ResolvableType.forClass(Map.class), null, Collections.emptyMap())) { else if (getMessageWriter().canWrite(ResolvableType.forClass(Map.class), null)) {
return map; return map;
} }
else { else {
...@@ -143,10 +143,10 @@ public class HttpMessageWriterView implements View { ...@@ -143,10 +143,10 @@ public class HttpMessageWriterView implements View {
protected boolean isEligibleAttribute(String attributeName, Object attributeValue) { protected boolean isEligibleAttribute(String attributeName, Object attributeValue) {
ResolvableType type = ResolvableType.forClass(attributeValue.getClass()); ResolvableType type = ResolvableType.forClass(attributeValue.getClass());
if (getModelKeys().isEmpty()) { if (getModelKeys().isEmpty()) {
return getMessageWriter().canWrite(type, null, Collections.emptyMap()); return getMessageWriter().canWrite(type, null);
} }
if (getModelKeys().contains(attributeName)) { if (getModelKeys().contains(attributeName)) {
if (getMessageWriter().canWrite(type, null, Collections.emptyMap())) { if (getMessageWriter().canWrite(type, null)) {
return true; return true;
} }
throw new IllegalStateException( throw new IllegalStateException(
......
...@@ -271,7 +271,7 @@ public class WebReactiveConfigurationTests { ...@@ -271,7 +271,7 @@ public class WebReactiveConfigurationTests {
private void assertHasMessageReader(List<HttpMessageReader<?>> readers, Class<?> clazz, MediaType mediaType) { private void assertHasMessageReader(List<HttpMessageReader<?>> readers, Class<?> clazz, MediaType mediaType) {
ResolvableType type = ResolvableType.forClass(clazz); ResolvableType type = ResolvableType.forClass(clazz);
assertTrue(readers.stream() assertTrue(readers.stream()
.filter(c -> mediaType == null || c.canRead(type, mediaType, Collections.emptyMap())) .filter(c -> mediaType == null || c.canRead(type, mediaType))
.findAny() .findAny()
.isPresent()); .isPresent());
} }
...@@ -279,7 +279,7 @@ public class WebReactiveConfigurationTests { ...@@ -279,7 +279,7 @@ public class WebReactiveConfigurationTests {
private void assertHasMessageWriter(List<HttpMessageWriter<?>> writers, Class<?> clazz, MediaType mediaType) { private void assertHasMessageWriter(List<HttpMessageWriter<?>> writers, Class<?> clazz, MediaType mediaType) {
ResolvableType type = ResolvableType.forClass(clazz); ResolvableType type = ResolvableType.forClass(clazz);
assertTrue(writers.stream() assertTrue(writers.stream()
.filter(c -> mediaType == null || c.canWrite(type, mediaType, Collections.emptyMap())) .filter(c -> mediaType == null || c.canWrite(type, mediaType))
.findAny() .findAny()
.isPresent()); .isPresent());
} }
......
...@@ -92,7 +92,7 @@ public class StrategiesSupplierTests { ...@@ -92,7 +92,7 @@ public class StrategiesSupplierTests {
private static class DummyMessageWriter implements HttpMessageWriter<Object> { private static class DummyMessageWriter implements HttpMessageWriter<Object> {
@Override @Override
public boolean canWrite(ResolvableType type, MediaType mediaType, Map<String, Object> hints) { public boolean canWrite(ResolvableType type, MediaType mediaType) {
return false; return false;
} }
...@@ -113,7 +113,7 @@ public class StrategiesSupplierTests { ...@@ -113,7 +113,7 @@ public class StrategiesSupplierTests {
private static class DummyMessageReader implements HttpMessageReader<Object> { private static class DummyMessageReader implements HttpMessageReader<Object> {
@Override @Override
public boolean canRead(ResolvableType type, MediaType mediaType, Map<String, Object> hints) { public boolean canRead(ResolvableType type, MediaType mediaType) {
return false; return false;
} }
......
...@@ -56,8 +56,8 @@ public class DecoderHttpMessageReader<T> implements HttpMessageReader<T> { ...@@ -56,8 +56,8 @@ public class DecoderHttpMessageReader<T> implements HttpMessageReader<T> {
@Override @Override
public boolean canRead(ResolvableType elementType, MediaType mediaType, Map<String, Object> hints) { public boolean canRead(ResolvableType elementType, MediaType mediaType) {
return this.decoder != null && this.decoder.canDecode(elementType, mediaType, hints); return this.decoder != null && this.decoder.canDecode(elementType, mediaType);
} }
@Override @Override
......
...@@ -60,8 +60,8 @@ public class EncoderHttpMessageWriter<T> implements HttpMessageWriter<T> { ...@@ -60,8 +60,8 @@ public class EncoderHttpMessageWriter<T> implements HttpMessageWriter<T> {
@Override @Override
public boolean canWrite(ResolvableType elementType, MediaType mediaType, Map<String, Object> hints) { public boolean canWrite(ResolvableType elementType, MediaType mediaType) {
return this.encoder != null && this.encoder.canEncode(elementType, mediaType, hints); return this.encoder != null && this.encoder.canEncode(elementType, mediaType);
} }
@Override @Override
......
...@@ -42,10 +42,9 @@ public interface HttpMessageReader<T> { ...@@ -42,10 +42,9 @@ public interface HttpMessageReader<T> {
* @param elementType the stream element type to test for readability * @param elementType the stream element type to test for readability
* @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.
* Typically the value of a {@code Content-Type} header. * Typically the value of a {@code Content-Type} header.
* @param hints additional information about how to do read
* @return {@code true} if readable; {@code false} otherwise * @return {@code true} if readable; {@code false} otherwise
*/ */
boolean canRead(ResolvableType elementType, MediaType mediaType, Map<String, Object> hints); boolean canRead(ResolvableType elementType, MediaType mediaType);
/** /**
* Read a {@link Flux} of the given type form the given input message, and returns it. * Read a {@link Flux} of the given type form the given input message, and returns it.
...@@ -53,7 +52,7 @@ public interface HttpMessageReader<T> { ...@@ -53,7 +52,7 @@ public interface HttpMessageReader<T> {
* passed to the {@link #canRead canRead} method of this interface, which must have * passed to the {@link #canRead canRead} method of this interface, which must have
* returned {@code true}. * returned {@code true}.
* @param inputMessage the HTTP input message to read from * @param inputMessage the HTTP input message to read from
* @param hints additional information about how to do read * @param hints additional information about how to read the body
* @return the converted {@link Flux} of elements * @return the converted {@link Flux} of elements
*/ */
Flux<T> read(ResolvableType elementType, ReactiveHttpInputMessage inputMessage, Map<String, Object> hints); Flux<T> read(ResolvableType elementType, ReactiveHttpInputMessage inputMessage, Map<String, Object> hints);
...@@ -64,7 +63,7 @@ public interface HttpMessageReader<T> { ...@@ -64,7 +63,7 @@ public interface HttpMessageReader<T> {
* passed to the {@link #canRead canRead} method of this interface, which must have * passed to the {@link #canRead canRead} method of this interface, which must have
* returned {@code true}. * returned {@code true}.
* @param inputMessage the HTTP input message to read from * @param inputMessage the HTTP input message to read from
* @param hints additional information about how to do read * @param hints additional information about how to read the body
* @return the converted {@link Mono} of object * @return the converted {@link Mono} of object
*/ */
Mono<T> readMono(ResolvableType elementType, ReactiveHttpInputMessage inputMessage, Map<String, Object> hints); Mono<T> readMono(ResolvableType elementType, ReactiveHttpInputMessage inputMessage, Map<String, Object> hints);
......
...@@ -42,10 +42,9 @@ public interface HttpMessageWriter<T> { ...@@ -42,10 +42,9 @@ public interface HttpMessageWriter<T> {
* @param elementType the stream element type to test for writability * @param elementType the stream element type to test for writability
* @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.
* Typically the value of an {@code Accept} header. * Typically the value of an {@code Accept} header.
* @param hints additional information about how to write
* @return {@code true} if writable; {@code false} otherwise * @return {@code true} if writable; {@code false} otherwise
*/ */
boolean canWrite(ResolvableType elementType, MediaType mediaType, Map<String, Object> hints); boolean canWrite(ResolvableType elementType, MediaType mediaType);
/** /**
* Write an given object to the given output message. * Write an given object to the given output message.
......
...@@ -62,7 +62,7 @@ public class ServerSentEventHttpMessageWriter implements HttpMessageWriter<Objec ...@@ -62,7 +62,7 @@ public class ServerSentEventHttpMessageWriter implements HttpMessageWriter<Objec
} }
@Override @Override
public boolean canWrite(ResolvableType elementType, MediaType mediaType, Map<String, Object> hints) { public boolean canWrite(ResolvableType elementType, MediaType mediaType) {
return mediaType == null || TEXT_EVENT_STREAM.isCompatibleWith(mediaType); return mediaType == null || TEXT_EVENT_STREAM.isCompatibleWith(mediaType);
} }
...@@ -134,7 +134,7 @@ public class ServerSentEventHttpMessageWriter implements HttpMessageWriter<Objec ...@@ -134,7 +134,7 @@ public class ServerSentEventHttpMessageWriter implements HttpMessageWriter<Objec
ResolvableType elementType = ResolvableType.forClass(data.getClass()); ResolvableType elementType = ResolvableType.forClass(data.getClass());
Optional<Encoder<?>> encoder = dataEncoders Optional<Encoder<?>> encoder = dataEncoders
.stream() .stream()
.filter(e -> e.canEncode(elementType, MimeTypeUtils.APPLICATION_JSON, Collections.emptyMap())) .filter(e -> e.canEncode(elementType, MimeTypeUtils.APPLICATION_JSON))
.findFirst(); .findFirst();
return ((Encoder<T>) encoder.orElseThrow(() -> new CodecException("No suitable encoder found!"))) return ((Encoder<T>) encoder.orElseThrow(() -> new CodecException("No suitable encoder found!")))
.encode(Mono.just((T) data), bufferFactory, elementType, MimeTypeUtils.APPLICATION_JSON, hints) .encode(Mono.just((T) data), bufferFactory, elementType, MimeTypeUtils.APPLICATION_JSON, hints)
......
...@@ -62,7 +62,7 @@ public class Jackson2JsonDecoder extends AbstractJackson2Codec implements Decode ...@@ -62,7 +62,7 @@ public class Jackson2JsonDecoder extends AbstractJackson2Codec implements Decode
@Override @Override
public boolean canDecode(ResolvableType elementType, MimeType mimeType, Map<String, Object> hints) { public boolean canDecode(ResolvableType elementType, MimeType mimeType) {
if (mimeType == null) { if (mimeType == null) {
return true; return true;
} }
......
...@@ -67,7 +67,7 @@ public class Jackson2JsonEncoder extends AbstractJackson2Codec implements Encode ...@@ -67,7 +67,7 @@ public class Jackson2JsonEncoder extends AbstractJackson2Codec implements Encode
@Override @Override
public boolean canEncode(ResolvableType elementType, MimeType mimeType, Map<String, Object> hints) { public boolean canEncode(ResolvableType elementType, MimeType mimeType) {
if (mimeType == null) { if (mimeType == null) {
return true; return true;
} }
......
...@@ -76,8 +76,8 @@ public class Jaxb2XmlDecoder extends AbstractDecoder<Object> { ...@@ -76,8 +76,8 @@ public class Jaxb2XmlDecoder extends AbstractDecoder<Object> {
@Override @Override
public boolean canDecode(ResolvableType elementType, MimeType mimeType, Map<String, Object> hints) { public boolean canDecode(ResolvableType elementType, MimeType mimeType) {
if (super.canDecode(elementType, mimeType, hints)) { if (super.canDecode(elementType, mimeType)) {
Class<?> outputClass = elementType.getRawClass(); Class<?> outputClass = elementType.getRawClass();
return outputClass.isAnnotationPresent(XmlRootElement.class) || return outputClass.isAnnotationPresent(XmlRootElement.class) ||
outputClass.isAnnotationPresent(XmlType.class); outputClass.isAnnotationPresent(XmlType.class);
......
...@@ -53,8 +53,8 @@ public class Jaxb2XmlEncoder extends AbstractSingleValueEncoder<Object> { ...@@ -53,8 +53,8 @@ public class Jaxb2XmlEncoder extends AbstractSingleValueEncoder<Object> {
@Override @Override
public boolean canEncode(ResolvableType elementType, MimeType mimeType, Map<String, Object> hints) { public boolean canEncode(ResolvableType elementType, MimeType mimeType) {
if (super.canEncode(elementType, mimeType, hints)) { if (super.canEncode(elementType, mimeType)) {
Class<?> outputClass = elementType.getRawClass(); Class<?> outputClass = elementType.getRawClass();
return (outputClass.isAnnotationPresent(XmlRootElement.class) || return (outputClass.isAnnotationPresent(XmlRootElement.class) ||
outputClass.isAnnotationPresent(XmlType.class)); outputClass.isAnnotationPresent(XmlType.class));
......
...@@ -196,7 +196,7 @@ public abstract class ResponseExtractors { ...@@ -196,7 +196,7 @@ public abstract class ResponseExtractors {
ResolvableType responseType, MediaType contentType) { ResolvableType responseType, MediaType contentType) {
return messageReaders.stream() return messageReaders.stream()
.filter(e -> e.canRead(responseType, contentType, Collections.emptyMap())) .filter(e -> e.canRead(responseType, contentType))
.findFirst() .findFirst()
.orElseThrow(() -> .orElseThrow(() ->
new WebClientException( new WebClientException(
......
...@@ -297,7 +297,7 @@ public final class WebClient { ...@@ -297,7 +297,7 @@ public final class WebClient {
protected Optional<HttpMessageWriter<?>> resolveWriter(List<HttpMessageWriter<?>> messageWriters, protected Optional<HttpMessageWriter<?>> resolveWriter(List<HttpMessageWriter<?>> messageWriters,
ResolvableType type, MediaType mediaType) { ResolvableType type, MediaType mediaType) {
return messageWriters.stream().filter(e -> e.canWrite(type, mediaType, Collections.emptyMap())).findFirst(); return messageWriters.stream().filter(e -> e.canWrite(type, mediaType)).findFirst();
} }
} }
......
...@@ -210,7 +210,7 @@ public class RxJava1ResponseExtractors { ...@@ -210,7 +210,7 @@ public class RxJava1ResponseExtractors {
ResolvableType responseType, MediaType contentType) { ResolvableType responseType, MediaType contentType) {
return messageReaders.stream() return messageReaders.stream()
.filter(e -> e.canRead(responseType, contentType, Collections.emptyMap())) .filter(e -> e.canRead(responseType, contentType))
.findFirst() .findFirst()
.orElseThrow(() -> .orElseThrow(() ->
new WebClientException( new WebClientException(
......
...@@ -46,20 +46,19 @@ public class ServerSentEventHttpMessageWriterTests extends AbstractDataBufferAll ...@@ -46,20 +46,19 @@ public class ServerSentEventHttpMessageWriterTests extends AbstractDataBufferAll
@Test @Test
public void nullMimeType() { public void nullMimeType() {
assertTrue(messageWriter.canWrite(ResolvableType.forClass(Object.class), null, assertTrue(messageWriter.canWrite(ResolvableType.forClass(Object.class), null));
Collections.emptyMap()));
} }
@Test @Test
public void unsupportedMimeType() { public void unsupportedMimeType() {
assertFalse(messageWriter.canWrite(ResolvableType.forClass(Object.class), assertFalse(messageWriter.canWrite(ResolvableType.forClass(Object.class),
new MediaType("foo", "bar"), Collections.emptyMap())); new MediaType("foo", "bar")));
} }
@Test @Test
public void supportedMimeType() { public void supportedMimeType() {
assertTrue(messageWriter.canWrite(ResolvableType.forClass(Object.class), assertTrue(messageWriter.canWrite(ResolvableType.forClass(Object.class),
new MediaType("text", "event-stream"), Collections.emptyMap())); new MediaType("text", "event-stream")));
} }
@Test @Test
......
...@@ -47,8 +47,8 @@ public class Jackson2JsonDecoderTests extends AbstractDataBufferAllocatingTestCa ...@@ -47,8 +47,8 @@ public class Jackson2JsonDecoderTests extends AbstractDataBufferAllocatingTestCa
public void canDecode() { public void canDecode() {
Jackson2JsonDecoder decoder = new Jackson2JsonDecoder(); Jackson2JsonDecoder decoder = new Jackson2JsonDecoder();
assertTrue(decoder.canDecode(null, MediaType.APPLICATION_JSON, Collections.emptyMap())); assertTrue(decoder.canDecode(null, MediaType.APPLICATION_JSON));
assertFalse(decoder.canDecode(null, MediaType.APPLICATION_XML, Collections.emptyMap())); assertFalse(decoder.canDecode(null, MediaType.APPLICATION_XML));
} }
@Test @Test
......
...@@ -45,8 +45,8 @@ public class Jackson2JsonEncoderTests extends AbstractDataBufferAllocatingTestCa ...@@ -45,8 +45,8 @@ public class Jackson2JsonEncoderTests extends AbstractDataBufferAllocatingTestCa
@Test @Test
public void canEncode() { public void canEncode() {
assertTrue(this.encoder.canEncode(null, MediaType.APPLICATION_JSON, Collections.emptyMap())); assertTrue(this.encoder.canEncode(null, MediaType.APPLICATION_JSON));
assertFalse(this.encoder.canEncode(null, MediaType.APPLICATION_XML, Collections.emptyMap())); assertFalse(this.encoder.canEncode(null, MediaType.APPLICATION_XML));
} }
@Test @Test
......
...@@ -72,17 +72,15 @@ public class Jaxb2XmlDecoderTests extends AbstractDataBufferAllocatingTestCase { ...@@ -72,17 +72,15 @@ public class Jaxb2XmlDecoderTests extends AbstractDataBufferAllocatingTestCase {
@Test @Test
public void canDecode() { public void canDecode() {
assertTrue(this.decoder.canDecode(ResolvableType.forClass(Pojo.class), assertTrue(this.decoder.canDecode(ResolvableType.forClass(Pojo.class),
MediaType.APPLICATION_XML, Collections.emptyMap())); MediaType.APPLICATION_XML));
assertTrue(this.decoder.canDecode(ResolvableType.forClass(Pojo.class), assertTrue(this.decoder.canDecode(ResolvableType.forClass(Pojo.class),
MediaType.TEXT_XML, Collections.emptyMap())); MediaType.TEXT_XML));
assertFalse(this.decoder.canDecode(ResolvableType.forClass(Pojo.class), assertFalse(this.decoder.canDecode(ResolvableType.forClass(Pojo.class),
MediaType.APPLICATION_JSON, Collections.emptyMap())); MediaType.APPLICATION_JSON));
assertTrue(this.decoder.canDecode(ResolvableType.forClass(TypePojo.class), assertTrue(this.decoder.canDecode(ResolvableType.forClass(TypePojo.class),
MediaType.APPLICATION_XML, Collections.emptyMap())); MediaType.APPLICATION_XML));
assertFalse(this.decoder.canDecode(ResolvableType.forClass(getClass()), assertFalse(this.decoder.canDecode(ResolvableType.forClass(getClass()),
MediaType.APPLICATION_XML, Collections.emptyMap())); MediaType.APPLICATION_XML));
} }
@Test @Test
......
...@@ -46,18 +46,18 @@ public class Jaxb2XmlEncoderTests extends AbstractDataBufferAllocatingTestCase { ...@@ -46,18 +46,18 @@ public class Jaxb2XmlEncoderTests extends AbstractDataBufferAllocatingTestCase {
@Test @Test
public void canEncode() { public void canEncode() {
assertTrue(this.encoder.canEncode(ResolvableType.forClass(Pojo.class), assertTrue(this.encoder.canEncode(ResolvableType.forClass(Pojo.class),
MediaType.APPLICATION_XML, Collections.emptyMap())); MediaType.APPLICATION_XML));
assertTrue(this.encoder.canEncode(ResolvableType.forClass(Pojo.class), assertTrue(this.encoder.canEncode(ResolvableType.forClass(Pojo.class),
MediaType.TEXT_XML, Collections.emptyMap())); MediaType.TEXT_XML));
assertFalse(this.encoder.canEncode(ResolvableType.forClass(Pojo.class), assertFalse(this.encoder.canEncode(ResolvableType.forClass(Pojo.class),
MediaType.APPLICATION_JSON, Collections.emptyMap())); MediaType.APPLICATION_JSON));
assertTrue(this.encoder.canEncode( assertTrue(this.encoder.canEncode(
ResolvableType.forClass(Jaxb2XmlDecoderTests.TypePojo.class), ResolvableType.forClass(Jaxb2XmlDecoderTests.TypePojo.class),
MediaType.APPLICATION_XML, Collections.emptyMap())); MediaType.APPLICATION_XML));
assertFalse(this.encoder.canEncode(ResolvableType.forClass(getClass()), assertFalse(this.encoder.canEncode(ResolvableType.forClass(getClass()),
MediaType.APPLICATION_XML, Collections.emptyMap())); MediaType.APPLICATION_XML));
} }
@Test @Test
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册