protected void setWebClient(WebClient webClient){ this.webClient = webClient; clientFactory(methodMetadata -> webClient(methodMetadata, webClient)); } }
public static WebReactiveHttpClient webClient(MethodMetadata methodMetadata, WebClient webClient) { final Type returnType = methodMetadata.returnType(); Type returnPublisherType = ((ParameterizedType) returnType).getRawType(); ParameterizedTypeReference<Object> returnActualType = ParameterizedTypeReference.forType( resolveLastTypeParameter(returnType, (Class<?>) returnPublisherType)); ParameterizedTypeReference<Object> bodyActualType = ofNullable( getBodyActualType(methodMetadata.bodyType())) .map(type -> ParameterizedTypeReference.forType(type)) .orElse(null); return new WebReactiveHttpClient(webClient, bodyActualType, returnPublisherType, returnActualType); }
@Override public Mono<ReactiveHttpResponse> executeRequest(ReactiveHttpRequest request) { return webClient.method(HttpMethod.valueOf(request.method())) .uri(request.uri()) .headers(httpHeaders -> setUpHeaders(request, httpHeaders)) .body(provideBody(request)) .exchange() .onErrorMap(ex -> ex instanceof io.netty.handler.timeout.ReadTimeoutException, ReadTimeoutException::new) .map(response -> new WebReactiveHttpResponse(response, returnPublisherType, returnActualType)); }
public static WebReactiveHttpClient webClient(MethodMetadata methodMetadata, WebClient webClient) { final Type returnType = methodMetadata.returnType(); Type returnPublisherType = ((ParameterizedType) returnType).getRawType(); ParameterizedTypeReference<Object> returnActualType = ParameterizedTypeReference.forType( resolveLastTypeParameter(returnType, (Class<?>) returnPublisherType)); ParameterizedTypeReference<Object> bodyActualType = ofNullable( getBodyActualType(methodMetadata.bodyType())) .map(type -> ParameterizedTypeReference.forType(type)) .orElse(null); return new WebReactiveHttpClient(webClient, bodyActualType, rx2ToReactor(returnPublisherType), returnActualType); }