/*
* 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.elasticsearch.analyzer.impl;
/**
* An Elasticsearch analyzer for which no definition was found in the Hibernate Search mapping.
* <p>
* Such an analyzer is expected to be defined separately on Elasticsearch.
* <p>
* This implementation is used whenever {@code @Analyzer(definition = "foo")} is encountered
* and <strong>no</strong> {@code @AnalyzerDefinition} exists with the given name
* ("foo" in this example).
*
* @author Yoann Rodiere
*/
public class UndefinedElasticsearchAnalyzerImpl implements ElasticsearchAnalyzer {
private final String remoteName;
public UndefinedElasticsearchAnalyzerImpl(String remoteName) {
this.remoteName = remoteName;
}
@Override
public String getName(String fieldName) {
return remoteName;
}
@Override
public String registerDefinitions(ElasticsearchAnalysisDefinitionRegistry registry, String fieldName) {
// Nothing to do; we expect the analyzer to be already defined on the server.
return remoteName;
}
@Override
public void close() {
// nothing to do
}
@Override
public int hashCode() {
return remoteName.hashCode();
}
@Override
public boolean equals(Object obj) {
if ( obj instanceof UndefinedElasticsearchAnalyzerImpl ) {
UndefinedElasticsearchAnalyzerImpl other = (UndefinedElasticsearchAnalyzerImpl) obj;
return other.remoteName.equals( remoteName );
}
return false;
}
@Override
public String toString() {
StringBuilder sb = new StringBuilder();
sb.append( getClass().getSimpleName() );
sb.append( "<" );
sb.append( remoteName );
sb.append( ">" );
return sb.toString();
}
}