/** * Return readers that need to be at the end, after all others. */ final List<HttpMessageReader<?>> getCatchAllReaders() { if (!this.registerDefaults) { return Collections.emptyList(); } List<HttpMessageReader<?>> result = new ArrayList<>(); result.add(new DecoderHttpMessageReader<>(StringDecoder.allMimeTypes())); return result; }
@Override public Flux<T> read(ResolvableType elementType, ReactiveHttpInputMessage message, Map<String, Object> hints) { MediaType contentType = getContentType(message); return this.decoder.decode(message.getBody(), elementType, contentType, hints); }
@Override public Mono<T> readMono(ResolvableType actualType, ResolvableType elementType, ServerHttpRequest request, ServerHttpResponse response, Map<String, Object> hints) { Map<String, Object> allHints = Hints.merge(hints, getReadHints(actualType, elementType, request, response)); return readMono(elementType, request, allHints); }
@Override public Flux<T> read(ResolvableType actualType, ResolvableType elementType, ServerHttpRequest request, ServerHttpResponse response, Map<String, Object> hints) { Map<String, Object> allHints = Hints.merge(hints, getReadHints(actualType, elementType, request, response)); return read(elementType, request, allHints); }
MediaType contentType = getContentType(message); return this.decoder.decodeToMono(message.getBody(), elementType, contentType, hints); allHints.putAll(hints); return readMono(elementType, request, allHints);
/** * Create an instance wrapping the given {@link Decoder}. */ public DecoderHttpMessageReader(Decoder<T> decoder) { Assert.notNull(decoder, "Decoder is required"); initLogger(decoder); this.decoder = decoder; this.mediaTypes = MediaType.asMediaTypes(decoder.getDecodableMimeTypes()); }
@Override public Flux<T> read(ResolvableType actualType, ResolvableType elementType, ServerHttpRequest request, ServerHttpResponse response, Map<String, Object> hints) { Map<String, Object> allHints = new HashMap<>(4); allHints.putAll(getReadHints(actualType, elementType, request, response)); allHints.putAll(hints); return read(elementType, request, allHints); }
@Override public Flux<T> read(ResolvableType actualType, ResolvableType elementType, ServerHttpRequest request, ServerHttpResponse response, Map<String, Object> hints) { Map<String, Object> allHints = Hints.merge(hints, getReadHints(actualType, elementType, request, response)); return read(elementType, request, allHints); }
/** * Create an instance wrapping the given {@link Decoder}. */ public DecoderHttpMessageReader(Decoder<T> decoder) { Assert.notNull(decoder, "Decoder is required"); this.decoder = decoder; this.mediaTypes = MediaType.asMediaTypes(decoder.getDecodableMimeTypes()); initLogger(decoder); }
@Override public void decoder(Decoder<?> decoder) { reader(new DecoderHttpMessageReader<>(decoder)); }
@Override public Mono<T> readMono(ResolvableType actualType, ResolvableType elementType, ServerHttpRequest request, ServerHttpResponse response, Map<String, Object> hints) { Map<String, Object> allHints = Hints.merge(hints, getReadHints(actualType, elementType, request, response)); return readMono(elementType, request, allHints); }
@Override public Flux<T> read(ResolvableType actualType, ResolvableType elementType, ServerHttpRequest request, ServerHttpResponse response, Map<String, Object> hints) { Map<String, Object> allHints = Hints.merge(hints, getReadHints(actualType, elementType, request, response)); return read(elementType, request, allHints); }
@Override public Mono<T> readMono(ResolvableType elementType, ReactiveHttpInputMessage message, Map<String, Object> hints) { MediaType contentType = getContentType(message); return this.decoder.decodeToMono(message.getBody(), elementType, contentType, hints); }
/** * Create an instance wrapping the given {@link Decoder}. */ public DecoderHttpMessageReader(Decoder<T> decoder) { Assert.notNull(decoder, "Decoder is required"); this.decoder = decoder; this.mediaTypes = MediaType.asMediaTypes(decoder.getDecodableMimeTypes()); initLogger(decoder); }
/** * Return readers that need to be at the end, after all others. */ final List<HttpMessageReader<?>> getCatchAllReaders() { if (!this.registerDefaults) { return Collections.emptyList(); } List<HttpMessageReader<?>> result = new ArrayList<>(); result.add(new DecoderHttpMessageReader<>(StringDecoder.allMimeTypes())); return result; }
@Override public Mono<T> readMono(ResolvableType actualType, ResolvableType elementType, ServerHttpRequest request, ServerHttpResponse response, Map<String, Object> hints) { Map<String, Object> allHints = Hints.merge(hints, getReadHints(actualType, elementType, request, response)); return readMono(elementType, request, allHints); }
@Override public Mono<T> readMono(ResolvableType elementType, ReactiveHttpInputMessage message, Map<String, Object> hints) { MediaType contentType = getContentType(message); return this.decoder.decodeToMono(message.getBody(), elementType, contentType, hints); }
/** * Return Object readers (JSON, XML, SSE). */ final List<HttpMessageReader<?>> getObjectReaders() { if (!this.registerDefaults) { return Collections.emptyList(); } List<HttpMessageReader<?>> readers = new ArrayList<>(); if (jackson2Present) { readers.add(new DecoderHttpMessageReader<>(getJackson2JsonDecoder())); } if (jackson2SmilePresent) { readers.add(new DecoderHttpMessageReader<>(new Jackson2SmileDecoder())); } if (jaxb2Present) { Decoder<?> decoder = this.jaxb2Decoder != null ? this.jaxb2Decoder : new Jaxb2XmlDecoder(); readers.add(new DecoderHttpMessageReader<>(decoder)); } extendObjectReaders(readers); return readers; }
@Override public Flux<T> read(ResolvableType elementType, ReactiveHttpInputMessage message, Map<String, Object> hints) { MediaType contentType = getContentType(message); return this.decoder.decode(message.getBody(), elementType, contentType, hints); }
@Override public void decoder(Decoder<?> decoder) { reader(new DecoderHttpMessageReader<>(decoder)); }