diff --git a/.gitignore b/.gitignore index 84fa8eb..73bd6c2 100644 --- a/.gitignore +++ b/.gitignore @@ -7,4 +7,4 @@ out src/test/java/temp src/test/resources/*properties* .gradle - +.java-version diff --git a/src/main/java/com/postmarkapp/postmark/Postmark.java b/src/main/java/com/postmarkapp/postmark/Postmark.java index 9a09ec7..db221bc 100644 --- a/src/main/java/com/postmarkapp/postmark/Postmark.java +++ b/src/main/java/com/postmarkapp/postmark/Postmark.java @@ -3,9 +3,9 @@ import com.postmarkapp.postmark.client.AccountApiClient; import com.postmarkapp.postmark.client.ApiClient; -import javax.ws.rs.core.MultivaluedHashMap; -import javax.ws.rs.core.MultivaluedMap; import java.io.InputStream; +import java.util.HashMap; +import java.util.Map; import java.util.Properties; import java.util.logging.Logger; @@ -34,11 +34,11 @@ public enum DEFAULTS { */ public static class DefaultHeaders { - public static MultivaluedMap headers() { - MultivaluedMap headerValues = new MultivaluedHashMap<>(); - headerValues.putSingle("User-Agent", "Postmark Java Library: " + libraryVersion()); - headerValues.putSingle("Accept", "application/json"); - headerValues.putSingle("Content-Type", "application/json"); + public static Map headers() { + Map headerValues = new HashMap(); + headerValues.put("User-Agent", "Postmark Java Library: " + libraryVersion()); + headerValues.put("Accept", "application/json"); + headerValues.put("Content-Type", "application/json"); return headerValues; } @@ -94,9 +94,9 @@ private Postmark() {} private final static Logger LOGGER = Logger.getLogger(Postmark.class.getName()); - private static MultivaluedMap getHeadersWithAuth(DEFAULTS authType, String apiToken) { - MultivaluedMap headers = DefaultHeaders.headers(); - headers.putSingle(authType.value, apiToken); + private static Map getHeadersWithAuth(DEFAULTS authType, String apiToken) { + Map headers = DefaultHeaders.headers(); + headers.put(authType.value, apiToken); return headers; } } diff --git a/src/main/java/com/postmarkapp/postmark/client/AccountApiClient.java b/src/main/java/com/postmarkapp/postmark/client/AccountApiClient.java index b7c2afc..4255f66 100644 --- a/src/main/java/com/postmarkapp/postmark/client/AccountApiClient.java +++ b/src/main/java/com/postmarkapp/postmark/client/AccountApiClient.java @@ -9,8 +9,8 @@ import com.postmarkapp.postmark.client.data.model.templates.TemplatesPushRequest; import com.postmarkapp.postmark.client.exception.PostmarkException; -import javax.ws.rs.core.MultivaluedMap; import java.io.IOException; +import java.util.Map; /** * Class that handles on very top level all API requests. All Postmark public endpoints which @@ -26,11 +26,11 @@ public class AccountApiClient extends BaseApiClient { private final String domainsEndpoint = "/domains/"; private final String sendersEndpoint = "/senders/"; - public AccountApiClient(String baseUrl, MultivaluedMap headers) { + public AccountApiClient(String baseUrl, Map headers) { super(baseUrl,headers); } - public AccountApiClient(String baseUrl, MultivaluedMap headers, boolean secureConnection) { + public AccountApiClient(String baseUrl, Map headers, boolean secureConnection) { super(baseUrl, headers, secureConnection); } diff --git a/src/main/java/com/postmarkapp/postmark/client/ApiClient.java b/src/main/java/com/postmarkapp/postmark/client/ApiClient.java index 5e4b27a..ffc6369 100644 --- a/src/main/java/com/postmarkapp/postmark/client/ApiClient.java +++ b/src/main/java/com/postmarkapp/postmark/client/ApiClient.java @@ -24,10 +24,10 @@ import com.postmarkapp.postmark.client.data.model.webhooks.Webhooks; import com.postmarkapp.postmark.client.exception.PostmarkException; -import javax.ws.rs.core.MultivaluedMap; import java.io.IOException; import java.util.HashMap; import java.util.List; +import java.util.Map; /** * Class that handles on very top level all API requests. All Postmark public endpoints which @@ -51,11 +51,11 @@ public class ApiClient extends BaseApiClient { private final String suppressionsEndpoint = "/suppressions/"; private final String messageStreamsEndpoint = "/message-streams/"; - public ApiClient(String baseUrl, MultivaluedMap headers) { + public ApiClient(String baseUrl, Map headers) { super(baseUrl,headers); } - public ApiClient(String baseUrl, MultivaluedMap headers, boolean secureConnection) { + public ApiClient(String baseUrl, Map headers, boolean secureConnection) { super(baseUrl, headers, secureConnection); } diff --git a/src/main/java/com/postmarkapp/postmark/client/BaseApiClient.java b/src/main/java/com/postmarkapp/postmark/client/BaseApiClient.java index 4ebbb19..b36ce66 100644 --- a/src/main/java/com/postmarkapp/postmark/client/BaseApiClient.java +++ b/src/main/java/com/postmarkapp/postmark/client/BaseApiClient.java @@ -1,6 +1,6 @@ package com.postmarkapp.postmark.client; -import javax.ws.rs.core.MultivaluedMap; +import java.util.Map; /** * Class that handles (on very high level) API requests. All Postmark public endpoints which @@ -14,12 +14,12 @@ public String getEndpointUrl(String endpoint) { return baseUrl + endpoint; } - public BaseApiClient(String baseUrl, MultivaluedMap headers) { + public BaseApiClient(String baseUrl, Map headers) { super(headers); this.baseUrl = baseUrl; } - public BaseApiClient(String baseUrl, MultivaluedMap headers, boolean secureConnection) { + public BaseApiClient(String baseUrl, Map headers, boolean secureConnection) { this(baseUrl, headers); setSecureConnection(secureConnection); } diff --git a/src/main/java/com/postmarkapp/postmark/client/HttpClient.java b/src/main/java/com/postmarkapp/postmark/client/HttpClient.java index dbcb153..0e4808b 100644 --- a/src/main/java/com/postmarkapp/postmark/client/HttpClient.java +++ b/src/main/java/com/postmarkapp/postmark/client/HttpClient.java @@ -7,9 +7,9 @@ import javax.ws.rs.client.Client; import javax.ws.rs.client.ClientBuilder; import javax.ws.rs.client.Entity; -import javax.ws.rs.client.WebTarget; -import javax.ws.rs.core.MultivaluedMap; +import javax.ws.rs.client.Invocation.Builder; import javax.ws.rs.core.Response; +import java.util.Map; /** * Base HTTP client class solely responsible for making @@ -29,18 +29,18 @@ public enum DEFAULTS { } } - private final MultivaluedMap headers; + private final Map headers; private final Client client; private boolean secureConnection = true; - public HttpClient(MultivaluedMap headers, int connectTimeoutSeconds, int readTimeoutSeconds) { + public HttpClient(Map headers, int connectTimeoutSeconds, int readTimeoutSeconds) { this(headers); setConnectTimeoutSeconds(connectTimeoutSeconds); setReadTimeoutSeconds(readTimeoutSeconds); } - public HttpClient(MultivaluedMap headers) { + public HttpClient(Map headers) { this.headers = headers; this.client = buildClient(); setReadTimeoutSeconds(DEFAULTS.READ_TIMEOUT_SECONDS.value); @@ -58,31 +58,27 @@ public HttpClient(MultivaluedMap headers) { */ public ClientResponse execute(REQUEST_TYPES requestType, String url, String data) { Response response; - final WebTarget target = client.target(getHttpUrl(url)); + final Builder requestBuilder = clientRequestBuilder((url)); switch (requestType) { case POST: - response = target.request().headers(headers).post(Entity.json(data), Response.class); - break; - - case GET: - response = target.request().headers(headers).get(Response.class); + response = requestBuilder.post(Entity.json(data), Response.class); break; case PUT: - response = target.request().headers(headers).put(Entity.json(data), Response.class); + response = requestBuilder.put(Entity.json(data), Response.class); break; case PATCH: - response = target.request().headers(headers).method("PATCH", Entity.json(data), Response.class); + response = requestBuilder.method("PATCH", Entity.json(data), Response.class); break; case DELETE: - response = target.request().headers(headers).delete(Response.class); + response = requestBuilder.delete(Response.class); break; default: - response = target.request().headers(headers).get(Response.class); + response = requestBuilder.get(Response.class); break; } @@ -150,6 +146,16 @@ private Client buildClient() { return client; } + private Builder clientRequestBuilder(String url) { + Builder requestBuilder = client.target(getHttpUrl(url)).request(); + + for (Map.Entry header : headers.entrySet()) { + requestBuilder.header(header.getKey(), header.getValue()); + } + + return requestBuilder; + } + /** * Build HTTP client with custom config used for requests * like: diff --git a/src/main/java/com/postmarkapp/postmark/client/HttpClientHandler.java b/src/main/java/com/postmarkapp/postmark/client/HttpClientHandler.java index 0314f93..14b2c0e 100644 --- a/src/main/java/com/postmarkapp/postmark/client/HttpClientHandler.java +++ b/src/main/java/com/postmarkapp/postmark/client/HttpClientHandler.java @@ -3,8 +3,8 @@ import com.postmarkapp.postmark.client.data.parser.DataHandler; import com.postmarkapp.postmark.client.exception.*; -import javax.ws.rs.core.MultivaluedMap; import java.io.IOException; +import java.util.Map; /** * Client class acts as handler between HTTP requests handler class (HttpClient) and class which provides access to all endpoints to call. @@ -16,13 +16,13 @@ public class HttpClientHandler { protected final DataHandler dataHandler; private final HttpClientErrorHandler httpClientErrorHandler; - protected HttpClientHandler(MultivaluedMap headers) { + protected HttpClientHandler(Map headers) { this.dataHandler = new DataHandler(false); this.httpClientErrorHandler = new HttpClientErrorHandler(this.dataHandler); httpClient = new HttpClient(headers); } - protected HttpClientHandler(MultivaluedMap headers, boolean secureConnection) { + protected HttpClientHandler(Map headers, boolean secureConnection) { this(headers); this.getHttpClient().setSecureConnection(secureConnection); } diff --git a/src/test/java/unit/client/ApiClientTest.java b/src/test/java/unit/client/ApiClientTest.java index 1ad08f6..4e07dfc 100644 --- a/src/test/java/unit/client/ApiClientTest.java +++ b/src/test/java/unit/client/ApiClientTest.java @@ -2,9 +2,11 @@ import com.postmarkapp.postmark.Postmark; import com.postmarkapp.postmark.client.ApiClient; -import javax.ws.rs.core.MultivaluedMap; import org.junit.jupiter.api.Test; + +import java.util.Map; + import static org.junit.jupiter.api.Assertions.assertNotNull; /** @@ -12,7 +14,7 @@ */ public class ApiClientTest { - MultivaluedMap headers = Postmark.DefaultHeaders.headers(); + Map headers = Postmark.DefaultHeaders.headers(); ApiClient client = new ApiClient(Postmark.DEFAULTS.API_URL.value, headers); @Test diff --git a/src/test/java/unit/client/BaseApiClientTest.java b/src/test/java/unit/client/BaseApiClientTest.java index 9494ea1..d34f975 100644 --- a/src/test/java/unit/client/BaseApiClientTest.java +++ b/src/test/java/unit/client/BaseApiClientTest.java @@ -5,7 +5,8 @@ import com.postmarkapp.postmark.client.HttpClient; import org.junit.jupiter.api.Test; -import javax.ws.rs.core.MultivaluedMap; +import java.util.Map; + import static org.junit.jupiter.api.Assertions.assertEquals; /** @@ -13,7 +14,7 @@ */ public class BaseApiClientTest { - MultivaluedMap headers = Postmark.DefaultHeaders.headers(); + Map headers = Postmark.DefaultHeaders.headers(); BaseApiClient client = new BaseApiClient(Postmark.DEFAULTS.API_URL.value, headers); @Test diff --git a/src/test/java/unit/client/HttpClientTest.java b/src/test/java/unit/client/HttpClientTest.java index 52247c4..ac7e60e 100644 --- a/src/test/java/unit/client/HttpClientTest.java +++ b/src/test/java/unit/client/HttpClientTest.java @@ -5,8 +5,8 @@ import com.postmarkapp.postmark.client.exception.PostmarkException; import org.junit.jupiter.api.Test; -import javax.ws.rs.core.MultivaluedHashMap; import java.io.IOException; +import java.util.HashMap; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertNotNull; @@ -16,7 +16,7 @@ public class HttpClientTest { @Test void execute() throws IOException, PostmarkException { - HttpClient client = new HttpClient(new MultivaluedHashMap<>()); + HttpClient client = new HttpClient(new HashMap<>()); HttpClient.ClientResponse response = client.execute(HttpClient.REQUEST_TYPES.GET, Postmark.DEFAULTS.API_URL.value); assertNotNull(response.getMessage()); @@ -24,7 +24,7 @@ void execute() throws IOException, PostmarkException { @Test void executeIncorrectLink() throws IOException, PostmarkException { - HttpClient client = new HttpClient(new MultivaluedHashMap<>()); + HttpClient client = new HttpClient(new HashMap<>()); HttpClient.ClientResponse response = client.execute(HttpClient.REQUEST_TYPES.GET, Postmark.DEFAULTS.API_URL.value + "/someweirdlink"); assertEquals(response.getCode(),404); @@ -32,7 +32,7 @@ void executeIncorrectLink() throws IOException, PostmarkException { @Test void getClient() throws IOException, PostmarkException { - HttpClient client = new HttpClient(new MultivaluedHashMap<>()); + HttpClient client = new HttpClient(new HashMap<>()); assertNotNull(client.getClient()); } }