diff options
author | Geir Storli <geirst@yahooinc.com> | 2023-07-03 14:18:16 +0000 |
---|---|---|
committer | Geir Storli <geirst@yahooinc.com> | 2023-07-03 14:18:16 +0000 |
commit | 60819f2638b4b3d7bcb27e62d6b56431055c9ab9 (patch) | |
tree | fb29161f68835d67c53289a7dd2d35b8a9d9c568 /config-model/src/main/java/com/yahoo/schema/document | |
parent | e02a187ae0951b3ee506ea930080b7b67a857df2 (diff) |
Improve validation of complex fields using struct field attributes.
With this more unsupported (and rare setups) are caught by the validator.
Diffstat (limited to 'config-model/src/main/java/com/yahoo/schema/document')
-rw-r--r-- | config-model/src/main/java/com/yahoo/schema/document/ComplexAttributeFieldUtils.java | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/config-model/src/main/java/com/yahoo/schema/document/ComplexAttributeFieldUtils.java b/config-model/src/main/java/com/yahoo/schema/document/ComplexAttributeFieldUtils.java index 993c9180f78..ebafd8f1d24 100644 --- a/config-model/src/main/java/com/yahoo/schema/document/ComplexAttributeFieldUtils.java +++ b/config-model/src/main/java/com/yahoo/schema/document/ComplexAttributeFieldUtils.java @@ -70,6 +70,9 @@ public class ComplexAttributeFieldUtils { return false; } } + if (!structField.isImportedField() && hasStructFieldAttributes(structField)) { + return false; + } } return true; } else { @@ -77,6 +80,19 @@ public class ComplexAttributeFieldUtils { } } + private static boolean hasStructFieldAttributes(ImmutableSDField field) { + for (var structField : field.getStructFields()) { + var attribute = structField.getAttributes().get(structField.getName()); + if (attribute != null) { + return true; + } + if (hasStructFieldAttributes(structField)) { + return true; + } + } + return false; + } + public static boolean isPrimitiveType(Attribute attribute) { return attribute.getCollectionType().equals(Attribute.CollectionType.SINGLE) && isPrimitiveType(attribute.getDataType()); |