diff options
author | Henning Baldersheim <balder@yahoo-inc.com> | 2022-02-17 20:55:19 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-02-17 20:55:19 +0100 |
commit | 102be3f890ed9a4d05907ef3edcda00875b0022e (patch) | |
tree | c28a8a50e8fbfa6b943ed1cc23980c8442c9b184 /config-model | |
parent | f97fb4582554c48a5ecccc4f454ce2355ac10b28 (diff) | |
parent | 3b26bf26dfe8c4b7343b85251b08f0c7b1a01cdc (diff) |
Merge pull request #21261 from vespa-engine/arnej/deprecate-type-changes
deprecate modifying types in-place
Diffstat (limited to 'config-model')
-rw-r--r-- | config-model/src/main/java/com/yahoo/searchdefinition/DocumentModelBuilder.java | 55 |
1 files changed, 39 insertions, 16 deletions
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/DocumentModelBuilder.java b/config-model/src/main/java/com/yahoo/searchdefinition/DocumentModelBuilder.java index 8b068381e07..a29d66dc8f2 100644 --- a/config-model/src/main/java/com/yahoo/searchdefinition/DocumentModelBuilder.java +++ b/config-model/src/main/java/com/yahoo/searchdefinition/DocumentModelBuilder.java @@ -1,6 +1,7 @@ // Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. package com.yahoo.searchdefinition; +import com.yahoo.document.ArrayDataType; import com.yahoo.document.CollectionDataType; import com.yahoo.document.DataType; import com.yahoo.document.DocumentType; @@ -10,6 +11,7 @@ import com.yahoo.document.ReferenceDataType; import com.yahoo.document.StructDataType; import com.yahoo.document.StructuredDataType; import com.yahoo.document.TemporaryStructuredDataType; +import com.yahoo.document.WeightedSetDataType; import com.yahoo.document.annotation.AnnotationReferenceDataType; import com.yahoo.document.annotation.AnnotationType; import com.yahoo.documentmodel.DataTypeCollection; @@ -258,12 +260,21 @@ public class DocumentModelBuilder { } else if (type instanceof MapDataType) { MapDataType t = (MapDataType) type; - t.setKeyType(resolveTemporariesRecurse(t.getKeyType(), repo, docs, replacements)); - t.setValueType(resolveTemporariesRecurse(t.getValueType(), repo, docs, replacements)); - } - else if (type instanceof CollectionDataType) { - CollectionDataType t = (CollectionDataType) type; - t.setNestedType(resolveTemporariesRecurse(t.getNestedType(), repo, docs, replacements)); + var kt = resolveTemporariesRecurse(t.getKeyType(), repo, docs, replacements); + var vt = resolveTemporariesRecurse(t.getValueType(), repo, docs, replacements); + type = new MapDataType(kt, vt, t.getId()); + } + else if (type instanceof ArrayDataType) { + ArrayDataType t = (ArrayDataType) type; + var nt = resolveTemporariesRecurse(t.getNestedType(), repo, docs, replacements); + type = new ArrayDataType(nt, t.getId()); + } + else if (type instanceof WeightedSetDataType) { + WeightedSetDataType t = (WeightedSetDataType) type; + var nt = resolveTemporariesRecurse(t.getNestedType(), repo, docs, replacements); + boolean c = t.createIfNonExistent(); + boolean r = t.removeIfZero(); + type = new WeightedSetDataType(nt, c, r, t.getId()); } else if (type instanceof ReferenceDataType) { ReferenceDataType t = (ReferenceDataType) type; @@ -311,24 +322,36 @@ public class DocumentModelBuilder { dataType = new AnnotationReferenceDataType(target); addType(docType, dataType); return dataType; - } else if (dataType instanceof MapDataType) { - MapDataType mapType = (MapDataType)dataType; - DataType valueType = specialHandleAnnotationReferenceRecurse(docType, fieldName, mapType.getValueType()); + } + else if (dataType instanceof MapDataType) { + MapDataType t = (MapDataType)dataType; + DataType valueType = specialHandleAnnotationReferenceRecurse(docType, fieldName, t.getValueType()); if (valueType == null) { return null; } - mapType = mapType.clone(); - mapType.setValueType(valueType); + var mapType = new MapDataType(t.getKeyType(), valueType, t.getId()); addType(docType, mapType); return mapType; - } else if (dataType instanceof CollectionDataType) { - CollectionDataType lstType = (CollectionDataType)dataType; - DataType nestedType = specialHandleAnnotationReferenceRecurse(docType, fieldName, lstType.getNestedType()); + } + else if (dataType instanceof ArrayDataType) { + ArrayDataType t = (ArrayDataType) dataType; + DataType nestedType = specialHandleAnnotationReferenceRecurse(docType, fieldName, t.getNestedType()); + if (nestedType == null) { + return null; + } + var lstType = new ArrayDataType(nestedType, t.getId()); + addType(docType, lstType); + return lstType; + } + else if (dataType instanceof WeightedSetDataType) { + WeightedSetDataType t = (WeightedSetDataType) dataType; + DataType nestedType = specialHandleAnnotationReferenceRecurse(docType, fieldName, t.getNestedType()); if (nestedType == null) { return null; } - lstType = lstType.clone(); - lstType.setNestedType(nestedType); + boolean c = t.createIfNonExistent(); + boolean r = t.removeIfZero(); + var lstType = new WeightedSetDataType(nestedType, c, r, t.getId()); addType(docType, lstType); return lstType; } |