@Override public void onUpdate(@Nonnull CacheEntryEvent<K, V> event) { listenerSupport.notifyUpdate(event.getKey(), event.getValue(), event.getOldValue()); } }
@Override public void onEvict(@Nonnull CacheEntryEvent<K, V> event) { listenerSupport.notifyEvict(event.getKey(), event.getOldValue()); }
@Override public void onRemove(@Nonnull CacheEntryEvent<String, String> event) { String key = event.getKey(); removedValues.put(key, cache.get(key)); } };
@Override public void onRemove(@Nonnull CacheEntryEvent<K, V> event) { listenerSupport.notifyRemove(event.getKey(), event.getOldValue()); }
public OsgiSafeCacheEntryEvent(CacheEntryEvent<K, OsgiSafe<V>> event) { super(event.getKey(), unwrap(event.getValue()), unwrap(event.getOldValue())); } }
@Override public void onEvict(@Nonnull CacheEntryEvent<K, Versioned<V>> event) { listenerSupport.notifyEvict(event.getKey(), get(event.getOldValue())); }
@Override public void onUpdate(@Nonnull CacheEntryEvent<K, Versioned<V>> event) { listenerSupport.notifyUpdate(event.getKey(), get(event.getValue()), get(event.getOldValue())); }
@Override public void onRemove(@Nonnull CacheEntryEvent<K, Versioned<V>> event) { listenerSupport.notifyRemove(event.getKey(), get(event.getOldValue())); }
@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()); } }
@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()); } }
@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()); }
assertEquals("replace", event.getKey()); if (supportsUpdateOldValue()) assertEquals("REPLACE", event.getOldValue()); assertNull(event.getOldValue()); assertEquals("REPLACED", event.getValue()); assertNull(event.getValue());
assertEquals("update", event.getKey()); if (supportsUpdateOldValue()) assertEquals("UPDATE", event.getOldValue()); assertNull(event.getOldValue()); assertEquals("UPDATED", event.getValue()); 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()); }