Multiple cache listener notifications when creating a new entry
xcoulon Jan 5, 2010 8:52 AM@Test(groups = "unit", testName = "notifications.cachelistener.CacheListenerTest")
public class CacheListenerTest {
private Cache<String, Object> cache;
private MockCacheListener listener;
@BeforeMethod(alwaysRun = true)
public void setUp() throws Exception {
Configuration c = new Configuration();
c.setCacheMode(Configuration.CacheMode.LOCAL);
c.setIsolationLevel(IsolationLevel.REPEATABLE_READ);
c.setTransactionManagerLookupClass(DummyTransactionManagerLookup.class
.getName());
CacheManager cm = TestCacheManagerFactory.createCacheManager(c);
cache = cm.getCache();
listener = new MockCacheListener();
cache.addListener(listener);
}
@AfterMethod(alwaysRun = true)
public void tearDown() throws Exception {
TestingUtil.killCaches(cache);
}
@AfterTest
public void destroyManager() {
TestingUtil.killCacheManagers(cache.getCacheManager());
}
public void testCreateEntry() throws IOException {
cache.put("key", new String("Sample item"));
Assert.assertEquals(listener.cacheEntryCreated, 2);
Assert.assertEquals(listener.cacheEntryModified, 2);
}
}
@Listener
public class MockCacheListener {
public boolean pre = false;
public int cacheEntryCreated = 0;
public int cacheEntryVisited = 0;
public int cacheEntryPassivated = 0;
public int cacheEntryLoaded = 0;
public int cacheEntryInvalidated = 0;
public int cacheEntryEvicted = 0;
public int cacheEntryActivated = 0;
public int cacheEntryRemoved = 0;
public int cacheEntryModified = 0;
@CacheEntryCreated
public void cacheEntryCreated(CacheEntryCreatedEvent event) {
pre = event.isPre();
cacheEntryCreated++;
}
@CacheEntryModified
public void cacheEntryModified(CacheEntryModifiedEvent event) {
pre = event.isPre();
cacheEntryModified++;
}
@CacheEntryRemoved
public void cacheEntryRemoved(CacheEntryRemovedEvent event) {
pre = event.isPre();
cacheEntryRemoved++;
}
@CacheEntryActivated
public void cacheEntryActivated(CacheEntryActivatedEvent event) {
pre = event.isPre();
cacheEntryActivated++;
}
@CacheEntryEvicted
public void cacheEntryEvicted(CacheEntryEvictedEvent event) {
pre = event.isPre();
cacheEntryEvicted++;
}
@CacheEntryInvalidated
public void cacheEntryInvalidated(CacheEntryInvalidatedEvent event) {
pre = event.isPre();
cacheEntryInvalidated++;
}
@CacheEntryLoaded
public void cacheEntryLoaded(CacheEntryLoadedEvent event) {
pre = event.isPre();
cacheEntryLoaded++;
}
@CacheEntryPassivated
public void cacheEntryPassivated(CacheEntryPassivatedEvent event) {
pre = event.isPre();
cacheEntryPassivated++;
}
@CacheEntryVisited
public void cacheEntryVisited(CacheEntryVisitedEvent event) {
pre = event.isPre();
cacheEntryVisited++;
}
}