aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/at/gv/egiz/moazs/service/MsgService.java
diff options
context:
space:
mode:
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.java27
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) {