diff --git a/src/main/java/org/cobbzilla/util/collection/ExpirationMap.java b/src/main/java/org/cobbzilla/util/collection/ExpirationMap.java index 61de175..1fb1a94 100644 --- a/src/main/java/org/cobbzilla/util/collection/ExpirationMap.java +++ b/src/main/java/org/cobbzilla/util/collection/ExpirationMap.java @@ -95,15 +95,18 @@ public class ExpirationMap implements Map { } @Override public V putIfAbsent(K key, V value) { + if (lastCleaned+cleanInterval > now()) cleanExpired(); final ExpirationMapEntry val = map.putIfAbsent(key, new ExpirationMapEntry<>(value)); return val == null ? null : val.value; } @Override public V computeIfAbsent(K key, Function mappingFunction) { + if (lastCleaned+cleanInterval > now()) cleanExpired(); return map.computeIfAbsent(key, k -> new ExpirationMapEntry<>(mappingFunction.apply(k))).value; } @Override public V computeIfPresent(K key, BiFunction remappingFunction) { + if (lastCleaned+cleanInterval > now()) cleanExpired(); final ExpirationMapEntry found = map.computeIfPresent(key, (k, vExpirationMapEntry) -> new ExpirationMapEntry<>(remappingFunction.apply(k, vExpirationMapEntry.value))); return found == null ? null : found.value; }