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 884076b..f020164 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
@@ -5,8 +5,8 @@
*/
package br.ufrgs.inf.prosoft.aplcache.caching;
+import br.ufrgs.inf.prosoft.cache.Caffeine;
import br.ufrgs.inf.prosoft.cache.KeyNotFoundException;
-import br.ufrgs.inf.prosoft.cache.MultiCache;
import br.ufrgs.inf.prosoft.jsonserialiser.JSONSerialiser;
import com.google.gson.JsonObject;
import com.google.gson.JsonParser;
@@ -35,14 +35,22 @@ public class APLCache<V> {
private static final String APLCACHE_LOG
= System.getenv("APLCACHE_LOG") != null && !System.getenv("APLCACHE_LOG").isEmpty() && !System.getenv("APLCACHE_LOG").equals("null")
? System.getenv("APLCACHE_LOG") : null;
- private final MultiCache<String, V> multiCache;
+ private final Caffeine<String, V> caffeine;
public APLCache() {
- this.multiCache = new MultiCache<>();
+ this.caffeine = new Caffeine<>();
}
public APLCache(String name) {
- this.multiCache = new MultiCache<>(name);
+ this.caffeine = new Caffeine<>(name);
+ }
+
+ public APLCache(long ttl) {
+ this.caffeine = new Caffeine<>(ttl);
+ }
+
+ public APLCache(String name, long ttl) {
+ this.caffeine = new Caffeine<>(name, ttl);
}
private synchronized static void loadCacheableParameters() {
@@ -111,7 +119,7 @@ public class APLCache<V> {
if (cacheableInputsHasTTL.containsKey(serialisedParameters)) {
return true;
}
- log(this.multiCache.getCachePerformance().getName() + " : " + serialisedParameters);
+ log(this.caffeine.getCachePerformance().getName() + " : " + serialisedParameters);
return false;
}
@@ -129,7 +137,7 @@ public class APLCache<V> {
if (cacheableParameters.containsKey(parameters)) {
return true;
}
- log(this.multiCache.getCachePerformance().getName() + " : " + parameters);
+ log(this.caffeine.getCachePerformance().getName() + " : " + parameters);
return false;
}
@@ -162,16 +170,16 @@ public class APLCache<V> {
.collect(Collectors.joining(",", "[", "]"));
synchronized (serialisedParameters) {
try {
- return this.multiCache.get(serialisedParameters);
+ return this.caffeine.get(serialisedParameters);
} catch (KeyNotFoundException ex) {
V get = supplier.get();
if (isCacheable(methodName, serialisedParameters)) {
long recommendedTTLforInput = getTTLforInput(methodName, serialisedParameters);
if (recommendedTTLforInput == 0) {
- this.multiCache.put(serialisedParameters, get, timeToLive);
+ this.caffeine.put(serialisedParameters, get, timeToLive);
} else {
LOGGER.log(Level.WARNING, "provided TTL being replaced for recommemded");
- this.multiCache.put(serialisedParameters, get, recommendedTTLforInput);
+ this.caffeine.put(serialisedParameters, get, recommendedTTLforInput);
}
}
return get;
@@ -194,15 +202,15 @@ public class APLCache<V> {
.collect(Collectors.joining(",", "[", "]"));
synchronized (serialisedParameters) {
try {
- return this.multiCache.get(serialisedParameters);
+ return this.caffeine.get(serialisedParameters);
} catch (KeyNotFoundException ex) {
V get = supplier.get();
if (isCacheable(methodName, serialisedParameters)) {
long ttLforInput = getTTLforInput(methodName, serialisedParameters);
if (ttLforInput == 0) {
- this.multiCache.put(serialisedParameters, get);
+ this.caffeine.put(serialisedParameters, get);
} else {
- this.multiCache.put(serialisedParameters, get, ttLforInput);
+ this.caffeine.put(serialisedParameters, get, ttLforInput);
}
}
return get;