/*
* Hibernate Search, full-text search for your domain model
*
* License: GNU Lesser General Public License (LGPL), version 2.1 or later
* See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>.
*/
package org.hibernate.search.filter;
import java.util.Properties;
import org.apache.lucene.search.Filter;
import org.apache.lucene.search.Query;
import org.apache.lucene.search.QueryWrapperFilter;
/**
* Defines the caching filter strategy
* implementations of getCachedFilter and addCachedFilter must be thread-safe
*
* @author Emmanuel Bernard
*/
public interface FilterCachingStrategy {
/**
* Initialize the strategy from the properties.
* The Properties must not be changed.
*
* @param properties the caching strategy configuration
*/
void initialize(Properties properties);
/**
* Retrieve the cached filter for a given key or null if not cached.
*
* @param key the filter key
* @return the cached filter or null if not cached
*/
Query getCachedFilter(FilterKey key);
/**
* Propose a candidate filter for caching
*
* @param key the filter key
* @param filter the filter to cache
*
* @deprecated This method is not used by Hibernate Search anymore
* and will be removed in a future version. Please implement
* {@link #addCachedFilter(FilterKey, Query)} instead.
*/
@Deprecated
default void addCachedFilter(FilterKey key, Filter filter) {
/*
* No-op by default: we only leave this method for backward
* compatibility with implementations created before we introduced
* addCachedFilter(FilterKey, Query), but we don't want new implementations
* to bother with implementing it.
*/
}
/**
* Propose a candidate filter for caching.
*
* @param key the filter key
* @param filter the filter to cache
*/
@SuppressWarnings("deprecation")
default void addCachedFilter(FilterKey key, Query filter) {
/*
* Default implementation for backward compatibility with implementations
* created before we introduced this method.
* This default implementation should be removed when we remove
* addCachedFilter(FilterKey, Filter).
*/
addCachedFilter( key, new QueryWrapperFilter( filter ) );
}
}