summaryrefslogtreecommitdiffstats
path: root/config-model/src/main/java/com/yahoo/schema/parser
diff options
context:
space:
mode:
authorArne H Juul <arnej@yahooinc.com>2022-06-17 06:52:03 +0000
committerArne H Juul <arnej@yahooinc.com>2022-06-17 06:57:45 +0000
commit2f87b5f065f79dc742f7221234b0081600aa97f1 (patch)
tree4f7ea3e469f3517b011e31d7e3c1ffb313a6419e /config-model/src/main/java/com/yahoo/schema/parser
parenta90639a4c194cbf486d20eba8969340a4ce461ad (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')
-rw-r--r--config-model/src/main/java/com/yahoo/schema/parser/ConvertParsedFields.java10
-rw-r--r--config-model/src/main/java/com/yahoo/schema/parser/ConvertParsedSchemas.java3
-rw-r--r--config-model/src/main/java/com/yahoo/schema/parser/ParsedStruct.java9
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);