diff options
Diffstat (limited to 'src/main/java/at/gv/egiz/moazs/App2MzsService.java')
-rw-r--r-- | src/main/java/at/gv/egiz/moazs/App2MzsService.java | 28 |
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)); } |