@Override public <T> Mono<T> bodyToMono(ParameterizedTypeReference<T> typeReference) { Mono<T> mono = body(BodyExtractors.toMono(typeReference)); return mono.onErrorMap(UnsupportedMediaTypeException.class, ERROR_MAPPER) .onErrorMap(DecodingException.class, DECODING_MAPPER); }
@Override public <T> Mono<T> bodyToMono(Class<? extends T> elementClass) { Mono<T> mono = body(BodyExtractors.toMono(elementClass)); return mono.onErrorMap(UnsupportedMediaTypeException.class, ERROR_MAPPER) .onErrorMap(DecodingException.class, DECODING_MAPPER); }
@Override public <T> Flux<T> bodyToFlux(Class<? extends T> elementClass) { Flux<T> flux = body(BodyExtractors.toFlux(elementClass)); return flux.onErrorMap(UnsupportedMediaTypeException.class, ERROR_MAPPER) .onErrorMap(DecodingException.class, DECODING_MAPPER); }
@Override public <T> Flux<T> bodyToFlux(ParameterizedTypeReference<T> typeReference) { Flux<T> flux = body(BodyExtractors.toFlux(typeReference)); return flux.onErrorMap(UnsupportedMediaTypeException.class, ERROR_MAPPER) .onErrorMap(DecodingException.class, DECODING_MAPPER); }
@Test public void body() { DefaultDataBufferFactory factory = new DefaultDataBufferFactory(); DefaultDataBuffer dataBuffer = factory.wrap(ByteBuffer.wrap("foo".getBytes(StandardCharsets.UTF_8))); Flux<DataBuffer> body = Flux.just(dataBuffer); HttpHeaders httpHeaders = new HttpHeaders(); httpHeaders.setContentType(MediaType.TEXT_PLAIN); MockServerHttpRequest mockRequest = MockServerHttpRequest .method(HttpMethod.GET, "http://example.com?foo=bar") .headers(httpHeaders) .body(body); DefaultServerRequest request = new DefaultServerRequest(MockServerWebExchange.from(mockRequest), messageReaders); Mono<String> resultMono = request.body(toMono(String.class)); assertEquals("foo", resultMono.block()); }
@Override public <T> T body(BodyExtractor<T, ? super ServerHttpRequest> extractor) { return body(extractor, Collections.emptyMap()); }
@Override public <T> Mono<T> bodyToMono(Class<? extends T> elementClass) { return body(BodyExtractors.toMono(elementClass)); }
@Override public <T> Flux<T> bodyToFlux(Class<? extends T> elementClass) { return body(BodyExtractors.toFlux(elementClass)); }