package org.castor.cpa.test.test08; import java.util.List; import java.util.Properties; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.castor.cache.Cache; import org.castor.cache.CacheAcquireException; import org.castor.cache.simple.TimeLimited; import org.junit.Ignore; @Ignore public class TimeLimitedTest extends TimeLimited { /** The <a href="http://jakarta.apache.org/commons/logging/">Jakarta * Commons Logging</a> instance used for all logging. */ private static final Log LOG = LogFactory.getLog(TimeLimitedTest.class); private static final int EXPIRE_SEC = 10; private static final int EXPIRE_MILLI = EXPIRE_SEC * 1000; private List<CacheEntry> _expiredTooFast; TimeLimitedTest(final int interval, final List<CacheEntry> expiredTooFast) throws CacheAcquireException { super(); Properties params = new Properties(); params.put(Cache.PARAM_NAME, "dummy"); params.put(TimeLimited.PARAM_TTL, new Integer(interval)); initialize(params); this._expiredTooFast = expiredTooFast; } public Object remove(final Object key) { Object obj = super.remove(key); long now = System.currentTimeMillis(); CacheEntry entry = (CacheEntry) obj; long diff = Math.abs(now - entry.getTimestamp()); // "diff" should be approx. EXPIRE_MILLI. If it is less than 66% of // this value, we put the entry into a list. if (diff < (EXPIRE_MILLI * 2 / 3)) { _expiredTooFast.add(entry); LOG.debug("Entry " + entry.getId() + " expired after " + diff + " millis (should be " + EXPIRE_MILLI + ")"); } else { LOG.debug("Entry " + entry.getId() + " expired after " + diff + " millis"); } return obj; } }