aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/at/gv/egiz/moazs/InMemoryDeliveryRepository.java
diff options
context:
space:
mode:
authorChristof Rabensteiner <christof.rabensteiner@iaik.tugraz.at>2019-04-17 15:22:18 +0200
committerChristof Rabensteiner <christof.rabensteiner@iaik.tugraz.at>2019-04-17 15:22:18 +0200
commit8e362d5feaf5535bb59bacc1be677d8f10d08f86 (patch)
treee37505498ad18361df3fa3de973b094dced59f61 /src/main/java/at/gv/egiz/moazs/InMemoryDeliveryRepository.java
parentef9a86858a5e05b4dd9bff3992c477f49b0b20f2 (diff)
downloadmoa-zs-8e362d5feaf5535bb59bacc1be677d8f10d08f86.tar.gz
moa-zs-8e362d5feaf5535bb59bacc1be677d8f10d08f86.tar.bz2
moa-zs-8e362d5feaf5535bb59bacc1be677d8f10d08f86.zip
Add Redis and InMemory Implementation of DeliveryRequestRepository
- Deployer can choose which implementation to use (by activating - corresponding profile) - Add guava dependency - Extract DeliveryRequestRepository to Interface - Implement InMemory Repository using guava's cache
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);
+ }
+}