summaryrefslogtreecommitdiffstats
path: root/document
diff options
context:
space:
mode:
authorLester Solbakken <lesters@oath.com>2018-10-23 09:02:44 +0200
committerLester Solbakken <lesters@oath.com>2018-10-23 09:02:44 +0200
commit0857f3d0f3e6e1e1320a3dcd09380fbdac193e06 (patch)
treece3e34f1e012dd9ab40b9a1dac648de1f2fbe805 /document
parentf77121c5e9cff27f81ce5a3a39955855bc544c27 (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.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);
}