summaryrefslogtreecommitdiffstats
path: root/config-model
diff options
context:
space:
mode:
authorArne H Juul <arnej@yahooinc.com>2022-03-05 11:14:29 +0000
committerArne H Juul <arnej@yahooinc.com>2022-03-05 11:39:01 +0000
commitcbf63c2d12795bbf6b3a3a9b20dce03e91bfaffa (patch)
tree386b06c24dc1d55d7f3b194dcc407db86e047ec2 /config-model
parent72234c3a9d7a40e1a603d203dace8010398f3851 (diff)
handle id override
Diffstat (limited to 'config-model')
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/parser/ConvertParsedFields.java11
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/parser/ConvertParsedTypes.java25
2 files changed, 27 insertions, 9 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 f0f2fec1da0..e7423b17830 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
@@ -294,11 +294,14 @@ public class ConvertParsedFields {
// TODO - can we cleanup this mess
var structProxy = new SDDocumentType(parsed.name(), schema);
structProxy.setStruct(context.resolveStruct(parsed));
- for (var structField : parsed.getFields()) {
- var fieldType = context.resolveType(structField.getType());
- var field = new SDField(structProxy, structField.name(), fieldType);
- convertCommonFieldSettings(field, structField);
+ for (var parsedField : parsed.getFields()) {
+ var fieldType = context.resolveType(parsedField.getType());
+ var field = new SDField(structProxy, parsedField.name(), fieldType);
+ convertCommonFieldSettings(field, parsedField);
structProxy.addField(field);
+ if (parsedField.hasIdOverride()) {
+ structProxy.setFieldId(field, parsedField.idOverride());
+ }
}
for (String inherit : parsed.getInherited()) {
structProxy.inherit(new DataTypeName(inherit));
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 7b78636bb11..ad2dff46ee3 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
@@ -84,10 +84,20 @@ public class ConvertParsedTypes {
for (var struct : doc.getStructs()) {
String structId = doc.name() + "->" + struct.name();
var toFill = structsFromSchemas.get(structId);
+ // evil ugliness
for (ParsedField field : struct.getFields()) {
- var t = resolveFromContext(field.getType(), doc);
- var f = new com.yahoo.document.Field(field.name(), t);
- toFill.addField(f);
+ if (! field.hasIdOverride()) {
+ var t = resolveFromContext(field.getType(), doc);
+ var f = new com.yahoo.document.Field(field.name(), t);
+ toFill.addField(f);
+ }
+ }
+ for (ParsedField field : struct.getFields()) {
+ if (field.hasIdOverride()) {
+ var t = resolveFromContext(field.getType(), doc);
+ var f = new com.yahoo.document.Field(field.name(), field.idOverride(), t);
+ toFill.addField(f);
+ }
}
for (String inherit : struct.getInherited()) {
var parent = findStructFromSchemas(inherit, doc);
@@ -104,7 +114,9 @@ public class ConvertParsedTypes {
var toFill = structsFromSchemas.get(structId);
for (ParsedField field : struct.getFields()) {
var t = resolveFromContext(field.getType(), doc);
- var f = new com.yahoo.document.Field(field.name(), t);
+ var f = field.hasIdOverride()
+ ? new com.yahoo.document.Field(field.name(), field.idOverride(), t)
+ : new com.yahoo.document.Field(field.name(), t);
toFill.addField(f);
}
at.setDataType(toFill);
@@ -120,8 +132,11 @@ public class ConvertParsedTypes {
for (var docField : doc.getFields()) {
String name = docField.name();
var t = resolveFromContext(docField.getType(), doc);
- var f = new com.yahoo.document.Field(name, t);
+ var f = new com.yahoo.document.Field(docField.name(), t);
docToFill.addField(f);
+ if (docField.hasIdOverride()) {
+ f.setId(docField.idOverride(), docToFill);
+ }
inDocFields.add(name);
}
fieldSets.put("[document]", inDocFields);