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;
import org.infinispan.server.test.client.hotrod.AbstractRemoteCacheIT.Person;
@NamedFactory(name = "pojo-converter-factory")
public class CustomPojoEventConverterFactory implements CacheEventConverterFactory {
@Override
public CacheEventConverter<Integer, Person, CustomEvent> getConverter(final Object[] params) {
return new DynamicCacheEventConverter(params);
}
static class DynamicCacheEventConverter implements CacheEventConverter<Integer, Person, CustomEvent>, Serializable {
private final Object[] params;
public DynamicCacheEventConverter(Object[] params) {
this.params = params;
}
@Override
public CustomEvent convert(Integer key, Person oldValue, Metadata oldMetadata,
Person newValue, Metadata newMetadata, EventType eventType) {
if (newValue == null || newValue.equals(params[0]))
return new CustomEvent<Integer, Person>(key, null);
return new CustomEvent<Integer, Person>(key, newValue);
}
}
}