diff options
author | Arne H Juul <arnej@yahooinc.com> | 2022-03-18 14:52:13 +0000 |
---|---|---|
committer | Arne H Juul <arnej@yahooinc.com> | 2022-03-18 14:52:13 +0000 |
commit | e03c43cadb472669c41b5d914cd29eae3d0af008 (patch) | |
tree | c31936ea5ce93fb617389b6e401b0223ea296a9c /config-model/src/main/java/com/yahoo | |
parent | f9da52469e2fe5e9a9538976154d6bbe967247b1 (diff) |
allow exact-duplicate struct only
Diffstat (limited to 'config-model/src/main/java/com/yahoo')
-rw-r--r-- | config-model/src/main/java/com/yahoo/searchdefinition/parser/ConvertParsedSchemas.java | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/parser/ConvertParsedSchemas.java b/config-model/src/main/java/com/yahoo/searchdefinition/parser/ConvertParsedSchemas.java index a9532c080ee..81db4e76d11 100644 --- a/config-model/src/main/java/com/yahoo/searchdefinition/parser/ConvertParsedSchemas.java +++ b/config-model/src/main/java/com/yahoo/searchdefinition/parser/ConvertParsedSchemas.java @@ -114,7 +114,17 @@ public class ConvertParsedSchemas { } for (var struct : parsed.getStructs()) { var structProxy = fieldConverter.convertStructDeclaration(schema, document, struct); - document.addType(structProxy); + var old = document.getType(struct.name()); + if (old == null) { + document.addType(structProxy); + } else { + var oldFields = old.fieldSet(); + var newFields = structProxy.fieldSet(); + if (! newFields.equals(oldFields)) { + throw new IllegalArgumentException("Cannot modify already-existing struct: "+struct.name()); + } + // else: log warning + } } for (var annotation : parsed.getAnnotations()) { fieldConverter.convertAnnotation(schema, document, annotation); |