From afe0fef2ec41bbc8594a8d8e565ab342d27a3164 Mon Sep 17 00:00:00 2001 From: Henning Baldersheim Date: Fri, 8 Mar 2024 17:12:26 +0100 Subject: Avoid reflection magic --- .../com/yahoo/schema/derived/AttributeFields.java | 11 +++-- .../java/com/yahoo/schema/derived/Derived.java | 50 ++++------------------ .../java/com/yahoo/schema/derived/Exportable.java | 26 ----------- .../schema/derived/FileDistributedOnnxModels.java | 5 +-- .../com/yahoo/schema/derived/ImportedFields.java | 10 ++++- .../java/com/yahoo/schema/derived/IndexInfo.java | 10 ++++- .../java/com/yahoo/schema/derived/IndexSchema.java | 10 ++++- .../com/yahoo/schema/derived/IndexingScript.java | 11 +++-- .../java/com/yahoo/schema/derived/Juniperrc.java | 13 ++++-- .../com/yahoo/schema/derived/RankProfileList.java | 14 +++--- .../java/com/yahoo/schema/derived/SchemaInfo.java | 10 ++++- .../java/com/yahoo/schema/derived/Summaries.java | 14 +++--- .../com/yahoo/schema/derived/SummaryClass.java | 7 ++- .../java/com/yahoo/schema/derived/VsmFields.java | 10 ++++- .../java/com/yahoo/schema/derived/VsmSummary.java | 19 +++++--- .../model/container/ContainerModelEvaluation.java | 2 +- .../model/container/ml/ModelsEvaluatorTester.java | 6 +-- .../yahoo/vespa/model/search/DocumentDatabase.java | 4 +- 18 files changed, 115 insertions(+), 117 deletions(-) delete mode 100644 config-model/src/main/java/com/yahoo/schema/derived/Exportable.java diff --git a/config-model/src/main/java/com/yahoo/schema/derived/AttributeFields.java b/config-model/src/main/java/com/yahoo/schema/derived/AttributeFields.java index e747235dc3c..92f7e87209a 100644 --- a/config-model/src/main/java/com/yahoo/schema/derived/AttributeFields.java +++ b/config-model/src/main/java/com/yahoo/schema/derived/AttributeFields.java @@ -12,6 +12,7 @@ import com.yahoo.schema.document.Sorting; import com.yahoo.vespa.config.search.AttributesConfig; import com.yahoo.vespa.indexinglanguage.expressions.ToPositionExpression; +import java.io.IOException; import java.util.Collection; import java.util.Collections; import java.util.Iterator; @@ -27,7 +28,7 @@ import static com.yahoo.schema.document.ComplexAttributeFieldUtils.isSupportedCo * * @author bratseth */ -public class AttributeFields extends Derived implements AttributesConfig.Producer { +public class AttributeFields extends Derived { public enum FieldSet {ALL, FAST_ACCESS} @@ -178,12 +179,16 @@ public class AttributeFields extends Derived implements AttributesConfig.Produce return "attributes"; } - @Override public void getConfig(AttributesConfig.Builder builder) { - //TODO This is just to get some exporting tests to work, Should be undone and removed getConfig(builder, FieldSet.ALL, 77777); } + public void export(String toDirectory) throws IOException { + var builder = new AttributesConfig.Builder(); + getConfig(builder); + export(toDirectory, builder.build()); + } + private boolean isAttributeInFieldSet(Attribute attribute, FieldSet fs) { return (fs == FieldSet.ALL) || ((fs == FieldSet.FAST_ACCESS) && attribute.isFastAccess()); } diff --git a/config-model/src/main/java/com/yahoo/schema/derived/Derived.java b/config-model/src/main/java/com/yahoo/schema/derived/Derived.java index 3ed9807b8f1..f4311912584 100644 --- a/config-model/src/main/java/com/yahoo/schema/derived/Derived.java +++ b/config-model/src/main/java/com/yahoo/schema/derived/Derived.java @@ -2,7 +2,6 @@ package com.yahoo.schema.derived; import com.yahoo.config.ConfigInstance; -import com.yahoo.config.ConfigInstance.Builder; import com.yahoo.document.Field; import com.yahoo.io.IOUtils; import com.yahoo.schema.Index; @@ -14,7 +13,6 @@ import com.yahoo.text.StringUtilities; import java.io.IOException; import java.io.Writer; -import java.lang.reflect.Method; import java.util.List; /** @@ -22,7 +20,7 @@ import java.util.List; * * @author bratseth */ -public abstract class Derived implements Exportable { +public abstract class Derived { private String name; @@ -88,23 +86,13 @@ public abstract class Derived implements Exportable { return labels ? getName() : String.valueOf(number); } - /** - * Exports this derived configuration to its .cfg file - * in toDirectory - * - * @param toDirectory the directory to export to, or null - * - */ - public void export(String toDirectory) throws IOException { + protected void export(String toDirectory, ConfigInstance cfg) throws IOException { Writer writer = null; try { String fileName = getDerivedName() + ".cfg"; - if (toDirectory != null) - writer = IOUtils.createWriter(toDirectory + "/" + fileName,false); - try { - exportBuilderConfig(writer); - } catch (ReflectiveOperationException | SecurityException | IllegalArgumentException e) { - throw new RuntimeException(e); + if (toDirectory != null) { + writer = IOUtils.createWriter(toDirectory + "/" + fileName, false); + exportConfig(writer, cfg); } } finally { @@ -112,30 +100,10 @@ public abstract class Derived implements Exportable { } } - /** - * Checks what this is a producer of, instantiate that and export to writer - */ - // TODO move to ReflectionUtil, and move that to unexported pkg - private void exportBuilderConfig(Writer writer) throws ReflectiveOperationException, SecurityException, IllegalArgumentException, IOException { - for (Class intf : getClass().getInterfaces()) { - if (ConfigInstance.Producer.class.isAssignableFrom(intf)) { - Class configClass = intf.getEnclosingClass(); - String builderClassName = configClass.getCanonicalName()+"$Builder"; - Class builderClass = Class.forName(builderClassName); - ConfigInstance.Builder builder = (Builder) builderClass.getDeclaredConstructor().newInstance(); - Method getConfig = getClass().getMethod("getConfig", builderClass); - getConfig.invoke(this, builder); - ConfigInstance inst = (ConfigInstance) configClass.getConstructor(builderClass).newInstance(builder); - List payloadL = ConfigInstance.serialize(inst); - String payload = StringUtilities.implodeMultiline(payloadL); - writer.write(payload); - } - } - } - - @Override - public String getFileName() { - return getDerivedName() + ".cfg"; + private void exportConfig(Writer writer, ConfigInstance cfg) throws IOException { + List payloadL = ConfigInstance.serialize(cfg); + String payload = StringUtilities.implodeMultiline(payloadL); + writer.write(payload); } } diff --git a/config-model/src/main/java/com/yahoo/schema/derived/Exportable.java b/config-model/src/main/java/com/yahoo/schema/derived/Exportable.java deleted file mode 100644 index 983be8bf13a..00000000000 --- a/config-model/src/main/java/com/yahoo/schema/derived/Exportable.java +++ /dev/null @@ -1,26 +0,0 @@ -// Copyright Vespa.ai. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -package com.yahoo.schema.derived; - -/** - * Classes exportable to configurations - * - * @author bratseth - */ -public interface Exportable { - - /** - * Exports the configuration of this object - * - * - * @param toDirectory the directory to export to, does not write to disk if null - * @throws java.io.IOException if exporting fails, some files may still be created - */ - public void export(String toDirectory) throws java.io.IOException; - - /** - * The (short) name of the exported file - * @return a String with the (short) name of the exported file - */ - public String getFileName(); - -} diff --git a/config-model/src/main/java/com/yahoo/schema/derived/FileDistributedOnnxModels.java b/config-model/src/main/java/com/yahoo/schema/derived/FileDistributedOnnxModels.java index 6c990eec04b..6e50e3c094c 100644 --- a/config-model/src/main/java/com/yahoo/schema/derived/FileDistributedOnnxModels.java +++ b/config-model/src/main/java/com/yahoo/schema/derived/FileDistributedOnnxModels.java @@ -18,13 +18,10 @@ import java.util.logging.Logger; * * @author bratseth */ -public class FileDistributedOnnxModels extends Derived { +public class FileDistributedOnnxModels { private static final Logger log = Logger.getLogger(FileDistributedOnnxModels.class.getName()); - @Override - public String getDerivedName() { return "onnx-models"; } - private final Map models; public FileDistributedOnnxModels(FileRegistry fileRegistry, Collection models) { 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 a781adcefb7..e5e28ccea27 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,7 @@ import com.yahoo.schema.document.ImportedComplexField; import com.yahoo.schema.document.ImportedField; import com.yahoo.vespa.config.search.ImportedFieldsConfig; +import java.io.IOException; import java.util.ArrayList; import java.util.List; import java.util.Optional; @@ -22,7 +23,7 @@ import static com.yahoo.schema.document.ComplexAttributeFieldUtils.isMapOfSimple * * @author geirst */ -public class ImportedFields extends Derived implements ImportedFieldsConfig.Producer { +public class ImportedFields extends Derived { private Optional importedFields = Optional.empty(); @@ -40,7 +41,6 @@ public class ImportedFields extends Derived implements ImportedFieldsConfig.Prod return "imported-fields"; } - @Override public void getConfig(ImportedFieldsConfig.Builder builder) { // Replace if (importedFields.isPresent()) { @@ -50,6 +50,12 @@ public class ImportedFields extends Derived implements ImportedFieldsConfig.Prod } } + public void export(String toDirectory) throws IOException { + var builder = new ImportedFieldsConfig.Builder(); + getConfig(builder); + export(toDirectory, builder.build()); + } + private static boolean isNestedFieldName(String fieldName) { return fieldName.indexOf('.') != -1; } 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 b0cf4a0013c..c1b698df55f 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 @@ -24,6 +24,7 @@ import com.yahoo.schema.processing.NGramMatch; import com.yahoo.vespa.documentmodel.SummaryField; import com.yahoo.search.config.IndexInfoConfig; +import java.io.IOException; import java.util.Map; import java.util.Objects; import java.util.Optional; @@ -34,7 +35,7 @@ import java.util.Set; * * @author bratseth */ -public class IndexInfo extends Derived implements IndexInfoConfig.Producer { +public class IndexInfo extends Derived { private static final String CMD_ATTRIBUTE = "attribute"; private static final String CMD_DEFAULT_POSITION = "default-position"; @@ -314,7 +315,6 @@ public class IndexInfo extends Derived implements IndexInfoConfig.Producer { return true; } - @Override public void getConfig(IndexInfoConfig.Builder builder) { // Append IndexInfoConfig.Indexinfo.Builder iiB = new IndexInfoConfig.Indexinfo.Builder(); @@ -335,6 +335,12 @@ public class IndexInfo extends Derived implements IndexInfoConfig.Producer { builder.indexinfo(iiB); } + public void export(String toDirectory) throws IOException { + var builder = new IndexInfoConfig.Builder(); + getConfig(builder); + export(toDirectory, builder.build()); + } + // TODO: Move this to the FieldSetSettings processor (and rename it) as that already has to look at this. private void addFieldSetCommands(IndexInfoConfig.Indexinfo.Builder iiB, FieldSet fieldSet) { for (String qc : fieldSet.queryCommands()) { 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 1c22e80e579..34ed9f2f60c 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 @@ -12,6 +12,7 @@ import com.yahoo.schema.document.FieldSet; import com.yahoo.schema.document.ImmutableSDField; import com.yahoo.vespa.config.search.IndexschemaConfig; +import java.io.IOException; import java.util.ArrayList; import java.util.Collections; import java.util.LinkedHashMap; @@ -24,7 +25,7 @@ import java.util.Map; * * @author geirst */ -public class IndexSchema extends Derived implements IndexschemaConfig.Producer { +public class IndexSchema extends Derived { private final List fields = new ArrayList<>(); private final Map collections = new LinkedHashMap<>(); @@ -131,13 +132,18 @@ public class IndexSchema extends Derived implements IndexschemaConfig.Producer { 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()); } + public void export(String toDirectory) throws IOException { + var builder = new IndexschemaConfig.Builder(); + getConfig(builder); + export(toDirectory, builder.build()); + } + static List flattenField(Field field) { DataType fieldType = field.getDataType(); if (fieldType.getPrimitiveType() != null){ 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 7245e3f266d..60d27c617f1 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 @@ -11,7 +11,6 @@ import com.yahoo.vespa.indexinglanguage.ExpressionVisitor; import com.yahoo.vespa.indexinglanguage.expressions.AttributeExpression; import com.yahoo.vespa.indexinglanguage.expressions.ClearStateExpression; import com.yahoo.vespa.indexinglanguage.expressions.Expression; -import com.yahoo.vespa.indexinglanguage.expressions.ForEachExpression; import com.yahoo.vespa.indexinglanguage.expressions.GuardExpression; import com.yahoo.vespa.indexinglanguage.expressions.InputExpression; import com.yahoo.vespa.indexinglanguage.expressions.OutputExpression; @@ -22,6 +21,7 @@ import com.yahoo.vespa.indexinglanguage.expressions.StatementExpression; import com.yahoo.vespa.indexinglanguage.expressions.TokenizeExpression; import com.yahoo.vespa.indexinglanguage.expressions.ZCurveExpression; +import java.io.IOException; import java.util.ArrayList; import java.util.Collection; import java.util.Collections; @@ -35,7 +35,7 @@ import java.util.Set; * * @author bratseth */ -public final class IndexingScript extends Derived implements IlscriptsConfig.Producer { +public final class IndexingScript extends Derived { private final List docFields = new ArrayList<>(); private final List expressions = new ArrayList<>(); @@ -93,7 +93,6 @@ public final class IndexingScript extends Derived implements IlscriptsConfig.Pro return "ilscripts"; } - @Override public void getConfig(IlscriptsConfig.Builder configBuilder) { // Append IlscriptsConfig.Ilscript.Builder ilscriptBuilder = new IlscriptsConfig.Ilscript.Builder(); @@ -103,6 +102,12 @@ public final class IndexingScript extends Derived implements IlscriptsConfig.Pro configBuilder.ilscript(ilscriptBuilder); } + public void export(String toDirectory) throws IOException { + var builder = new IlscriptsConfig.Builder(); + getConfig(builder); + export(toDirectory, builder.build()); + } + private static class DropTokenize extends ExpressionConverter { @Override protected boolean shouldConvert(Expression exp) { 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 a39fa642f34..58e77cedaf1 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 @@ -6,6 +6,7 @@ import com.yahoo.vespa.documentmodel.SummaryField; import com.yahoo.vespa.documentmodel.SummaryTransform; import com.yahoo.vespa.config.search.summary.JuniperrcConfig; +import java.io.IOException; import java.util.ArrayList; import java.util.Set; import java.util.stream.Collectors; @@ -15,7 +16,7 @@ import java.util.stream.Collectors; * * @author Simon Thoresen Hult */ -public class Juniperrc extends Derived implements JuniperrcConfig.Producer { +public class Juniperrc extends Derived { private static final int Mb = 1024 * 1024; @@ -43,8 +44,13 @@ public class Juniperrc extends Derived implements JuniperrcConfig.Producer { } } - @Override - protected String getDerivedName() { return "juniperrc"; } + public void export(String toDirectory) throws IOException { + var builder = new JuniperrcConfig.Builder(); + getConfig(builder); + export(toDirectory, builder.build()); + } + + @Override protected String getDerivedName() { return "juniperrc"; } private static JuniperrcConfig.Override.Builder createOverride(String name) { return new JuniperrcConfig.Override.Builder() @@ -55,7 +61,6 @@ public class Juniperrc extends Derived implements JuniperrcConfig.Producer { .surround_max(64*Mb); } - @Override public void getConfig(JuniperrcConfig.Builder builder) { // Replace if (!boldingFields.isEmpty()) { diff --git a/config-model/src/main/java/com/yahoo/schema/derived/RankProfileList.java b/config-model/src/main/java/com/yahoo/schema/derived/RankProfileList.java index 33779a718db..b08629d68a3 100644 --- a/config-model/src/main/java/com/yahoo/schema/derived/RankProfileList.java +++ b/config-model/src/main/java/com/yahoo/schema/derived/RankProfileList.java @@ -17,6 +17,7 @@ import com.yahoo.vespa.config.search.core.OnnxModelsConfig; import com.yahoo.vespa.config.search.core.RankingConstantsConfig; import com.yahoo.vespa.config.search.core.RankingExpressionsConfig; +import java.io.IOException; import java.util.ArrayList; import java.util.Collection; import java.util.HashMap; @@ -33,8 +34,7 @@ import java.util.concurrent.Future; * * @author bratseth */ -//TODO Remove implements RankProfilesConfig.Producer, that is only necessary due to some test magic -public class RankProfileList extends Derived implements RankProfilesConfig.Producer { +public class RankProfileList extends Derived { private final Map rankProfiles; private final FileDistributedConstants constants; @@ -194,10 +194,12 @@ public class RankProfileList extends Derived implements RankProfilesConfig.Produ @Override public String getDerivedName() { return "rank-profiles"; } - @Override - public void getConfig(RankProfilesConfig.Builder builder) { - // Replace - builder.rankprofile(rankProfiles.values().stream().map(RawRankProfile::getConfig).toList()); + public void export(String toDirectory) throws IOException { + export(toDirectory, new RankProfilesConfig.Builder().rankprofile(getRankProfilesConfig()).build()); + } + + public List getRankProfilesConfig() { + return rankProfiles.values().stream().map(RawRankProfile::getConfig).toList(); } private static RankingExpressionsConfig.Expression.Builder toConfig(RankingExpressionBody expr) { 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 fb6d7fb70ec..19a045ac444 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 @@ -21,6 +21,7 @@ import com.yahoo.schema.RankProfileRegistry; import com.yahoo.schema.Schema; import com.yahoo.searchlib.rankingexpression.Reference; +import java.io.IOException; import java.util.Collection; import java.util.Collections; import java.util.Iterator; @@ -32,7 +33,7 @@ import java.util.Map; * * @author bratseth */ -public final class SchemaInfo extends Derived implements SchemaInfoConfig.Producer { +public final class SchemaInfo extends Derived { private final Schema schema; @@ -63,7 +64,6 @@ public final class SchemaInfo extends Derived implements SchemaInfoConfig.Produc return rankProfileInfos; } - @Override public void getConfig(SchemaInfoConfig.Builder builder) { // Append var schemaBuilder = new SchemaInfoConfig.Schema.Builder(); @@ -75,6 +75,12 @@ public final class SchemaInfo extends Derived implements SchemaInfoConfig.Produc builder.schema(schemaBuilder); } + public void export(String toDirectory) throws IOException { + var builder = new SchemaInfoConfig.Builder(); + getConfig(builder); + export(toDirectory, builder.build()); + } + private void addFieldsConfig(SchemaInfoConfig.Schema.Builder schemaBuilder) { for (var field : schema.allFieldsList()) { addFieldConfig(field, 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 51c648aa1be..1f0c6f7e761 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 @@ -7,6 +7,7 @@ import com.yahoo.schema.Schema; import com.yahoo.vespa.documentmodel.DocumentSummary; import com.yahoo.vespa.config.search.SummaryConfig; +import java.io.IOException; import java.util.ArrayList; import java.util.List; @@ -15,7 +16,7 @@ import java.util.List; * * @author bratseth */ -public class Summaries extends Derived implements SummaryConfig.Producer { +public class Summaries extends Derived { private final boolean useV8GeoPositions; private final List summaries; @@ -36,15 +37,18 @@ public class Summaries extends Derived implements SummaryConfig.Producer { public List asList() { return summaries; } - @Override - protected String getDerivedName() { return "summary"; } + @Override protected String getDerivedName() { return "summary"; } - @Override public void getConfig(SummaryConfig.Builder builder) { // Replace builder.defaultsummaryid(summaries.isEmpty() ? -1 : summaries.get(0).hashCode()); builder.usev8geopositions(useV8GeoPositions); builder.classes(summaries.stream().map(SummaryClass::getSummaryClassConfig).toList()); - } + } + public void export(String toDirectory) throws IOException { + var builder = new SummaryConfig.Builder(); + getConfig(builder); + export(toDirectory, builder.build()); + } } diff --git a/config-model/src/main/java/com/yahoo/schema/derived/SummaryClass.java b/config-model/src/main/java/com/yahoo/schema/derived/SummaryClass.java index 799324d26e9..398897c6b78 100644 --- a/config-model/src/main/java/com/yahoo/schema/derived/SummaryClass.java +++ b/config-model/src/main/java/com/yahoo/schema/derived/SummaryClass.java @@ -11,6 +11,7 @@ import com.yahoo.vespa.documentmodel.DocumentSummary; import com.yahoo.vespa.documentmodel.SummaryField; import com.yahoo.vespa.documentmodel.SummaryTransform; +import java.io.IOException; import java.util.Collections; import java.util.Map; import java.util.logging.Level; @@ -119,11 +120,9 @@ public class SummaryClass extends Derived { return classBuilder; } - @Override - public int hashCode() { return id; } + @Override public int hashCode() { return id; } - @Override - protected String getDerivedName() { return "summary"; } + @Override protected String getDerivedName() { return "summary"; } @Override public String toString() { 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 b2b2e9d3a14..6992ac70a1a 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 @@ -25,13 +25,14 @@ import com.yahoo.schema.document.SDField; import com.yahoo.schema.processing.TensorFieldProcessor; import com.yahoo.vespa.config.search.vsm.VsmfieldsConfig; +import java.io.IOException; import java.util.LinkedHashMap; import java.util.Map; /** * Vertical streaming matcher field specification */ -public class VsmFields extends Derived implements VsmfieldsConfig.Producer { +public class VsmFields extends Derived { private final Map fields=new LinkedHashMap<>(); private final Map doctypes=new LinkedHashMap<>(); @@ -106,13 +107,18 @@ public class VsmFields extends Derived implements VsmfieldsConfig.Producer { return "vsmfields"; } - @Override public void getConfig(VsmfieldsConfig.Builder vsB) { // Replace vsB.fieldspec(fields.values().stream().map(StreamingField::getFieldSpecConfig).toList()); vsB.documenttype(doctypes.values().stream().map(StreamingDocumentType::getDocTypeConfig).toList()); } + public void export(String toDirectory) throws IOException { + var builder = new VsmfieldsConfig.Builder(); + getConfig(builder); + export(toDirectory, builder.build()); + } + private static boolean isAttributeField(ImmutableSDField field, boolean isStructField, boolean ignoreAttributeAspect) { if (field.doesAttributing()) { return true; 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 248cca33bc6..7507ef95482 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 @@ -9,14 +9,18 @@ import com.yahoo.vespa.documentmodel.DocumentSummary; import com.yahoo.vespa.documentmodel.SummaryField; import com.yahoo.vespa.config.search.vsm.VsmsummaryConfig; -import java.util.*; +import java.io.IOException; +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; +import java.util.Map; /** * Vertical streaming matcher summary specification * * @author bratseth */ -public class VsmSummary extends Derived implements VsmsummaryConfig.Producer { +public class VsmSummary extends Derived { private final Map> summaryMap = new java.util.LinkedHashMap<>(1); @@ -89,12 +93,10 @@ public class VsmSummary extends Derived implements VsmsummaryConfig.Producer { return ret; } - @Override - public String getDerivedName() { + @Override public String getDerivedName() { return "vsmsummary"; } - @Override public void getConfig(VsmsummaryConfig.Builder vB) { // Replace vB.fieldmap( @@ -105,5 +107,10 @@ public class VsmSummary extends Derived implements VsmsummaryConfig.Producer { ).toList() ); } - + + public void export(String toDirectory) throws IOException { + var builder = new VsmsummaryConfig.Builder(); + getConfig(builder); + export(toDirectory, builder.build()); + } } diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/ContainerModelEvaluation.java b/config-model/src/main/java/com/yahoo/vespa/model/container/ContainerModelEvaluation.java index 41a09d9af8e..62979404025 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/container/ContainerModelEvaluation.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/container/ContainerModelEvaluation.java @@ -55,7 +55,7 @@ public class ContainerModelEvaluation implements @Override public void getConfig(RankProfilesConfig.Builder builder) { - rankProfileList.getConfig(builder); + builder.rankprofile(rankProfileList.getRankProfilesConfig()); } @Override diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/ml/ModelsEvaluatorTester.java b/config-model/src/main/java/com/yahoo/vespa/model/container/ml/ModelsEvaluatorTester.java index 5e7a7d738d4..bc936dc7441 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/container/ml/ModelsEvaluatorTester.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/container/ml/ModelsEvaluatorTester.java @@ -115,9 +115,9 @@ public class ModelsEvaluatorTester { } private static RankProfilesConfig getRankProfilesConfig(RankProfileList rankProfileList) { - RankProfilesConfig.Builder builder = new RankProfilesConfig.Builder(); - rankProfileList.getConfig(builder); - return builder.build(); + return new RankProfilesConfig.Builder() + .rankprofile(rankProfileList.getRankProfilesConfig()) + .build(); } private static RankingConstantsConfig getRankingConstantConfig(RankProfileList rankProfileList) { diff --git a/config-model/src/main/java/com/yahoo/vespa/model/search/DocumentDatabase.java b/config-model/src/main/java/com/yahoo/vespa/model/search/DocumentDatabase.java index 9a1a5faf9b0..ed571266f1b 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/search/DocumentDatabase.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/search/DocumentDatabase.java @@ -79,7 +79,9 @@ public class DocumentDatabase extends AnyConfigProducer implements @Override public void getConfig(RankingConstantsConfig.Builder builder) { builder.constant(derivedCfg.getRankProfileList().getConstantsConfig()); } - @Override public void getConfig(RankProfilesConfig.Builder builder) { derivedCfg.getRankProfileList().getConfig(builder); } + @Override public void getConfig(RankProfilesConfig.Builder builder) { + builder.rankprofile(derivedCfg.getRankProfileList().getRankProfilesConfig()); + } @Override public void getConfig(IndexschemaConfig.Builder builder) { derivedCfg.getIndexSchema().getConfig(builder); } @Override public void getConfig(JuniperrcConfig.Builder builder) { derivedCfg.getJuniperrc().getConfig(builder); } @Override public void getConfig(SummaryConfig.Builder builder) { derivedCfg.getSummaries().getConfig(builder); } -- cgit v1.2.3