Skip to content

Commit d965cf5

Browse files
author
stephen powis
committed
wrap exceptions
1 parent f789e46 commit d965cf5

File tree

5 files changed

+89
-37
lines changed

5 files changed

+89
-37
lines changed

src/main/java/com/darksci/pardot/api/Example.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ public class Example {
1616
/**
1717
* Example code.
1818
*/
19-
public static void example() throws IOException {
19+
public static void example() {
2020
/*
2121
* Create a new configuration object with your Pardot credentials.
2222
*
@@ -59,7 +59,7 @@ public static void example() throws IOException {
5959
/**
6060
* Example code showing off Auto-closable.
6161
*/
62-
public static void autoCloseableExample() throws IOException {
62+
public static void autoCloseableExample() {
6363
/*
6464
* Since PardotClient implements Autoclosable, you can also use the try-with-resources pattern.
6565
*/

src/main/java/com/darksci/pardot/api/PardotClient.java

Lines changed: 29 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,7 @@ public PardotClient(final Configuration configuration, final RestClient restClie
8484
this.restClient = restClient;
8585
}
8686

87-
private <T> T submitRequest(final Request request, ResponseParser<T> responseParser) throws IOException {
87+
private <T> T submitRequest(final Request request, ResponseParser<T> responseParser) {
8888
// Ugly hack,
8989
// avoid doing login check if we're doing a login request.
9090
if (!(request instanceof LoginRequest)) {
@@ -102,13 +102,21 @@ private <T> T submitRequest(final Request request, ResponseParser<T> responsePar
102102
if (restResponse.getHttpCode() >= 200 && restResponse.getHttpCode() < 300) {
103103
// High level check for error response
104104
if (restResponse.getResponseStr().contains("<rsp stat=\"fail\"")) {
105-
// Parse error response
106-
final ErrorResponse error = new ErrorResponseParser().parseResponse(restResponse.getResponseStr());
107-
108-
// throw exception
109-
throw new InvalidRequestException(error.getMessage(), error.getCode());
105+
try {
106+
// Parse error response
107+
final ErrorResponse error = new ErrorResponseParser().parseResponse(restResponse.getResponseStr());
108+
109+
// throw exception
110+
throw new InvalidRequestException(error.getMessage(), error.getCode());
111+
} catch (IOException exception) {
112+
throw new ParserException(exception.getMessage(), exception);
113+
}
114+
}
115+
try {
116+
return responseParser.parseResponse(restResponse.getResponseStr());
117+
} catch (IOException exception) {
118+
throw new ParserException(exception.getMessage(), exception);
110119
}
111-
return responseParser.parseResponse(restResponse.getResponseStr());
112120
}
113121
// Otherwise throw an exception.
114122
throw new InvalidRequestException("Invalid http response code from server: " + restResponse.getHttpCode(), restResponse.getHttpCode());
@@ -144,7 +152,7 @@ RestClient getRestClient() {
144152
* If no existing API key is found, this will attempt to authenticate and
145153
* get a new API key.
146154
*/
147-
private void checkLogin() throws IOException {
155+
private void checkLogin() {
148156
if (configuration.getApiKey() != null) {
149157
return;
150158
}
@@ -165,127 +173,115 @@ private void checkLogin() throws IOException {
165173
* Make login request
166174
* @return LoginResponse returned from server.
167175
*/
168-
public LoginResponse login(LoginRequest request) throws IOException {
176+
public LoginResponse login(LoginRequest request) {
169177
return submitRequest(request, new LoginResponseParser());
170178
}
171179

172180
/**
173181
* Make API request to read the account of the currently authenticated user.
174182
* @param request Request definition.
175183
* @return Parsed api response.
176-
* @throws IOException on parse errors.
177184
*/
178-
public Account accountRead(final AccountReadRequest request) throws IOException {
185+
public Account accountRead(final AccountReadRequest request) {
179186
return submitRequest(request, new AccountReadResponseParser());
180187
}
181188

182189
/**
183190
* Make API request to query one or more users.
184191
* @param request Request definition.
185192
* @return Parsed user query response.
186-
* @throws IOException on parse errors.
187193
*/
188-
public UserQueryResponse.Result userQuery(final UserQueryRequest request) throws IOException {
194+
public UserQueryResponse.Result userQuery(final UserQueryRequest request) {
189195
return submitRequest(request, new UserQueryResponseParser());
190196
}
191197

192198
/**
193199
* Make API request to read the abilities of the currently authenticated user.
194200
* @param request Request definition.
195201
* @return Parsed api response.
196-
* @throws IOException on parse errors.
197202
*/
198-
public UserAbilitiesResponse.Result userAbilities(final UserAbilitiesRequest request) throws IOException {
203+
public UserAbilitiesResponse.Result userAbilities(final UserAbilitiesRequest request) {
199204
return submitRequest(request, new UserAbilitiesParser());
200205
}
201206

202207
/**
203208
* Make API request to read a specific user.
204209
* @param request Request definition.
205210
* @return Parsed api response.
206-
* @throws IOException on parse errors.
207211
*/
208-
public User userRead(final UserReadRequest request) throws IOException {
212+
public User userRead(final UserReadRequest request) {
209213
return submitRequest(request, new UserReadResponseParser());
210214
}
211215

212216
/**
213217
* Make API request to query for one or more campaigns.
214218
* @param request Request definition.
215219
* @return Parsed api response.
216-
* @throws IOException on parse errors.
217220
*/
218-
public CampaignQueryResponse.Result campaignQuery(final CampaignQueryRequest request) throws IOException {
221+
public CampaignQueryResponse.Result campaignQuery(final CampaignQueryRequest request) {
219222
return submitRequest(request, new CampaignQueryResponseParser());
220223
}
221224

222225
/**
223226
* Make API request to read a specific campaign.
224227
* @param request Request definition.
225228
* @return Parsed api response.
226-
* @throws IOException on parse errors.
227229
*/
228-
public Campaign campaignRead(final CampaignReadRequest request) throws IOException {
230+
public Campaign campaignRead(final CampaignReadRequest request) {
229231
return submitRequest(request, new CampaignReadResponseParser());
230232
}
231233

232234
/**
233235
* Make API request to create a new Campaign.
234236
* @param request Request definition.
235237
* @return Parsed api response.
236-
* @throws IOException on parse errors.
237238
*/
238-
public Campaign campaignCreate(final CampaignCreateRequest request) throws IOException {
239+
public Campaign campaignCreate(final CampaignCreateRequest request) {
239240
return submitRequest(request, new CampaignReadResponseParser());
240241
}
241242

242243
/**
243244
* Make API request to update an existing Campaign.
244245
* @param request Request definition.
245246
* @return Parsed api response.
246-
* @throws IOException on parse errors.
247247
*/
248-
public Campaign campaignUpdate(final CampaignUpdateRequest request) throws IOException {
248+
public Campaign campaignUpdate(final CampaignUpdateRequest request) {
249249
return submitRequest(request, new CampaignReadResponseParser());
250250
}
251251

252252
/**
253253
* Make API request to read a specific Email.
254254
* @param request Request definition.
255255
* @return Parsed api response.
256-
* @throws IOException on parse errors.
257256
*/
258-
public Email emailRead(final EmailReadRequest request) throws IOException {
257+
public Email emailRead(final EmailReadRequest request) {
259258
return submitRequest(request, new EmailReadResponseParser());
260259
}
261260

262261
/**
263262
* Make API request to retrieve stats about a List Email Send.
264263
* @param request Request definition.
265264
* @return Parsed api response.
266-
* @throws IOException on parse errors.
267265
*/
268-
public EmailStatsResponse.Stats emailStats(final EmailStatsRequest request) throws IOException {
266+
public EmailStatsResponse.Stats emailStats(final EmailStatsRequest request) {
269267
return submitRequest(request, new EmailStatsResponseParser());
270268
}
271269

272270
/**
273271
* Make API request to send a 1-to-1 prospect email.
274272
* @param request Request definition.
275273
* @return Parsed api response.
276-
* @throws IOException on parse errors.
277274
*/
278-
public Email emailSendOneToOne(final EmailSendOneToOneRequest request) throws IOException {
275+
public Email emailSendOneToOne(final EmailSendOneToOneRequest request) {
279276
return submitRequest(request, new EmailReadResponseParser());
280277
}
281278

282279
/**
283280
* Make API request to send a list email.
284281
* @param request Request definition.
285282
* @return Parsed api response.
286-
* @throws IOException on parse errors.
287283
*/
288-
public Email emailSendList(final EmailSendListRequest request) throws IOException {
284+
public Email emailSendList(final EmailSendListRequest request) {
289285
return submitRequest(request, new EmailReadResponseParser());
290286
}
291287

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
package com.darksci.pardot.api;
2+
3+
import org.slf4j.Logger;
4+
import org.slf4j.LoggerFactory;
5+
6+
/**
7+
* Thrown when a parser implementation has an error.
8+
*/
9+
public class ParserException extends RuntimeException {
10+
public ParserException() {
11+
}
12+
13+
public ParserException(final String message) {
14+
super(message);
15+
}
16+
17+
public ParserException(final String message, final Throwable cause) {
18+
super(message, cause);
19+
}
20+
21+
public ParserException(final Throwable cause) {
22+
super(cause);
23+
}
24+
25+
public ParserException(final String message, final Throwable cause, final boolean enableSuppression, final boolean writableStackTrace) {
26+
super(message, cause, enableSuppression, writableStackTrace);
27+
}
28+
}

src/main/java/com/darksci/pardot/api/rest/RestClient.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,9 +20,9 @@ public interface RestClient {
2020
* Make a request against the Pardot API.
2121
* @param request The request to submit.
2222
* @return The response, in UTF-8 String format.
23-
* @throws IOException if something goes wrong?
23+
* @throws RestException When something goes wrong in an underlying implementation.
2424
*/
25-
RestResponse submitRequest(final Request request) throws IOException;
25+
RestResponse submitRequest(final Request request) throws RestException;
2626

2727
/**
2828
* Called to release any internally held resources.
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
package com.darksci.pardot.api.rest;
2+
3+
import org.slf4j.Logger;
4+
import org.slf4j.LoggerFactory;
5+
6+
/**
7+
* Exception when an underlying error occurs in a RestClient implementation.
8+
*/
9+
public class RestException extends RuntimeException {
10+
public RestException() {
11+
}
12+
13+
public RestException(final String message) {
14+
super(message);
15+
}
16+
17+
public RestException(final String message, final Throwable cause) {
18+
super(message, cause);
19+
}
20+
21+
public RestException(final Throwable cause) {
22+
super(cause);
23+
}
24+
25+
public RestException(final String message, final Throwable cause, final boolean enableSuppression, final boolean writableStackTrace) {
26+
super(message, cause, enableSuppression, writableStackTrace);
27+
}
28+
}

0 commit comments

Comments
 (0)