aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/at/gv/egiz/moazs/pipeline
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/at/gv/egiz/moazs/pipeline')
-rw-r--r--src/main/java/at/gv/egiz/moazs/pipeline/DeliveryPipeline.java12
-rw-r--r--src/main/java/at/gv/egiz/moazs/pipeline/SameThreadDeliveryPipeline.java49
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;
+ }
+}