diff options
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; + } +} |