diff options
Diffstat (limited to 'src/main/java/at/gv/egiz/moazs/service/MsgService.java')
-rw-r--r-- | src/main/java/at/gv/egiz/moazs/service/MsgService.java | 27 |
1 files changed, 16 insertions, 11 deletions
diff --git a/src/main/java/at/gv/egiz/moazs/service/MsgService.java b/src/main/java/at/gv/egiz/moazs/service/MsgService.java index 6fce6ae..3de7b38 100644 --- a/src/main/java/at/gv/egiz/moazs/service/MsgService.java +++ b/src/main/java/at/gv/egiz/moazs/service/MsgService.java @@ -43,6 +43,7 @@ import static at.gv.zustellung.msg.xsd.DeliveryNotificationACKType.deliveryNotif import static at.gv.zustellung.msg.xsd.DeliveryRequestStatusACKType.deliveryRequestStatusACKTypeBuilder; import static at.gv.zustellung.msg.xsd.GetVersionResponse.getVersionResponseBuilder; import static java.lang.String.format; +import static java.lang.Thread.currentThread; import static java.util.concurrent.CompletableFuture.runAsync; /** @@ -81,10 +82,11 @@ public class MsgService implements Zuse2AppPort { try { sendToBackend(response).get(); return statusAck(response.getAppDeliveryID(), response.getZSDeliveryID()); - } catch (InterruptedException | ExecutionException e) { - var message = format(BACKEND_ERROR_MSG, "request status"); - log.error(message, e); - throw toFault(e, message); + } catch (ExecutionException e) { + throw logAndCreateFault("delivery request status", e); + } catch (InterruptedException e) { + currentThread().interrupt(); + throw logAndCreateFault("delivery request status", e); } } @@ -97,21 +99,24 @@ public class MsgService implements Zuse2AppPort { } @Override - public DeliveryNotificationACKType notification(DeliveryNotificationType notification) { + public DeliveryNotificationACKType notification(DeliveryNotificationType notification){ var response = new NotificationResponse(notification); try { sendToBackend(response).get(); return notificationAck(response.getAppDeliveryID(), response.getZSDeliveryID()); - } catch (InterruptedException | ExecutionException e) { - var message = format(BACKEND_ERROR_MSG, "delivery notification"); - log.error(message, e); - throw toFault(e, message); + } catch (ExecutionException e) { + throw logAndCreateFault("delivery notification", e); + } catch (InterruptedException e) { + currentThread().interrupt(); + throw logAndCreateFault("delivery notification", e); } } - private RuntimeException toFault(Exception e, String fallbackMessage) { + private RuntimeException logAndCreateFault(String responseType, Exception e) { + var message = format(BACKEND_ERROR_MSG, responseType); + log.error(message, e); Throwable cause = (e.getCause() != null) ? e.getCause() : e; - return new SoapFault(fallbackMessage, cause, new QName("faultcode")); + return new SoapFault(message, cause, new QName("faultcode")); } private CompletableFuture<Void> sendToBackend(MsgResponse response) { |