Add SvcLogicContext interaction with netbox-client
[ccsdk/sli/adaptors.git] / netbox-client / provider / src / main / java / org / onap / ccsdk / sli / adaptors / netbox / impl / NetboxHttpClient.java
index a77b4d3..505c5a7 100644 (file)
@@ -24,31 +24,24 @@ import java.nio.charset.Charset;
 import java.security.KeyManagementException;
 import java.security.KeyStoreException;
 import java.security.NoSuchAlgorithmException;
-import java.util.Scanner;
-import java.util.concurrent.CompletableFuture;
-import java.util.concurrent.CompletionStage;
-import java.util.function.Function;
 import javax.net.ssl.SSLContext;
-import org.apache.http.HttpEntityEnclosingRequest;
 import org.apache.http.HttpResponse;
 import org.apache.http.client.methods.HttpDelete;
 import org.apache.http.client.methods.HttpPost;
-import org.apache.http.client.methods.HttpUriRequest;
-import org.apache.http.concurrent.FutureCallback;
+import org.apache.http.client.methods.HttpRequestBase;
 import org.apache.http.conn.ssl.NoopHostnameVerifier;
 import org.apache.http.entity.StringEntity;
-import org.apache.http.impl.nio.client.CloseableHttpAsyncClient;
-import org.apache.http.impl.nio.client.HttpAsyncClientBuilder;
+import org.apache.http.impl.client.CloseableHttpClient;
+import org.apache.http.impl.client.HttpClientBuilder;
 import org.apache.http.ssl.SSLContexts;
 import org.apache.http.ssl.TrustStrategy;
-import org.onap.ccsdk.sli.adaptors.netbox.api.IpamException;
 import org.onap.ccsdk.sli.adaptors.netbox.property.NetboxProperties;
 
 public class NetboxHttpClient implements AutoCloseable {
 
     private static final String APPLICATION_JSON = "application/json";
 
-    private final CloseableHttpAsyncClient client;
+    private final CloseableHttpClient client;
     private final String url;
     private final String token;
 
@@ -69,16 +62,10 @@ public class NetboxHttpClient implements AutoCloseable {
         } catch (final NoSuchAlgorithmException | KeyManagementException | KeyStoreException e) {
             throw new IllegalStateException("Can't create http client", e);
         }
-        client = HttpAsyncClientBuilder.create()
+        client = HttpClientBuilder.create()
             .setSSLHostnameVerifier(NoopHostnameVerifier.INSTANCE)
             .setSSLContext(sslContext)
             .build();
-
-    }
-
-    // Has to be public for blueprint container to access it
-    public void init() {
-        client.start();
     }
 
     @Override
@@ -86,66 +73,22 @@ public class NetboxHttpClient implements AutoCloseable {
         client.close();
     }
 
-    CompletionStage<HttpResponse> post(final String uri, final String requestBody) {
-        return sendRequest(uri, requestBody, HttpPost::new);
-    }
-
-    CompletionStage<HttpResponse> delete(final String uri) {
-        return sendRequest(uri, HttpDelete::new);
+    HttpResponse post(final String uri, final String requestBody) throws IOException {
+        final HttpPost request = new HttpPost(url + uri);
+        setHeaders(request);
+        request.setEntity(new StringEntity(requestBody, Charset.forName("UTF-8")));
+        return client.execute(request);
     }
 
-    static String getBodyAsString(final HttpResponse response) {
-        final String body;
-        if (response.getEntity() != null) {
-            try (final Scanner s = new java.util.Scanner(response.getEntity().getContent()).useDelimiter("\\A")) {
-                body = s.hasNext() ? s.next() : "";
-            } catch (final IOException e) {
-                throw new IllegalStateException(e);
-            }
-        } else {
-            body = "";
-        }
-        return response.toString() + "\n" + body;
+    HttpResponse delete(final String uri) throws IOException {
+        final HttpDelete request = new HttpDelete(url + uri);
+        setHeaders(request);
+        return client.execute(request);
     }
 
-    private <T extends HttpUriRequest> CompletionStage<HttpResponse> sendRequest(final String uri,
-        final Function<String, T> supplier) {
-        final T request = supplier.apply(url + uri);
+    private void setHeaders(final HttpRequestBase request) {
         request.addHeader(ACCEPT, APPLICATION_JSON);
         request.addHeader(CONTENT_TYPE, APPLICATION_JSON);
         request.addHeader(AUTHORIZATION, "Token " + token);
-        return sendRequest(request);
-    }
-
-    private <T extends HttpEntityEnclosingRequest & HttpUriRequest>
-    CompletionStage<HttpResponse> sendRequest(final String uri, final String body,
-        final Function<String, T> supplier) {
-        final T request = supplier.apply(url + uri);
-        request.addHeader(ACCEPT, APPLICATION_JSON);
-        request.addHeader(CONTENT_TYPE, APPLICATION_JSON);
-        request.addHeader(AUTHORIZATION, "Token " + token);
-        request.setEntity(new StringEntity(body, Charset.forName("UTF-8")));
-        return sendRequest(request);
-    }
-
-    private CompletionStage<HttpResponse> sendRequest(final HttpUriRequest request) {
-        final CompletableFuture<HttpResponse> future = new CompletableFuture<>();
-        client.execute(request, new FutureCallback<HttpResponse>() {
-            @Override
-            public void completed(final HttpResponse httpResponse) {
-                future.complete(httpResponse);
-            }
-
-            @Override
-            public void failed(final Exception e) {
-                future.completeExceptionally(new IpamException("Netbox request failed", e));
-            }
-
-            @Override
-            public void cancelled() {
-                future.cancel(false);
-            }
-        });
-        return future;
     }
 }
\ No newline at end of file