summaryrefslogtreecommitdiffstats
path: root/config-model/src/main/java/com/yahoo
diff options
context:
space:
mode:
authorArne H Juul <arnej@yahooinc.com>2022-03-18 14:52:13 +0000
committerArne H Juul <arnej@yahooinc.com>2022-03-18 14:52:13 +0000
commite03c43cadb472669c41b5d914cd29eae3d0af008 (patch)
treec31936ea5ce93fb617389b6e401b0223ea296a9c /config-model/src/main/java/com/yahoo
parentf9da52469e2fe5e9a9538976154d6bbe967247b1 (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.java12
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);