package org.infinispan.expiration.impl; import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.concurrent.atomic.AtomicInteger; import org.infinispan.notifications.Listener; import org.infinispan.notifications.cachelistener.annotation.CacheEntryExpired; import org.infinispan.notifications.cachelistener.event.CacheEntryExpiredEvent; import org.infinispan.util.logging.Log; import org.infinispan.util.logging.LogFactory; @Listener public class ExpiredCacheListener { private final static Log log = LogFactory.getLog(ExpiredCacheListener.class); private final List<CacheEntryExpiredEvent> events = Collections.synchronizedList(new ArrayList<>()); private final AtomicInteger invocationCount = new AtomicInteger(); public void reset() { events.clear(); invocationCount.set(0); } public List<CacheEntryExpiredEvent> getEvents() { return events; } public int getInvocationCount() { return invocationCount.get(); } // handler @CacheEntryExpired public void handle(CacheEntryExpiredEvent e) { log.trace("Received event: " + e); events.add(e); invocationCount.incrementAndGet(); } }