aplcache

reindent

3/1/2021 2:35:53 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 d4aae96..d67d5a6 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
@@ -10,7 +10,7 @@ import br.ufrgs.inf.prosoft.cache.KeyNotFoundException;
 import br.ufrgs.inf.prosoft.jsonserialiser.JSONSerialiser;
 import com.google.gson.JsonObject;
 import com.google.gson.JsonParser;
-import java.io.FileNotFoundException;
+
 import java.io.FileReader;
 import java.io.FileWriter;
 import java.io.IOException;
@@ -22,208 +22,188 @@ import java.util.logging.Logger;
 import java.util.stream.Collectors;
 import java.util.stream.Stream;
 
-/**
- *
- * @author romulo
- * @param <V>
- */
 public class APLCache<V> {
 
-    private static final Logger LOGGER = Logger.getLogger(APLCache.class.getName());
-    private static String APLCACHE_CACHEABLE_PARAMETERS = System.getenv("APLCACHE_CACHEABLE_PARAMETERS");
-    private static final Map<String, Map<String, Long>> APLCACHE_METHOD_HAS_CACHEABLE_PARAMETERS = new HashMap<>();
-    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 Caffeine<String, V> caffeine;
-
-    public APLCache() {
-        this.caffeine = new Caffeine<>();
+  private static final Logger LOGGER = Logger.getLogger(APLCache.class.getName());
+  private static final Map<String, Map<String, Long>> APLCACHE_METHOD_HAS_CACHEABLE_PARAMETERS = new HashMap<>();
+  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 static String APLCACHE_CACHEABLE_PARAMETERS = System.getenv("APLCACHE_CACHEABLE_PARAMETERS");
+  private final Caffeine<String, V> caffeine;
+
+  public APLCache() {
+    this.caffeine = new Caffeine<>();
+  }
+
+  public APLCache(String 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() {
+    if (APLCACHE_CACHEABLE_PARAMETERS == null) return;
+    try (FileReader fileReader = new FileReader(APLCACHE_CACHEABLE_PARAMETERS)) {
+      JsonParser jsonParser = new JsonParser();
+      JsonObject jsonObject = jsonParser.parse(fileReader).getAsJsonObject();
+      jsonObject.entrySet().forEach(entry -> {
+        Map<String, Long> inputsHasTTL = new HashMap<>();
+        if (entry.getValue().isJsonArray()) entry.getValue().getAsJsonArray().forEach(parameter -> inputsHasTTL.put(parameter.getAsString(), 0L));
+        else entry.getValue().getAsJsonObject().entrySet().forEach(innerEntry -> inputsHasTTL.put(innerEntry.getKey(), innerEntry.getValue().getAsLong()));
+        APLCACHE_METHOD_HAS_CACHEABLE_PARAMETERS.put(entry.getKey(), inputsHasTTL);
+      });
+      LOGGER.log(Level.INFO, "cache file loaded");
+    } catch (IOException ex) {
+      LOGGER.log(Level.SEVERE, "invalid cache file");
     }
+    APLCACHE_CACHEABLE_PARAMETERS = null;
+  }
 
-    public APLCache(String name) {
-        this.caffeine = new Caffeine<>(name);
+  private static void log(String message) {
+    if (APLCACHE_LOG == null) {
+      return;
     }
-
-    public APLCache(long ttl) {
-        this.caffeine = new Caffeine<>(ttl);
+    try (FileWriter fileWriter = new FileWriter(APLCACHE_LOG, true)) {
+      fileWriter.write(message + "\n");
+    } catch (IOException ex) {
     }
-
-    public APLCache(String name, long ttl) {
-        this.caffeine = new Caffeine<>(name, ttl);
+  }
+
+  public boolean isCacheable(Thread currentThread, Object... parameters) {
+    StackTraceElement[] stackTrace = currentThread.getStackTrace();
+    StackTraceElement stackTraceElement;
+    try {
+      stackTraceElement = stackTrace[2];
+    } catch (ArrayIndexOutOfBoundsException ex) {
+      stackTraceElement = stackTrace[0];
     }
-
-    private synchronized static void loadCacheableParameters() {
-        if (APLCACHE_CACHEABLE_PARAMETERS == null) {
-            return;
-        }
-        try (FileReader fileReader = new FileReader(APLCACHE_CACHEABLE_PARAMETERS)) {
-            JsonParser jsonParser = new JsonParser();
-            JsonObject jsonObject = jsonParser.parse(fileReader).getAsJsonObject();
-            jsonObject.entrySet().forEach(entry -> {
-                Map<String, Long> inputsHasTTL = new HashMap<>();
-                if (entry.getValue().isJsonArray()) {
-                    entry.getValue().getAsJsonArray().forEach(parameter -> {
-                        inputsHasTTL.put(parameter.getAsString(), 0L);
-                    });
-                } else {
-                    entry.getValue().getAsJsonObject().entrySet().forEach(innerEntry -> {
-                        inputsHasTTL.put(innerEntry.getKey(), innerEntry.getValue().getAsLong());
-                    });
-                }
-                APLCACHE_METHOD_HAS_CACHEABLE_PARAMETERS.put(entry.getKey(), inputsHasTTL);
-            });
-            LOGGER.log(Level.INFO, "cache file loaded");
-        } catch (FileNotFoundException ex) {
-            LOGGER.log(Level.SEVERE, "invalid cache file");
-        } catch (IOException ex) {
-            LOGGER.log(Level.SEVERE, "invalid cache file");
-        }
-        APLCACHE_CACHEABLE_PARAMETERS = null;
+    return isCacheable(stackTraceElement, parameters);
+  }
+
+  public boolean isCacheable(StackTraceElement stackTraceElement, Object... parameters) {
+    try {
+      String methodName = stackTraceElement.getClassName() + "." + stackTraceElement.getMethodName();
+      methodName = methodName.replace("$", ".");
+      return isCacheable(methodName, parameters);
+    } catch (Exception ex) {
+      return false;
     }
+  }
 
-    public boolean isCacheable(Thread currentThread, Object... parameters) {
-        StackTraceElement[] stackTrace = currentThread.getStackTrace();
-        StackTraceElement stackTraceElement = null;
-        try {
-            stackTraceElement = stackTrace[2];
-        } catch (ArrayIndexOutOfBoundsException ex) {
-            stackTraceElement = stackTrace[0];
-        }
-        return isCacheable(stackTraceElement, parameters);
+  public boolean isCacheable(String method, Object... parameters) {
+    loadCacheableParameters();
+    if (APLCACHE_METHOD_HAS_CACHEABLE_PARAMETERS.isEmpty()) {
+      LOGGER.log(Level.WARNING, "no method is cacheable");
+      return false;
     }
-
-    public boolean isCacheable(StackTraceElement stackTraceElement, Object... parameters) {
-        try {
-            String methodName = stackTraceElement.getClassName() + "." + stackTraceElement.getMethodName();
-            methodName = methodName.replace("$", ".");
-            return isCacheable(methodName, parameters);
-        } catch (Exception ex) {
-            return false;
-        }
+    Map<String, Long> cacheableInputsHasTTL = APLCACHE_METHOD_HAS_CACHEABLE_PARAMETERS.get(method);
+    if (cacheableInputsHasTTL == null) {
+      LOGGER.log(Level.WARNING, "method not cacheable: {0}", method);
+      return false;
     }
-
-    public boolean isCacheable(String method, Object... parameters) {
-        loadCacheableParameters();
-        if (APLCACHE_METHOD_HAS_CACHEABLE_PARAMETERS.isEmpty()) {
-            LOGGER.log(Level.WARNING, "no method is cacheable");
-            return false;
-        }
-        Map<String, Long> cacheableInputsHasTTL = APLCACHE_METHOD_HAS_CACHEABLE_PARAMETERS.get(method);
-        if (cacheableInputsHasTTL == null) {
-            LOGGER.log(Level.WARNING, "method not cacheable: {0}", method);
-            return false;
-        }
-        String serialisedParameters = Stream.of(parameters).map(JSONSerialiser::serialise)
-                .collect(Collectors.joining(",", "[", "]"));
-        if (cacheableInputsHasTTL.containsKey(serialisedParameters)) {
-            return true;
-        }
-        log(this.caffeine.getCachePerformance().getName() + " : " + serialisedParameters);
-        return false;
+    String serialisedParameters = Stream.of(parameters).map(JSONSerialiser::serialise)
+      .collect(Collectors.joining(",", "[", "]"));
+    if (cacheableInputsHasTTL.containsKey(serialisedParameters)) {
+      return true;
     }
-
-    public boolean isCacheable(String method, String parameters) {
-        loadCacheableParameters();
-        if (APLCACHE_METHOD_HAS_CACHEABLE_PARAMETERS.isEmpty()) {
-            LOGGER.log(Level.WARNING, "no method is cacheable");
-            return false;
-        }
-        Map<String, Long> cacheableParameters = APLCACHE_METHOD_HAS_CACHEABLE_PARAMETERS.get(method);
-        if (cacheableParameters == null) {
-            LOGGER.log(Level.WARNING, "method not cacheable: {0}", method);
-            return false;
-        }
-        if (cacheableParameters.containsKey(parameters)) {
-            return true;
-        }
-        log(this.caffeine.getCachePerformance().getName() + " : " + parameters);
-        return false;
+    log(this.caffeine.getCachePerformance().getName() + " : " + serialisedParameters);
+    return false;
+  }
+
+  public boolean isCacheable(String method, String parameters) {
+    loadCacheableParameters();
+    if (APLCACHE_METHOD_HAS_CACHEABLE_PARAMETERS.isEmpty()) {
+      LOGGER.log(Level.WARNING, "no method is cacheable");
+      return false;
     }
-
-    public long getTTLforInput(String method, String input) {
-        loadCacheableParameters();
-        if (APLCACHE_METHOD_HAS_CACHEABLE_PARAMETERS.isEmpty()) {
-            LOGGER.log(Level.WARNING, "no method is cacheable");
-            return 0;
-        }
-        Map<String, Long> cacheableInputsHasTTL = APLCACHE_METHOD_HAS_CACHEABLE_PARAMETERS.get(method);
-        if (cacheableInputsHasTTL == null) {
-            LOGGER.log(Level.WARNING, "method not cacheable: {0}", method);
-            return 0;
-        }
-        return cacheableInputsHasTTL.get(input);
+    Map<String, Long> cacheableParameters = APLCACHE_METHOD_HAS_CACHEABLE_PARAMETERS.get(method);
+    if (cacheableParameters == null) {
+      LOGGER.log(Level.WARNING, "method not cacheable: {0}", method);
+      return false;
     }
-
-    public V computeIfAbsent(Thread currentThread, Object[] parameters, Supplier<V> supplier, long timeToLive) {
-        StackTraceElement[] stackTrace = currentThread.getStackTrace();
-        StackTraceElement stackTraceElement;
-        try {
-            stackTraceElement = stackTrace[2];
-        } catch (ArrayIndexOutOfBoundsException ex) {
-            stackTraceElement = stackTrace[0];
-        }
-        String methodName = stackTraceElement.getClassName() + "." + stackTraceElement.getMethodName();
-        methodName = methodName.replace("$", ".");
-
-        String serialisedParameters = Stream.of(parameters).map(JSONSerialiser::serialise)
-                .collect(Collectors.joining(",", "[", "]"));
-        synchronized (serialisedParameters) {
-            try {
-                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.caffeine.put(serialisedParameters, get, timeToLive);
-                    } else {
-                        this.caffeine.put(serialisedParameters, get, recommendedTTLforInput);
-                    }
-                }
-                return get;
-            }
-        }
+    if (cacheableParameters.containsKey(parameters)) {
+      return true;
     }
-
-    public V computeIfAbsent(Thread currentThread, Object[] parameters, Supplier<V> supplier) {
-        StackTraceElement[] stackTrace = currentThread.getStackTrace();
-        StackTraceElement stackTraceElement;
-        try {
-            stackTraceElement = stackTrace[2];
-        } catch (ArrayIndexOutOfBoundsException ex) {
-            stackTraceElement = stackTrace[0];
-        }
-        String methodName = stackTraceElement.getClassName() + "." + stackTraceElement.getMethodName();
-        methodName = methodName.replace("$", ".");
-
-        String serialisedParameters = Stream.of(parameters).map(JSONSerialiser::serialise)
-                .collect(Collectors.joining(",", "[", "]"));
-        synchronized (serialisedParameters) {
-            try {
-                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.caffeine.put(serialisedParameters, get);
-                    } else {
-                        this.caffeine.put(serialisedParameters, get, ttLforInput);
-                    }
-                }
-                return get;
-            }
-        }
+    log(this.caffeine.getCachePerformance().getName() + " : " + parameters);
+    return false;
+  }
+
+  public long getTTLforInput(String method, String input) {
+    loadCacheableParameters();
+    if (APLCACHE_METHOD_HAS_CACHEABLE_PARAMETERS.isEmpty()) {
+      LOGGER.log(Level.WARNING, "no method is cacheable");
+      return 0;
     }
-
-    private static void log(String message) {
-        if (APLCACHE_LOG == null) {
-            return;
-        }
-        try (FileWriter fileWriter = new FileWriter(APLCACHE_LOG, true)) {
-            fileWriter.write(message + "\n");
-        } catch (IOException ex) {
-        }
+    Map<String, Long> cacheableInputsHasTTL = APLCACHE_METHOD_HAS_CACHEABLE_PARAMETERS.get(method);
+    if (cacheableInputsHasTTL == null) {
+      LOGGER.log(Level.WARNING, "method not cacheable: {0}", method);
+      return 0;
+    }
+    return cacheableInputsHasTTL.get(input);
+  }
+
+  public V computeIfAbsent(Thread currentThread, Object[] parameters, Supplier<V> supplier, long timeToLive) {
+    StackTraceElement[] stackTrace = currentThread.getStackTrace();
+    StackTraceElement stackTraceElement;
+    try {
+      stackTraceElement = stackTrace[2];
+    } catch (ArrayIndexOutOfBoundsException ex) {
+      stackTraceElement = stackTrace[0];
+    }
+    String methodName = stackTraceElement.getClassName() + "." + stackTraceElement.getMethodName();
+    methodName = methodName.replace("$", ".");
+
+    String serialisedParameters = Stream.of(parameters).map(JSONSerialiser::serialise)
+      .collect(Collectors.joining(",", "[", "]"));
+    synchronized (serialisedParameters) {
+      try {
+        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.caffeine.put(serialisedParameters, get, timeToLive);
+          else this.caffeine.put(serialisedParameters, get, recommendedTTLforInput);
+        }
+        return get;
+      }
+    }
+  }
+
+  public V computeIfAbsent(Thread currentThread, Object[] parameters, Supplier<V> supplier) {
+    StackTraceElement[] stackTrace = currentThread.getStackTrace();
+    StackTraceElement stackTraceElement;
+    try {
+      stackTraceElement = stackTrace[2];
+    } catch (ArrayIndexOutOfBoundsException ex) {
+      stackTraceElement = stackTrace[0];
+    }
+    String methodName = stackTraceElement.getClassName() + "." + stackTraceElement.getMethodName();
+    methodName = methodName.replace("$", ".");
+
+    String serialisedParameters = Stream.of(parameters).map(JSONSerialiser::serialise)
+      .collect(Collectors.joining(",", "[", "]"));
+    synchronized (serialisedParameters) {
+      try {
+        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.caffeine.put(serialisedParameters, get);
+          } else {
+            this.caffeine.put(serialisedParameters, get, ttLforInput);
+          }
+        }
+        return get;
+      }
     }
+  }
 }