diff options
Diffstat (limited to 'container-search/src/main/java/com/yahoo/prelude/fastsearch/DocsumDefinitionSet.java')
-rw-r--r-- | container-search/src/main/java/com/yahoo/prelude/fastsearch/DocsumDefinitionSet.java | 34 |
1 files changed, 20 insertions, 14 deletions
diff --git a/container-search/src/main/java/com/yahoo/prelude/fastsearch/DocsumDefinitionSet.java b/container-search/src/main/java/com/yahoo/prelude/fastsearch/DocsumDefinitionSet.java index 2b26cd29b78..1e0cfa3be9e 100644 --- a/container-search/src/main/java/com/yahoo/prelude/fastsearch/DocsumDefinitionSet.java +++ b/container-search/src/main/java/com/yahoo/prelude/fastsearch/DocsumDefinitionSet.java @@ -1,8 +1,7 @@ // Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. package com.yahoo.prelude.fastsearch; -import com.yahoo.search.schema.DocumentSummary; -import com.yahoo.search.schema.Schema; +import com.google.common.collect.ImmutableMap; import com.yahoo.slime.BinaryFormat; import com.yahoo.data.access.Inspector; import com.yahoo.slime.Slime; @@ -11,6 +10,7 @@ import com.yahoo.prelude.ConfigurationException; import java.nio.ByteBuffer; import java.nio.ByteOrder; +import java.util.ArrayList; import java.util.Collection; import java.util.Map; import java.util.logging.Logger; @@ -31,15 +31,12 @@ public final class DocsumDefinitionSet { private final Map<String, DocsumDefinition> definitionsByName; - public DocsumDefinitionSet(Schema schema) { - this(schema.documentSummaries().values()); + public DocsumDefinitionSet(DocumentdbInfoConfig.Documentdb config) { + this(toDocsums(config)); } - public DocsumDefinitionSet(Collection<DocumentSummary> docsumDefinitions) { - this.definitionsByName = docsumDefinitions.stream() - .map(summary -> new DocsumDefinition(summary)) - .collect(Collectors.toUnmodifiableMap(summary -> summary.name(), - summary -> summary)); + public DocsumDefinitionSet(Collection<DocsumDefinition> docsumDefinitions) { + this.definitionsByName = ImmutableMap.copyOf(docsumDefinitions.stream().collect(Collectors.toMap(DocsumDefinition::getName, p -> p))); } /** @@ -48,15 +45,15 @@ public final class DocsumDefinitionSet { * @throws ConfigurationException if the requested summary class is not found and there is none called "default" */ public DocsumDefinition getDocsum(String summaryClass) { - if (summaryClass == null) - summaryClass = "default"; DocsumDefinition ds = definitionsByName.get(summaryClass); - if (ds == null) + if (ds == null) { ds = definitionsByName.get("default"); - if (ds == null) + } + if (ds == null) { throw new ConfigurationException("Fetched hit with summary class " + summaryClass + ", but this summary class is not in current summary config (" + this + ")" + " (that is, you asked for something unknown, and no default was found)"); + } return ds; } @@ -98,7 +95,7 @@ public final class DocsumDefinitionSet { if (sb.length() != 0) { sb.append(","); } - sb.append("[").append(e.getKey()).append(",").append(e.getValue().name()).append("]"); + sb.append("[").append(e.getKey()).append(",").append(e.getValue().getName()).append("]"); } return sb.toString(); } @@ -107,4 +104,13 @@ public final class DocsumDefinitionSet { return definitionsByName.size(); } + private static Collection<DocsumDefinition> toDocsums(DocumentdbInfoConfig.Documentdb config) { + Collection<DocsumDefinition> docsums = new ArrayList<>(); + for (int i = 0; i < config.summaryclass().size(); ++i) + docsums.add(new DocsumDefinition(config.summaryclass(i))); + if (docsums.isEmpty()) + log.warning("No summary classes found in DocumentdbInfoConfig.Documentdb"); + return docsums; + } + } |