@Override public void accept(CacheEntryListener<K, V> listener) { listener.onAdd(event); } });
@Override public void accept(CacheEntryListener<K, V> listener) { listener.onEvict(event); } });
@Override public void accept(CacheEntryListener<K, V> listener) { listener.onRemove(event); } });
@Override public void accept(CacheEntryListener<K, V> listener) { listener.onUpdate(event); } });
@Override public void onUpdate(@Nonnull CacheEntryEvent<K, OsgiSafe<V>> event) { delegate.onUpdate(new OsgiSafeCacheEntryEvent<>(event)); }
@Override public void onAdd(@Nonnull CacheEntryEvent<K, OsgiSafe<V>> event) { delegate.onAdd(new OsgiSafeCacheEntryEvent<>(event)); }
verify(listener, timeout(1000)).onUpdate(captor.capture());
@Override public void onRemove(@Nonnull CacheEntryEvent<K, OsgiSafe<V>> event) { delegate.onRemove(new OsgiSafeCacheEntryEvent<>(event)); }
@Override public void onEvict(@Nonnull CacheEntryEvent<K, OsgiSafe<V>> event) { delegate.onEvict(new OsgiSafeCacheEntryEvent<>(event)); }
@Test public void testOnAdd() throws Exception { CacheLoader<String, String> cacheLoader = mock(CacheLoader.class); when(cacheLoader.load("add")).thenReturn("ADD"); Cache<String, String> cache = factory.getCache("ADD_CACHE", cacheLoader, settingsBuilder().build()); CacheEntryListener listener = mock(CacheEntryListener.class); cache.addListener(listener, true); cache.get("add"); ArgumentCaptor<CacheEntryEvent> captor = ArgumentCaptor.forClass(CacheEntryEvent.class); verify(listener, timeout(1000)).onAdd(captor.capture()); CacheEntryEvent<String, String> event = captor.getValue(); assertEquals("add", event.getKey()); assertNull(event.getOldValue()); if (supportsAddValue()) { assertEquals("ADD", event.getValue()); } else { assertNull(event.getValue()); } }
verify(listener, timeout(1000)).onUpdate(captor.capture());
@Test public void testOnRemove() throws Exception { CacheLoader<String, String> cacheLoader = mock(CacheLoader.class); when(cacheLoader.load("remove")).thenReturn("REMOVE"); Cache<String, String> cache = factory.getCache("REMOVE_CACHE", cacheLoader, settingsBuilder().build()); CacheEntryListener listener = mock(CacheEntryListener.class); cache.addListener(listener, true); cache.get("remove"); cache.remove("remove"); ArgumentCaptor<CacheEntryEvent> captor = ArgumentCaptor.forClass(CacheEntryEvent.class); verify(listener, timeout(1000)).onRemove(captor.capture()); CacheEntryEvent<String, String> event = captor.getValue(); assertEquals("remove", event.getKey()); if (supportsRemoveOldValue()) { assertEquals("REMOVE", event.getOldValue()); } else { assertNull(event.getOldValue()); } assertNull(event.getValue()); }
@Test public void testOnEvict() throws Exception { CacheLoader<String, String> cacheLoader = mock(CacheLoader.class); when(cacheLoader.load("evict")).thenReturn("EVICT"); Cache<String, String> cache = factory.getCache("EVICT_CACHE", cacheLoader, settingsBuilder().expireAfterAccess(1, TimeUnit.SECONDS).expireAfterWrite(1, TimeUnit.SECONDS).build()); CacheEntryListener<String,String> listener = mock(CacheEntryListener.class); cache.addListener(listener, true); cache.get("evict"); Thread.sleep(2000); cache.get("evict"); ArgumentCaptor<CacheEntryEvent> captor = ArgumentCaptor.forClass(CacheEntryEvent.class); verify(listener, timeout(2000).atLeastOnce()).onEvict(captor.capture()); CacheEntryEvent<String, String> event = captor.getValue(); assertEquals("evict", event.getKey()); if (supportsEvictOldValue()) { assertEquals("EVICT", event.getOldValue()); } else { assertNull(event.getOldValue()); } assertNull(event.getValue()); }
@Test public void testOnAddPut() throws Exception { Cache<String, String> cache = factory.getCache("PUT_CACHE"); CacheEntryListener listener = mock(CacheEntryListener.class); cache.addListener(listener, true); cache.put("put", "PUT"); ArgumentCaptor<CacheEntryEvent> captor = ArgumentCaptor.forClass(CacheEntryEvent.class); verify(listener, timeout(1000)).onAdd(captor.capture()); CacheEntryEvent<String, String> event = captor.getValue(); assertEquals("put", event.getKey()); assertNull(event.getOldValue()); if (supportsPutValue()) { assertEquals("PUT", event.getValue()); } else { assertNull(event.getValue()); } }