summaryrefslogtreecommitdiffstats
path: root/config-model/src/main/java/com/yahoo/schema/derived/ImportedFields.java
diff options
context:
space:
mode:
Diffstat (limited to 'config-model/src/main/java/com/yahoo/schema/derived/ImportedFields.java')
-rw-r--r--config-model/src/main/java/com/yahoo/schema/derived/ImportedFields.java38
1 files changed, 21 insertions, 17 deletions
diff --git a/config-model/src/main/java/com/yahoo/schema/derived/ImportedFields.java b/config-model/src/main/java/com/yahoo/schema/derived/ImportedFields.java
index 765ad858535..a781adcefb7 100644
--- a/config-model/src/main/java/com/yahoo/schema/derived/ImportedFields.java
+++ b/config-model/src/main/java/com/yahoo/schema/derived/ImportedFields.java
@@ -9,6 +9,8 @@ import com.yahoo.schema.document.ImportedComplexField;
import com.yahoo.schema.document.ImportedField;
import com.yahoo.vespa.config.search.ImportedFieldsConfig;
+import java.util.ArrayList;
+import java.util.List;
import java.util.Optional;
import static com.yahoo.schema.document.ComplexAttributeFieldUtils.isArrayOfSimpleStruct;
@@ -40,8 +42,11 @@ public class ImportedFields extends Derived implements ImportedFieldsConfig.Prod
@Override
public void getConfig(ImportedFieldsConfig.Builder builder) {
+ // Replace
if (importedFields.isPresent()) {
- importedFields.get().fields().forEach( (name, field) -> considerField(builder, field));
+ List<ImportedField> imported = new ArrayList<>();
+ importedFields.get().fields().forEach( (name, field) -> considerField(imported, field));
+ builder.attribute(imported.stream().map(ImportedFields::createAttributeBuilder).toList());
}
}
@@ -49,47 +54,46 @@ public class ImportedFields extends Derived implements ImportedFieldsConfig.Prod
return fieldName.indexOf('.') != -1;
}
- private static void considerField(ImportedFieldsConfig.Builder builder, ImportedField field) {
+ private static void considerField(List<ImportedField> importedFields, ImportedField field) {
if (field instanceof ImportedComplexField) {
- considerComplexField(builder, (ImportedComplexField) field);
+ considerComplexField(importedFields, (ImportedComplexField) field);
} else {
- considerSimpleField(builder, field);
+ considerSimpleField(importedFields, field);
}
}
- private static void considerComplexField(ImportedFieldsConfig.Builder builder, ImportedComplexField field) {
+ private static void considerComplexField(List<ImportedField> importedFields, ImportedComplexField field) {
ImmutableSDField targetField = field.targetField();
if (GeoPos.isAnyPos(targetField)) {
// no action needed
} else if (isArrayOfSimpleStruct(targetField)) {
- considerNestedFields(builder, field);
+ considerNestedFields(importedFields, field);
} else if (isMapOfSimpleStruct(targetField)) {
- considerSimpleField(builder, field.getNestedField("key"));
- considerNestedFields(builder, field.getNestedField("value"));
+ considerSimpleField(importedFields, field.getNestedField("key"));
+ considerNestedFields(importedFields, field.getNestedField("value"));
} else if (isMapOfPrimitiveType(targetField)) {
- considerSimpleField(builder, field.getNestedField("key"));
- considerSimpleField(builder, field.getNestedField("value"));
+ considerSimpleField(importedFields, field.getNestedField("key"));
+ considerSimpleField(importedFields, field.getNestedField("value"));
}
}
- private static void considerNestedFields(ImportedFieldsConfig.Builder builder, ImportedField field) {
- if (field instanceof ImportedComplexField) {
- ImportedComplexField complexField = (ImportedComplexField) field;
- complexField.getNestedFields().forEach(nestedField -> considerSimpleField(builder, nestedField));
+ private static void considerNestedFields(List<ImportedField> importedFields, ImportedField field) {
+ if (field instanceof ImportedComplexField complexField) {
+ complexField.getNestedFields().forEach(nestedField -> considerSimpleField(importedFields, nestedField));
}
}
- private static void considerSimpleField(ImportedFieldsConfig.Builder builder, ImportedField field) {
+ private static void considerSimpleField(List<ImportedField> importedFields, ImportedField field) {
ImmutableSDField targetField = field.targetField();
String targetFieldName = targetField.getName();
if (!isNestedFieldName(targetFieldName)) {
if (targetField.doesAttributing()) {
- builder.attribute.add(createAttributeBuilder(field));
+ importedFields.add(field);
}
} else {
Attribute attribute = targetField.getAttribute();
if (attribute != null) {
- builder.attribute.add(createAttributeBuilder(field));
+ importedFields.add(field);
}
}
}