summaryrefslogtreecommitdiffstats
path: root/docproc
diff options
context:
space:
mode:
authorJon Bratseth <bratseth@verizonmedia.com>2019-06-28 11:32:57 -0500
committerJon Bratseth <bratseth@verizonmedia.com>2019-06-28 11:32:57 -0500
commit609ab45a9eded61cef79eeb1941b6f06cb713cb6 (patch)
treefbc07799e06f982d53167ff2021e5a9329078a9c /docproc
parent781d6dfd8afdcb1da0ce29ef37ccbc0c45dc155d (diff)
parente5d5699d6b0964cc97aacf77cccb0159d6299284 (diff)
Merge with master
Diffstat (limited to 'docproc')
-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 f23e1f33d8f..3e720f9e0aa 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;
@@ -55,11 +56,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 special handling for weighted set/map. Limiting to array until verified.
return fv;
}