/*
* 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.analyzer.spi;
import java.io.Closeable;
/**
* Reference to an analyzer implementation.
*
* @author Davide D'Alto
* @hsearch.experimental This type is under active development as part of the Elasticsearch integration. You should be
* prepared for incompatible changes in future releases.
*/
public interface AnalyzerReference extends Closeable {
/**
* @return The referenced analyzer.
*/
Object getAnalyzer();
/**
* Check if the analyzer can be represented using a specific class.
*
* @param analyzerType an {@link AnalyzerReference} type
* @return true if this implementation can be represented as an instance of T
*/
<T extends AnalyzerReference> boolean is(Class<T> analyzerType);
/**
* Convert this instance to T
*
* @param <T> an {@link AnalyzerReference} type
* @param analyzerType the class T
* @return this instance as T
*/
<T extends AnalyzerReference> T unwrap(Class<T> analyzerType);
/**
* Close analyzer if possible
*/
@Override
void close();
}