aboutsummaryrefslogtreecommitdiffstats
path: root/config-model/src/main/java/com/yahoo/vespa/model/VespaModel.java
diff options
context:
space:
mode:
authorJon Marius Venstad <venstad@gmail.com>2021-01-15 20:46:13 +0100
committerJon Marius Venstad <venstad@gmail.com>2021-01-15 20:46:13 +0100
commited79699c3758a7dd6483492d8f7bcccb2882fd17 (patch)
tree5529b2959fe1df4d1dff84d020ef1dc4ec4ee304 /config-model/src/main/java/com/yahoo/vespa/model/VespaModel.java
parent03801fa884fd8e3f351de2364526cc3170fb5a38 (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.java39
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());
}
-
-
}