summaryrefslogtreecommitdiffstats
path: root/document
diff options
context:
space:
mode:
authorLester Solbakken <lesters@oath.com>2018-10-22 13:23:32 +0200
committerLester Solbakken <lesters@oath.com>2018-10-22 13:23:32 +0200
commit68badab1c9a557f4e5a0d6f9f472d921a7ab3301 (patch)
treed7a15bc4e34e129f5f15e294092b9c0daae1ff64 /document
parent17fa29f433b5338723c4bef1eae972b0de9d7dd5 (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.java9
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);
}