diff options
author | Henning Baldersheim <balder@yahoo-inc.com> | 2021-05-27 10:13:16 +0200 |
---|---|---|
committer | Henning Baldersheim <balder@yahoo-inc.com> | 2021-05-27 10:41:00 +0200 |
commit | b407dc4c674b81c28c38a98434ecafab80a62fc9 (patch) | |
tree | 6951d33bb7acfae8d9688597f0c809599c99bae6 /config-model/src/main/java/com/yahoo/searchdefinition/SearchBuilder.java | |
parent | 6b6e59869ab5259a8cd2e382cd2b5164a963a293 (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.java | 80 |
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(); ) { |