summaryrefslogtreecommitdiffstats
path: root/docproc/src/main/java/com/yahoo/docproc/AbstractConcreteDocumentFactory.java
diff options
context:
space:
mode:
Diffstat (limited to 'docproc/src/main/java/com/yahoo/docproc/AbstractConcreteDocumentFactory.java')
-rw-r--r--docproc/src/main/java/com/yahoo/docproc/AbstractConcreteDocumentFactory.java12
1 files changed, 9 insertions, 3 deletions
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<FieldValue> array = (Array<FieldValue>) 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<FieldValue, FieldValue> map = (MapFieldValue<FieldValue, FieldValue>) 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;
}
}