Skip to content

Commit 065b858

Browse files
committed
we don't really need to set multivalued map to set our API client headers, by not doing so we reduce the number of javax packages usage to a single file
1 parent a2c1dee commit 065b858

File tree

10 files changed

+55
-46
lines changed

10 files changed

+55
-46
lines changed

.gitignore

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,4 +7,4 @@ out
77
src/test/java/temp
88
src/test/resources/*properties*
99
.gradle
10-
10+
.java-version

src/main/java/com/postmarkapp/postmark/Postmark.java

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,9 @@
33
import com.postmarkapp.postmark.client.AccountApiClient;
44
import com.postmarkapp.postmark.client.ApiClient;
55

6-
import javax.ws.rs.core.MultivaluedHashMap;
7-
import javax.ws.rs.core.MultivaluedMap;
86
import java.io.InputStream;
7+
import java.util.HashMap;
8+
import java.util.Map;
99
import java.util.Properties;
1010
import java.util.logging.Logger;
1111

@@ -34,11 +34,11 @@ public enum DEFAULTS {
3434
*/
3535
public static class DefaultHeaders {
3636

37-
public static MultivaluedMap<String, Object> headers() {
38-
MultivaluedMap headerValues = new MultivaluedHashMap<>();
39-
headerValues.putSingle("User-Agent", "Postmark Java Library: " + libraryVersion());
40-
headerValues.putSingle("Accept", "application/json");
41-
headerValues.putSingle("Content-Type", "application/json");
37+
public static Map<String, Object> headers() {
38+
Map headerValues = new HashMap();
39+
headerValues.put("User-Agent", "Postmark Java Library: " + libraryVersion());
40+
headerValues.put("Accept", "application/json");
41+
headerValues.put("Content-Type", "application/json");
4242
return headerValues;
4343
}
4444

@@ -94,9 +94,9 @@ private Postmark() {}
9494

9595
private final static Logger LOGGER = Logger.getLogger(Postmark.class.getName());
9696

97-
private static MultivaluedMap<String,Object> getHeadersWithAuth(DEFAULTS authType, String apiToken) {
98-
MultivaluedMap headers = DefaultHeaders.headers();
99-
headers.putSingle(authType.value, apiToken);
97+
private static Map<String,Object> getHeadersWithAuth(DEFAULTS authType, String apiToken) {
98+
Map headers = DefaultHeaders.headers();
99+
headers.put(authType.value, apiToken);
100100
return headers;
101101
}
102102
}

src/main/java/com/postmarkapp/postmark/client/AccountApiClient.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,8 @@
99
import com.postmarkapp.postmark.client.data.model.templates.TemplatesPushRequest;
1010
import com.postmarkapp.postmark.client.exception.PostmarkException;
1111

12-
import javax.ws.rs.core.MultivaluedMap;
1312
import java.io.IOException;
13+
import java.util.Map;
1414

1515
/**
1616
* Class that handles on very top level all API requests. All Postmark public endpoints which
@@ -26,11 +26,11 @@ public class AccountApiClient extends BaseApiClient {
2626
private final String domainsEndpoint = "/domains/";
2727
private final String sendersEndpoint = "/senders/";
2828

29-
public AccountApiClient(String baseUrl, MultivaluedMap<String,Object> headers) {
29+
public AccountApiClient(String baseUrl, Map<String,Object> headers) {
3030
super(baseUrl,headers);
3131
}
3232

33-
public AccountApiClient(String baseUrl, MultivaluedMap<String,Object> headers, boolean secureConnection) {
33+
public AccountApiClient(String baseUrl, Map<String,Object> headers, boolean secureConnection) {
3434
super(baseUrl, headers, secureConnection);
3535
}
3636

src/main/java/com/postmarkapp/postmark/client/ApiClient.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,10 +24,10 @@
2424
import com.postmarkapp.postmark.client.data.model.webhooks.Webhooks;
2525
import com.postmarkapp.postmark.client.exception.PostmarkException;
2626

27-
import javax.ws.rs.core.MultivaluedMap;
2827
import java.io.IOException;
2928
import java.util.HashMap;
3029
import java.util.List;
30+
import java.util.Map;
3131

3232
/**
3333
* Class that handles on very top level all API requests. All Postmark public endpoints which
@@ -51,11 +51,11 @@ public class ApiClient extends BaseApiClient {
5151
private final String suppressionsEndpoint = "/suppressions/";
5252
private final String messageStreamsEndpoint = "/message-streams/";
5353

54-
public ApiClient(String baseUrl, MultivaluedMap<String, Object> headers) {
54+
public ApiClient(String baseUrl, Map<String, Object> headers) {
5555
super(baseUrl,headers);
5656
}
5757

58-
public ApiClient(String baseUrl, MultivaluedMap<String, Object> headers, boolean secureConnection) {
58+
public ApiClient(String baseUrl, Map<String, Object> headers, boolean secureConnection) {
5959
super(baseUrl, headers, secureConnection);
6060
}
6161

src/main/java/com/postmarkapp/postmark/client/BaseApiClient.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
package com.postmarkapp.postmark.client;
22

3-
import javax.ws.rs.core.MultivaluedMap;
3+
import java.util.Map;
44

55
/**
66
* Class that handles (on very high level) API requests. All Postmark public endpoints which
@@ -14,12 +14,12 @@ public String getEndpointUrl(String endpoint) {
1414
return baseUrl + endpoint;
1515
}
1616

17-
public BaseApiClient(String baseUrl, MultivaluedMap<String,Object> headers) {
17+
public BaseApiClient(String baseUrl, Map<String,Object> headers) {
1818
super(headers);
1919
this.baseUrl = baseUrl;
2020
}
2121

22-
public BaseApiClient(String baseUrl, MultivaluedMap<String,Object> headers, boolean secureConnection) {
22+
public BaseApiClient(String baseUrl, Map<String,Object> headers, boolean secureConnection) {
2323
this(baseUrl, headers);
2424
setSecureConnection(secureConnection);
2525
}

src/main/java/com/postmarkapp/postmark/client/HttpClient.java

Lines changed: 21 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,9 @@
77
import javax.ws.rs.client.Client;
88
import javax.ws.rs.client.ClientBuilder;
99
import javax.ws.rs.client.Entity;
10-
import javax.ws.rs.client.WebTarget;
11-
import javax.ws.rs.core.MultivaluedMap;
10+
import javax.ws.rs.client.Invocation.Builder;
1211
import javax.ws.rs.core.Response;
12+
import java.util.Map;
1313

1414
/**
1515
* Base HTTP client class solely responsible for making
@@ -29,18 +29,18 @@ public enum DEFAULTS {
2929
}
3030
}
3131

32-
private final MultivaluedMap<String,Object> headers;
32+
private final Map<String,Object> headers;
3333
private final Client client;
3434

3535
private boolean secureConnection = true;
3636

37-
public HttpClient(MultivaluedMap<String,Object> headers, int connectTimeoutSeconds, int readTimeoutSeconds) {
37+
public HttpClient(Map<String,Object> headers, int connectTimeoutSeconds, int readTimeoutSeconds) {
3838
this(headers);
3939
setConnectTimeoutSeconds(connectTimeoutSeconds);
4040
setReadTimeoutSeconds(readTimeoutSeconds);
4141
}
4242

43-
public HttpClient(MultivaluedMap<String,Object> headers) {
43+
public HttpClient(Map<String,Object> headers) {
4444
this.headers = headers;
4545
this.client = buildClient();
4646
setReadTimeoutSeconds(DEFAULTS.READ_TIMEOUT_SECONDS.value);
@@ -58,31 +58,27 @@ public HttpClient(MultivaluedMap<String,Object> headers) {
5858
*/
5959
public ClientResponse execute(REQUEST_TYPES requestType, String url, String data) {
6060
Response response;
61-
final WebTarget target = client.target(getHttpUrl(url));
61+
final Builder requestBuilder = clientRequestBuilder((url));
6262

6363
switch (requestType) {
6464
case POST:
65-
response = target.request().headers(headers).post(Entity.json(data), Response.class);
66-
break;
67-
68-
case GET:
69-
response = target.request().headers(headers).get(Response.class);
65+
response = requestBuilder.post(Entity.json(data), Response.class);
7066
break;
7167

7268
case PUT:
73-
response = target.request().headers(headers).put(Entity.json(data), Response.class);
69+
response = requestBuilder.put(Entity.json(data), Response.class);
7470
break;
7571

7672
case PATCH:
77-
response = target.request().headers(headers).method("PATCH", Entity.json(data), Response.class);
73+
response = requestBuilder.method("PATCH", Entity.json(data), Response.class);
7874
break;
7975

8076
case DELETE:
81-
response = target.request().headers(headers).delete(Response.class);
77+
response = requestBuilder.delete(Response.class);
8278
break;
8379

8480
default:
85-
response = target.request().headers(headers).get(Response.class);
81+
response = requestBuilder.get(Response.class);
8682
break;
8783

8884
}
@@ -150,6 +146,16 @@ private Client buildClient() {
150146
return client;
151147
}
152148

149+
private Builder clientRequestBuilder(String url) {
150+
Builder requestBuilder = client.target(getHttpUrl(url)).request();
151+
152+
for (Map.Entry<String, Object> header : headers.entrySet()) {
153+
requestBuilder.header(header.getKey(), header.getValue());
154+
}
155+
156+
return requestBuilder;
157+
}
158+
153159
/**
154160
* Build HTTP client with custom config used for requests
155161
* like:

src/main/java/com/postmarkapp/postmark/client/HttpClientHandler.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@
33
import com.postmarkapp.postmark.client.data.parser.DataHandler;
44
import com.postmarkapp.postmark.client.exception.*;
55

6-
import javax.ws.rs.core.MultivaluedMap;
76
import java.io.IOException;
7+
import java.util.Map;
88

99
/**
1010
* 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 {
1616
protected final DataHandler dataHandler;
1717
private final HttpClientErrorHandler httpClientErrorHandler;
1818

19-
protected HttpClientHandler(MultivaluedMap<String,Object> headers) {
19+
protected HttpClientHandler(Map<String,Object> headers) {
2020
this.dataHandler = new DataHandler(false);
2121
this.httpClientErrorHandler = new HttpClientErrorHandler(this.dataHandler);
2222
httpClient = new HttpClient(headers);
2323
}
2424

25-
protected HttpClientHandler(MultivaluedMap<String,Object> headers, boolean secureConnection) {
25+
protected HttpClientHandler(Map<String,Object> headers, boolean secureConnection) {
2626
this(headers);
2727
this.getHttpClient().setSecureConnection(secureConnection);
2828
}

src/test/java/unit/client/ApiClientTest.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,17 +2,19 @@
22

33
import com.postmarkapp.postmark.Postmark;
44
import com.postmarkapp.postmark.client.ApiClient;
5-
import javax.ws.rs.core.MultivaluedMap;
65

76
import org.junit.jupiter.api.Test;
7+
8+
import java.util.Map;
9+
810
import static org.junit.jupiter.api.Assertions.assertNotNull;
911

1012
/**
1113
* Created by bash on 11/13/17.
1214
*/
1315
public class ApiClientTest {
1416

15-
MultivaluedMap headers = Postmark.DefaultHeaders.headers();
17+
Map headers = Postmark.DefaultHeaders.headers();
1618
ApiClient client = new ApiClient(Postmark.DEFAULTS.API_URL.value, headers);
1719

1820
@Test

src/test/java/unit/client/BaseApiClientTest.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,15 +5,16 @@
55
import com.postmarkapp.postmark.client.HttpClient;
66
import org.junit.jupiter.api.Test;
77

8-
import javax.ws.rs.core.MultivaluedMap;
8+
import java.util.Map;
9+
910
import static org.junit.jupiter.api.Assertions.assertEquals;
1011

1112
/**
1213
* Created by bash on 11/13/17.
1314
*/
1415
public class BaseApiClientTest {
1516

16-
MultivaluedMap headers = Postmark.DefaultHeaders.headers();
17+
Map headers = Postmark.DefaultHeaders.headers();
1718
BaseApiClient client = new BaseApiClient(Postmark.DEFAULTS.API_URL.value, headers);
1819

1920
@Test

src/test/java/unit/client/HttpClientTest.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,8 @@
55
import com.postmarkapp.postmark.client.exception.PostmarkException;
66
import org.junit.jupiter.api.Test;
77

8-
import javax.ws.rs.core.MultivaluedHashMap;
98
import java.io.IOException;
9+
import java.util.HashMap;
1010

1111
import static org.junit.jupiter.api.Assertions.assertEquals;
1212
import static org.junit.jupiter.api.Assertions.assertNotNull;
@@ -16,23 +16,23 @@ public class HttpClientTest {
1616

1717
@Test
1818
void execute() throws IOException, PostmarkException {
19-
HttpClient client = new HttpClient(new MultivaluedHashMap<>());
19+
HttpClient client = new HttpClient(new HashMap<>());
2020
HttpClient.ClientResponse response = client.execute(HttpClient.REQUEST_TYPES.GET, Postmark.DEFAULTS.API_URL.value);
2121

2222
assertNotNull(response.getMessage());
2323
}
2424

2525
@Test
2626
void executeIncorrectLink() throws IOException, PostmarkException {
27-
HttpClient client = new HttpClient(new MultivaluedHashMap<>());
27+
HttpClient client = new HttpClient(new HashMap<>());
2828
HttpClient.ClientResponse response = client.execute(HttpClient.REQUEST_TYPES.GET, Postmark.DEFAULTS.API_URL.value + "/someweirdlink");
2929

3030
assertEquals(response.getCode(),404);
3131
}
3232

3333
@Test
3434
void getClient() throws IOException, PostmarkException {
35-
HttpClient client = new HttpClient(new MultivaluedHashMap<>());
35+
HttpClient client = new HttpClient(new HashMap<>());
3636
assertNotNull(client.getClient());
3737
}
3838
}

0 commit comments

Comments
 (0)