diff options
Diffstat (limited to 'config-model/src/main/java/com/yahoo/searchdefinition')
3 files changed, 32 insertions, 5 deletions
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/SchemaBuilder.java b/config-model/src/main/java/com/yahoo/searchdefinition/SchemaBuilder.java index 098426865fb..51466a5dbfa 100644 --- a/config-model/src/main/java/com/yahoo/searchdefinition/SchemaBuilder.java +++ b/config-model/src/main/java/com/yahoo/searchdefinition/SchemaBuilder.java @@ -101,6 +101,7 @@ public class SchemaBuilder { public SchemaBuilder(RankProfileRegistry rankProfileRegistry, QueryProfileRegistry queryProfileRegistry) { this(rankProfileRegistry, queryProfileRegistry, new TestProperties()); } + public SchemaBuilder(RankProfileRegistry rankProfileRegistry, QueryProfileRegistry queryProfileRegistry, ModelContext.Properties properties) { this(MockApplicationPackage.createEmpty(), new MockFileRegistry(), new BaseDeployLogger(), properties, rankProfileRegistry, queryProfileRegistry); } @@ -113,6 +114,7 @@ public class SchemaBuilder { QueryProfileRegistry queryProfileRegistry) { this(app, fileRegistry, deployLogger, properties, rankProfileRegistry, queryProfileRegistry, false); } + private SchemaBuilder(ApplicationPackage applicationPackage, FileRegistry fileRegistry, DeployLogger deployLogger, @@ -265,8 +267,10 @@ public class SchemaBuilder { * #build()} method so that subclasses can choose not to build anything. */ private void process(Schema schema, QueryProfiles queryProfiles, boolean validate) { - new Processing().process(schema, deployLogger, rankProfileRegistry, queryProfiles, validate, - documentsOnly, processorsToSkip); + new Processing(properties).process(schema, deployLogger, + rankProfileRegistry, queryProfiles, + validate, documentsOnly, + processorsToSkip); } /** @@ -541,7 +545,9 @@ public class SchemaBuilder { public QueryProfileRegistry getQueryProfileRegistry() { return queryProfileRegistry; } + public ModelContext.Properties getProperties() { return properties; } + public DeployLogger getDeployLogger() { return deployLogger; } } 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 1d4b39dfcc5..c0ee0b5df53 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 @@ -6,6 +6,8 @@ import com.yahoo.searchdefinition.RankProfileRegistry; import com.yahoo.searchdefinition.Schema; import com.yahoo.searchdefinition.processing.multifieldresolver.RankProfileTypeSettingsProcessor; import com.yahoo.vespa.model.container.search.QueryProfiles; +import com.yahoo.config.model.api.ModelContext; +import com.yahoo.config.model.deploy.TestProperties; import java.util.Arrays; import java.util.Collection; @@ -19,6 +21,12 @@ import java.util.Set; */ public class Processing { + private final ModelContext.Properties properties; + + public Processing() { this.properties = new TestProperties(); } + + public Processing(ModelContext.Properties properties) { this.properties = properties; } + private Collection<ProcessorFactory> processors() { return Arrays.asList( SearchMustHaveDocument::new, @@ -95,6 +103,10 @@ public class Processing { RankingExpressionTypeResolver::new); } + private void runProcessor(Processor processor, boolean validate, boolean documentsOnly) { + processor.process(validate, documentsOnly, properties); + } + /** * Runs all search processors on the given {@link Schema} object. These will modify the search object, <b>possibly * exchanging it with another</b>, as well as its document types. @@ -107,12 +119,13 @@ public class Processing { */ public void process(Schema schema, DeployLogger deployLogger, RankProfileRegistry rankProfileRegistry, QueryProfiles queryProfiles, boolean validate, boolean documentsOnly, - Set<Class<? extends Processor>> processorsToSkip) { + Set<Class<? extends Processor>> processorsToSkip) + { Collection<ProcessorFactory> factories = processors(); factories.stream() .map(factory -> factory.create(schema, deployLogger, rankProfileRegistry, queryProfiles)) .filter(processor -> ! processorsToSkip.contains(processor.getClass())) - .forEach(processor -> processor.process(validate, documentsOnly)); + .forEach(processor -> runProcessor(processor, validate, documentsOnly)); } /** @@ -127,7 +140,7 @@ public class Processing { Collection<ProcessorFactory> factories = rankProfileProcessors(); factories.stream() .map(factory -> factory.create(null, deployLogger, rankProfileRegistry, queryProfiles)) - .forEach(processor -> processor.process(validate, documentsOnly)); + .forEach(processor -> runProcessor(processor, validate, documentsOnly)); } @FunctionalInterface diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/processing/Processor.java b/config-model/src/main/java/com/yahoo/searchdefinition/processing/Processor.java index e8f60335362..590681ffb86 100644 --- a/config-model/src/main/java/com/yahoo/searchdefinition/processing/Processor.java +++ b/config-model/src/main/java/com/yahoo/searchdefinition/processing/Processor.java @@ -2,6 +2,7 @@ package com.yahoo.searchdefinition.processing; import com.yahoo.config.application.api.DeployLogger; +import com.yahoo.config.model.api.ModelContext; import com.yahoo.document.DataType; import com.yahoo.document.Field; import com.yahoo.searchdefinition.Index; @@ -60,6 +61,13 @@ public abstract class Processor { public abstract void process(boolean validate, boolean documentsOnly); /** + * As above, possibly with properties from a context. Override if needed. + **/ + public void process(boolean validate, boolean documentsOnly, ModelContext.Properties properties) { + process(validate, documentsOnly); + } + + /** * Convenience method for adding a no-strings-attached implementation field for a regular field * * @param schema the search definition in question |