diff options
author | Arne H Juul <arnej@yahooinc.com> | 2022-02-24 01:21:19 +0000 |
---|---|---|
committer | Arne H Juul <arnej@yahooinc.com> | 2022-02-24 07:45:39 +0000 |
commit | 25522c23874c34679729ea46ce2a3ad8e8612a45 (patch) | |
tree | bc4beac62fef835b01317b0d5bddc8c76e1d2a98 /config-model/src/main/java/com/yahoo | |
parent | c609b62993c8428bc14ac4458f27de2253463b93 (diff) |
refactor with helper parent class
Diffstat (limited to 'config-model/src/main/java/com/yahoo')
-rw-r--r-- | config-model/src/main/java/com/yahoo/searchdefinition/parser/ParsedBlock.java | 40 | ||||
-rw-r--r-- | config-model/src/main/java/com/yahoo/searchdefinition/parser/ParsedDocument.java | 18 |
2 files changed, 45 insertions, 13 deletions
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/parser/ParsedBlock.java b/config-model/src/main/java/com/yahoo/searchdefinition/parser/ParsedBlock.java new file mode 100644 index 00000000000..dffb63e7604 --- /dev/null +++ b/config-model/src/main/java/com/yahoo/searchdefinition/parser/ParsedBlock.java @@ -0,0 +1,40 @@ +// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. +package com.yahoo.searchdefinition.parser; + +import com.google.common.collect.ImmutableList; +import java.util.ArrayList; +import java.util.Collection; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Optional; + +/** + * Common methods for various Parsed* classes. + * @author arnej27959 + **/ +public class ParsedBlock { + private final String name; + private final String blockType; + + public ParsedBlock(String name, String blockType) { + this.name = name; + this.blockType = blockType; + } + + public String name() { return name; } + + protected void verifyThat(boolean check, String msg, Object ... msgDetails) { + if (check) return; + var buf = new StringBuilder(); + buf.append(blockType).append(" ").append(name).append(": "); + buf.append(msg); + for (Object detail : msgDetails) { + buf.append(" "); + buf.append(detail.toString()); + } + throw new IllegalArgumentException(buf.toString()); + } + +} + diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/parser/ParsedDocument.java b/config-model/src/main/java/com/yahoo/searchdefinition/parser/ParsedDocument.java index 1996ed86766..8cbbf7b70fd 100644 --- a/config-model/src/main/java/com/yahoo/searchdefinition/parser/ParsedDocument.java +++ b/config-model/src/main/java/com/yahoo/searchdefinition/parser/ParsedDocument.java @@ -15,18 +15,16 @@ import java.util.Optional; * structures as far as possible. Do not put advanced logic here! * @author arnej27959 **/ -public class ParsedDocument { - private final String name; +public class ParsedDocument extends ParsedBlock { private final List<String> inherited = new ArrayList<>(); private final Map<String, ParsedField> docFields = new HashMap<>(); private final Map<String, ParsedStruct> docStructs = new HashMap<>(); private final Map<String, ParsedAnnotation> docAnnotations = new HashMap<>(); public ParsedDocument(String name) { - this.name = name; + super(name, "document"); } - String name() { return name; } List<String> getInherited() { return ImmutableList.copyOf(inherited); } List<ParsedAnnotation> getAnnotations() { return ImmutableList.copyOf(docAnnotations.values()); } List<ParsedField> getFields() { return ImmutableList.copyOf(docFields.values()); } @@ -36,25 +34,19 @@ public class ParsedDocument { void addField(ParsedField field) { String fieldName = field.name(); - if (docFields.containsKey(fieldName)) { - throw new IllegalArgumentException("document "+this.name+" already has field "+fieldName); - } + verifyThat(! docFields.containsKey(fieldName), "already has field", fieldName); docFields.put(fieldName, field); } void addStruct(ParsedStruct struct) { String sName = struct.name(); - if (docStructs.containsKey(sName)) { - throw new IllegalArgumentException("document "+this.name+" already has struct "+sName); - } + verifyThat(! docStructs.containsKey(sName), "already has struct", sName); docStructs.put(sName, struct); } void addAnnotation(ParsedAnnotation annotation) { String annName = annotation.name(); - if (docAnnotations.containsKey(annName)) { - throw new IllegalArgumentException("document "+this.name+" already has annotation "+annName); - } + verifyThat(! docAnnotations.containsKey(annName), "already has annotation", annName); docAnnotations.put(annName, annotation); } |