diff --git a/acquirer/src/org/webpki/saturn/acquirer/ProcessingBaseServlet.java b/acquirer/src/org/webpki/saturn/acquirer/ProcessingBaseServlet.java index b3c15c9e..f4a15392 100644 --- a/acquirer/src/org/webpki/saturn/acquirer/ProcessingBaseServlet.java +++ b/acquirer/src/org/webpki/saturn/acquirer/ProcessingBaseServlet.java @@ -106,7 +106,7 @@ public void doPost(HttpServletRequest request, HttpServletResponse response) thr // general connectivity problems. // ///////////////////////////////////////////////////////////////////////////////////////// String message = (urlHolder == null ? "" : "Source" + urlHolder.getCallerAddress()) + e.getMessage(); - logger.log(Level.SEVERE, message, e); + logger.log(Level.SEVERE, HttpSupport.getStackTrace(e, message)); response.setStatus(HttpServletResponse.SC_BAD_REQUEST); PrintWriter writer = response.getWriter(); writer.print(message); diff --git a/bank/src/org/webpki/saturn/bank/ProcessingBaseServlet.java b/bank/src/org/webpki/saturn/bank/ProcessingBaseServlet.java index 2645e908..d3315650 100644 --- a/bank/src/org/webpki/saturn/bank/ProcessingBaseServlet.java +++ b/bank/src/org/webpki/saturn/bank/ProcessingBaseServlet.java @@ -153,7 +153,7 @@ public void doPost(HttpServletRequest request, HttpServletResponse response) thr String message = (urlHolder == null ? "" : "From" + urlHolder.getCallerAddress() + (urlHolder.getUrl() == null ? "" : "URL=" + urlHolder.getUrl()) + "\n") + e.getMessage(); if (!(e instanceof NormalException)) { - logger.log(Level.SEVERE, message, e); + logger.log(Level.SEVERE, HttpSupport.getStackTrace(e, message)); } response.setStatus(HttpServletResponse.SC_BAD_REQUEST); PrintWriter writer = response.getWriter(); diff --git a/merchant/src/org/webpki/saturn/merchant/ProcessingBaseServlet.java b/merchant/src/org/webpki/saturn/merchant/ProcessingBaseServlet.java index f02c5593..07cd08ea 100644 --- a/merchant/src/org/webpki/saturn/merchant/ProcessingBaseServlet.java +++ b/merchant/src/org/webpki/saturn/merchant/ProcessingBaseServlet.java @@ -147,23 +147,7 @@ public void doPost(HttpServletRequest request, HttpServletResponse response) thr } catch (Exception e) { String message = (urlHolder.getUrl() == null ? "" : "URL=" + urlHolder.getUrl() + "\n") + e.getMessage(); - StringBuilder error = new StringBuilder() - .append(e.getClass().getName()) - .append(": ") - .append(message); - StackTraceElement[] st = e.getStackTrace(); - int length = st.length; - if (length > 20) { - length = 20; - } - for (int i = 0; i < length; i++) { - String entry = st[i].toString(); - error.append("\n at " + entry); - if (entry.contains(".HttpServlet")) { - break; - } - } - logger.log(Level.SEVERE, error.toString()); + logger.log(Level.SEVERE, HttpSupport.getStackTrace(e, message)); JSONObjectWriter userError = WalletAlertMessage.encode("An unexpected error occurred.
" + "Please try again or contact support."); HttpSupport.writeJsonData(response, userError); diff --git a/merchant/src/org/webpki/saturn/merchant/RefundServlet.java b/merchant/src/org/webpki/saturn/merchant/RefundServlet.java index f7d3cef0..58218b45 100644 --- a/merchant/src/org/webpki/saturn/merchant/RefundServlet.java +++ b/merchant/src/org/webpki/saturn/merchant/RefundServlet.java @@ -32,6 +32,7 @@ import org.webpki.json.JSONObjectWriter; import org.webpki.saturn.common.AuthorizationRequest; +import org.webpki.saturn.common.HttpSupport; import org.webpki.saturn.common.KnownExtensions; import org.webpki.saturn.common.PayeeAuthority; import org.webpki.saturn.common.ProviderAuthority; @@ -87,11 +88,8 @@ public void doGet(HttpServletRequest request, HttpServletResponse response) thro return; } - // We do the assumption that you can receive and send money bidirectionally - // using the same account type - String context = authorizationRequest - .getPayeeReceiveAccount(MerchantService.knownBackendAccountTypes).getContext(); - + // We do the assumption here that SEPA is always useful for receiving and sending money + String context = new org.payments.sepa.SEPAAccountDataDecoder().getContext(); JSONObjectWriter refundRequestData = RefundRequest.encode(resultData.optionalRefund, refundUrl, @@ -122,7 +120,7 @@ public void doGet(HttpServletRequest request, HttpServletResponse response) thro resultData); } catch (Exception e) { String message = (urlHolder.getUrl() == null ? "" : "URL=" + urlHolder.getUrl() + "\n") + e.getMessage(); - logger.log(Level.SEVERE, message, e); + logger.log(Level.SEVERE, HttpSupport.getStackTrace(e, message)); ErrorServlet.systemFail(response, message); } } diff --git a/merchant/src/org/webpki/saturn/merchant/ResultServlet.java b/merchant/src/org/webpki/saturn/merchant/ResultServlet.java index 96f90cf9..e4091164 100644 --- a/merchant/src/org/webpki/saturn/merchant/ResultServlet.java +++ b/merchant/src/org/webpki/saturn/merchant/ResultServlet.java @@ -30,6 +30,7 @@ import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; +import org.webpki.saturn.common.HttpSupport; import org.webpki.saturn.common.UrlHolder; ////////////////////////////////////////////////////////////////////////// @@ -100,7 +101,7 @@ public void doPost(HttpServletRequest request, HttpServletResponse response) thr resultData); } catch (Exception e) { String message = (urlHolder.getUrl() == null ? "" : "URL=" + urlHolder.getUrl() + "\n") + e.getMessage(); - logger.log(Level.SEVERE, message, e); + logger.log(Level.SEVERE, HttpSupport.getStackTrace(e, message)); ErrorServlet.systemFail(response, "An unexpected error occurred.
Please try again or contact support."); } } diff --git a/resources/common/org/webpki/saturn/common/HttpSupport.java b/resources/common/org/webpki/saturn/common/HttpSupport.java index 01992bed..eecceb81 100644 --- a/resources/common/org/webpki/saturn/common/HttpSupport.java +++ b/resources/common/org/webpki/saturn/common/HttpSupport.java @@ -73,4 +73,24 @@ public static JSONObjectReader readJsonData(HttpServletRequest request) throws I } return JSONParser.parse(ServletUtil.getData(request)); } + + public static String getStackTrace(Exception e, String message) { + StringBuilder error = new StringBuilder() + .append(e.getClass().getName()) + .append(": ") + .append(message); + StackTraceElement[] st = e.getStackTrace(); + int length = st.length; + if (length > 20) { + length = 20; + } + for (int i = 0; i < length; i++) { + String entry = st[i].toString(); + error.append("\n at " + entry); + if (entry.contains(".HttpServlet")) { + break; + } + } + return error.toString(); + } }