diff options
author | Arne H Juul <arnej@yahooinc.com> | 2022-03-04 12:38:27 +0000 |
---|---|---|
committer | Arne H Juul <arnej@yahooinc.com> | 2022-03-05 10:55:03 +0000 |
commit | 7ba5b7b420b5438c9d90b491004557a9fbd6891f (patch) | |
tree | 6d388f431a8fd3a8ee6366181e6eaeb8f9d85b45 | |
parent | f01968ae6ea5d3259b98dd102b7d48d35a041c34 (diff) |
convert annotations
3 files changed, 34 insertions, 11 deletions
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 dd697d51363..f0f2fec1da0 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 @@ -290,7 +290,7 @@ public class ConvertParsedFields { schema.addIndex(index); } - void convertStructDeclaration(Schema schema, SDDocumentType document, ParsedStruct parsed) { + SDDocumentType convertStructDeclaration(Schema schema, ParsedStruct parsed) { // TODO - can we cleanup this mess var structProxy = new SDDocumentType(parsed.name(), schema); structProxy.setStruct(context.resolveStruct(parsed)); @@ -303,7 +303,7 @@ public class ConvertParsedFields { for (String inherit : parsed.getInherited()) { structProxy.inherit(new DataTypeName(inherit)); } - document.addType(structProxy); + return structProxy; } } 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 5a83b4d8a0e..7b78636bb11 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 @@ -37,10 +37,12 @@ public class ConvertParsedTypes { this.docMan = docMan; } - public void convert() { + public void convert(boolean andRegister) { startDataTypes(); fillDataTypes(); - registerDataTypes(); + if (andRegister) { + registerDataTypes(); + } } private Map<String, DocumentType> documentsFromSchemas = new HashMap<>(); @@ -55,8 +57,10 @@ public class ConvertParsedTypes { for (var schema : orderedInput) { var doc = schema.getDocument(); for (var struct : doc.getStructs()) { - var dt = new StructDataType(struct.name()); String structId = doc.name() + "->" + struct.name(); + // int id = new StructDataType(structId).getId(); + // var dt = new StructDataType(id, struct.name()); + var dt = new StructDataType(struct.name()); structsFromSchemas.put(structId, dt); } for (var annotation : doc.getAnnotations()) { 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 1dc10c57eb5..332a2153516 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 @@ -27,6 +27,7 @@ import com.yahoo.searchdefinition.UnrankedRankProfile; import com.yahoo.searchdefinition.document.SDDocumentType; import com.yahoo.searchdefinition.document.SDField; import com.yahoo.searchdefinition.document.TemporaryImportedField; +import com.yahoo.searchdefinition.document.annotation.SDAnnotationType; import com.yahoo.searchdefinition.parser.ConvertParsedTypes.TypeResolver; import com.yahoo.vespa.documentmodel.DocumentSummary; import com.yahoo.vespa.documentmodel.SummaryField; @@ -117,14 +118,13 @@ public class ConvertSchemaCollection { private ConvertParsedTypes typeConverter; public void convertTypes() { - if (typeConverter == null) { - typeConverter = new ConvertParsedTypes(orderedInput, docMan); - typeConverter.convert(); - } + typeConverter = new ConvertParsedTypes(orderedInput, docMan); + typeConverter.convert(true); } public List<Schema> convertToSchemas() { - convertTypes(); + typeConverter = new ConvertParsedTypes(orderedInput, docMan); + typeConverter.convert(false); var resultList = new ArrayList<Schema>(); for (var parsed : orderedInput) { Optional<String> inherited; @@ -145,6 +145,21 @@ public class ConvertSchemaCollection { return resultList; } + private void convertAnnotation(Schema schema, SDDocumentType document, ParsedAnnotation parsed, ConvertParsedFields fieldConverter) { + var type = new SDAnnotationType(parsed.name()); + for (String inherit : parsed.getInherited()) { + type.inherit(inherit); + } + var payload = parsed.getStruct(); + if (payload.isPresent()) { + var struct = fieldConverter.convertStructDeclaration(schema, payload.get()); + type = new SDAnnotationType(parsed.name(), struct, type.getInherits()); + // WTF? + struct.setStruct(null); + } + document.addAnnotation(type); + } + private void convertDocument(Schema schema, ParsedDocument parsed, ConvertParsedFields fieldConverter) { @@ -153,7 +168,11 @@ public class ConvertSchemaCollection { document.inherit(new DataTypeName(inherit)); } for (var struct : parsed.getStructs()) { - fieldConverter.convertStructDeclaration(schema, document, struct); + var structProxy = fieldConverter.convertStructDeclaration(schema, struct); + document.addType(structProxy); + } + for (var annotation : parsed.getAnnotations()) { + convertAnnotation(schema, document, annotation, fieldConverter); } for (var field : parsed.getFields()) { var sdf = fieldConverter.convertDocumentField(schema, document, field); |