@Override public void onSet(@Nonnull CachedReferenceEvent<V> event) { listenerSupport.notifySet(event.getValue()); }
@Override public void onEvict(@Nonnull CachedReferenceEvent<V> event) { listenerSupport.notifyEvict(event.getValue()); }
@Override public void onReset(@Nonnull CachedReferenceEvent<V> event) { listenerSupport.notifyReset(event.getValue()); } }
@Override public void onSet(@Nonnull CachedReferenceEvent<Versioned<V>> event) { listenerSupport.notifySet(get(event.getValue())); }
@Override public void onReset(@Nonnull CachedReferenceEvent<Versioned<V>> event) { listenerSupport.notifyReset(get(event.getValue())); }
@Override public void onEvict(@Nonnull CachedReferenceEvent<Versioned<V>> event) { listenerSupport.notifyEvict(get(event.getValue())); }
@Override public void onReset(@Nonnull CachedReferenceEvent<OsgiSafe<V>> event) { delegate.onReset(new DefaultCachedReferenceEvent<V>(unwrap(event.getValue()))); }
@Override public void onEvict(@Nonnull CachedReferenceEvent<OsgiSafe<V>> event) { delegate.onEvict(new DefaultCachedReferenceEvent<V>(unwrap(event.getValue()))); }
@Override public void onSet(@Nonnull CachedReferenceEvent<OsgiSafe<V>> event) { delegate.onSet(new DefaultCachedReferenceEvent<V>(unwrap(event.getValue()))); }
@Test public void testOnSet() throws Exception { Supplier<String> supplier = mock(Supplier.class); when(supplier.get()).thenReturn("SET"); CachedReference<String> reference = factory.getCachedReference("set", supplier, settingsBuilder().build()); CachedReferenceListener listener = mock(CachedReferenceListener.class); reference.addListener(listener, true); reference.get(); ArgumentCaptor<CachedReferenceEvent> captor = ArgumentCaptor.forClass(CachedReferenceEvent.class); verify(listener, timeout(1000)).onSet(captor.capture()); CachedReferenceEvent<String> event = captor.getValue(); assertEquals("SET", event.getValue()); }
@Test public void testOnReset() throws Exception { Supplier<String> supplier = mock(Supplier.class); when(supplier.get()).thenReturn("RESET"); CachedReference<String> reference = factory.getCachedReference("reset", supplier, settingsBuilder().build()); CachedReferenceListener listener = mock(CachedReferenceListener.class); reference.addListener(listener, true); reference.get(); reference.reset(); ArgumentCaptor<CachedReferenceEvent> captor = ArgumentCaptor.forClass(CachedReferenceEvent.class); //With the changes to the delegated memory reset / remove there will be another call on the //listener when this test is run as part of the suite verify(listener, timeout(1000).atLeastOnce()).onReset(captor.capture()); CachedReferenceEvent<String> event = captor.getValue(); assertEquals("RESET", event.getValue()); }
@Test public void testOnEvict() throws Exception { Supplier<String> supplier = mock(Supplier.class); when(supplier.get()).thenReturn("EVICT"); CachedReference<String> reference = factory.getCachedReference("evict", supplier, settingsBuilder().expireAfterAccess(1, TimeUnit.SECONDS).expireAfterWrite(1, TimeUnit.SECONDS).build()); CachedReferenceListener listener = mock(CachedReferenceListener.class); reference.addListener(listener, true); reference.get(); Thread.sleep(EXPIRY_TIMEOUT); reference.get(); ArgumentCaptor<CachedReferenceEvent> captor = ArgumentCaptor.forClass(CachedReferenceEvent.class); verify(listener, timeout(EXPIRY_TIMEOUT).atLeastOnce()).onEvict(captor.capture()); CachedReferenceEvent<String> event = captor.getValue(); assertEquals("EVICT", event.getValue()); }