From 6d30f261c618a3b69a8f1be092056383e6dea424 Mon Sep 17 00:00:00 2001 From: Christof Rabensteiner Date: Thu, 18 Jul 2019 09:23:00 +0200 Subject: Integrate Mzs Service Timeout and Handle Async Responses - Service Timeout : Add service timeout to mzs schema (DeliveryRequest / Config), application.yaml, convert service timeout from spring environment to Config, and merge service timeouts in Configs. - Handling of Asynchronous DeliveryRequestStatus: Move "Applying Response Sinks" from backend into dedicated component "MsgResponseSinkHub" and integrate SinkHub into MzsService (apply sinks to asynchronous responses). - Remove line breaks in SignatureVerifier's log statements. - Revise documentation of parameters in application.yaml. --- .../gv/egiz/moazs/backend/MsgResponseBackend.java | 46 ++++++---------------- 1 file changed, 11 insertions(+), 35 deletions(-) (limited to 'src/main/java/at/gv/egiz/moazs/backend/MsgResponseBackend.java') 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 8649a32..df0f83e 100644 --- a/src/main/java/at/gv/egiz/moazs/backend/MsgResponseBackend.java +++ b/src/main/java/at/gv/egiz/moazs/backend/MsgResponseBackend.java @@ -4,7 +4,6 @@ import at.gv.egiz.moazs.MoaZSException; import at.gv.egiz.moazs.repository.DeliveryRepository; import at.gv.egiz.moazs.scheme.MsgResponse; import at.gv.egiz.moazs.service.MsgService; -import at.gv.zustellung.app2mzs.xsd.MsgResponseSinksType; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; @@ -25,25 +24,19 @@ public class MsgResponseBackend implements Consumer { "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."; private final DeliveryRepository repository; private final Consumer signatureVerifier; - private final SaveResponseToFileSink saveResponseSink; - private final LogResponseSink logResponseSink; - private final ForwardResponseToServiceSink forwardResponseSink; + private final MsgResponseSinkHub hub; @Autowired public MsgResponseBackend(DeliveryRepository repository, Consumer signatureVerifier, - SaveResponseToFileSink saveResponseToFileSink, - LogResponseSink logResponseSink, - ForwardResponseToServiceSink forwardResponseSink) { + MsgResponseSinkHub hub) { this.repository = repository; this.signatureVerifier = signatureVerifier; - this.saveResponseSink = saveResponseToFileSink; - this.logResponseSink = logResponseSink; - this.forwardResponseSink = forwardResponseSink; - + this.hub = hub; } /** @@ -58,8 +51,7 @@ public class MsgResponseBackend implements Consumer { */ @Override public void accept(String responseID) { - - supplyAsync(() -> verify(responseID)) + supplyAsync(() -> verifySignature(responseID)) .thenAcceptAsync(msgResponse -> applySinks(msgResponse)) .exceptionally(ex -> { log.error(ex.getMessage(), ex); @@ -67,7 +59,7 @@ public class MsgResponseBackend implements Consumer { }); } - private MsgResponse verify(String responseID) { + private MsgResponse verifySignature(String responseID) { var response = repository.retrieveResponse(responseID).orElseThrow( ()-> moaZSException(format(RESPONSE_MISSING_ERROR_MSG, responseID))); @@ -87,28 +79,12 @@ public class MsgResponseBackend implements Consumer { } private void applySinks(MsgResponse msgResponse) { - - var sinkParams = getSinkParams(msgResponse); - - if (sinkParams.getSaveResponseToFile().isActive()) { - supplyAsync(() -> saveResponseSink.save(msgResponse, sinkParams.getSaveResponseToFile().getPath())); - } - - if (sinkParams.isLogResponse()) { - supplyAsync(() -> logResponseSink.log(msgResponse)); - } - - if (sinkParams.getForwardResponseToService().isActive()) { - supplyAsync(() -> forwardResponseSink.send( - msgResponse, sinkParams.getForwardResponseToService().getMzsClient())); - } - - } - - private MsgResponseSinksType getSinkParams(MsgResponse msgResponse) { var appDeliveryID = msgResponse.getAppDeliveryID(); - var request = repository.retrieveDeliveryRequest(appDeliveryID).get(); - return request.getConfig().getMsgResponseSinks(); + var request = repository.retrieveDeliveryRequest(appDeliveryID).orElseThrow( + ()-> moaZSException(format(REQUEST_MISSING_ERROR_MSG, appDeliveryID))); + + var sinkParams = request.getConfig().getMsgResponseSinks(); + hub.applySinks(msgResponse, sinkParams); } } -- cgit v1.2.3