Skip to content

Commit 5193216

Browse files
authored
Merge pull request #18 from pheyken/map-error-code
add errorCode to InvalidMessageException
2 parents f5d3902 + 8942dc7 commit 5193216

File tree

3 files changed

+26
-2
lines changed

3 files changed

+26
-2
lines changed

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

+1-1
Original file line numberDiff line numberDiff line change
@@ -140,7 +140,7 @@ private void validateResponse(HttpClient.ClientResponse response) throws Postmar
140140
throw new InvalidAPIKeyException(dataHandler.formatErrorMessage(message));
141141

142142
case 422:
143-
throw new InvalidMessageException(dataHandler.formatErrorMessage(message));
143+
throw new InvalidMessageException(dataHandler.formatErrorMessage(message), dataHandler.formatErrorCode(message));
144144

145145
case 500:
146146
throw new InternalServerException(dataHandler.formatErrorMessage(message));

src/main/java/com/wildbit/java/postmark/client/data/DataHandler.java

+17
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,23 @@ public String formatErrorMessage(String data) throws IOException {
7070
return node.get("Message").textValue();
7171
}
7272

73+
/**
74+
* Helper for filtering out error code returned by Postmark in case of HTTP status code 422
75+
* @param data JSON object as String
76+
* @return error code
77+
* @throws IOException in case converting String to Object fails
78+
*/
79+
public Integer formatErrorCode(String data) throws IOException {
80+
JsonNode node = fromJson(data, JsonNode.class);
81+
JsonNode errorCodeNode = node.get("ErrorCode");
82+
83+
if (errorCodeNode == null || errorCodeNode.isNull()) {
84+
return null;
85+
}
86+
87+
return errorCodeNode.intValue();
88+
}
89+
7390
/**
7491
* Sets data mapper to be strict when making conversion of data to objects.
7592
* If there is a mismatch between object and String in any other case than letter case,

src/main/java/com/wildbit/java/postmark/client/exception/InvalidMessageException.java

+8-1
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,15 @@
55
*/
66

77
public class InvalidMessageException extends PostmarkException {
8-
public InvalidMessageException(String message) {
8+
private final Integer errorCode;
9+
10+
public InvalidMessageException(String message, Integer errorCode) {
911
super(message);
12+
this.errorCode = errorCode;
13+
}
14+
15+
public Integer getErrorCode() {
16+
return errorCode;
1017
}
1118
}
1219

0 commit comments

Comments
 (0)