diff options
author | Lester Solbakken <lesters@oath.com> | 2018-10-22 13:23:32 +0200 |
---|---|---|
committer | Lester Solbakken <lesters@oath.com> | 2018-10-22 13:23:32 +0200 |
commit | 68badab1c9a557f4e5a0d6f9f472d921a7ab3301 (patch) | |
tree | d7a15bc4e34e129f5f15e294092b9c0daae1ff64 /document | |
parent | 17fa29f433b5338723c4bef1eae972b0de9d7dd5 (diff) |
Disallow complex types as keys for nested types in arrays
Diffstat (limited to 'document')
-rw-r--r-- | document/src/main/java/com/yahoo/document/json/JsonSerializationHelper.java | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/document/src/main/java/com/yahoo/document/json/JsonSerializationHelper.java b/document/src/main/java/com/yahoo/document/json/JsonSerializationHelper.java index 8e934001381..afe14cf1e6a 100644 --- a/document/src/main/java/com/yahoo/document/json/JsonSerializationHelper.java +++ b/document/src/main/java/com/yahoo/document/json/JsonSerializationHelper.java @@ -2,9 +2,11 @@ package com.yahoo.document.json; import com.fasterxml.jackson.core.JsonGenerator; +import com.yahoo.document.DataType; import com.yahoo.document.DocumentId; import com.yahoo.document.Field; import com.yahoo.document.PositionDataType; +import com.yahoo.document.PrimitiveDataType; import com.yahoo.document.datatypes.Array; import com.yahoo.document.datatypes.ByteFieldValue; import com.yahoo.document.datatypes.CollectionFieldValue; @@ -186,7 +188,12 @@ public class JsonSerializationHelper { generator.writeStartObject(); for (Map.Entry<K, V> entry : map.entrySet()) { - generator.writeFieldName(entry.getKey().toString()); + K key = entry.getKey(); + DataType keyType = key.getDataType(); + if ( ! (keyType instanceof PrimitiveDataType)) { + throw new IllegalArgumentException("Can't use complex types as keys for map fields. Type: " + keyType); + } + generator.writeFieldName(key.toString()); entry.getValue().serialize(null, fieldWriter); } |