aboutsummaryrefslogtreecommitdiffstats
path: root/config-model/src/main/java/com/yahoo/schema
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2024-03-06 08:37:32 +0100
committerHenning Baldersheim <balder@yahoo-inc.com>2024-03-06 09:09:57 +0100
commitbd1de86cef2903a4918a88e31cad72ef428365ce (patch)
tree3887e712d437a2f475f9b671f1eec37c1db410d8 /config-model/src/main/java/com/yahoo/schema
parent266b744d85348796a6ca8e3586e8ac6e758f8cae (diff)
- Set the complete list of the config where it contains the complete world.
- Append where it is intended. This is a workaround for not having a map type in config. Sometimes it works to have multiple producers produce the same config, sometimes not. This tries to make it more deterministic. Currently other tricks have been employed to avoid appending more to the list than intended.
Diffstat (limited to 'config-model/src/main/java/com/yahoo/schema')
-rw-r--r--config-model/src/main/java/com/yahoo/schema/derived/ImportedFields.java38
-rw-r--r--config-model/src/main/java/com/yahoo/schema/derived/IndexInfo.java1
-rw-r--r--config-model/src/main/java/com/yahoo/schema/derived/IndexSchema.java37
-rw-r--r--config-model/src/main/java/com/yahoo/schema/derived/IndexingScript.java1
-rw-r--r--config-model/src/main/java/com/yahoo/schema/derived/Juniperrc.java21
-rw-r--r--config-model/src/main/java/com/yahoo/schema/derived/SchemaInfo.java1
-rw-r--r--config-model/src/main/java/com/yahoo/schema/derived/Summaries.java5
-rw-r--r--config-model/src/main/java/com/yahoo/schema/derived/VsmFields.java9
-rw-r--r--config-model/src/main/java/com/yahoo/schema/derived/VsmSummary.java16
9 files changed, 69 insertions, 60 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);
}
}
}
diff --git a/config-model/src/main/java/com/yahoo/schema/derived/IndexInfo.java b/config-model/src/main/java/com/yahoo/schema/derived/IndexInfo.java
index 34f485b7f02..b0cf4a0013c 100644
--- a/config-model/src/main/java/com/yahoo/schema/derived/IndexInfo.java
+++ b/config-model/src/main/java/com/yahoo/schema/derived/IndexInfo.java
@@ -316,6 +316,7 @@ public class IndexInfo extends Derived implements IndexInfoConfig.Producer {
@Override
public void getConfig(IndexInfoConfig.Builder builder) {
+ // Append
IndexInfoConfig.Indexinfo.Builder iiB = new IndexInfoConfig.Indexinfo.Builder();
iiB.name(getName());
for (IndexCommand command : commands) {
diff --git a/config-model/src/main/java/com/yahoo/schema/derived/IndexSchema.java b/config-model/src/main/java/com/yahoo/schema/derived/IndexSchema.java
index d25ada26c6c..1c22e80e579 100644
--- a/config-model/src/main/java/com/yahoo/schema/derived/IndexSchema.java
+++ b/config-model/src/main/java/com/yahoo/schema/derived/IndexSchema.java
@@ -109,30 +109,33 @@ public class IndexSchema extends Derived implements IndexschemaConfig.Producer {
return "indexschema";
}
- @Override
- public void getConfig(IndexschemaConfig.Builder icB) {
- for (IndexField f : fields) {
- IndexschemaConfig.Indexfield.Builder ifB = new IndexschemaConfig.Indexfield.Builder()
+ private static IndexschemaConfig.Indexfield.Builder createIndexFieldConfig(IndexField f) {
+ var ifB = new IndexschemaConfig.Indexfield.Builder()
.name(f.getName())
.datatype(IndexschemaConfig.Indexfield.Datatype.Enum.valueOf(f.getType()))
.prefix(f.hasPrefix())
.phrases(false)
.positions(true)
.interleavedfeatures(f.useInterleavedFeatures());
- if (!f.getCollectionType().equals("SINGLE")) {
- ifB.collectiontype(IndexschemaConfig.Indexfield.Collectiontype.Enum.valueOf(f.getCollectionType()));
- }
- icB.indexfield(ifB);
- }
- for (FieldSet fieldSet : fieldSets.values()) {
- IndexschemaConfig.Fieldset.Builder fsB = new IndexschemaConfig.Fieldset.Builder()
- .name(fieldSet.getName());
- for (String f : fieldSet.getFieldNames()) {
- fsB.field(new IndexschemaConfig.Fieldset.Field.Builder()
- .name(f));
- }
- icB.fieldset(fsB);
+ if (!f.getCollectionType().equals("SINGLE")) {
+ ifB.collectiontype(IndexschemaConfig.Indexfield.Collectiontype.Enum.valueOf(f.getCollectionType()));
}
+ return ifB;
+ }
+
+ private static IndexschemaConfig.Fieldset.Builder createFieldSetConfig(FieldSet fieldSet) {
+ var fsB = new IndexschemaConfig.Fieldset.Builder().name(fieldSet.getName());
+ for (String f : fieldSet.getFieldNames()) {
+ fsB.field(new IndexschemaConfig.Fieldset.Field.Builder().name(f));
+ }
+ return fsB;
+ }
+
+ @Override
+ public void getConfig(IndexschemaConfig.Builder icB) {
+ // Replace
+ icB.indexfield(fields.stream().map(IndexSchema::createIndexFieldConfig).toList());
+ icB.fieldset(fieldSets.values().stream().map(IndexSchema::createFieldSetConfig).toList());
}
static List<Field> flattenField(Field field) {
diff --git a/config-model/src/main/java/com/yahoo/schema/derived/IndexingScript.java b/config-model/src/main/java/com/yahoo/schema/derived/IndexingScript.java
index 9f41f4d3542..7245e3f266d 100644
--- a/config-model/src/main/java/com/yahoo/schema/derived/IndexingScript.java
+++ b/config-model/src/main/java/com/yahoo/schema/derived/IndexingScript.java
@@ -95,6 +95,7 @@ public final class IndexingScript extends Derived implements IlscriptsConfig.Pro
@Override
public void getConfig(IlscriptsConfig.Builder configBuilder) {
+ // Append
IlscriptsConfig.Ilscript.Builder ilscriptBuilder = new IlscriptsConfig.Ilscript.Builder();
ilscriptBuilder.doctype(getName());
ilscriptBuilder.docfield(docFields);
diff --git a/config-model/src/main/java/com/yahoo/schema/derived/Juniperrc.java b/config-model/src/main/java/com/yahoo/schema/derived/Juniperrc.java
index ab1bd256ef9..7eefb9e3396 100644
--- a/config-model/src/main/java/com/yahoo/schema/derived/Juniperrc.java
+++ b/config-model/src/main/java/com/yahoo/schema/derived/Juniperrc.java
@@ -44,18 +44,21 @@ public class Juniperrc extends Derived implements JuniperrcConfig.Producer {
@Override
protected String getDerivedName() { return "juniperrc"; }
+ private static JuniperrcConfig.Override.Builder createOverride(String name) {
+ return new JuniperrcConfig.Override.Builder()
+ .fieldname(name)
+ .length(64*Mb)
+ .max_matches(1)
+ .min_length(8192)
+ .surround_max(64*Mb);
+ }
+
@Override
public void getConfig(JuniperrcConfig.Builder builder) {
- if (boldingFields.size() != 0) {
+ // Replace
+ if (!boldingFields.isEmpty()) {
builder.prefix(true);
- for (String name : boldingFields) {
- builder.override(new JuniperrcConfig.Override.Builder()
- .fieldname(name)
- .length(64*Mb)
- .max_matches(1)
- .min_length(8192)
- .surround_max(64*Mb));
- }
+ builder.override(boldingFields.stream().map(Juniperrc::createOverride).toList());
}
}
diff --git a/config-model/src/main/java/com/yahoo/schema/derived/SchemaInfo.java b/config-model/src/main/java/com/yahoo/schema/derived/SchemaInfo.java
index d51526a4ed4..fb6d7fb70ec 100644
--- a/config-model/src/main/java/com/yahoo/schema/derived/SchemaInfo.java
+++ b/config-model/src/main/java/com/yahoo/schema/derived/SchemaInfo.java
@@ -65,6 +65,7 @@ public final class SchemaInfo extends Derived implements SchemaInfoConfig.Produc
@Override
public void getConfig(SchemaInfoConfig.Builder builder) {
+ // Append
var schemaBuilder = new SchemaInfoConfig.Schema.Builder();
schemaBuilder.name(schema.getName());
addFieldsConfig(schemaBuilder);
diff --git a/config-model/src/main/java/com/yahoo/schema/derived/Summaries.java b/config-model/src/main/java/com/yahoo/schema/derived/Summaries.java
index 7b96f5ab654..51c648aa1be 100644
--- a/config-model/src/main/java/com/yahoo/schema/derived/Summaries.java
+++ b/config-model/src/main/java/com/yahoo/schema/derived/Summaries.java
@@ -41,11 +41,10 @@ public class Summaries extends Derived implements SummaryConfig.Producer {
@Override
public void getConfig(SummaryConfig.Builder builder) {
+ // Replace
builder.defaultsummaryid(summaries.isEmpty() ? -1 : summaries.get(0).hashCode());
builder.usev8geopositions(useV8GeoPositions);
- for (SummaryClass summaryClass : summaries) {
- builder.classes(summaryClass.getSummaryClassConfig());
- }
+ builder.classes(summaries.stream().map(SummaryClass::getSummaryClassConfig).toList());
}
}
diff --git a/config-model/src/main/java/com/yahoo/schema/derived/VsmFields.java b/config-model/src/main/java/com/yahoo/schema/derived/VsmFields.java
index f2ad6a3ba2f..b2b2e9d3a14 100644
--- a/config-model/src/main/java/com/yahoo/schema/derived/VsmFields.java
+++ b/config-model/src/main/java/com/yahoo/schema/derived/VsmFields.java
@@ -108,12 +108,9 @@ public class VsmFields extends Derived implements VsmfieldsConfig.Producer {
@Override
public void getConfig(VsmfieldsConfig.Builder vsB) {
- for (StreamingField streamingField : fields.values()) {
- vsB.fieldspec(streamingField.getFieldSpecConfig());
- }
- for (StreamingDocumentType streamingDocType : doctypes.values()) {
- vsB.documenttype(streamingDocType.getDocTypeConfig());
- }
+ // Replace
+ vsB.fieldspec(fields.values().stream().map(StreamingField::getFieldSpecConfig).toList());
+ vsB.documenttype(doctypes.values().stream().map(StreamingDocumentType::getDocTypeConfig).toList());
}
private static boolean isAttributeField(ImmutableSDField field, boolean isStructField, boolean ignoreAttributeAspect) {
diff --git a/config-model/src/main/java/com/yahoo/schema/derived/VsmSummary.java b/config-model/src/main/java/com/yahoo/schema/derived/VsmSummary.java
index e3d7becd86a..248cca33bc6 100644
--- a/config-model/src/main/java/com/yahoo/schema/derived/VsmSummary.java
+++ b/config-model/src/main/java/com/yahoo/schema/derived/VsmSummary.java
@@ -96,14 +96,14 @@ public class VsmSummary extends Derived implements VsmsummaryConfig.Producer {
@Override
public void getConfig(VsmsummaryConfig.Builder vB) {
- for (Map.Entry<SummaryField, List<String>> entry : summaryMap.entrySet()) {
- VsmsummaryConfig.Fieldmap.Builder fmB = new VsmsummaryConfig.Fieldmap.Builder().summary(entry.getKey().getName());
- for (String field : entry.getValue()) {
- fmB.document(new VsmsummaryConfig.Fieldmap.Document.Builder().field(field));
- }
- fmB.command(VsmsummaryConfig.Fieldmap.Command.Enum.valueOf(entry.getKey().getVsmCommand().toString()));
- vB.fieldmap(fmB);
- }
+ // Replace
+ vB.fieldmap(
+ summaryMap.entrySet().stream().map(entry -> new VsmsummaryConfig.Fieldmap.Builder()
+ .summary(entry.getKey().getName())
+ .document(entry.getValue().stream().map(field -> new VsmsummaryConfig.Fieldmap.Document.Builder().field(field)).toList())
+ .command(VsmsummaryConfig.Fieldmap.Command.Enum.valueOf(entry.getKey().getVsmCommand().toString()))
+ ).toList()
+ );
}
}