aplcache

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 faf1573..664d3d2 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
@@ -137,10 +137,15 @@ 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;
+        }
+        get = supplier.get();
         if (isCacheable(methodName, serialisedParameters)) {
-            return this.multiCache.computeIfAbsent(serialisedParameters, supplier, timeToLive);
+            this.multiCache.put(serialisedParameters, get, timeToLive);
         }
-        return supplier.get();
+        return get;
     }
 
     public V computeIfAbsent(Thread currentThread, Object[] parameters, Supplier<V> supplier) {
@@ -155,10 +160,15 @@ 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;
+        }
+        get = supplier.get();
         if (isCacheable(methodName, serialisedParameters)) {
-            return this.multiCache.computeIfAbsent(serialisedParameters, supplier);
+            this.multiCache.put(serialisedParameters, get);
         }
-        return supplier.get();
+        return get;
     }
 
     private static void log(String message) {