diff options
author | Arne H Juul <arnej@yahooinc.com> | 2022-06-17 06:52:03 +0000 |
---|---|---|
committer | Arne H Juul <arnej@yahooinc.com> | 2022-06-17 06:57:45 +0000 |
commit | 2f87b5f065f79dc742f7221234b0081600aa97f1 (patch) | |
tree | 4f7ea3e469f3517b011e31d7e3c1ffb313a6419e /config-model/src/main/java/com/yahoo/schema/parser | |
parent | a90639a4c194cbf486d20eba8969340a4ce461ad (diff) |
remove TemporarySDDocumentType
* track converted structs as we make them
* inherit directly instead of by name
* remove code to deal with the no-longer-needed temporaries
Diffstat (limited to 'config-model/src/main/java/com/yahoo/schema/parser')
3 files changed, 16 insertions, 6 deletions
diff --git a/config-model/src/main/java/com/yahoo/schema/parser/ConvertParsedFields.java b/config-model/src/main/java/com/yahoo/schema/parser/ConvertParsedFields.java index 3008dac4f29..443dfb1602d 100644 --- a/config-model/src/main/java/com/yahoo/schema/parser/ConvertParsedFields.java +++ b/config-model/src/main/java/com/yahoo/schema/parser/ConvertParsedFields.java @@ -20,6 +20,7 @@ import com.yahoo.vespa.documentmodel.SummaryField; import com.yahoo.vespa.documentmodel.SummaryTransform; import java.util.Locale; +import java.util.Map; /** * Helper for converting ParsedField etc to SDField with settings @@ -29,9 +30,11 @@ import java.util.Locale; public class ConvertParsedFields { private final TypeResolver context; + private final Map<String, SDDocumentType> structProxies; - ConvertParsedFields(TypeResolver context) { + ConvertParsedFields(TypeResolver context, Map<String, SDDocumentType> structProxies) { this.context = context; + this.structProxies = structProxies; } static void convertMatchSettings(SDField field, ParsedMatchSettings parsed) { @@ -309,10 +312,11 @@ public class ConvertParsedFields { structProxy.setFieldId(field, parsedField.idOverride()); } } - for (String inherit : parsed.getInherited()) { - structProxy.inherit(new DataTypeName(inherit)); + for (var inherit: parsed.getResolvedInherits()) { + structProxy.inherit(structProxies.get(inherit.getFullName())); } structProxy.setStruct(context.resolveStruct(parsed)); + structProxies.put(parsed.getFullName(), structProxy); return structProxy; } diff --git a/config-model/src/main/java/com/yahoo/schema/parser/ConvertParsedSchemas.java b/config-model/src/main/java/com/yahoo/schema/parser/ConvertParsedSchemas.java index f3289621ce1..0abcc9e890a 100644 --- a/config-model/src/main/java/com/yahoo/schema/parser/ConvertParsedSchemas.java +++ b/config-model/src/main/java/com/yahoo/schema/parser/ConvertParsedSchemas.java @@ -80,6 +80,7 @@ public class ConvertParsedSchemas { } private final Map<String, SDDocumentType> convertedDocuments = new LinkedHashMap<>(); + private final Map<String, SDDocumentType> convertedStructs = new LinkedHashMap<>(); public List<Schema> convertToSchemas() { typeConverter.convert(false); @@ -187,7 +188,7 @@ public class ConvertParsedSchemas { } parsed.getRawAsBase64().ifPresent(value -> schema.enableRawAsBase64(value)); var typeContext = typeConverter.makeContext(parsed.getDocument()); - var fieldConverter = new ConvertParsedFields(typeContext); + var fieldConverter = new ConvertParsedFields(typeContext, convertedStructs); convertDocument(schema, parsed.getDocument(), fieldConverter); for (var field : parsed.getFields()) { fieldConverter.convertExtraField(schema, field); diff --git a/config-model/src/main/java/com/yahoo/schema/parser/ParsedStruct.java b/config-model/src/main/java/com/yahoo/schema/parser/ParsedStruct.java index abe14b3689f..02d10bcb487 100644 --- a/config-model/src/main/java/com/yahoo/schema/parser/ParsedStruct.java +++ b/config-model/src/main/java/com/yahoo/schema/parser/ParsedStruct.java @@ -27,8 +27,13 @@ public class ParsedStruct extends ParsedBlock { List<ParsedField> getFields() { return List.copyOf(fields.values()); } List<String> getInherited() { return List.copyOf(inherited); } - ParsedDocument getOwnerDoc() { return ownedBy; } - String getOwnerName() { return ownedBy.name(); } + ParsedDocument getOwnerDoc() { + verifyThat(ownedBy != null, "not owned by any document"); + return ownedBy; + } + String getOwnerName() { return getOwnerDoc().name(); } + String getFullName() { return name() + " @ " + getOwnerName(); } + List<ParsedStruct> getResolvedInherits() { assert(inherited.size() == resolvedInherits.size()); return List.copyOf(resolvedInherits); |