summaryrefslogtreecommitdiffstats
path: root/config-model/src/main/java/com/yahoo
diff options
context:
space:
mode:
authorArne H Juul <arnej@yahooinc.com>2022-03-16 06:42:11 +0000
committerArne H Juul <arnej@yahooinc.com>2022-03-16 09:29:51 +0000
commit1949cb53228c4b25a22ba2fec9deadf84a1ff8ce (patch)
treefef689572760710440f42908fcaa76149e79e4d4 /config-model/src/main/java/com/yahoo
parent0b71369c5dd96cf040791603500db0b3bb981eb5 (diff)
split resolvedInherits and resolvedReferences
Diffstat (limited to 'config-model/src/main/java/com/yahoo')
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/parser/ConvertParsedTypes.java4
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/parser/InheritanceResolver.java2
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/parser/ParsedDocument.java19
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);
}
}
-