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.AbstractCacheEventFilterConverter;
import org.infinispan.notifications.cachelistener.filter.CacheEventFilterConverter;
import org.infinispan.notifications.cachelistener.filter.CacheEventFilterConverterFactory;
import org.infinispan.notifications.cachelistener.filter.EventType;
@NamedFactory(name = "filter-converter-factory")
public class FilterConverterFactory implements CacheEventFilterConverterFactory {
@Override
public CacheEventFilterConverter<Integer, String, CustomEvent> getFilterConverter(Object[] params) {
return new FilterConverter(params);
}
static class FilterConverter extends AbstractCacheEventFilterConverter<Integer, String, CustomEvent>
implements Serializable {
private final Object[] params;
public FilterConverter(Object[] params) {
this.params = params;
}
@Override
public CustomEvent filterAndConvert(Integer key, String oldValue, Metadata oldMetadata,
String newValue, Metadata newMetadata, EventType eventType) {
if (params[0].equals(key))
return new CustomEvent(key, null);
return new CustomEvent(key, newValue);
}
}
}