aplcache

replaced multicache for caffeine

7/16/2020 12:31:18 AM

Details

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;