/*
* 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;
import org.hibernate.search.elasticsearch.settings.impl.model.AnalyzerDefinition;
import org.hibernate.search.elasticsearch.settings.impl.model.CharFilterDefinition;
import org.hibernate.search.elasticsearch.settings.impl.model.TokenFilterDefinition;
import org.hibernate.search.elasticsearch.settings.impl.model.TokenizerDefinition;
/**
* An {@link ElasticsearchAnalysisDefinitionRegistry} that delegate calls
* to a "parent" registry when no definition is found.
* <p>
* Mutating calls ({@code register} methods) are never delegated to the parent.
*
* @author Yoann Rodiere
*/
public final class ChainingElasticsearchAnalysisDefinitionRegistry implements ElasticsearchAnalysisDefinitionRegistry {
private final ElasticsearchAnalysisDefinitionRegistry parent;
private final ElasticsearchAnalysisDefinitionRegistry self = new SimpleElasticsearchAnalysisDefinitionRegistry();
public ChainingElasticsearchAnalysisDefinitionRegistry(ElasticsearchAnalysisDefinitionRegistry parent) {
this.parent = parent;
}
@Override
public void register(String name, AnalyzerDefinition definition) {
self.register( name, definition );
}
@Override
public void register(String name, TokenizerDefinition definition) {
self.register( name, definition );
}
@Override
public void register(String name, TokenFilterDefinition definition) {
self.register( name, definition );
}
@Override
public void register(String name, CharFilterDefinition definition) {
self.register( name, definition );
}
@Override
public AnalyzerDefinition getAnalyzerDefinition(String name) {
AnalyzerDefinition result = self.getAnalyzerDefinition( name );
if ( result == null ) {
result = parent.getAnalyzerDefinition( name );
}
return result;
}
@Override
public TokenizerDefinition getTokenizerDefinition(String name) {
TokenizerDefinition result = self.getTokenizerDefinition( name );
if ( result == null ) {
result = parent.getTokenizerDefinition( name );
}
return result;
}
@Override
public TokenFilterDefinition getTokenFilterDefinition(String name) {
TokenFilterDefinition result = self.getTokenFilterDefinition( name );
if ( result == null ) {
result = parent.getTokenFilterDefinition( name );
}
return result;
}
@Override
public CharFilterDefinition getCharFilterDefinition(String name) {
CharFilterDefinition result = self.getCharFilterDefinition( name );
if ( result == null ) {
result = parent.getCharFilterDefinition( name );
}
return result;
}
}