aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristof Rabensteiner <christof.rabensteiner@iaik.tugraz.at>2019-12-09 10:25:02 +0100
committerChristof Rabensteiner <christof.rabensteiner@iaik.tugraz.at>2019-12-09 10:25:02 +0100
commit1d2aafe0cd6607a48d880c007881768079e49060 (patch)
tree4eaf58525e39986a6c9483e1751d54ebb941ec54
parent5cb5e4803e315bb717c9db882f60c848da8e660c (diff)
downloadmoa-zs-1d2aafe0cd6607a48d880c007881768079e49060.tar.gz
moa-zs-1d2aafe0cd6607a48d880c007881768079e49060.tar.bz2
moa-zs-1d2aafe0cd6607a48d880c007881768079e49060.zip
Refactor & Fixes
- Handle InterruptedExceptions as discussed in https://stackoverflow.com/questions/3976344/handling-interruptedexception-in-java - Remove unused imports.
-rw-r--r--src/main/java/at/gv/egiz/moazs/backend/MsgResponseBackend.java6
-rw-r--r--src/main/java/at/gv/egiz/moazs/backend/MsgResponseSinkHub.java4
-rw-r--r--src/main/java/at/gv/egiz/moazs/service/MsgService.java27
-rw-r--r--src/main/java/at/gv/egiz/moazs/service/MzsService.java10
4 files changed, 27 insertions, 20 deletions
diff --git a/src/main/java/at/gv/egiz/moazs/backend/MsgResponseBackend.java b/src/main/java/at/gv/egiz/moazs/backend/MsgResponseBackend.java
index 45a4000..cc20cc9 100644
--- a/src/main/java/at/gv/egiz/moazs/backend/MsgResponseBackend.java
+++ b/src/main/java/at/gv/egiz/moazs/backend/MsgResponseBackend.java
@@ -58,7 +58,7 @@ public class MsgResponseBackend {
"with AppDeliveryID=%s is not valid.";
public static final String BINARY_RESPONSE_MISSING_ERROR_MSG = "Binary Response is not in repository.";
public static final String RESPONSE_MISSING_ERROR_MSG = "Response with ResponseID=%s is not in repository.";
- public static final String REQUEST_MISSING_ERROR_MSG = "Request with AppDeliveryID=%s is not in repository. " +
+ public static final String REQUEST_MISSING_ERROR_MSG = "Request with AppDeliveryID={} is not in repository. " +
"Falling Back to Default Configuration.";
private final DeliveryRepository repository;
@@ -96,7 +96,7 @@ public class MsgResponseBackend {
public CompletableFuture<Void> accept(String responseID) {
log.info("Backend accepts MsgResponse with responseID={}.", responseID);
return supplyAsync(() -> verifySignature(responseID), taskExecutor)
- .thenCompose(msgResponse -> applySinks(msgResponse));
+ .thenCompose(this::applySinks);
}
private MsgResponse verifySignature(String responseID) {
@@ -138,7 +138,7 @@ public class MsgResponseBackend {
private Supplier<DeliveryRequestType> supplyRequestWithDefaultConfig(String appDeliveryID) {
return () -> {
- log.warn(format(REQUEST_MISSING_ERROR_MSG, appDeliveryID));
+ log.warn(REQUEST_MISSING_ERROR_MSG, appDeliveryID);
var defaultConfig = deliveryRequestConfigs.get(DEFAULT_CONFIG_KEY);
validator.areSinksConfigured(defaultConfig.getMsgResponseSinks());
return deliveryRequestTypeBuilder()
diff --git a/src/main/java/at/gv/egiz/moazs/backend/MsgResponseSinkHub.java b/src/main/java/at/gv/egiz/moazs/backend/MsgResponseSinkHub.java
index 64b559f..9869e2e 100644
--- a/src/main/java/at/gv/egiz/moazs/backend/MsgResponseSinkHub.java
+++ b/src/main/java/at/gv/egiz/moazs/backend/MsgResponseSinkHub.java
@@ -22,21 +22,17 @@
package at.gv.egiz.moazs.backend;
import at.gv.egiz.moazs.scheme.MsgResponse;
-import at.gv.egiz.moazs.scheme.RequestStatusResponse;
import at.gv.zustellung.app2mzs.xsd.MsgResponseSinksType;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.core.task.TaskExecutor;
import org.springframework.stereotype.Component;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.CompletableFuture;
-import java.util.concurrent.CompletionStage;
import static java.util.concurrent.CompletableFuture.allOf;
-import static java.util.concurrent.CompletableFuture.supplyAsync;
/**
* @author Christof Rabensteiner
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) {
diff --git a/src/main/java/at/gv/egiz/moazs/service/MzsService.java b/src/main/java/at/gv/egiz/moazs/service/MzsService.java
index caaa251..565e374 100644
--- a/src/main/java/at/gv/egiz/moazs/service/MzsService.java
+++ b/src/main/java/at/gv/egiz/moazs/service/MzsService.java
@@ -39,6 +39,7 @@ import org.springframework.stereotype.Service;
import javax.jws.WebParam;
import java.util.concurrent.CompletableFuture;
+import java.util.concurrent.ExecutionException;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.TimeoutException;
import java.util.function.Consumer;
@@ -46,6 +47,7 @@ import java.util.function.Consumer;
import static at.gv.egiz.moazs.MoaZSException.moaZSException;
import static at.gv.zustellung.app2mzs.xsd.PartialSuccessType.partialSuccessTypeBuilder;
import static java.lang.String.format;
+import static java.lang.Thread.currentThread;
import static java.util.concurrent.CompletableFuture.supplyAsync;
/**
@@ -116,11 +118,15 @@ public class MzsService implements App2MzsPortType {
} catch (TimeoutException e) {
return applySinkHubToAsyncResponse(appDeliveryID, completeRequest, requestProcessed);
- } catch (Exception e) {
+ } catch (InterruptedException e) {
+ currentThread().interrupt();
var message = format(MZS_SERVICE_ERROR_MSG, appDeliveryID);
throw moaZSException(message, e);
- }
+ } catch (ExecutionException e) {
+ var message = format(MZS_SERVICE_ERROR_MSG, appDeliveryID);
+ throw moaZSException(message, e);
+ }
}
private RequestStatusResponse process(DeliveryRequestType deliveryRequest) {