diff options
Diffstat (limited to 'container-search/src/main/java/com/yahoo/search/schema/Schema.java')
-rw-r--r-- | container-search/src/main/java/com/yahoo/search/schema/Schema.java | 20 |
1 files changed, 16 insertions, 4 deletions
diff --git a/container-search/src/main/java/com/yahoo/search/schema/Schema.java b/container-search/src/main/java/com/yahoo/search/schema/Schema.java index b66e6ce957a..2ab5a30fbd7 100644 --- a/container-search/src/main/java/com/yahoo/search/schema/Schema.java +++ b/container-search/src/main/java/com/yahoo/search/schema/Schema.java @@ -3,7 +3,9 @@ package com.yahoo.search.schema; import com.yahoo.api.annotations.Beta; +import java.util.Collections; import java.util.HashMap; +import java.util.LinkedHashMap; import java.util.Map; import java.util.Objects; @@ -19,14 +21,17 @@ public class Schema { private final String name; private final Map<String, RankProfile> rankProfiles; + private final Map<String, DocumentSummary> documentSummaries; private Schema(Builder builder) { this.name = builder.name; - this.rankProfiles = Map.copyOf(builder.rankProfiles); + this.rankProfiles = Collections.unmodifiableMap(builder.rankProfiles); + this.documentSummaries = Collections.unmodifiableMap(builder.documentSummaries); } public String name() { return name; } public Map<String, RankProfile> rankProfiles() { return rankProfiles; } + public Map<String, DocumentSummary> documentSummaries() { return documentSummaries; } @Override public boolean equals(Object o) { @@ -35,12 +40,13 @@ public class Schema { Schema other = (Schema)o; if ( ! other.name.equals(this.name)) return false; if ( ! other.rankProfiles.equals(this.rankProfiles)) return false; + if ( ! other.documentSummaries.equals(this.documentSummaries)) return false; return true; } @Override public int hashCode() { - return Objects.hash(name, rankProfiles); + return Objects.hash(name, rankProfiles, documentSummaries); } @Override @@ -51,14 +57,20 @@ public class Schema { public static class Builder { private final String name; - private final Map<String, RankProfile> rankProfiles = new HashMap<>(); + private final Map<String, RankProfile> rankProfiles = new LinkedHashMap<>(); + private final Map<String, DocumentSummary> documentSummaries = new LinkedHashMap<>(); public Builder(String name) { this.name = Objects.requireNonNull(name); } public Builder add(RankProfile profile) { - rankProfiles.put(profile.name(), Objects.requireNonNull(profile)); + rankProfiles.put(profile.name(), profile); + return this; + } + + public Builder add(DocumentSummary documentSummary) { + documentSummaries.put(documentSummary.name(), documentSummary); return this; } |