From 904412caee08943ef50df8ce92301d1533b3a7b8 Mon Sep 17 00:00:00 2001 From: Mike Kienenberger Date: Wed, 3 Jun 2020 18:59:56 -0400 Subject: [PATCH] Return error response based on caught exception from postData --- .../java/net/authorize/util/HttpUtility.java | 38 +++++++++++++++++++ 1 file changed, 38 insertions(+) diff --git a/src/main/java/net/authorize/util/HttpUtility.java b/src/main/java/net/authorize/util/HttpUtility.java index cae21c51..5702d5e6 100644 --- a/src/main/java/net/authorize/util/HttpUtility.java +++ b/src/main/java/net/authorize/util/HttpUtility.java @@ -8,6 +8,7 @@ import java.io.UnsupportedEncodingException; import java.net.URI; import java.net.URISyntaxException; +import java.util.List; import java.util.concurrent.ExecutionException; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; @@ -26,6 +27,9 @@ import net.authorize.Environment; import net.authorize.api.contract.v1.ANetApiRequest; import net.authorize.api.contract.v1.ANetApiResponse; +import net.authorize.api.contract.v1.MessageTypeEnum; +import net.authorize.api.contract.v1.MessagesType; +import net.authorize.api.contract.v1.MessagesType.Message; /** * Helper methods for http calls @@ -106,13 +110,47 @@ public static ANetApiResponse postData(Environment env, ANetApiRequest reque logger.debug(String.format("Response: '%s'", response)); } catch (InterruptedException ie) { logger.error(String.format("Http call interrupted Message: '%s'", ie.getMessage())); + response = createErrorResponse(ie); } catch (ExecutionException ee) { logger.error(String.format("Execution error for http post Message: '%s'", ee.getMessage())); + response = createErrorResponse(ee); } return response; } + /** + * Creates a failure response with information from the exception causing the failure + * @param exception causing failed response + * @return failed ANetApiResponse with information from exception + */ + private static ANetApiResponse createErrorResponse(Exception exception) { + ANetApiResponse response = new ANetApiResponse(); + + MessagesType aMessage = new MessagesType(); + aMessage.setResultCode(MessageTypeEnum.ERROR); + response.setMessages(aMessage); + + List messages = response.getMessages().getMessage(); + // clear all messages + messages.clear(); + + if (null != exception) { + Message errorMessage = new Message(); + messages.add(errorMessage); + String code = "Error"; + String text = "Unknown Error"; + code = exception.getClass().getCanonicalName(); + // code = exception.getClass().getTypeName();// requires java1.8 + text = exception.getMessage(); + + errorMessage.setCode(code); + errorMessage.setText(text); + } + + return response; + } + /** * Converts a response inputstream into a string. *