diff options
author | Jon Bratseth <bratseth@oath.com> | 2018-04-22 16:58:39 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-04-22 16:58:39 +0200 |
commit | 222d3d6d4a04fa441cba7f4e1e03700867f76f5c (patch) | |
tree | 6df994dba98f97e7cd89e1f2281671c192d52c0b /container-search/src/main/java/com/yahoo/prelude/fastsearch/DocsumDefinitionSet.java | |
parent | 416381813ecc71079cebdfc2fbea53db50714014 (diff) |
Revert "Bratseth/dispatch summaries take 4"
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 | 72 |
1 files changed, 34 insertions, 38 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 c9e771fe48c..8d882adeb02 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,6 @@ // Copyright 2017 Yahoo Holdings. 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.slime.BinaryFormat; import com.yahoo.data.access.Inspector; import com.yahoo.slime.Slime; @@ -11,11 +10,9 @@ import com.yahoo.container.search.LegacyEmulationConfig; import java.nio.ByteBuffer; import java.nio.ByteOrder; -import java.util.ArrayList; -import java.util.Collection; +import java.util.HashMap; import java.util.Map; import java.util.logging.Logger; -import java.util.stream.Collectors; import static com.yahoo.data.access.Type.OBJECT; @@ -30,44 +27,29 @@ 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; + private final HashMap<String, DocsumDefinition> definitionsByName = new HashMap<>(); private final LegacyEmulationConfig emulationConfig; public DocsumDefinitionSet(DocumentdbInfoConfig.Documentdb config) { - this(config, new LegacyEmulationConfig(new LegacyEmulationConfig.Builder())); + this.emulationConfig = new LegacyEmulationConfig(new LegacyEmulationConfig.Builder()); + configure(config); } public DocsumDefinitionSet(DocumentdbInfoConfig.Documentdb config, LegacyEmulationConfig emulConfig) { - this(toDocsums(config, emulConfig), emulConfig); - } - - public DocsumDefinitionSet(Collection<DocsumDefinition> docsumDefinitions) { - this(docsumDefinitions, new LegacyEmulationConfig(new LegacyEmulationConfig.Builder())); - } - - public DocsumDefinitionSet(Collection<DocsumDefinition> docsumDefinitions, LegacyEmulationConfig emulConfig) { - this.definitionsByName = ImmutableMap.copyOf(docsumDefinitions.stream().collect(Collectors.toMap(DocsumDefinition::getName, p -> p))); this.emulationConfig = emulConfig; + configure(config); } - LegacyEmulationConfig legacyEmulationConfig() { return emulationConfig; } - /** - * Returns the summary definition of the given name, or the default if not found. + * Returns a docsum definition by name, or null if not found * - * @throws ConfigurationException if the requested summary class is not found and there is none called "default" + * @param name the name of the summary class to use, or null to use the name "default" + * @return the summary class found, or null if none */ - public DocsumDefinition getDocsum(String summaryClass) { - DocsumDefinition ds = definitionsByName.get(summaryClass); - if (ds == null) { - ds = definitionsByName.get("default"); - } - if (ds == null) { - throw new ConfigurationException("Fetched hit with summary class " + summaryClass + - ", but this summary class is not in current summary config (" + toString() + ")" + - " (that is, you asked for something unknown, and no default was found)"); - } - return ds; + public final DocsumDefinition getDocsumDefinition(String name) { + if (name == null) + name="default"; + return definitionsByName.get(name); } /** @@ -86,7 +68,7 @@ public final class DocsumDefinitionSet { if (docsumClassId != SLIME_MAGIC_ID) { throw new IllegalArgumentException("Only expecting SchemaLess docsums - summary class:" + summaryClass + " hit:" + hit); } - DocsumDefinition docsumDefinition = getDocsum(summaryClass); + DocsumDefinition docsumDefinition = lookupDocsum(summaryClass); Slime value = BinaryFormat.decode(buffer.array(), buffer.arrayOffset()+buffer.position(), buffer.remaining()); Inspector docsum = new SlimeAdapter(value.get()); if (docsum.type() != OBJECT) { @@ -96,6 +78,19 @@ public final class DocsumDefinitionSet { return null; } + private DocsumDefinition lookupDocsum(String summaryClass) { + DocsumDefinition ds = definitionsByName.get(summaryClass); + if (ds == null) { + ds = definitionsByName.get("default"); + } + if (ds == null) { + throw new ConfigurationException("Fetched hit with summary class " + summaryClass + + ", but this summary class is not in current summary config (" + toString() + ")" + + " (that is, you asked for something unknown, and no default was found)"); + } + return ds; + } + public String toString() { StringBuilder sb = new StringBuilder(); for (Map.Entry<String, DocsumDefinition> e : definitionsByName.entrySet() ) { @@ -111,13 +106,14 @@ public final class DocsumDefinitionSet { return definitionsByName.size(); } - private static Collection<DocsumDefinition> toDocsums(DocumentdbInfoConfig.Documentdb config, LegacyEmulationConfig emulConfig) { - Collection<DocsumDefinition> docsums = new ArrayList<>(); - for (int i = 0; i < config.summaryclass().size(); ++i) - docsums.add(new DocsumDefinition(config.summaryclass(i), emulConfig)); - if (docsums.isEmpty()) + private void configure(DocumentdbInfoConfig.Documentdb config) { + for (int i = 0; i < config.summaryclass().size(); ++i) { + DocumentdbInfoConfig.Documentdb.Summaryclass sc = config.summaryclass(i); + DocsumDefinition docSumDef = new DocsumDefinition(sc, emulationConfig); + definitionsByName.put(sc.name(), docSumDef); + } + if (definitionsByName.size() == 0) { log.warning("No summary classes found in DocumentdbInfoConfig.Documentdb"); - return docsums; + } } - } |