package org.infinispan.server.test.client.hotrod;
import java.io.Serializable;
import org.infinispan.filter.NamedFactory;
import org.infinispan.metadata.Metadata;
import org.infinispan.notifications.cachelistener.filter.CacheEventFilter;
import org.infinispan.notifications.cachelistener.filter.CacheEventFilterFactory;
import org.infinispan.notifications.cachelistener.filter.EventType;
import org.infinispan.server.test.client.hotrod.AbstractRemoteCacheIT.Person;
@NamedFactory(name = "pojo-filter-factory")
public class CustomPojoEventFilterFactory implements CacheEventFilterFactory {
@Override
public CacheEventFilter<Integer, Person> getFilter(Object[] params) {
return new CustomPojoCacheEventFilter(params);
}
private static class CustomPojoCacheEventFilter implements CacheEventFilter<Integer, Person>, Serializable {
private final Object[] params;
private CustomPojoCacheEventFilter(Object[] params) {
this.params = params;
}
@Override
public boolean accept(Integer key, Person oldValue, Metadata oldMetadata,
Person newValue, Metadata newMetadata, EventType eventType) {
return newValue == null
? oldValue.getName().equals(params[0])
: newValue.getName().equals(params[0]);
}
}
}