summaryrefslogtreecommitdiffstats
path: root/container-search/src/main/java/com/yahoo/prelude/fastsearch/DocsumDefinitionSet.java
diff options
context:
space:
mode:
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.java38
1 files changed, 16 insertions, 22 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 1e0cfa3be9e..51da9965fea 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,7 +1,8 @@
// 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.google.common.collect.ImmutableMap;
+import com.yahoo.search.schema.DocumentSummary;
+import com.yahoo.search.schema.Schema;
import com.yahoo.slime.BinaryFormat;
import com.yahoo.data.access.Inspector;
import com.yahoo.slime.Slime;
@@ -10,10 +11,8 @@ 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;
import java.util.stream.Collectors;
import static com.yahoo.data.access.Type.OBJECT;
@@ -27,16 +26,18 @@ import static com.yahoo.data.access.Type.OBJECT;
public final class DocsumDefinitionSet {
public static final int SLIME_MAGIC_ID = 0x55555555;
- private final static Logger log = Logger.getLogger(DocsumDefinitionSet.class.getName());
private final Map<String, DocsumDefinition> definitionsByName;
- public DocsumDefinitionSet(DocumentdbInfoConfig.Documentdb config) {
- this(toDocsums(config));
+ public DocsumDefinitionSet(Schema schema) {
+ this(schema.documentSummaries().values());
}
- public DocsumDefinitionSet(Collection<DocsumDefinition> docsumDefinitions) {
- this.definitionsByName = ImmutableMap.copyOf(docsumDefinitions.stream().collect(Collectors.toMap(DocsumDefinition::getName, p -> p)));
+ public DocsumDefinitionSet(Collection<DocumentSummary> docsumDefinitions) {
+ this.definitionsByName = docsumDefinitions.stream()
+ .map(summary -> new DocsumDefinition(summary))
+ .collect(Collectors.toUnmodifiableMap(summary -> summary.name(),
+ summary -> summary));
}
/**
@@ -45,20 +46,22 @@ 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;
}
/** Do we have a summary definition with the given name */
public boolean hasDocsum(String summaryClass) {
+ if (summaryClass == null)
+ summaryClass = "default";
return definitionsByName.containsKey(summaryClass);
}
@@ -95,7 +98,7 @@ public final class DocsumDefinitionSet {
if (sb.length() != 0) {
sb.append(",");
}
- sb.append("[").append(e.getKey()).append(",").append(e.getValue().getName()).append("]");
+ sb.append("[").append(e.getKey()).append(",").append(e.getValue().name()).append("]");
}
return sb.toString();
}
@@ -104,13 +107,4 @@ 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;
- }
-
}