From 8e36fa01ea42d282eacdc78d6749daf9ae1ede9c Mon Sep 17 00:00:00 2001 From: Christof Rabensteiner Date: Tue, 9 Jul 2019 11:13:35 +0200 Subject: Refactor: Merge BinaryRepository into DeliveryRepository - Reason: Components, which rely on one of those, usually also rely on the other, so merging them reduces amount of dependencies. - Frame operations in DeliveryRepository API as "store" and "retrieve" operations. - Rename: Convert *Id in local variable names to upper case. --- .../egiz/moazs/repository/DeliveryRepository.java | 12 ++++--- .../repository/InMemoryDeliveryRepository.java | 37 +++++++++++++++------- .../moazs/repository/RedisDeliveryRepository.java | 20 ++++++++---- 3 files changed, 48 insertions(+), 21 deletions(-) (limited to 'src/main/java/at/gv/egiz/moazs/repository') diff --git a/src/main/java/at/gv/egiz/moazs/repository/DeliveryRepository.java b/src/main/java/at/gv/egiz/moazs/repository/DeliveryRepository.java index 57d2d07..e9b0466 100644 --- a/src/main/java/at/gv/egiz/moazs/repository/DeliveryRepository.java +++ b/src/main/java/at/gv/egiz/moazs/repository/DeliveryRepository.java @@ -11,13 +11,17 @@ import java.util.Optional; @Repository public interface DeliveryRepository { - void add(DeliveryRequestType request); + void store(DeliveryRequestType request); - Optional getDeliveryRequest(String appDeliveryID); + Optional retrieveDeliveryRequest(String appDeliveryID); - void add(MsgResponse response); + void store(MsgResponse response); - Optional getResponse(String responseID); + Optional retrieveResponse(String responseID); + + void store(String responseID, byte[] data); + + Optional retrieveBinaryResponse(String responseID); } diff --git a/src/main/java/at/gv/egiz/moazs/repository/InMemoryDeliveryRepository.java b/src/main/java/at/gv/egiz/moazs/repository/InMemoryDeliveryRepository.java index 3b5a020..41b742b 100644 --- a/src/main/java/at/gv/egiz/moazs/repository/InMemoryDeliveryRepository.java +++ b/src/main/java/at/gv/egiz/moazs/repository/InMemoryDeliveryRepository.java @@ -4,46 +4,61 @@ package at.gv.egiz.moazs.repository; import at.gv.egiz.moazs.scheme.MsgResponse; import at.gv.zustellung.app2mzs.xsd.DeliveryRequestType; import com.google.common.cache.Cache; -import com.google.common.cache.CacheBuilder; import org.springframework.context.annotation.Profile; import org.springframework.stereotype.Repository; import java.util.Optional; import java.util.concurrent.TimeUnit; +import static com.google.common.cache.CacheBuilder.newBuilder; import static java.util.Optional.ofNullable; @Repository @Profile("!cluster") public class InMemoryDeliveryRepository implements DeliveryRepository { - private final Cache requestRepository = CacheBuilder.newBuilder() - .expireAfterWrite(30, TimeUnit.MINUTES) - .build(); + private final Cache requestRepository; + private final Cache responseRepository; + private final Cache binaryResponseRepository; - private final Cache responseRepository = CacheBuilder.newBuilder() - .expireAfterWrite(30, TimeUnit.MINUTES) - .build(); + public InMemoryDeliveryRepository(int expiresAfterWrite) { + var builder = newBuilder().expireAfterWrite(expiresAfterWrite, TimeUnit.MINUTES); + this.requestRepository = builder.build(); + this.responseRepository = builder.build(); + this.binaryResponseRepository = builder.build(); + } @Override - public void add(DeliveryRequestType request) { + public void store(DeliveryRequestType request) { var key = request.getMetaData().getAppDeliveryID(); requestRepository.put(key, request); } @Override - public Optional getDeliveryRequest(String appDeliveryID) { + public Optional retrieveDeliveryRequest(String appDeliveryID) { return ofNullable(requestRepository.getIfPresent(appDeliveryID)); } @Override - public void add(MsgResponse response) { + public void store(MsgResponse response) { String key = response.getResponseID(); responseRepository.put(key, response); } @Override - public Optional getResponse(String responseID) { + public Optional retrieveResponse(String responseID) { return ofNullable(responseRepository.getIfPresent(responseID)); } + + @Override + public void store(String id, byte[] data) { + binaryResponseRepository.put(id, data); + + } + + @Override + public Optional retrieveBinaryResponse(String responseID) { + return ofNullable(binaryResponseRepository.getIfPresent(responseID)); + } + } diff --git a/src/main/java/at/gv/egiz/moazs/repository/RedisDeliveryRepository.java b/src/main/java/at/gv/egiz/moazs/repository/RedisDeliveryRepository.java index 7ccd236..68e96d9 100644 --- a/src/main/java/at/gv/egiz/moazs/repository/RedisDeliveryRepository.java +++ b/src/main/java/at/gv/egiz/moazs/repository/RedisDeliveryRepository.java @@ -3,8 +3,6 @@ package at.gv.egiz.moazs.repository; import at.gv.egiz.moazs.scheme.Marshaller; import at.gv.egiz.moazs.scheme.MsgResponse; import at.gv.zustellung.app2mzs.xsd.DeliveryRequestType; -import at.gv.zustellung.msg.xsd.DeliveryNotificationType; -import at.gv.zustellung.msg.xsd.DeliveryRequestStatusType; import at.gv.zustellung.app2mzs.xsd.ObjectFactory; import org.apache.tools.ant.filters.StringInputStream; import org.slf4j.Logger; @@ -42,7 +40,7 @@ public class RedisDeliveryRepository implements DeliveryRepository { } @Override - public void add(DeliveryRequestType request) { + public void store(DeliveryRequestType request) { var hashKey = request.getMetaData().getAppDeliveryID(); var serializedRequest = marshaller.marshallXml(factory.createDeliveryRequest(request)); @@ -51,7 +49,7 @@ public class RedisDeliveryRepository implements DeliveryRepository { } @Override - public Optional getDeliveryRequest(String appDeliveryID) { + public Optional retrieveDeliveryRequest(String appDeliveryID) { String serializedRequest = hashOperations.get(KEY, appDeliveryID); if (serializedRequest == null) { @@ -64,14 +62,24 @@ public class RedisDeliveryRepository implements DeliveryRepository { } @Override - public void add(MsgResponse notification) { + public void store(MsgResponse notification) { throw new UnsupportedOperationException(NOT_IMPLEMENTED_MESSAGE); } @Override - public Optional getResponse(String id) { + public Optional retrieveResponse(String id) { throw new UnsupportedOperationException(NOT_IMPLEMENTED_MESSAGE); } + @Override + public void store(String responseID, byte[] data) { + + } + + @Override + public Optional retrieveBinaryResponse(String responseID) { + return Optional.empty(); + } + } -- cgit v1.2.3