package org.infinispan.filter;
import org.infinispan.metadata.Metadata;
/**
* This interface is an optimization that can be used when a filter and converter are most efficiently used as the same
* object composing the filtering and conversion in the same method invocation.
* @author wburns
* @since 7.0
*/
public interface KeyValueFilterConverter<K, V, C> extends KeyValueFilter<K, V>, Converter<K, V, C> {
/**
* Will both filter the entry and if passed subsequently convert the value to a new value. A returned value of null
* will symbolize the value not passing the filter, so ensure your conversion will not return null if you want this
* entry to be returned.
* @param key The key of the entry to filter
* @param value The value of the entry to filter and then convert
* @param metadata The metadata attached to the entry
* @return The converted value or null if the filter didn't pass
*/
public C filterAndConvert(K key, V value, Metadata metadata);
}