diff options
Diffstat (limited to 'src/main/java/at/gv/egiz/moazs/repository/InMemoryDeliveryRepository.java')
-rw-r--r-- | src/main/java/at/gv/egiz/moazs/repository/InMemoryDeliveryRepository.java | 34 |
1 files changed, 25 insertions, 9 deletions
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 e5486d7..5712c2d 100644 --- a/src/main/java/at/gv/egiz/moazs/repository/InMemoryDeliveryRepository.java +++ b/src/main/java/at/gv/egiz/moazs/repository/InMemoryDeliveryRepository.java @@ -1,5 +1,6 @@ package at.gv.egiz.moazs.repository; +import at.gv.e_government.reference.namespace.zustellung.msg.phase2._20181206_.DeliveryRequestStatusType; import at.gv.e_government.reference.namespace.zustellung.mzs.app2mzs_.DeliveryRequestType; import com.google.common.cache.Cache; import com.google.common.cache.CacheBuilder; @@ -11,30 +12,45 @@ import org.springframework.stereotype.Repository; import java.util.Optional; import java.util.concurrent.TimeUnit; +import static at.gv.egiz.moazs.util.NullCoalesce.coalesce; +import static java.util.Optional.ofNullable; + @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() + private static final Cache<String, DeliveryRequestType> requestRepository = CacheBuilder.newBuilder() .expireAfterWrite(30, TimeUnit.MINUTES) .build(); - public InMemoryDeliveryRepository() { - logger.info("InMemoryDeliveryRepository()"); - } + private static final Cache<String, DeliveryRequestStatusType> statusRepository = CacheBuilder.newBuilder() + .expireAfterWrite(30, TimeUnit.MINUTES) + .build(); @Override public void add(DeliveryRequestType request) { - String key = request.getMetaData().getAppDeliveryID(); - logger.info("Save DeliveryRequest with AppDeliveryId = {} to Cache.", key); - rep.put(key, request); + var key = request.getMetaData().getAppDeliveryID(); + requestRepository.put(key, request); } @Override public Optional<DeliveryRequestType> getDeliveryRequest(String appDeliveryID) { - DeliveryRequestType deliveryRequestType = rep.getIfPresent(appDeliveryID); - return Optional.ofNullable(deliveryRequestType); + var deliveryRequestType = requestRepository.getIfPresent(appDeliveryID); + return ofNullable(deliveryRequestType); + } + + @Override + public void add(DeliveryRequestStatusType status) { + var key = coalesce(status.getSuccess(), status.getPartialSuccess(), status.getError()) + .get().getAppDeliveryID(); + statusRepository.put(key, status); + } + + @Override + public Optional<DeliveryRequestStatusType> getDeliveryRequestStatus(String appDeliveryID) { + var deliveryRequestType = statusRepository.getIfPresent(appDeliveryID); + return ofNullable(deliveryRequestType); } } |