package org.infinispan.jcache.remote; import org.infinispan.client.hotrod.annotation.ClientCacheEntryCreated; import org.infinispan.client.hotrod.annotation.ClientCacheEntryExpired; import org.infinispan.client.hotrod.annotation.ClientCacheEntryModified; import org.infinispan.client.hotrod.annotation.ClientCacheEntryRemoved; import org.infinispan.client.hotrod.annotation.ClientListener; import org.infinispan.client.hotrod.event.ClientCacheEntryCustomEvent; import org.infinispan.commons.util.KeyValueWithPrevious; import org.infinispan.jcache.AbstractJCache; import org.infinispan.jcache.AbstractJCacheListenerAdapter; import org.infinispan.jcache.AbstractJCacheNotifier; @ClientListener(converterFactoryName = "key-value-with-previous-converter-factory") public class JCacheListenerAdapter<K, V> extends AbstractJCacheListenerAdapter<K, V> { public JCacheListenerAdapter(AbstractJCache<K, V> jcache, AbstractJCacheNotifier<K, V> notifier) { super(jcache, notifier); } @ClientCacheEntryCreated @ClientCacheEntryModified @ClientCacheEntryRemoved @ClientCacheEntryExpired public void handleCacheEntryEvent(ClientCacheEntryCustomEvent<KeyValueWithPrevious<K, V>> e) { KeyValueWithPrevious<K, V> event = e.getEventData(); switch (e.getType()) { case CLIENT_CACHE_ENTRY_CREATED: { notifier.notifyEntryCreated(jcache, event.getKey(), event.getValue()); break; } case CLIENT_CACHE_ENTRY_REMOVED: { notifier.notifyEntryRemoved(jcache, event.getKey(), event.getPrev()); break; } case CLIENT_CACHE_ENTRY_MODIFIED: { notifier.notifyEntryUpdated(jcache, event.getKey(), event.getValue()); break; } case CLIENT_CACHE_ENTRY_EXPIRED: { notifier.notifyEntryExpired(jcache, event.getKey(), event.getValue()); break; } case CLIENT_CACHE_FAILOVER: // No JSR107 correspondent. break; default: break; } } }