package org.infinispan.all.remote.jcache; import static org.junit.Assert.assertEquals; import java.io.Serializable; import java.util.concurrent.atomic.AtomicInteger; import javax.cache.event.CacheEntryCreatedListener; import javax.cache.event.CacheEntryEvent; import javax.cache.event.CacheEntryExpiredListener; import javax.cache.event.CacheEntryListenerException; import javax.cache.event.CacheEntryRemovedListener; import javax.cache.event.CacheEntryUpdatedListener; import javax.cache.event.EventType; /** * Borrowed from TCK tests * * @author gustavonalle */ public class TrackingCacheEntryListener<K, V> implements CacheEntryCreatedListener<K, V>, CacheEntryUpdatedListener<K, V>, CacheEntryExpiredListener<K, V>, CacheEntryRemovedListener<K, V>, Serializable, AutoCloseable { final AtomicInteger created = new AtomicInteger(); final AtomicInteger updated = new AtomicInteger(); final AtomicInteger removed = new AtomicInteger(); public TrackingCacheEntryListener() { } public int getCreated() { return this.created.get(); } public int getUpdated() { return this.updated.get(); } public int getRemoved() { return this.removed.get(); } public void onCreated(Iterable<CacheEntryEvent<? extends K, ? extends V>> events) throws CacheEntryListenerException { for (CacheEntryEvent<? extends K, ? extends V> event : events) { assertEquals(EventType.CREATED, event.getEventType()); this.created.incrementAndGet(); } } public void onExpired(Iterable<CacheEntryEvent<? extends K, ? extends V>> events) throws CacheEntryListenerException { } public void onRemoved(Iterable<CacheEntryEvent<? extends K, ? extends V>> events) throws CacheEntryListenerException { for (CacheEntryEvent<? extends K, ? extends V> event : events) { assertEquals(EventType.REMOVED, event.getEventType()); this.removed.incrementAndGet(); if (event.isOldValueAvailable()) { event.getOldValue(); } } } public void onUpdated(Iterable<CacheEntryEvent<? extends K, ? extends V>> events) throws CacheEntryListenerException { for (CacheEntryEvent<? extends K, ? extends V> event : events) { assertEquals(EventType.UPDATED, event.getEventType()); this.updated.incrementAndGet(); if (event.isOldValueAvailable()) { event.getOldValue(); } } } public void close() { } }