summaryrefslogtreecommitdiffstats
path: root/docproc
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2019-06-28 16:00:13 +0200
committerHenning Baldersheim <balder@yahoo-inc.com>2019-06-28 16:00:13 +0200
commitb44dcbc8c933969b6b012422764019f68fbe5f44 (patch)
treeafddaa5df8f1449382f01424dfe3d00b5bfea6d4 /docproc
parenta828f842e8cff9330228a125e6af0805a01e0a07 (diff)
Add support for upgrades of values in maps.
Since keys in maps and weighted sets must be primitives we should be complete here.
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 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;
}
}