From 95f179eb1e2144a47f5cf436d70a786c6dc6cb6c Mon Sep 17 00:00:00 2001 From: Marcin Migdal Date: Fri, 22 Feb 2019 18:05:35 +0100 Subject: Remove Spring stuff from CBS Change-Id: I68f4e1f398505b94023acb0999450b67906029b4 Issue-ID: DCAEGEN2-1245 Signed-off-by: Marcin Migdal --- .../client/http/configuration/CloudHttpClient.java | 70 +++++++++++++--------- 1 file changed, 41 insertions(+), 29 deletions(-) (limited to 'rest-services/cbs-client/src/main/java') diff --git a/rest-services/cbs-client/src/main/java/org/onap/dcaegen2/services/sdk/rest/services/cbs/client/http/configuration/CloudHttpClient.java b/rest-services/cbs-client/src/main/java/org/onap/dcaegen2/services/sdk/rest/services/cbs/client/http/configuration/CloudHttpClient.java index f3177e4c..d97edb3b 100644 --- a/rest-services/cbs-client/src/main/java/org/onap/dcaegen2/services/sdk/rest/services/cbs/client/http/configuration/CloudHttpClient.java +++ b/rest-services/cbs-client/src/main/java/org/onap/dcaegen2/services/sdk/rest/services/cbs/client/http/configuration/CloudHttpClient.java @@ -22,13 +22,15 @@ package org.onap.dcaegen2.services.sdk.rest.services.cbs.client.http.configurati import com.google.gson.Gson; import com.google.gson.JsonSyntaxException; +import java.util.function.BiConsumer; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.springframework.http.HttpStatus; -import org.springframework.web.reactive.function.client.ClientResponse; -import org.springframework.web.reactive.function.client.ExchangeFilterFunction; -import org.springframework.web.reactive.function.client.WebClient; import reactor.core.publisher.Mono; +import reactor.netty.Connection; +import reactor.netty.http.client.HttpClient; +import reactor.netty.http.client.HttpClientRequest; +import reactor.netty.http.client.HttpClientResponse; + /** * @author Przemysław Wąsala on 11/15/18 @@ -39,31 +41,39 @@ public class CloudHttpClient { private static final Logger LOGGER = LoggerFactory.getLogger(CloudHttpClient.class); private final Gson gson; - private final WebClient webClient; + private final HttpClient httpClient; + public CloudHttpClient() { - this(WebClient.builder().filter(logRequest()).filter(logResponse()).build()); + this(HttpClient.create().doOnRequest(logRequest()).doOnResponse(logResponse())); } - CloudHttpClient(WebClient webClient) { + + CloudHttpClient(HttpClient httpClient) { this.gson = new Gson(); - this.webClient = webClient; + this.httpClient = httpClient; } + public Mono callHttpGet(String url, Class genericClassDeclaration) { - return webClient + return httpClient + .baseUrl(url) + .doOnResponseError(doOnError()) .get() - .uri(url) - .retrieve() - .onStatus(HttpStatus::is4xxClientError, response -> Mono.error(getException(response))) - .onStatus(HttpStatus::is5xxServerError, response -> Mono.error(getException(response))) - .bodyToMono(String.class) - .flatMap(body -> getJsonFromRequest(body, genericClassDeclaration)); + .responseSingle( + (httpClientResponse, content) -> getJsonFromRequest(content.toString(), genericClassDeclaration)); + } + + private BiConsumer doOnError() { + return (httpClientResponse, throwable) -> { + Mono.error(getException(httpClientResponse)); + }; } - private RuntimeException getException(ClientResponse response) { + + private RuntimeException getException(HttpClientResponse response) { return new RuntimeException(String.format("Request for cloud config failed: HTTP %d", - response.statusCode().value())); + response.status().code())); } private Mono getJsonFromRequest(String body, Class genericClassDeclaration) { @@ -78,20 +88,22 @@ public class CloudHttpClient { return gson.fromJson(body, genericClassDeclaration); } - private static ExchangeFilterFunction logResponse() { - return ExchangeFilterFunction.ofResponseProcessor(clientResponse -> { - LOGGER.info("Response status {}", clientResponse.statusCode()); - return Mono.just(clientResponse); - }); + + private static BiConsumer logRequest() { + return (httpClientRequest, connection) -> { + LOGGER.debug("Request: {} {}", httpClientRequest.method(), httpClientRequest.uri()); + httpClientRequest.requestHeaders().forEach(stringStringEntry -> { + LOGGER.trace("{}={}", stringStringEntry.getKey(), stringStringEntry.getValue()); + }); + + }; } - private static ExchangeFilterFunction logRequest() { - return ExchangeFilterFunction.ofRequestProcessor(clientRequest -> { - LOGGER.info("Request: {} {}", clientRequest.method(), clientRequest.url()); - clientRequest.headers() - .forEach((name, values) -> values.forEach(value -> LOGGER.info("{}={}", name, value))); - return Mono.just(clientRequest); - }); + private static BiConsumer logResponse() { + return (httpClientresponse, connection) -> { + LOGGER.debug("Response status: {}", httpClientresponse.status()); + }; } + } -- cgit 1.2.3-korg