summaryrefslogtreecommitdiffstats
path: root/config-model/src/main/java/com/yahoo/searchdefinition/SearchBuilder.java
diff options
context:
space:
mode:
authorBjørn Christian Seime <bjorncs@yahoo-inc.com>2017-01-25 16:34:45 +0100
committerBjørn Christian Seime <bjorncs@yahoo-inc.com>2017-01-25 16:34:45 +0100
commit57f8c9b3df28c4b24ce7f18727ac89c3c5987954 (patch)
tree4c228d6279e76c3d938cfe438153b9a743b762fb /config-model/src/main/java/com/yahoo/searchdefinition/SearchBuilder.java
parente95b6cf8b4f348ed2d182eeeb57088a390e529f2 (diff)
Resolve document references in search builder
Diffstat (limited to 'config-model/src/main/java/com/yahoo/searchdefinition/SearchBuilder.java')
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/SearchBuilder.java18
1 files changed, 15 insertions, 3 deletions
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/SearchBuilder.java b/config-model/src/main/java/com/yahoo/searchdefinition/SearchBuilder.java
index 9c9bc559dc3..d239c0301ef 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/SearchBuilder.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/SearchBuilder.java
@@ -8,7 +8,6 @@ import com.yahoo.config.model.test.MockApplicationPackage;
import com.yahoo.document.DocumentTypeManager;
import com.yahoo.io.IOUtils;
import com.yahoo.io.reader.NamedReader;
-import com.yahoo.search.query.profile.QueryProfileRegistry;
import com.yahoo.searchdefinition.derived.SearchOrderer;
import com.yahoo.searchdefinition.document.SDDocumentType;
import com.yahoo.searchdefinition.parser.ParseException;
@@ -23,7 +22,10 @@ import java.io.File;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.LinkedList;
+import java.util.List;
/**
* Helper class for importing {@link Search} objects in an unambiguous way. The pattern for using this is to 1) Import
@@ -230,6 +232,8 @@ public class SearchBuilder {
new FieldOperationApplier().process(sdoc);
}
+ resolveDocumentReferences();
+
DocumentModelBuilder builder = new DocumentModelBuilder(model);
for (Search search : new SearchOrderer().order(searchList)) {
new FieldOperationApplierForSearch().process(search);
@@ -244,7 +248,15 @@ public class SearchBuilder {
searchList = built;
isBuilt = true;
}
-
+
+ private void resolveDocumentReferences() {
+ DocumentReferenceResolver resolver = new DocumentReferenceResolver(searchList);
+ searchList.stream()
+ .filter(Search::hasDocument)
+ .map(Search::getDocument)
+ .forEach(resolver::resolveReferences);
+ }
+
/**
* Processes and returns the given {@link Search} object. This method has been factored out of the {@link
* #build()} method so that subclasses can choose not to build anything.