From 7a8ad22fcf5d1583c07076c979b4533576680ebd Mon Sep 17 00:00:00 2001 From: Arne H Juul Date: Fri, 11 Mar 2022 11:43:17 +0000 Subject: inherit directly * instead of indirect (temporary) inherit from name, inherit the already-converted document directly. * keep schema order. --- .../yahoo/searchdefinition/parser/ConvertSchemaCollection.java | 9 ++++++++- .../yahoo/searchdefinition/parser/IntermediateCollection.java | 4 ++-- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/parser/ConvertSchemaCollection.java b/config-model/src/main/java/com/yahoo/searchdefinition/parser/ConvertSchemaCollection.java index d32fae99f5a..67e6c88d043 100644 --- a/config-model/src/main/java/com/yahoo/searchdefinition/parser/ConvertSchemaCollection.java +++ b/config-model/src/main/java/com/yahoo/searchdefinition/parser/ConvertSchemaCollection.java @@ -33,7 +33,9 @@ import com.yahoo.vespa.documentmodel.DocumentSummary; import com.yahoo.vespa.documentmodel.SummaryField; import java.util.ArrayList; +import java.util.LinkedHashMap; import java.util.List; +import java.util.Map; import java.util.Optional; /** @@ -122,6 +124,8 @@ public class ConvertSchemaCollection { typeConverter.convert(true); } + private Map convertedDocuments = new LinkedHashMap(); + public List convertToSchemas() { typeConverter = new ConvertParsedTypes(orderedInput, docMan); typeConverter.convert(false); @@ -150,7 +154,9 @@ public class ConvertSchemaCollection { { SDDocumentType document = new SDDocumentType(parsed.name()); for (String inherit : parsed.getInherited()) { - document.inherit(new DataTypeName(inherit)); + var parent = convertedDocuments.get(inherit); + assert(parent != null); + document.inherit(parent); } for (var struct : parsed.getStructs()) { var structProxy = fieldConverter.convertStructDeclaration(schema, struct); @@ -165,6 +171,7 @@ public class ConvertSchemaCollection { document.setFieldId(sdf, field.idOverride()); } } + convertedDocuments.put(parsed.name(), document); schema.addDocument(document); } diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/parser/IntermediateCollection.java b/config-model/src/main/java/com/yahoo/searchdefinition/parser/IntermediateCollection.java index 536caf55111..23b5195486b 100644 --- a/config-model/src/main/java/com/yahoo/searchdefinition/parser/IntermediateCollection.java +++ b/config-model/src/main/java/com/yahoo/searchdefinition/parser/IntermediateCollection.java @@ -12,7 +12,7 @@ import com.yahoo.yolean.Exceptions; import java.io.File; import java.util.ArrayList; -import java.util.HashMap; +import java.util.LinkedHashMap; import java.util.List; import java.util.Map; @@ -27,7 +27,7 @@ public class IntermediateCollection { private final DeployLogger deployLogger; private final ModelContext.Properties modelProperties; - private Map parsedSchemas = new HashMap<>(); + private Map parsedSchemas = new LinkedHashMap<>(); IntermediateCollection() { this.deployLogger = new BaseDeployLogger(); -- cgit v1.2.3