aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/at/gv/egiz/moazs/App2MzsService.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/at/gv/egiz/moazs/App2MzsService.java')
-rw-r--r--src/main/java/at/gv/egiz/moazs/App2MzsService.java28
1 files changed, 11 insertions, 17 deletions
diff --git a/src/main/java/at/gv/egiz/moazs/App2MzsService.java b/src/main/java/at/gv/egiz/moazs/App2MzsService.java
index 66ab795..f84f16c 100644
--- a/src/main/java/at/gv/egiz/moazs/App2MzsService.java
+++ b/src/main/java/at/gv/egiz/moazs/App2MzsService.java
@@ -1,16 +1,12 @@
package at.gv.egiz.moazs;
-import at.gv.e_government.reference.namespace.zustellung.msg.phase2._20181206_.DeliveryAnswerType;
import at.gv.e_government.reference.namespace.zustellung.msg.phase2._20181206_.DeliveryAnswerType.DeliveryAnswerTypeBuilder;
import at.gv.e_government.reference.namespace.zustellung.msg.phase2._20181206_.DeliveryRequestStatusType;
import at.gv.e_government.reference.namespace.zustellung.msg.phase2._20181206_.DeliveryRequestStatusType.DeliveryRequestStatusTypeBuilder;
import at.gv.e_government.reference.namespace.zustellung.msg.phase2._20181206_.DeliveryRequestStatusType.Error.ErrorBuilder;
-import at.gv.e_government.reference.namespace.zustellung.msg.phase2._20181206_.ErrorInfoType;
import at.gv.e_government.reference.namespace.zustellung.msg.phase2._20181206_.ErrorInfoType.ErrorInfoTypeBuilder;
-import at.gv.e_government.reference.namespace.zustellung.msg.phase2._20181206_.ObjectFactory;
import at.gv.e_government.reference.namespace.zustellung.mzs.app2mzs.App2MzsPortType;
import at.gv.e_government.reference.namespace.zustellung.mzs.app2mzs_.DeliveryRequestType;
-import at.gv.e_government.reference.namespace.zustellung.mzs.app2mzs_.DeliveryRequestType.DeliveryRequestTypeBuilder;
import at.gv.egiz.moazs.pipeline.DeliveryPipeline;
import at.gv.egiz.moazs.repository.DeliveryRepository;
import org.slf4j.Logger;
@@ -37,12 +33,14 @@ public class App2MzsService implements App2MzsPortType {
private final DeliveryRepository repository;
private final DeliveryPipeline pipeline;
private final Mzs2AppClient appClient;
- private final ObjectFactory objectFactory = new ObjectFactory();
+ private final DeliveryPreprocessor preprocessor;
- public App2MzsService(@Autowired DeliveryRepository repository, @Autowired DeliveryPipeline pipeline, @Autowired Mzs2AppClient appClient) {
+ public App2MzsService(@Autowired DeliveryRepository repository, @Autowired DeliveryPipeline pipeline,
+ @Autowired Mzs2AppClient appClient, @Autowired DeliveryPreprocessor preprocessor) {
this.repository = repository;
this.pipeline = pipeline;
this.appClient = appClient;
+ this.preprocessor = preprocessor;
}
@Override
@@ -54,24 +52,25 @@ public class App2MzsService implements App2MzsPortType {
final var appDeliveryID = deliveryRequest.getMetaData().getAppDeliveryID();
- var future = supplyAsync(() -> process(deliveryRequest));
+ var future = supplyAsync(() -> preprocessor.preProcess(deliveryRequest))
+ .thenApply((request) -> process(request));
try {
return future.get(TIMEOUT_FOR_ANWSER, TimeUnit.SECONDS);
} catch (TimeoutException e) {
future.thenAccept(appClient::sendNotification);
logger.info("Answer Timed Out", e);
- return generatePartialSuccessResponse(appDeliveryID, "Your request timed out; Wait until X for receiving a notification.");
+ return generatePartialSuccessResponse(appDeliveryID);
} catch (Exception e ) {
logger.error("Could not deliver request.", e);
- final var message = format("An error occured while delivering request: {}", e.getMessage());
+ var message = format("An error occured while delivering request: {0}", e.getMessage());
return generateErrorResponse(appDeliveryID, message);
}
}
- private DeliveryRequestStatusType generatePartialSuccessResponse(String appDeliveryId, String message) {
+ private DeliveryRequestStatusType generatePartialSuccessResponse(String appDeliveryId) {
var answer = new DeliveryAnswerTypeBuilder()
.withAppDeliveryID(appDeliveryId)
@@ -107,13 +106,8 @@ public class App2MzsService implements App2MzsPortType {
repository.add(deliveryRequest);
pipeline.processRequest(appDeliveryID);
- var status = repository.getDeliveryRequestStatus(appDeliveryID);
-
- if (status.isEmpty()) {
- throw new RuntimeException(format("Could not get a response for request with appDeliveryId = {}", appDeliveryID));
- }
-
- return status.get();
+ return repository.getDeliveryRequestStatus(appDeliveryID)
+ .orElseThrow(() -> new RuntimeException("Could not get a response for appDeliveryId = " + appDeliveryID));
}