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.CacheEventConverter;
import org.infinispan.notifications.cachelistener.filter.CacheEventConverterFactory;
import org.infinispan.notifications.cachelistener.filter.EventType;
@NamedFactory(name = "dynamic-converter-factory")
public class DynamicCacheEventConverterFactory implements CacheEventConverterFactory {
@Override
public CacheEventConverter<Integer, String, CustomEvent> getConverter(final Object[] params) {
return new DynamicCacheEventConverter(params);
}
static class DynamicCacheEventConverter implements CacheEventConverter<Integer, String, CustomEvent>, Serializable {
private final Object[] params;
public DynamicCacheEventConverter(Object[] params) {
this.params = params;
}
@Override
public CustomEvent convert(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);
}
}
}