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 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 getDeliveryRequest(String appDeliveryID) { DeliveryRequestType deliveryRequestType = rep.getIfPresent(appDeliveryID); return Optional.ofNullable(deliveryRequestType); } }