From aed1250912476f47fd772b0cedd20c850cdcff6e Mon Sep 17 00:00:00 2001 From: Christof Rabensteiner Date: Thu, 18 Apr 2019 11:05:31 +0200 Subject: Change App2mzs Interface and Init Delivery Pipeline - Change app2mzs interface: output message from app2mzs:DeliveryRequest was app2mzs:DeliveryResponse, now its msg:DeliveryRequestStatus. Reason: ZD returns msg:DeliveryRequestStatus which is signed. Moazs does not convert msg:DeliveryRequestStatus into app2mzs:DeliveryResponse because the conversion woudl break the signature. - App2MzsService: Make beans final and inject them with constructor; Refactor DeliveryRequestHandler into App2MZSService. - DeliveryPipeline: Add Interface and a "SameThreadImplementation" that executes the pipeline in the same threat and can be used in single mode. - DeliveryRepository: Augment interface for storing and retrieving request status objects; Add in-memory-implementation for status objects. - Utils: Add helper function for coalescing multiple values --- .../moazs/pipeline/SameThreadDeliveryPipeline.java | 49 ++++++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 src/main/java/at/gv/egiz/moazs/pipeline/SameThreadDeliveryPipeline.java (limited to 'src/main/java/at/gv/egiz/moazs/pipeline/SameThreadDeliveryPipeline.java') diff --git a/src/main/java/at/gv/egiz/moazs/pipeline/SameThreadDeliveryPipeline.java b/src/main/java/at/gv/egiz/moazs/pipeline/SameThreadDeliveryPipeline.java new file mode 100644 index 0000000..3652662 --- /dev/null +++ b/src/main/java/at/gv/egiz/moazs/pipeline/SameThreadDeliveryPipeline.java @@ -0,0 +1,49 @@ +package at.gv.egiz.moazs.pipeline; + + +import at.gv.e_government.reference.namespace.zustellung.msg.phase2._20181206_.DeliveryRequestStatusType; +import at.gv.e_government.reference.namespace.zustellung.msg.phase2._20181206_.ObjectFactory; +import at.gv.e_government.reference.namespace.zustellung.mzs.app2mzs_.DeliveryRequestType; +import at.gv.egiz.moazs.repository.DeliveryRepository; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Profile; +import org.springframework.stereotype.Component; + +import java.util.Optional; + +import static java.text.MessageFormat.format; + +@Component +@Profile("!cluster") +public class SameThreadDeliveryPipeline implements DeliveryPipeline { + + private final DeliveryRepository repository; + + public SameThreadDeliveryPipeline(@Autowired DeliveryRepository repository) { + this.repository = repository; + } + + @Override + public void processRequest(String appDeliveryId) { + + Optional request = repository.getDeliveryRequest(appDeliveryId); + if (request.isEmpty()) { + throw new RuntimeException(format( + "Request with appDeliveryId = {} does not exist.", appDeliveryId)); + } + + //do some logic. + + //store response to repository + repository.add(generateBogusStatus(appDeliveryId)); + } + + private DeliveryRequestStatusType generateBogusStatus(String appDeliveryId) { + final var factory = new ObjectFactory(); + final var status = factory.createDeliveryRequestStatusType(); + final var success = factory.createDeliveryRequestStatusTypeSuccess(); + success.setAppDeliveryID(appDeliveryId); + status.setSuccess(success); + return status; + } +} -- cgit v1.2.3