package org.infinispan.filter;
import org.infinispan.metadata.Metadata;
import net.jcip.annotations.ThreadSafe;
/**
* A filter for keys with their values. This class is complemented by the {@link org.infinispan.filter.KeyFilter}
* class. This filter should be used in most cases over {@link org.infinispan.filter.KeyFilter} since it allows
* for more control of the filtering since it provides the ability to filter on the value and metadata in addition
* to the key.
*
* @author William Burns
* @since 7.0
*/
@ThreadSafe
public interface KeyValueFilter<K, V> {
/**
* @param key key to test
* @param value value to use (could be null for the case of removal)
* @param metadata metadata
* @return true if the given key is accepted by this filter.
*/
boolean accept(K key, V value, Metadata metadata);
}