diff options
author | Arne H Juul <arnej@yahooinc.com> | 2022-03-16 06:42:11 +0000 |
---|---|---|
committer | Arne H Juul <arnej@yahooinc.com> | 2022-03-16 09:29:51 +0000 |
commit | 1949cb53228c4b25a22ba2fec9deadf84a1ff8ce (patch) | |
tree | fef689572760710440f42908fcaa76149e79e4d4 /config-model/src/main/java/com/yahoo | |
parent | 0b71369c5dd96cf040791603500db0b3bb981eb5 (diff) |
split resolvedInherits and resolvedReferences
Diffstat (limited to 'config-model/src/main/java/com/yahoo')
3 files changed, 18 insertions, 7 deletions
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/parser/ConvertParsedTypes.java b/config-model/src/main/java/com/yahoo/searchdefinition/parser/ConvertParsedTypes.java index 9711419feee..7202755a49d 100644 --- a/config-model/src/main/java/com/yahoo/searchdefinition/parser/ConvertParsedTypes.java +++ b/config-model/src/main/java/com/yahoo/searchdefinition/parser/ConvertParsedTypes.java @@ -222,7 +222,7 @@ public class ConvertParsedTypes { private ParsedStruct findParsedStruct(ParsedDocument doc, String name) { ParsedStruct found = doc.getStruct(name); if (found != null) return found; - for (var parent : doc.getResolvedInherits()) { + for (var parent : doc.getAllResolvedParents()) { var fromParent = findParsedStruct(parent, name); if (fromParent == null) continue; if (fromParent == found) continue; @@ -238,7 +238,7 @@ public class ConvertParsedTypes { private ParsedAnnotation findParsedAnnotation(ParsedDocument doc, String name) { ParsedAnnotation found = doc.getAnnotation(name); if (found != null) return found; - for (var parent : doc.getResolvedInherits()) { + for (var parent : doc.getAllResolvedParents()) { var fromParent = findParsedAnnotation(parent, name); if (fromParent == null) continue; if (fromParent == found) continue; diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/parser/InheritanceResolver.java b/config-model/src/main/java/com/yahoo/searchdefinition/parser/InheritanceResolver.java index 4d011c1b596..dbdcd4057e9 100644 --- a/config-model/src/main/java/com/yahoo/searchdefinition/parser/InheritanceResolver.java +++ b/config-model/src/main/java/com/yahoo/searchdefinition/parser/InheritanceResolver.java @@ -107,7 +107,7 @@ public class InheritanceResolver { String.join(" -> ", seen)); } seen.add(name); - for (ParsedDocument parent : document.getResolvedInherits()) { + for (ParsedDocument parent : document.getAllResolvedParents()) { inheritanceCycleCheck(parent, seen); } seen.remove(name); 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 5f79098afbe..d304473d8eb 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 @@ -17,6 +17,7 @@ import java.util.Optional; public class ParsedDocument extends ParsedBlock { private final List<String> inherited = new ArrayList<>(); private final Map<String, ParsedDocument> resolvedInherits = new LinkedHashMap(); + private final Map<String, ParsedDocument> resolvedReferences = new LinkedHashMap(); private final Map<String, ParsedField> docFields = new LinkedHashMap<>(); private final Map<String, ParsedStruct> docStructs = new LinkedHashMap<>(); private final Map<String, ParsedAnnotation> docAnnotations = new LinkedHashMap<>(); @@ -27,7 +28,19 @@ public class ParsedDocument extends ParsedBlock { List<String> getInherited() { return List.copyOf(inherited); } List<ParsedAnnotation> getAnnotations() { return List.copyOf(docAnnotations.values()); } - List<ParsedDocument> getResolvedInherits() { return List.copyOf(resolvedInherits.values()); } + List<ParsedDocument> getResolvedInherits() { + assert(inherited.size() == resolvedInherits.size()); + return List.copyOf(resolvedInherits.values()); + } + List<ParsedDocument> getResolvedReferences() { + return List.copyOf(resolvedReferences.values()); + } + List<ParsedDocument> getAllResolvedParents() { + List<ParsedDocument> all = new ArrayList<>(); + all.addAll(getResolvedInherits()); + all.addAll(getResolvedReferences()); + return all; + } List<ParsedField> getFields() { return List.copyOf(docFields.values()); } List<ParsedStruct> getStructs() { return List.copyOf(docStructs.values()); } ParsedStruct getStruct(String name) { return docStructs.get(name); } @@ -78,10 +91,8 @@ public class ParsedDocument extends ParsedBlock { } void resolveReferenced(ParsedDocument parsed) { - // TODO - not really inheritance: - var old = resolvedInherits.put(parsed.name(), parsed); + var old = resolvedReferences.put(parsed.name(), parsed); assert(old == null || old == parsed); } } - |