aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/at/gv/egiz/moazs/backend/MsgResponseBackend.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/at/gv/egiz/moazs/backend/MsgResponseBackend.java')
-rw-r--r--src/main/java/at/gv/egiz/moazs/backend/MsgResponseBackend.java46
1 files changed, 11 insertions, 35 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 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<String> {
"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<byte[]> signatureVerifier;
- private final SaveResponseToFileSink saveResponseSink;
- private final LogResponseSink logResponseSink;
- private final ForwardResponseToServiceSink forwardResponseSink;
+ private final MsgResponseSinkHub hub;
@Autowired
public MsgResponseBackend(DeliveryRepository repository,
Consumer<byte[]> 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<String> {
*/
@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<String> {
});
}
- 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<String> {
}
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);
}
}