diff --git a/src/main/java/com/justinsb/etcd/EtcdClient.java b/src/main/java/com/justinsb/etcd/EtcdClient.java index babc363..a40a7f7 100644 --- a/src/main/java/com/justinsb/etcd/EtcdClient.java +++ b/src/main/java/com/justinsb/etcd/EtcdClient.java @@ -1,5 +1,6 @@ package com.justinsb.etcd; +import java.io.Closeable; import java.io.IOException; import java.io.UnsupportedEncodingException; import java.net.URI; @@ -36,9 +37,9 @@ import com.google.gson.JsonParseException; import com.google.gson.JsonParser; -public class EtcdClient { - static final CloseableHttpAsyncClient httpClient = buildDefaultHttpClient(); - static final Gson gson = new GsonBuilder().create(); +public class EtcdClient implements Closeable { + private final CloseableHttpAsyncClient httpClient; + private static final Gson gson = new GsonBuilder().create(); static CloseableHttpAsyncClient buildDefaultHttpClient() { // TODO: Increase timeout?? @@ -51,6 +52,11 @@ static CloseableHttpAsyncClient buildDefaultHttpClient() { final URI baseUri; public EtcdClient(URI baseUri) { + this(buildDefaultHttpClient(), baseUri); + } + + public EtcdClient(CloseableHttpAsyncClient httpClient, URI baseUri) { + this.httpClient = httpClient; String uri = baseUri.toString(); if (!uri.endsWith("/")) { uri += "/"; @@ -443,4 +449,9 @@ public static String format(Object o) { } } + @Override + public void close() throws IOException + { + httpClient.close(); + } }