aboutsummaryrefslogtreecommitdiffstats
path: root/config-model/src/main/java/com/yahoo/searchdefinition/document/ComplexAttributeFieldUtils.java
diff options
context:
space:
mode:
Diffstat (limited to 'config-model/src/main/java/com/yahoo/searchdefinition/document/ComplexAttributeFieldUtils.java')
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/document/ComplexAttributeFieldUtils.java14
1 files changed, 14 insertions, 0 deletions
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/document/ComplexAttributeFieldUtils.java b/config-model/src/main/java/com/yahoo/searchdefinition/document/ComplexAttributeFieldUtils.java
index a46e94398a1..89d72756512 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/document/ComplexAttributeFieldUtils.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/document/ComplexAttributeFieldUtils.java
@@ -39,6 +39,17 @@ public class ComplexAttributeFieldUtils {
}
}
+ public static boolean isMapOfPrimitiveType(ImmutableSDField field) {
+ DataType fieldType = field.getDataType();
+ if (fieldType instanceof MapDataType) {
+ MapDataType mapType = (MapDataType)fieldType;
+ return isPrimitiveType(mapType.getKeyType()) &&
+ isPrimitiveType(mapType.getValueType());
+ } else {
+ return false;
+ }
+ }
+
private static boolean isSimpleStruct(DataType type) {
if (type instanceof StructDataType &&
!(type.equals(PositionDataType.INSTANCE))) {
@@ -69,6 +80,9 @@ public class ComplexAttributeFieldUtils {
} else if (isMapOfSimpleStruct(field)) {
return hasSingleAttribute(field.getStructField("key")) &&
hasOnlyStructFieldAttributes(field.getStructField("value"));
+ } else if (isMapOfPrimitiveType(field)) {
+ return hasSingleAttribute(field.getStructField("key")) &&
+ hasSingleAttribute(field.getStructField("value"));
}
return false;
}