diff options
author | Marcin Migdal <marcin.migdal@nokia.com> | 2019-02-22 18:05:35 +0100 |
---|---|---|
committer | Marcin Migdal <marcin.migdal@nokia.com> | 2019-02-26 15:01:27 +0100 |
commit | 95f179eb1e2144a47f5cf436d70a786c6dc6cb6c (patch) | |
tree | 4e9f328b99f3f2bfb2a2d1938c0ed80efee966ae /rest-services/cbs-client/src/main | |
parent | 16fbc0ca40d4a385f169c442f515ccfeeff1f99c (diff) |
Remove Spring stuff from CBS
Change-Id: I68f4e1f398505b94023acb0999450b67906029b4
Issue-ID: DCAEGEN2-1245
Signed-off-by: Marcin Migdal <marcin.migdal@nokia.com>
Diffstat (limited to 'rest-services/cbs-client/src/main')
-rw-r--r-- | rest-services/cbs-client/src/main/java/org/onap/dcaegen2/services/sdk/rest/services/cbs/client/http/configuration/CloudHttpClient.java | 70 |
1 files changed, 41 insertions, 29 deletions
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 <a href="mailto:przemyslaw.wasala@nokia.com">Przemysław Wąsala</a> 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 <T> Mono<T> callHttpGet(String url, Class<T> 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<HttpClientResponse, Throwable> 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 <T> Mono<T> getJsonFromRequest(String body, Class<T> 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<HttpClientRequest, Connection> 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<? super HttpClientResponse, ? super Connection> logResponse() { + return (httpClientresponse, connection) -> { + LOGGER.debug("Response status: {}", httpClientresponse.status()); + }; } + } |