summaryrefslogtreecommitdiffstats
path: root/config-model/src/main/java/com/yahoo/searchdefinition
diff options
context:
space:
mode:
authorGeir Storli <geirst@oath.com>2017-12-06 16:55:36 -0800
committerGeir Storli <geirst@oath.com>2017-12-06 16:55:36 -0800
commit05a49aae7786d42764f82a996f8ebd5378a4c1db (patch)
tree1ac4f432197319df39a830124b13de41b447178e /config-model/src/main/java/com/yahoo/searchdefinition
parenta9adc2795c1a4daa02ac5e98635ffeb13732ed1b (diff)
Add validator that fails if imported predicate fields are used in document summaries (not supported).
Diffstat (limited to 'config-model/src/main/java/com/yahoo/searchdefinition')
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/processing/ImportedFieldsInSummayValidator.java63
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/processing/Processing.java1
2 files changed, 64 insertions, 0 deletions
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/processing/ImportedFieldsInSummayValidator.java b/config-model/src/main/java/com/yahoo/searchdefinition/processing/ImportedFieldsInSummayValidator.java
new file mode 100644
index 00000000000..eaa85815736
--- /dev/null
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/processing/ImportedFieldsInSummayValidator.java
@@ -0,0 +1,63 @@
+package com.yahoo.searchdefinition.processing;
+
+import com.yahoo.config.application.api.DeployLogger;
+import com.yahoo.document.DataType;
+import com.yahoo.searchdefinition.RankProfileRegistry;
+import com.yahoo.searchdefinition.Search;
+import com.yahoo.searchdefinition.document.ImportedField;
+import com.yahoo.vespa.documentmodel.DocumentSummary;
+import com.yahoo.vespa.documentmodel.SummaryField;
+import com.yahoo.vespa.model.container.search.QueryProfiles;
+
+import java.util.Map;
+
+/**
+ * Validates that imported fields in document summaries are of supported types.
+ * Currently, predicate fields are NOT supported.
+ *
+ * @author geirst
+ */
+public class ImportedFieldsInSummayValidator extends Processor {
+
+
+ public ImportedFieldsInSummayValidator(Search search, DeployLogger deployLogger, RankProfileRegistry rankProfileRegistry, QueryProfiles queryProfiles) {
+ super(search, deployLogger, rankProfileRegistry, queryProfiles);
+ }
+
+ @Override
+ public void process() {
+ if (search.importedFields().isPresent()) {
+ validateDocumentSummaries(search.getSummaries());
+ }
+ }
+
+ private void validateDocumentSummaries(Map<String, DocumentSummary> summaries) {
+ for (DocumentSummary summary : summaries.values()) {
+ for (SummaryField field : summary.getSummaryFields()) {
+ ImportedField importedField = getImportedField(field);
+ if (importedField != null) {
+ validateImportedSummaryField(summary, field, importedField);
+ }
+ }
+ }
+ }
+
+ private ImportedField getImportedField(SummaryField field) {
+ return search.importedFields().get().fields().get(field.getName());
+ }
+
+ private void validateImportedSummaryField(DocumentSummary summary, SummaryField field, ImportedField importedField) {
+ if (field.getDataType().equals(DataType.PREDICATE) &&
+ importedField.targetField().getDataType().equals(DataType.PREDICATE)) {
+ fail(summary, field, "Is of type predicate. Not supported in document summaries");
+ }
+ }
+
+ private void fail(DocumentSummary summary, SummaryField importedField, String msg) {
+ throw new IllegalArgumentException("For search '" + search.getName() + "', document summary '" + summary.getName() +
+ "', imported summary field '" + importedField.getName() + "': " + msg);
+ }
+}
+
+
+
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 26f98026d4f..90183848094 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
@@ -73,6 +73,7 @@ public class Processing {
TensorFieldProcessor::new,
RankProfileTypeSettingsProcessor::new,
ReferenceFieldsProcessor::new,
+ ImportedFieldsInSummayValidator::new,
FastAccessValidator::new,
ReservedMacroNames::new,