in commons-jcs3-jcache/src/main/java/org/apache/commons/jcs3/jcache/JCSCache.java [294:343]
private V doGetControllingExpiry(final long getStart, final K key, final boolean updateAcess, final boolean forceDoLoad, final boolean skipLoad,
final boolean propagateLoadException)
{
final boolean statisticsEnabled = config.isStatisticsEnabled();
final ICacheElement<K, V> elt = delegate.get(key);
V v = elt != null ? elt.getVal() : null;
if (v == null && (config.isReadThrough() || forceDoLoad))
{
if (!skipLoad)
{
v = doLoad(key, false, propagateLoadException);
}
}
else if (statisticsEnabled)
{
if (v != null)
{
statistics.increaseHits(1);
}
else
{
statistics.increaseMisses(1);
}
}
if (updateAcess && elt != null)
{
final Duration expiryForAccess = expiryPolicy.getExpiryForAccess();
if (!isNotZero(expiryForAccess))
{
forceExpires(key);
}
else if (expiryForAccess != null && (!elt.getElementAttributes().getIsEternal() || !expiryForAccess.isEternal()))
{
try
{
delegate.update(updateElement(key, elt.getVal(), expiryForAccess, elt.getElementAttributes()));
}
catch (final IOException e)
{
throw new CacheException(e);
}
}
}
if (statisticsEnabled && v != null)
{
statistics.addGetTime(Times.now(false) - getStart);
}
return v;
}