MINIFI-450 Handling closing of HTTP response in PullHttpChangeIngestor.

This closes #129

Signed-off-by: Jeremy Dyer <jeremydyer@apache.org>
diff --git a/minifi-bootstrap/src/main/java/org/apache/nifi/minifi/bootstrap/configuration/ingestors/PullHttpChangeIngestor.java b/minifi-bootstrap/src/main/java/org/apache/nifi/minifi/bootstrap/configuration/ingestors/PullHttpChangeIngestor.java
index f7add36..f363dcd 100644
--- a/minifi-bootstrap/src/main/java/org/apache/nifi/minifi/bootstrap/configuration/ingestors/PullHttpChangeIngestor.java
+++ b/minifi-bootstrap/src/main/java/org/apache/nifi/minifi/bootstrap/configuration/ingestors/PullHttpChangeIngestor.java
@@ -17,7 +17,6 @@
 
 package org.apache.nifi.minifi.bootstrap.configuration.ingestors;
 
-import okhttp3.Call;
 import okhttp3.Credentials;
 import okhttp3.HttpUrl;
 import okhttp3.OkHttpClient;
@@ -44,7 +43,6 @@
 import javax.net.ssl.TrustManager;
 import javax.net.ssl.TrustManagerFactory;
 import javax.net.ssl.X509TrustManager;
-
 import java.io.File;
 import java.io.FileInputStream;
 import java.io.IOException;
@@ -148,7 +146,7 @@
         queryReference.set(query);
 
         final String useEtagString = (String) properties.getOrDefault(USE_ETAG_KEY, "false");
-        if ("true".equalsIgnoreCase(useEtagString) || "false".equalsIgnoreCase(useEtagString)){
+        if ("true".equalsIgnoreCase(useEtagString) || "false".equalsIgnoreCase(useEtagString)) {
             useEtag = Boolean.parseBoolean(useEtagString);
         } else {
             throw new IllegalArgumentException("Property, " + USE_ETAG_KEY + ", to specify whether to use the ETag header, must either be a value boolean value (\"true\" or \"false\") or left to " +
@@ -156,7 +154,7 @@
         }
 
         final String overrideSecurityProperties = (String) properties.getOrDefault(OVERRIDE_SECURITY, "false");
-        if ("true".equalsIgnoreCase(overrideSecurityProperties) || "false".equalsIgnoreCase(overrideSecurityProperties)){
+        if ("true".equalsIgnoreCase(overrideSecurityProperties) || "false".equalsIgnoreCase(overrideSecurityProperties)) {
             overrideSecurity = Boolean.parseBoolean(overrideSecurityProperties);
         } else {
             throw new IllegalArgumentException("Property, " + OVERRIDE_SECURITY + ", to specify whether to override security properties must either be a value boolean value (\"true\" or \"false\")" +
@@ -222,36 +220,31 @@
 
     @Override
     public void run() {
-        try {
-            logger.debug("Attempting to pull new config");
-            HttpUrl.Builder builder = new HttpUrl.Builder()
-                    .host(hostReference.get())
-                    .port(portReference.get())
-                    .encodedPath(pathReference.get());
-            String query = queryReference.get();
-            if (!StringUtil.isNullOrEmpty(query)) {
-                builder = builder.encodedQuery(query);
-            }
-            final HttpUrl url = builder
-                    .scheme(connectionScheme)
-                    .build();
+        logger.debug("Attempting to pull new config");
+        HttpUrl.Builder builder = new HttpUrl.Builder()
+                .host(hostReference.get())
+                .port(portReference.get())
+                .encodedPath(pathReference.get());
+        final String query = queryReference.get();
+        if (!StringUtil.isNullOrEmpty(query)) {
+            builder = builder.encodedQuery(query);
+        }
+        final HttpUrl url = builder
+                .scheme(connectionScheme)
+                .build();
 
+        final Request.Builder requestBuilder = new Request.Builder()
+                .get()
+                .url(url);
 
-            final Request.Builder requestBuilder = new Request.Builder()
-                    .get()
-                    .url(url);
+        if (useEtag) {
+            requestBuilder.addHeader("If-None-Match", lastEtag);
+        }
 
-            if (useEtag) {
-                requestBuilder.addHeader("If-None-Match", lastEtag);
-            }
+        final Request request = requestBuilder.build();
 
-            final Request request = requestBuilder.build();
-
-            final OkHttpClient httpClient = httpClientReference.get();
-
-            final Call call = httpClient.newCall(request);
-            final Response response = call.execute();
-
+        ResponseBody body = null;
+        try (Response response = httpClientReference.get().newCall(request).execute()) {
             logger.debug("Response received: {}", response.toString());
 
             int code = response.code();
@@ -264,17 +257,18 @@
                 throw new IOException("Got response code " + code + " while trying to pull configuration: " + response.body().string());
             }
 
-            ResponseBody body = response.body();
+            body = response.body();
+
             if (body == null) {
                 logger.warn("No body returned when pulling a new configuration");
                 return;
             }
 
-            ByteBuffer bodyByteBuffer = ByteBuffer.wrap(body.bytes());
+            final ByteBuffer bodyByteBuffer = ByteBuffer.wrap(body.bytes());
             ByteBuffer readOnlyNewConfig = null;
 
             // checking if some parts of the configuration must be preserved
-            if(overrideSecurity) {
+            if (overrideSecurity) {
                 readOnlyNewConfig = bodyByteBuffer.asReadOnlyBuffer();
             } else {
                 logger.debug("Preserving previous security properties...");