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 | 37 |
1 files changed, 26 insertions, 11 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 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<String, DeliveryRequestType> requestRepository = CacheBuilder.newBuilder() - .expireAfterWrite(30, TimeUnit.MINUTES) - .build(); + private final Cache<String, DeliveryRequestType> requestRepository; + private final Cache<String, MsgResponse> responseRepository; + private final Cache<String, byte[]> binaryResponseRepository; - private final Cache<String, MsgResponse> 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<DeliveryRequestType> getDeliveryRequest(String appDeliveryID) { + public Optional<DeliveryRequestType> 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<MsgResponse> getResponse(String responseID) { + public Optional<MsgResponse> retrieveResponse(String responseID) { return ofNullable(responseRepository.getIfPresent(responseID)); } + + @Override + public void store(String id, byte[] data) { + binaryResponseRepository.put(id, data); + + } + + @Override + public Optional<byte[]> retrieveBinaryResponse(String responseID) { + return ofNullable(binaryResponseRepository.getIfPresent(responseID)); + } + } |