summaryrefslogtreecommitdiffstats
path: root/config-model/src/main/java/com/yahoo/searchdefinition/ImportedFieldsEnumerator.java
diff options
context:
space:
mode:
authorTor Brede Vekterli <vekterli@verizonmedia.com>2020-01-22 14:00:56 +0100
committerTor Brede Vekterli <vekterli@verizonmedia.com>2020-01-31 11:33:04 +0100
commit228d880395e9ae07e9e55ca315f381a1de91cc15 (patch)
tree22106e62dd47981a81ce5b9003b24962407ba622 /config-model/src/main/java/com/yahoo/searchdefinition/ImportedFieldsEnumerator.java
parentdec299cb5de9111f29ae835cf8e7dbc6e0f88a4d (diff)
Add imported fields to document configs
This adds the field names of all imported fields in a search definition to the document configs associated with it (document manager and document types config for Java and C++, respectively). This enables consumers of these configs to distinguish between field references to imported fields and fields that don't exist in the document schema itself.
Diffstat (limited to 'config-model/src/main/java/com/yahoo/searchdefinition/ImportedFieldsEnumerator.java')
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/ImportedFieldsEnumerator.java32
1 files changed, 32 insertions, 0 deletions
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/ImportedFieldsEnumerator.java b/config-model/src/main/java/com/yahoo/searchdefinition/ImportedFieldsEnumerator.java
new file mode 100644
index 00000000000..c736ca8e9dc
--- /dev/null
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/ImportedFieldsEnumerator.java
@@ -0,0 +1,32 @@
+package com.yahoo.searchdefinition;
+
+import com.yahoo.searchdefinition.document.SDDocumentType;
+import com.yahoo.searchdefinition.document.TemporaryImportedFields;
+
+import java.util.Collections;
+import java.util.List;
+
+/**
+ * Enumerates and emplaces a set of all imported fields into a SDDocumentType from
+ * its corresponding Search instance.
+ */
+public class ImportedFieldsEnumerator {
+
+ private final List<Search> searchDefinitions;
+
+ public ImportedFieldsEnumerator(List<Search> searchDefinitions) {
+ this.searchDefinitions = searchDefinitions;
+ }
+
+ public void enumerateImportedFields(SDDocumentType documentType) {
+ var search = this.searchDefinitions.stream()
+ .filter(s -> s.getDocument() != null)
+ .filter(s -> s.getDocument().getName().equals(documentType.getName()))
+ .findFirst();
+ if (search.isEmpty()) {
+ return; // No imported fields present.
+ }
+ search.get().temporaryImportedFields().ifPresent(documentType::setTemporaryImportedFields);
+ }
+
+}