/** * Retrieve an entry from the cache. * * <p>This LRU cache supports timeouts, so if the cached object has expired then we return null, * just as if the entry wasn't found. */ @Override public synchronized Object get(String key) { Object value = null; ExpiringCacheEntry entry = null; synchronized (this) { entry = (ExpiringCacheEntry) super.get(key); } if (entry != null) { value = entry.getValue(); // if the value is null then that means this entry expired if (value == null) { log.debug("EXPIRED [" + key + "]"); hits--; super.remove(key); } } return value; }