diff --git a/src/main/java/br/ufrgs/inf/prosoft/aplcache/caching/APLCache.java b/src/main/java/br/ufrgs/inf/prosoft/aplcache/caching/APLCache.java
index e966ebe..9a05f2a 100644
--- a/src/main/java/br/ufrgs/inf/prosoft/aplcache/caching/APLCache.java
+++ b/src/main/java/br/ufrgs/inf/prosoft/aplcache/caching/APLCache.java
@@ -17,6 +17,7 @@ import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
+import java.util.Optional;
import java.util.function.Supplier;
import java.util.logging.Level;
import java.util.logging.Logger;
@@ -34,7 +35,7 @@ public class APLCache<V> {
private static String APLCACHE_CACHEABLE_PARAMETERS = System.getenv("APLCACHE_CACHEABLE_PARAMETERS");
private static final Map<String, Collection<String>> APLCACHE_METHOD_HAS_CACHEABLE_PARAMETERS = new HashMap<>();
private static final String APLCACHE_LOG = System.getenv("APLCACHE_LOG");
- private final MultiCache<String, V> multiCache;
+ private final MultiCache<String, Optional<V>> multiCache;
public APLCache() {
this.multiCache = new MultiCache<>();
@@ -137,13 +138,14 @@ public class APLCache<V> {
String serialisedParameters = Stream.of(parameters).map(JSONSerialiser::serialise)
.collect(Collectors.joining(",", "[", "]"));
- V get = this.multiCache.get(serialisedParameters);
- if (get != null) {
- return get;
+ Optional<V> optional = this.multiCache.get(serialisedParameters);
+ if (optional != null) {
+ return optional.orElse(null);
}
- get = supplier.get();
+ V get = supplier.get();
+ optional = Optional.ofNullable(get);
if (isCacheable(methodName, serialisedParameters)) {
- this.multiCache.put(serialisedParameters, get, timeToLive);
+ this.multiCache.put(serialisedParameters, optional, timeToLive);
}
return get;
}
@@ -160,13 +162,14 @@ public class APLCache<V> {
String serialisedParameters = Stream.of(parameters).map(JSONSerialiser::serialise)
.collect(Collectors.joining(",", "[", "]"));
- V get = this.multiCache.get(serialisedParameters);
- if (get != null) {
- return get;
+ Optional<V> optional = this.multiCache.get(serialisedParameters);
+ if (optional != null) {
+ return optional.orElse(null);
}
- get = supplier.get();
+ V get = supplier.get();
+ optional = Optional.ofNullable(get);
if (isCacheable(methodName, serialisedParameters)) {
- this.multiCache.put(serialisedParameters, get);
+ this.multiCache.put(serialisedParameters, optional);
}
return get;
}