aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/at/gv/egiz/moazs/InMemoryDeliveryRepository.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/at/gv/egiz/moazs/InMemoryDeliveryRepository.java')
-rw-r--r--src/main/java/at/gv/egiz/moazs/InMemoryDeliveryRepository.java40
1 files changed, 40 insertions, 0 deletions
diff --git a/src/main/java/at/gv/egiz/moazs/InMemoryDeliveryRepository.java b/src/main/java/at/gv/egiz/moazs/InMemoryDeliveryRepository.java
new file mode 100644
index 0000000..aa1e3e9
--- /dev/null
+++ b/src/main/java/at/gv/egiz/moazs/InMemoryDeliveryRepository.java
@@ -0,0 +1,40 @@
+package at.gv.egiz.moazs;
+
+import at.gv.e_government.reference.namespace.zustellung.mzs.app2mzs_.DeliveryRequestType;
+import com.google.common.cache.Cache;
+import com.google.common.cache.CacheBuilder;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.context.annotation.Profile;
+import org.springframework.stereotype.Repository;
+
+import java.util.Optional;
+import java.util.concurrent.TimeUnit;
+
+@Repository
+@Profile("!cluster")
+public class InMemoryDeliveryRepository implements DeliveryRepository {
+
+ private static final Logger logger = LoggerFactory.getLogger(InMemoryDeliveryRepository.class);
+
+ private static final Cache<String, DeliveryRequestType> rep = CacheBuilder.newBuilder()
+ .expireAfterWrite(30, TimeUnit.MINUTES)
+ .build();
+
+ public InMemoryDeliveryRepository() {
+ logger.info("InMemoryDeliveryRepository()");
+ }
+
+ @Override
+ public void add(DeliveryRequestType request) {
+ String key = request.getMetaData().getAppDeliveryID();
+ logger.info("Save DeliveryRequest with AppDeliveryId = {} to Cache.", key);
+ rep.put(key, request);
+ }
+
+ @Override
+ public Optional<DeliveryRequestType> getDeliveryRequest(String appDeliveryID) {
+ DeliveryRequestType deliveryRequestType = rep.getIfPresent(appDeliveryID);
+ return Optional.ofNullable(deliveryRequestType);
+ }
+}