summaryrefslogtreecommitdiffstats
path: root/config-model/src/main
diff options
context:
space:
mode:
authorArne H Juul <arnej@yahooinc.com>2022-03-16 08:59:11 +0000
committerArne H Juul <arnej@yahooinc.com>2022-03-16 09:29:52 +0000
commitd109d256d805f2835788b1bf4e3cf1bd020c719d (patch)
tree0b432e3f3e370b7b757b9c6538231f136fe1ba5c /config-model/src/main
parent3d7c813384a59e45d937c4eae609c4157f9d179d (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')
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/DocumentModelBuilder.java5
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/document/annotation/SDAnnotationType.java5
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/parser/ConvertParsedFields.java13
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/parser/ConvertParsedTypes.java4
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()) {