diff options
author | Bjørn Christian Seime <bjorncs@yahoo-inc.com> | 2017-01-18 14:34:09 +0100 |
---|---|---|
committer | Bjørn Christian Seime <bjorncs@yahoo-inc.com> | 2017-01-18 14:34:09 +0100 |
commit | 583feccee37112e4cfeac481f2a909bc84258cbc (patch) | |
tree | 1f4795b8d567e72e2ad9eb646b6b2037f748118f /config-model | |
parent | 185815c1ee460233d4d819a6688c5e3e81304d1b (diff) |
Remove duplicate code pattern
Diffstat (limited to 'config-model')
-rw-r--r-- | config-model/src/main/java/com/yahoo/searchdefinition/processing/Processing.java | 120 |
1 files changed, 69 insertions, 51 deletions
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/processing/Processing.java b/config-model/src/main/java/com/yahoo/searchdefinition/processing/Processing.java index bb3ff0ac434..81797e5c5b3 100644 --- a/config-model/src/main/java/com/yahoo/searchdefinition/processing/Processing.java +++ b/config-model/src/main/java/com/yahoo/searchdefinition/processing/Processing.java @@ -7,13 +7,75 @@ import com.yahoo.searchdefinition.Search; import com.yahoo.searchdefinition.processing.multifieldresolver.RankProfileTypeSettingsProcessor; import com.yahoo.vespa.model.container.search.QueryProfiles; +import java.util.Arrays; +import java.util.List; + /** * Executor of processors. This defines the right order of processor execution. * * @author bratseth + * @author bjorncs */ public class Processing { + private static final List<ProcessorFactory> factories = createProcessorFactories(); + + private static List<ProcessorFactory> createProcessorFactories() { + return Arrays.asList( + SearchMustHaveDocument::new, + UrlFieldValidator::new, + BuiltInFieldSets::new, + ReservedDocumentNames::new, + IndexFieldNames::new, + IntegerIndex2Attribute::new, + MakeAliases::new, + SetLanguage::new, + UriHack::new, + LiteralBoost::new, + IndexTo2FieldSet::new, + TagType::new, + IndexingInputs::new, + OptimizeIlscript::new, + ValidateFieldWithIndexSettingsCreatesIndex::new, + AttributesImplicitWord::new, + CreatePositionZCurve::new, + WordMatch::new, + DeprecateAttributePrefetch::new, + ImplicitSummaries::new, + ImplicitSummaryFields::new, + SummaryConsistency::new, + SummaryNamesFieldCollisions::new, + SummaryFieldsMustHaveValidSource::new, + MakeDefaultSummaryTheSuperSet::new, + Bolding::new, + AttributeProperties::new, + SetRankTypeEmptyOnFilters::new, + IndexSettingsNonFieldNames::new, + SummaryDynamicStructsArrays::new, + StringSettingsOnNonStringFields::new, + IndexingOutputs::new, + ExactMatch::new, + NGramMatch::new, + TextMatch::new, + MultifieldIndexHarmonizer::new, + FilterFieldNames::new, + MatchConsistency::new, + ValidateFieldTypes::new, + DisallowComplexMapAndWsetKeyTypes::new, + SortingSettings::new, + FieldSetValidity::new, + AddExtraFieldsToDocument::new, + PredicateProcessor::new, + MatchPhaseSettingsValidator::new, + DiversitySettingsValidator::new, + TensorFieldProcessor::new, + RankProfileTypeSettingsProcessor::new, + + // These two should be last. + IndexingValidation::new, + IndexingValues::new); + } + /** * Runs all search processors on the given {@link Search} object. These will modify the search object, <b>possibly * exchanging it with another</b>, as well as its document types. @@ -28,57 +90,13 @@ public class Processing { RankProfileRegistry rankProfileRegistry, QueryProfiles queryProfiles) { search.process(); - new SearchMustHaveDocument(search, deployLogger, rankProfileRegistry, queryProfiles).process(); - new UrlFieldValidator(search, deployLogger, rankProfileRegistry, queryProfiles).process(); - new BuiltInFieldSets(search, deployLogger, rankProfileRegistry, queryProfiles).process(); - new ReservedDocumentNames(search, deployLogger, rankProfileRegistry, queryProfiles).process(); - new IndexFieldNames(search, deployLogger, rankProfileRegistry, queryProfiles).process(); - new IntegerIndex2Attribute(search, deployLogger, rankProfileRegistry, queryProfiles).process(); - new MakeAliases(search, deployLogger, rankProfileRegistry, queryProfiles).process(); - new SetLanguage(search, deployLogger, rankProfileRegistry, queryProfiles).process(); // Needs to come before UriHack, see ticket 6405470 - new UriHack(search, deployLogger, rankProfileRegistry, queryProfiles).process(); - new LiteralBoost(search, deployLogger, rankProfileRegistry, queryProfiles).process(); - new IndexTo2FieldSet(search, deployLogger, rankProfileRegistry, queryProfiles).process(); - new TagType(search, deployLogger, rankProfileRegistry, queryProfiles).process(); - new IndexingInputs(search, deployLogger, rankProfileRegistry, queryProfiles).process(); - new OptimizeIlscript(search, deployLogger, rankProfileRegistry, queryProfiles).process(); - new ValidateFieldWithIndexSettingsCreatesIndex(search, deployLogger, rankProfileRegistry, queryProfiles).process(); - new AttributesImplicitWord(search, deployLogger, rankProfileRegistry, queryProfiles).process(); - new CreatePositionZCurve(search, deployLogger, rankProfileRegistry, queryProfiles).process(); - new WordMatch(search, deployLogger, rankProfileRegistry, queryProfiles).process(); - new DeprecateAttributePrefetch(search, deployLogger, rankProfileRegistry, queryProfiles).process(); - new ImplicitSummaries(search, deployLogger, rankProfileRegistry, queryProfiles).process(); - new ImplicitSummaryFields(search, deployLogger, rankProfileRegistry, queryProfiles).process(); - new SummaryConsistency(search, deployLogger, rankProfileRegistry, queryProfiles).process(); - new SummaryNamesFieldCollisions(search, deployLogger, rankProfileRegistry, queryProfiles).process(); - new SummaryFieldsMustHaveValidSource(search, deployLogger, rankProfileRegistry, queryProfiles).process(); - new MakeDefaultSummaryTheSuperSet(search, deployLogger, rankProfileRegistry, queryProfiles).process(); - new Bolding(search, deployLogger, rankProfileRegistry, queryProfiles).process(); - new AttributeProperties(search, deployLogger, rankProfileRegistry, queryProfiles).process(); - new SetRankTypeEmptyOnFilters(search, deployLogger, rankProfileRegistry, queryProfiles).process(); - new IndexSettingsNonFieldNames(search, deployLogger, rankProfileRegistry, queryProfiles).process(); - new SummaryDynamicStructsArrays(search, deployLogger, rankProfileRegistry, queryProfiles).process(); - new StringSettingsOnNonStringFields(search, deployLogger, rankProfileRegistry, queryProfiles).process(); - new IndexingOutputs(search, deployLogger, rankProfileRegistry, queryProfiles).process(); - new ExactMatch(search, deployLogger, rankProfileRegistry, queryProfiles).process(); - new NGramMatch(search, deployLogger, rankProfileRegistry, queryProfiles).process(); - new TextMatch(search, deployLogger, rankProfileRegistry, queryProfiles).process(); - new MultifieldIndexHarmonizer(search, deployLogger, rankProfileRegistry, queryProfiles).process(); - new FilterFieldNames(search, deployLogger, rankProfileRegistry, queryProfiles).process(); - new MatchConsistency(search, deployLogger, rankProfileRegistry, queryProfiles).process(); - new ValidateFieldTypes(search, deployLogger, rankProfileRegistry, queryProfiles).process(); - new DisallowComplexMapAndWsetKeyTypes(search, deployLogger, rankProfileRegistry, queryProfiles).process(); - new SortingSettings(search, deployLogger, rankProfileRegistry, queryProfiles).process(); - new FieldSetValidity(search, deployLogger, rankProfileRegistry, queryProfiles).process(); - new AddExtraFieldsToDocument(search, deployLogger, rankProfileRegistry, queryProfiles).process(); - new PredicateProcessor(search, deployLogger, rankProfileRegistry, queryProfiles).process(); - new MatchPhaseSettingsValidator(search, deployLogger, rankProfileRegistry, queryProfiles).process(); - new DiversitySettingsValidator(search, deployLogger, rankProfileRegistry, queryProfiles).process(); - new TensorFieldProcessor(search, deployLogger, rankProfileRegistry, queryProfiles).process(); - new RankProfileTypeSettingsProcessor(search, deployLogger, rankProfileRegistry, queryProfiles).process(); + factories.stream() + .map(factory -> factory.create(search, deployLogger, rankProfileRegistry, queryProfiles)) + .forEach(Processor::process); + } - // These two should be last. - new IndexingValidation(search, deployLogger, rankProfileRegistry, queryProfiles).process(); - new IndexingValues(search, deployLogger, rankProfileRegistry, queryProfiles).process(); + @FunctionalInterface + public interface ProcessorFactory { + Processor create(Search search, DeployLogger deployLogger, RankProfileRegistry rankProfileRegistry, QueryProfiles queryProfiles); } } |