aboutsummaryrefslogtreecommitdiffstats
path: root/config-model/src/main/java/com/yahoo/schema/document
diff options
context:
space:
mode:
authorGeir Storli <geirst@yahooinc.com>2023-07-03 14:18:16 +0000
committerGeir Storli <geirst@yahooinc.com>2023-07-03 14:18:16 +0000
commit60819f2638b4b3d7bcb27e62d6b56431055c9ab9 (patch)
treefb29161f68835d67c53289a7dd2d35b8a9d9c568 /config-model/src/main/java/com/yahoo/schema/document
parente02a187ae0951b3ee506ea930080b7b67a857df2 (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.java16
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());