summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorArne H Juul <arnej@yahooinc.com>2022-01-05 12:22:01 +0000
committerArne H Juul <arnej@yahooinc.com>2022-01-05 12:22:01 +0000
commit5bb45925503567cd9f3fa5f027e30381e2a90971 (patch)
tree82fb9e2568fc4c64795b1301ada3a39791cc4de6
parent5fa8505b29d4af13fbbd8d95069e3e8826d6f4a7 (diff)
let a schema Processor receive ModelContext.Properties as needed
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/SchemaBuilder.java10
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/processing/Processing.java19
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/processing/Processor.java8
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