package org.infinispan.server.test.client.hotrod; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; import java.util.concurrent.ArrayBlockingQueue; import java.util.concurrent.BlockingQueue; import java.util.concurrent.TimeUnit; import org.infinispan.client.hotrod.annotation.ClientCacheEntryCreated; import org.infinispan.client.hotrod.annotation.ClientCacheEntryModified; import org.infinispan.client.hotrod.annotation.ClientCacheEntryRemoved; import org.infinispan.client.hotrod.event.ClientCacheEntryCustomEvent; public abstract class CustomEventLogListener { BlockingQueue<CustomEvent> customEvents = new ArrayBlockingQueue<CustomEvent>(128); CustomEvent pollEvent() { try { CustomEvent event = customEvents.poll(10, TimeUnit.SECONDS); assertNotNull(event); return event; } catch (InterruptedException e) { throw new AssertionError(e); } } public void expectNoEvents() { assertEquals(0, customEvents.size()); } public <K, V> void expectSingleCustomEvent(K key, V value) { CustomEvent event = pollEvent(); assertEquals(key, event.key); assertEquals(value, event.value); } @ClientCacheEntryCreated @ClientCacheEntryModified @ClientCacheEntryRemoved @SuppressWarnings("unused") public void handleCustomEvent(ClientCacheEntryCustomEvent<CustomEvent> e) { customEvents.add(e.getEventData()); } }