diff options
author | Lester Solbakken <lesters@oath.com> | 2018-10-23 09:02:44 +0200 |
---|---|---|
committer | Lester Solbakken <lesters@oath.com> | 2018-10-23 09:02:44 +0200 |
commit | 0857f3d0f3e6e1e1320a3dcd09380fbdac193e06 (patch) | |
tree | ce3e34f1e012dd9ab40b9a1dac648de1f2fbe805 /document | |
parent | f77121c5e9cff27f81ce5a3a39955855bc544c27 (diff) |
Revert "Revert "Disallow complex types as keys for nested types in arrays""
This reverts commit bb42d0c6f30de25b9ca6b8e232b6920aeb51a7d1.
Reason for system tests failing was changes in the system tests, not
this PR.
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); } |