diff options
author | Arne H Juul <arnej@yahooinc.com> | 2022-03-16 08:59:11 +0000 |
---|---|---|
committer | Arne H Juul <arnej@yahooinc.com> | 2022-03-16 09:29:52 +0000 |
commit | d109d256d805f2835788b1bf4e3cf1bd020c719d (patch) | |
tree | 0b432e3f3e370b7b757b9c6538231f136fe1ba5c /config-model/src/main | |
parent | 3d7c813384a59e45d937c4eae609c4157f9d179d (diff) |
fix annotation struct handling
* put structProxy for the struct inside an annotation into
the SDAnnotation instead of into the SDDocumentType
* fixes test case from last commit
Diffstat (limited to 'config-model/src/main')
4 files changed, 22 insertions, 5 deletions
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/DocumentModelBuilder.java b/config-model/src/main/java/com/yahoo/searchdefinition/DocumentModelBuilder.java index 931fd46ed83..2edf4e57105 100644 --- a/config-model/src/main/java/com/yahoo/searchdefinition/DocumentModelBuilder.java +++ b/config-model/src/main/java/com/yahoo/searchdefinition/DocumentModelBuilder.java @@ -401,6 +401,11 @@ public class DocumentModelBuilder { } structInheritance.put(s, "annotation."+sa.getInherits()); } + } else { + var dt = annotation.getDataType(); + if (dt instanceof StructDataType) { + handleStruct((StructDataType) dt); + } } } for (Map.Entry<AnnotationType, String> e : annotationInheritance.entrySet()) { diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/document/annotation/SDAnnotationType.java b/config-model/src/main/java/com/yahoo/searchdefinition/document/annotation/SDAnnotationType.java index bc187678109..b7ba2333b3c 100644 --- a/config-model/src/main/java/com/yahoo/searchdefinition/document/annotation/SDAnnotationType.java +++ b/config-model/src/main/java/com/yahoo/searchdefinition/document/annotation/SDAnnotationType.java @@ -26,6 +26,11 @@ public class SDAnnotationType extends AnnotationType { return sdDocType; } + public void setSdDocType(SDDocumentType value) { + assert(sdDocType == null); + sdDocType = value; + } + public String getInherits() { return inherits; } diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/parser/ConvertParsedFields.java b/config-model/src/main/java/com/yahoo/searchdefinition/parser/ConvertParsedFields.java index caeebd65f4f..b20ec6f6d6d 100644 --- a/config-model/src/main/java/com/yahoo/searchdefinition/parser/ConvertParsedFields.java +++ b/config-model/src/main/java/com/yahoo/searchdefinition/parser/ConvertParsedFields.java @@ -15,6 +15,7 @@ import com.yahoo.searchdefinition.document.RankType; import com.yahoo.searchdefinition.document.SDDocumentType; import com.yahoo.searchdefinition.document.SDField; import com.yahoo.searchdefinition.document.Sorting; +import com.yahoo.searchdefinition.document.annotation.SDAnnotationType; import com.yahoo.vespa.documentmodel.SummaryField; import com.yahoo.vespa.documentmodel.SummaryTransform; @@ -311,11 +312,13 @@ public class ConvertParsedFields { } void convertAnnotation(Schema schema, SDDocumentType document, ParsedAnnotation parsed) { - var annType = context.resolveAnnotation(parsed.name()); - var payload = parsed.getStruct(); - if (payload.isPresent()) { - var structProxy = convertStructDeclaration(schema, document, payload.get()); - document.addType(structProxy); + SDAnnotationType annType = context.resolveAnnotation(parsed.name()); + var withStruct = parsed.getStruct(); + if (withStruct.isPresent()) { + ParsedStruct parsedStruct = withStruct.get(); + SDDocumentType structProxy = convertStructDeclaration(schema, document, parsedStruct); + structProxy.setStruct(context.resolveStruct(parsedStruct)); + annType.setSdDocType(structProxy); } document.addAnnotation(annType); } 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 80d37423fc5..ed20bc0a94d 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 @@ -104,6 +104,10 @@ public class ConvertParsedTypes { for (var schema : orderedInput) { var doc = schema.getDocument(); for (var annotation : doc.getAnnotations()) { + var at = findAnnotationFromParsed(annotation); + for (var parent : annotation.getResolvedInherits()) { + at.inherit(findAnnotationFromParsed(parent)); + } fillAnnotationStruct(annotation); } for (var struct : doc.getStructs()) { |