From b44dcbc8c933969b6b012422764019f68fbe5f44 Mon Sep 17 00:00:00 2001 From: Henning Baldersheim Date: Fri, 28 Jun 2019 16:00:13 +0200 Subject: Add support for upgrades of values in maps. Since keys in maps and weighted sets must be primitives we should be complete here. --- .../com/yahoo/docproc/AbstractConcreteDocumentFactory.java | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) (limited to 'docproc') diff --git a/docproc/src/main/java/com/yahoo/docproc/AbstractConcreteDocumentFactory.java b/docproc/src/main/java/com/yahoo/docproc/AbstractConcreteDocumentFactory.java index 522af9e1f84..7e059da6097 100644 --- a/docproc/src/main/java/com/yahoo/docproc/AbstractConcreteDocumentFactory.java +++ b/docproc/src/main/java/com/yahoo/docproc/AbstractConcreteDocumentFactory.java @@ -10,6 +10,7 @@ import com.yahoo.document.Field; import com.yahoo.document.annotation.Annotation; import com.yahoo.document.datatypes.Array; import com.yahoo.document.datatypes.FieldValue; +import com.yahoo.document.datatypes.MapFieldValue; import com.yahoo.document.datatypes.Struct; import com.yahoo.document.datatypes.StructuredFieldValue; @@ -56,11 +57,16 @@ public abstract class AbstractConcreteDocumentFactory extends com.yahoo.componen } else if (fv instanceof Array) { Array array = (Array) fv; DataType nestedType = array.getDataType().getNestedType(); - for (int i=0; i < array.size(); i++) { - array.set(i, optionallyUpgrade(nestedType, array.get(i))); + if (nestedType.getPrimitiveType() == null) { + array.replaceAll((item) -> optionallyUpgrade(nestedType, item)); + } + } else if (fv instanceof MapFieldValue) { + MapFieldValue map = (MapFieldValue) fv; + DataType valueTypeType = map.getDataType().getValueType(); + if (valueTypeType.getPrimitiveType() == null) { + map.replaceAll((key, value) -> optionallyUpgrade(valueTypeType, value)); } } - // TODO We also need specialhandling for weighted set/map. Limiting to array until verified. return fv; } } -- cgit v1.2.3