diff options
author | Christof Rabensteiner <christof.rabensteiner@iaik.tugraz.at> | 2019-04-18 11:05:31 +0200 |
---|---|---|
committer | Christof Rabensteiner <christof.rabensteiner@iaik.tugraz.at> | 2019-04-18 14:48:17 +0200 |
commit | aed1250912476f47fd772b0cedd20c850cdcff6e (patch) | |
tree | e7fe6aed56b12e53a9b2a7eef62d339e7d23b8b2 /src/main/java/at/gv/egiz/moazs/pipeline | |
parent | 4215362c64064947cea880d55c4aae7894304783 (diff) | |
download | moa-zs-aed1250912476f47fd772b0cedd20c850cdcff6e.tar.gz moa-zs-aed1250912476f47fd772b0cedd20c850cdcff6e.tar.bz2 moa-zs-aed1250912476f47fd772b0cedd20c850cdcff6e.zip |
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
Diffstat (limited to 'src/main/java/at/gv/egiz/moazs/pipeline')
-rw-r--r-- | src/main/java/at/gv/egiz/moazs/pipeline/DeliveryPipeline.java | 12 | ||||
-rw-r--r-- | src/main/java/at/gv/egiz/moazs/pipeline/SameThreadDeliveryPipeline.java | 49 |
2 files changed, 61 insertions, 0 deletions
diff --git a/src/main/java/at/gv/egiz/moazs/pipeline/DeliveryPipeline.java b/src/main/java/at/gv/egiz/moazs/pipeline/DeliveryPipeline.java new file mode 100644 index 0000000..1d3edb8 --- /dev/null +++ b/src/main/java/at/gv/egiz/moazs/pipeline/DeliveryPipeline.java @@ -0,0 +1,12 @@ +package at.gv.egiz.moazs.pipeline; + + +public interface DeliveryPipeline { + + /** + * Gets request that is referred by appDeliveryId from cache, + * @param appDeliveryId + */ + void processRequest(String appDeliveryId); + +} 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<DeliveryRequestType> 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; + } +} |