Spring removal 09/79709/1
authorMarcin Migdal <marcin.migdal@nokia.com>
Tue, 5 Mar 2019 13:58:14 +0000 (14:58 +0100)
committerMarcin Migdal <marcin.migdal@nokia.com>
Tue, 5 Mar 2019 13:59:34 +0000 (14:59 +0100)
Change-Id: I7f886d6817d3491f27b9f217d52ccaf3e421c530
Issue-ID: DCAEGEN2-1310
Signed-off-by: mmigdal <marcin.migdal@nokia.com>
Signed-off-by: Marcin Migdal <marcin.migdal@nokia.com>
rest-services/common-dependency/src/main/java/org/onap/dcaegen2/services/sdk/rest/services/adapters/http/CloudHttpClient.java

index cba5c6a..33c39fa 100644 (file)
@@ -29,10 +29,13 @@ import java.util.Collections;
 import java.util.Map;
 import java.util.function.BiConsumer;
 import java.util.stream.Collectors;
+import org.onap.dcaegen2.services.sdk.rest.services.model.ClientModel;
+import org.onap.dcaegen2.services.sdk.rest.services.model.JsonBodyBuilder;
 import org.onap.dcaegen2.services.sdk.rest.services.model.logging.RequestDiagnosticContext;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import reactor.core.publisher.Mono;
+import reactor.netty.ByteBufFlux;
 import reactor.netty.http.client.HttpClient;
 import reactor.netty.http.client.HttpClientRequest;
 import reactor.netty.http.client.HttpClientResponse;
@@ -64,12 +67,9 @@ public class CloudHttpClient {
         return get(url, context, Collections.EMPTY_MAP, bodyClass);
     }
 
-    public <T> Mono<T> get(String url, RequestDiagnosticContext context, Map<String, String> customHeaders, Class<T> bodyClass) {
-        final HttpClient clientWithHeaders = httpClient
-            .doOnRequest((req, conn) -> logRequest(context, req))
-            .doOnResponse((rsp, conn) -> logResponse(context, rsp))
-            .headers(hdrs -> context.remoteCallHttpHeaders().forEach((BiConsumer<String, String>) hdrs::set))
-            .headers(hdrs -> customHeaders.forEach(hdrs::set));
+    public <T> Mono<T> get(String url, RequestDiagnosticContext context, Map<String, String> customHeaders,
+        Class<T> bodyClass) {
+        final HttpClient clientWithHeaders = getHttpClientWithHeaders(context, customHeaders);
         return callHttpGet(clientWithHeaders, url, bodyClass);
     }
 
@@ -77,6 +77,27 @@ public class CloudHttpClient {
         return callHttpGet(httpClient, url, bodyClass);
     }
 
+    public Mono<Integer> post(String url, RequestDiagnosticContext context, Map<String, String> customHeaders,
+        JsonBodyBuilder jsonBodyBuilder, ClientModel clientModel) {
+        final HttpClient clientWithHeaders = getHttpClientWithHeaders(context, customHeaders);
+        return callHttpPost(clientWithHeaders, url, jsonBodyBuilder, clientModel);
+    }
+
+    public Mono<Integer> patch(String url, RequestDiagnosticContext context, Map<String, String> customHeaders,
+        JsonBodyBuilder jsonBodyBuilder, ClientModel clientModel) {
+        final HttpClient clientWithHeaders = getHttpClientWithHeaders(context, customHeaders);
+        return callHttpPatch(clientWithHeaders, url, jsonBodyBuilder, clientModel);
+    }
+
+    private HttpClient getHttpClientWithHeaders(RequestDiagnosticContext context, Map<String, String> customHeaders) {
+        final HttpClient clientWithHeaders = httpClient
+            .doOnRequest((req, conn) -> logRequest(context, req))
+            .doOnResponse((rsp, conn) -> logResponse(context, rsp))
+            .headers(hdrs -> context.remoteCallHttpHeaders().forEach((BiConsumer<String, String>) hdrs::set))
+            .headers(hdrs -> customHeaders.forEach(hdrs::set));
+        return clientWithHeaders;
+    }
+
     private <T> Mono<T> callHttpGet(HttpClient client, String url, Class<T> bodyClass) {
         return client.get()
             .uri(url)
@@ -86,6 +107,20 @@ public class CloudHttpClient {
             .map(body -> parseJson(body, bodyClass));
     }
 
+    private <T extends ClientModel> Mono<Integer> callHttpPost(HttpClient client, String url,
+        JsonBodyBuilder<T> jsonBodyBuilder, T clientModel) {
+        return client.baseUrl(url).post()
+            .send(ByteBufFlux.fromString(Mono.just(jsonBodyBuilder.createJsonBody(clientModel))))
+            .responseSingle((httpClientResponse, byteBufMono) -> Mono.just(httpClientResponse.status().code()));
+    }
+
+    private <T extends ClientModel> Mono<Integer> callHttpPatch(HttpClient client, String url,
+        JsonBodyBuilder<T> jsonBodyBuilder, T clientModel) {
+        return client.baseUrl(url).patch()
+            .send(ByteBufFlux.fromString(Mono.just(jsonBodyBuilder.createJsonBody(clientModel))))
+            .responseSingle((httpClientResponse, byteBufMono) -> Mono.just(httpClientResponse.status().code()));
+    }
+
     private Exception createException(String url, HttpClientResponse response) {
         return new IOException(String.format("Request failed for URL '%s'. Response code: %s",
             url,