aboutsummaryrefslogtreecommitdiffstats
path: root/container-search/src/main/java/com/yahoo/prelude/fastsearch/DocsumDefinitionSet.java
diff options
context:
space:
mode:
authorJon Bratseth <bratseth@oath.com>2018-04-22 16:58:39 +0200
committerGitHub <noreply@github.com>2018-04-22 16:58:39 +0200
commit222d3d6d4a04fa441cba7f4e1e03700867f76f5c (patch)
tree6df994dba98f97e7cd89e1f2281671c192d52c0b /container-search/src/main/java/com/yahoo/prelude/fastsearch/DocsumDefinitionSet.java
parent416381813ecc71079cebdfc2fbea53db50714014 (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.java72
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;
+ }
}
-
}