diff options
author | Jon Marius Venstad <venstad@gmail.com> | 2021-01-15 20:46:13 +0100 |
---|---|---|
committer | Jon Marius Venstad <venstad@gmail.com> | 2021-01-15 20:46:13 +0100 |
commit | ed79699c3758a7dd6483492d8f7bcccb2882fd17 (patch) | |
tree | 5529b2959fe1df4d1dff84d020ef1dc4ec4ee304 /config-model/src/main/java/com/yahoo/vespa/model/VespaModel.java | |
parent | 03801fa884fd8e3f351de2364526cc3170fb5a38 (diff) |
Move logic for indexed document types inside config model api wrapping
Diffstat (limited to 'config-model/src/main/java/com/yahoo/vespa/model/VespaModel.java')
-rw-r--r-- | config-model/src/main/java/com/yahoo/vespa/model/VespaModel.java | 39 |
1 files changed, 37 insertions, 2 deletions
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/VespaModel.java b/config-model/src/main/java/com/yahoo/vespa/model/VespaModel.java index acb4f58655d..660c47d037d 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/VespaModel.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/VespaModel.java @@ -35,6 +35,7 @@ import com.yahoo.searchdefinition.RankProfileRegistry; import com.yahoo.searchdefinition.RankingConstants; import com.yahoo.searchdefinition.derived.AttributeFields; import com.yahoo.searchdefinition.derived.RankProfileList; +import com.yahoo.searchdefinition.document.SDField; import com.yahoo.searchdefinition.processing.Processing; import com.yahoo.vespa.config.ConfigDefinitionKey; import com.yahoo.vespa.config.ConfigKey; @@ -81,6 +82,10 @@ import java.util.stream.Collectors; import static com.yahoo.config.codegen.ConfiggenUtil.createClassName; import static com.yahoo.text.StringUtilities.quote; +import static java.util.stream.Collectors.toMap; +import static java.util.stream.Collectors.toSet; +import static java.util.stream.Collectors.toUnmodifiableMap; +import static java.util.stream.Collectors.toUnmodifiableSet; /** * <p> @@ -202,6 +207,38 @@ public final class VespaModel extends AbstractConfigProducerRoot implements Seri } + @Override + public Map<String, Set<String>> documentTypesByCluster() { + return getContentClusters().entrySet().stream() + .collect(toMap(cluster -> cluster.getKey(), + cluster -> cluster.getValue().getDocumentDefinitions().keySet())); + } + + @Override + public Map<String, Set<String>> indexedDocumentTypesByCluster() { + return getContentClusters().entrySet().stream() + .collect(toUnmodifiableMap(cluster -> cluster.getKey(), + cluster -> documentTypesWithIndex(cluster.getValue()))); + } + + private static Set<String> documentTypesWithIndex(ContentCluster content) { + Set<String> typesWithIndexMode = content.getSearch().getDocumentTypesWithIndexedCluster().stream() + .map(type -> type.getFullName().getName()) + .collect(toSet()); + + Set<String> typesWithIndexedFields = content.getSearch().getIndexed() == null + ? Set.of() + : content.getSearch().getIndexed().getDocumentDbs().stream() + .filter(database -> database.getDerivedConfiguration() + .getSearch() + .allConcreteFields() + .stream().anyMatch(SDField::doesIndexing)) + .map(database -> database.getInputDocType()) + .collect(toSet()); + + return typesWithIndexMode.stream().filter(typesWithIndexedFields::contains).collect(toUnmodifiableSet()); + } + private void propagateRestartOnDeploy() { if (applicationPackage.getMetaData().isInternalRedeploy()) return; @@ -632,6 +669,4 @@ public final class VespaModel extends AbstractConfigProducerRoot implements Seri .collect(Collectors.toSet()); } - - } |