aboutsummaryrefslogtreecommitdiffstats
path: root/config-model/src/main/java/com/yahoo/searchdefinition/SearchBuilder.java
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2021-05-27 10:13:16 +0200
committerHenning Baldersheim <balder@yahoo-inc.com>2021-05-27 10:41:00 +0200
commitb407dc4c674b81c28c38a98434ecafab80a62fc9 (patch)
tree6951d33bb7acfae8d9688597f0c809599c99bae6 /config-model/src/main/java/com/yahoo/searchdefinition/SearchBuilder.java
parent6b6e59869ab5259a8cd2e382cd2b5164a963a293 (diff)
Forward deployment properties so that we can use featureflags earlier in the configmodel building.
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.java80
1 files changed, 46 insertions, 34 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 fc110504f4d..537613d3b43 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/SearchBuilder.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/SearchBuilder.java
@@ -3,7 +3,9 @@ package com.yahoo.searchdefinition;
import com.yahoo.config.application.api.ApplicationPackage;
import com.yahoo.config.application.api.DeployLogger;
+import com.yahoo.config.model.api.ModelContext;
import com.yahoo.config.model.application.provider.BaseDeployLogger;
+import com.yahoo.config.model.deploy.TestProperties;
import com.yahoo.config.model.test.MockApplicationPackage;
import com.yahoo.document.DocumentTypeManager;
import com.yahoo.io.IOUtils;
@@ -46,12 +48,13 @@ public class SearchBuilder {
private final RankProfileRegistry rankProfileRegistry;
private final QueryProfileRegistry queryProfileRegistry;
private final DeployLogger deployLogger;
- private List<Search> searchList = new LinkedList<>();
- private boolean isBuilt = false;
-
+ private final ModelContext.Properties properties;
/** True to build the document aspect only, skipping instantiation of rank profiles */
private final boolean documentsOnly;
+ private List<Search> searchList = new LinkedList<>();
+ private boolean isBuilt = false;
+
/** For testing only */
public SearchBuilder() {
this(new RankProfileRegistry(), new QueryProfileRegistry());
@@ -69,17 +72,17 @@ public class SearchBuilder {
/** Used for generating documents for typed access to document fields in Java */
public SearchBuilder(boolean documentsOnly) {
- this(MockApplicationPackage.createEmpty(), new BaseDeployLogger(), new RankProfileRegistry(), new QueryProfileRegistry(), documentsOnly);
+ this(MockApplicationPackage.createEmpty(), new BaseDeployLogger(), new TestProperties(), new RankProfileRegistry(), new QueryProfileRegistry(), documentsOnly);
}
/** For testing only */
public SearchBuilder(ApplicationPackage app, DeployLogger deployLogger) {
- this(app, deployLogger, new RankProfileRegistry(), new QueryProfileRegistry());
+ this(app, deployLogger, new TestProperties(), new RankProfileRegistry(), new QueryProfileRegistry());
}
/** For testing only */
public SearchBuilder(ApplicationPackage app, DeployLogger deployLogger, RankProfileRegistry rankProfileRegistry) {
- this(app, deployLogger, rankProfileRegistry, new QueryProfileRegistry());
+ this(app, deployLogger, new TestProperties(), rankProfileRegistry, new QueryProfileRegistry());
}
/** For testing only */
@@ -89,17 +92,19 @@ public class SearchBuilder {
/** For testing only */
public SearchBuilder(RankProfileRegistry rankProfileRegistry, QueryProfileRegistry queryProfileRegistry) {
- this(MockApplicationPackage.createEmpty(), new BaseDeployLogger(), rankProfileRegistry, queryProfileRegistry);
+ this(MockApplicationPackage.createEmpty(), new BaseDeployLogger(), new TestProperties(), rankProfileRegistry, queryProfileRegistry);
}
public SearchBuilder(ApplicationPackage app,
DeployLogger deployLogger,
+ ModelContext.Properties properties,
RankProfileRegistry rankProfileRegistry,
QueryProfileRegistry queryProfileRegistry) {
- this(app, deployLogger, rankProfileRegistry, queryProfileRegistry, false);
+ this(app, deployLogger, properties, rankProfileRegistry, queryProfileRegistry, false);
}
private SearchBuilder(ApplicationPackage app,
DeployLogger deployLogger,
+ ModelContext.Properties properties,
RankProfileRegistry rankProfileRegistry,
QueryProfileRegistry queryProfileRegistry,
boolean documentsOnly) {
@@ -107,6 +112,7 @@ public class SearchBuilder {
this.rankProfileRegistry = rankProfileRegistry;
this.queryProfileRegistry = queryProfileRegistry;
this.deployLogger = deployLogger;
+ this.properties = properties;
this.documentsOnly = documentsOnly;
}
@@ -154,7 +160,7 @@ public class SearchBuilder {
private String importString(String str, String searchDefDir) throws ParseException {
SimpleCharStream stream = new SimpleCharStream(str);
try {
- return importRawSearch(new SDParser(stream, deployLogger, app, rankProfileRegistry, documentsOnly)
+ return importRawSearch(new SDParser(stream, deployLogger, properties, app, rankProfileRegistry, documentsOnly)
.search(docTypeMgr, searchDefDir));
} catch (TokenMgrException e) {
throw new ParseException("Unknown symbol: " + e.getMessage());
@@ -234,7 +240,7 @@ public class SearchBuilder {
var builder = new DocumentModelBuilder(model);
for (Search search : new SearchOrderer().order(searchList)) {
new FieldOperationApplierForSearch().process(search); // TODO: Why is this not in the regular list?
- process(search, deployLogger, new QueryProfiles(queryProfileRegistry, deployLogger), validate);
+ process(search, new QueryProfiles(queryProfileRegistry, deployLogger), validate);
built.add(search);
}
builder.addToModel(searchList);
@@ -249,7 +255,7 @@ public class SearchBuilder {
* 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.
*/
- protected void process(Search search, DeployLogger deployLogger, QueryProfiles queryProfiles, boolean validate) {
+ private void process(Search search, QueryProfiles queryProfiles, boolean validate) {
new Processing().process(search, deployLogger, rankProfileRegistry, queryProfiles, validate, documentsOnly);
}
@@ -340,8 +346,8 @@ public class SearchBuilder {
return createFromFile(fileName, logger, new RankProfileRegistry(), new QueryProfileRegistry());
}
- public static SearchBuilder createFromFiles(Collection<String> fileNames, DeployLogger logger) throws IOException, ParseException {
- return createFromFiles(fileNames, logger, new RankProfileRegistry(), new QueryProfileRegistry());
+ private static SearchBuilder createFromFiles(Collection<String> fileNames, DeployLogger logger) throws IOException, ParseException {
+ return createFromFiles(fileNames, logger, new TestProperties(), new RankProfileRegistry(), new QueryProfileRegistry());
}
/**
@@ -354,25 +360,27 @@ public class SearchBuilder {
* @throws IOException if there was a problem reading the file.
* @throws ParseException if there was a problem parsing the file content.
*/
- public static SearchBuilder createFromFile(String fileName,
+ private static SearchBuilder createFromFile(String fileName,
DeployLogger deployLogger,
RankProfileRegistry rankProfileRegistry,
QueryProfileRegistry queryprofileRegistry)
throws IOException, ParseException {
- return createFromFiles(Collections.singletonList(fileName), deployLogger,
+ return createFromFiles(Collections.singletonList(fileName), deployLogger, new TestProperties(),
rankProfileRegistry, queryprofileRegistry);
}
/**
* Convenience factory methdd to create a SearchBuilder from multiple SD files..
*/
- public static SearchBuilder createFromFiles(Collection<String> fileNames,
+ private static SearchBuilder createFromFiles(Collection<String> fileNames,
DeployLogger deployLogger,
+ ModelContext.Properties properties,
RankProfileRegistry rankProfileRegistry,
QueryProfileRegistry queryprofileRegistry)
throws IOException, ParseException {
SearchBuilder builder = new SearchBuilder(MockApplicationPackage.createEmpty(),
deployLogger,
+ properties,
rankProfileRegistry,
queryprofileRegistry);
for (String fileName : fileNames) {
@@ -382,28 +390,32 @@ public class SearchBuilder {
return builder;
}
- public static SearchBuilder createFromDirectory(String dir, DeployLogger logger) throws IOException, ParseException {
- return createFromDirectory(dir, new RankProfileRegistry(), logger);
- }
- public static SearchBuilder createFromDirectory(String dir,
- RankProfileRegistry rankProfileRegistry,
- DeployLogger logger) throws IOException, ParseException {
- return createFromDirectory(dir, rankProfileRegistry, createQueryProfileRegistryFromDirectory(dir), logger);
+ public static SearchBuilder createFromDirectory(String dir, DeployLogger logger, ModelContext.Properties properties) throws IOException, ParseException {
+ return createFromDirectory(dir, logger, properties, new RankProfileRegistry());
}
public static SearchBuilder createFromDirectory(String dir,
- RankProfileRegistry rankProfileRegistry,
- QueryProfileRegistry queryProfileRegistry,
- DeployLogger logger) throws IOException, ParseException {
- return createFromDirectory(dir, rankProfileRegistry, queryProfileRegistry, logger, MockApplicationPackage.fromSearchDefinitionDirectory(dir));
- }
-
- public static SearchBuilder createFromDirectory(String dir,
- RankProfileRegistry rankProfileRegistry,
- QueryProfileRegistry queryProfileRegistry,
- DeployLogger deployLogger,
- ApplicationPackage applicationPackage) throws IOException, ParseException {
+ DeployLogger logger,
+ ModelContext.Properties properties,
+ RankProfileRegistry rankProfileRegistry) throws IOException, ParseException {
+ return createFromDirectory(dir, logger, properties, rankProfileRegistry, createQueryProfileRegistryFromDirectory(dir));
+ }
+ private static SearchBuilder createFromDirectory(String dir,
+ DeployLogger logger,
+ ModelContext.Properties properties,
+ RankProfileRegistry rankProfileRegistry,
+ QueryProfileRegistry queryProfileRegistry) throws IOException, ParseException {
+ return createFromDirectory(dir, MockApplicationPackage.fromSearchDefinitionDirectory(dir), logger, properties, rankProfileRegistry, queryProfileRegistry);
+ }
+
+ private static SearchBuilder createFromDirectory(String dir,
+ ApplicationPackage applicationPackage,
+ DeployLogger deployLogger,
+ ModelContext.Properties properties,
+ RankProfileRegistry rankProfileRegistry,
+ QueryProfileRegistry queryProfileRegistry) throws IOException, ParseException {
SearchBuilder builder = new SearchBuilder(applicationPackage,
deployLogger,
+ properties,
rankProfileRegistry,
queryProfileRegistry);
for (Iterator<Path> i = Files.list(new File(dir).toPath()).filter(p -> p.getFileName().toString().endsWith(".sd")).iterator(); i.hasNext(); ) {