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-12 20:47:19 +0200
committerJon Bratseth <bratseth@oath.com>2018-04-12 20:47:19 +0200
commitac1c5c234d8388ffcbd1da3a9ba492e3dcfc9dac (patch)
tree56fe231dc70881800b198d6b66717874ad2aa73c /container-search/src/main/java/com/yahoo/prelude/fastsearch/DocsumDefinitionSet.java
parentcd2d2d63c4962ef98c4da0c3db3ec1d6170b1cbf (diff)
Decode docsums the old fashioned way
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.java34
1 files changed, 22 insertions, 12 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 8d882adeb02..8bfb1035f1c 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,6 +1,7 @@
// 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;
@@ -10,9 +11,12 @@ 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;
@@ -27,17 +31,24 @@ public final class DocsumDefinitionSet {
public static final int SLIME_MAGIC_ID = 0x55555555;
private final static Logger log = Logger.getLogger(DocsumDefinitionSet.class.getName());
- private final HashMap<String, DocsumDefinition> definitionsByName = new HashMap<>();
+ private final Map<String, DocsumDefinition> definitionsByName;
private final LegacyEmulationConfig emulationConfig;
public DocsumDefinitionSet(DocumentdbInfoConfig.Documentdb config) {
- this.emulationConfig = new LegacyEmulationConfig(new LegacyEmulationConfig.Builder());
- configure(config);
+ this(config, new LegacyEmulationConfig(new LegacyEmulationConfig.Builder()));
}
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);
}
/**
@@ -106,14 +117,13 @@ public final class DocsumDefinitionSet {
return definitionsByName.size();
}
- 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) {
+ 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())
log.warning("No summary classes found in DocumentdbInfoConfig.Documentdb");
- }
+ return docsums;
}
+
}