diff options
author | Arne Juul <arnej@yahooinc.com> | 2023-02-14 09:58:25 +0000 |
---|---|---|
committer | Arne Juul <arnej@yahooinc.com> | 2023-02-14 10:52:18 +0000 |
commit | 90ffec36510f64a4b6ec1abf584682e1808468cf (patch) | |
tree | e12a351580f3bfe16d69a6fbde5b4fecd12805db /config-model/src | |
parent | 0289e24dc20cd38f69de2dbdb01cb09e1d436501 (diff) |
Less wildcards for some TreeConfigProducer instances
Diffstat (limited to 'config-model/src')
79 files changed, 249 insertions, 173 deletions
diff --git a/config-model/src/main/java/com/yahoo/config/model/ApplicationConfigProducerRoot.java b/config-model/src/main/java/com/yahoo/config/model/ApplicationConfigProducerRoot.java index 052bb7e968a..7c805417739 100644 --- a/config-model/src/main/java/com/yahoo/config/model/ApplicationConfigProducerRoot.java +++ b/config-model/src/main/java/com/yahoo/config/model/ApplicationConfigProducerRoot.java @@ -50,7 +50,7 @@ import java.util.Set; * * @author gjoranv */ -public class ApplicationConfigProducerRoot extends TreeConfigProducer<TreeConfigProducer<?>> implements CommonConfigsProducer { +public class ApplicationConfigProducerRoot extends TreeConfigProducer<AnyConfigProducer> implements CommonConfigsProducer { private final DocumentModel documentModel; private Routing routing = null; @@ -69,7 +69,8 @@ public class ApplicationConfigProducerRoot extends TreeConfigProducer<TreeConfig * @param name the name, used as configId * @param documentModel DocumentModel to serve global document config from. */ - public ApplicationConfigProducerRoot(TreeConfigProducer parent, String name, DocumentModel documentModel, Version vespaVersion, ApplicationId applicationId) { + public ApplicationConfigProducerRoot(TreeConfigProducer<AnyConfigProducer> parent, + String name, DocumentModel documentModel, Version vespaVersion, ApplicationId applicationId) { super(parent, name); this.documentModel = documentModel; this.vespaVersion = vespaVersion; diff --git a/config-model/src/main/java/com/yahoo/config/model/ConfigModelContext.java b/config-model/src/main/java/com/yahoo/config/model/ConfigModelContext.java index 4692c2c1fba..d9918168266 100644 --- a/config-model/src/main/java/com/yahoo/config/model/ConfigModelContext.java +++ b/config-model/src/main/java/com/yahoo/config/model/ConfigModelContext.java @@ -5,6 +5,7 @@ import com.yahoo.config.application.api.ApplicationPackage; import com.yahoo.config.application.api.DeployLogger; import com.yahoo.config.model.api.ModelContext; import com.yahoo.config.model.deploy.DeployState; +import com.yahoo.config.model.producer.AnyConfigProducer; import com.yahoo.config.model.producer.TreeConfigProducer; import com.yahoo.vespa.model.VespaModel; @@ -18,7 +19,7 @@ import java.util.stream.Stream; */ public final class ConfigModelContext { - private final TreeConfigProducer<?> parent; + private final TreeConfigProducer<AnyConfigProducer> parent; private final String producerId; private final DeployState deployState; private final VespaModel vespaModel; @@ -29,7 +30,7 @@ public final class ConfigModelContext { DeployState deployState, VespaModel vespaModel, ConfigModelRepoAdder configModelRepoAdder, - TreeConfigProducer<?> parent, + TreeConfigProducer<AnyConfigProducer> parent, String producerId) { this.applicationType = applicationType; this.deployState = deployState; @@ -41,7 +42,7 @@ public final class ConfigModelContext { public ApplicationPackage getApplicationPackage() { return deployState.getApplicationPackage(); } public String getProducerId() { return producerId; } - public TreeConfigProducer<?> getParentProducer() { return parent; } + public TreeConfigProducer<AnyConfigProducer> getParentProducer() { return parent; } public DeployLogger getDeployLogger() { return deployState.getDeployLogger(); } public DeployState getDeployState() { return deployState; } public ApplicationType getApplicationType() { return applicationType; } @@ -53,7 +54,7 @@ public final class ConfigModelContext { public ConfigModelRepoAdder getConfigModelRepoAdder() { return configModelRepoAdder; } /** Create a new context with a different parent */ - public ConfigModelContext withParent(TreeConfigProducer<?> newParent) { + public ConfigModelContext withParent(TreeConfigProducer<AnyConfigProducer> newParent) { return ConfigModelContext.create(deployState, vespaModel, configModelRepoAdder, newParent, producerId); } @@ -77,7 +78,7 @@ public final class ConfigModelContext { public static ConfigModelContext create(DeployState deployState, VespaModel vespaModel, ConfigModelRepoAdder configModelRepoAdder, - TreeConfigProducer<?> parent, + TreeConfigProducer<AnyConfigProducer> parent, String producerId) { return new ConfigModelContext(ApplicationType.DEFAULT, deployState, vespaModel, configModelRepoAdder, parent, producerId); } @@ -95,7 +96,7 @@ public final class ConfigModelContext { DeployState deployState, VespaModel vespaModel, ConfigModelRepoAdder configModelRepoAdder, - TreeConfigProducer<?> parent, + TreeConfigProducer<AnyConfigProducer> parent, String producerId) { return new ConfigModelContext(applicationType, deployState, vespaModel, configModelRepoAdder, parent, producerId); } diff --git a/config-model/src/main/java/com/yahoo/config/model/ConfigModelRepo.java b/config-model/src/main/java/com/yahoo/config/model/ConfigModelRepo.java index fc04ab6acc3..161b909e7e2 100644 --- a/config-model/src/main/java/com/yahoo/config/model/ConfigModelRepo.java +++ b/config-model/src/main/java/com/yahoo/config/model/ConfigModelRepo.java @@ -9,6 +9,7 @@ import com.yahoo.config.model.builder.xml.XmlHelper; import com.yahoo.config.model.deploy.DeployState; import com.yahoo.config.model.graph.ModelGraphBuilder; import com.yahoo.config.model.graph.ModelNode; +import com.yahoo.config.model.producer.AnyConfigProducer; import com.yahoo.config.model.producer.TreeConfigProducer; import com.yahoo.config.model.provision.HostsXmlProvisioner; import com.yahoo.text.XML; @@ -172,7 +173,7 @@ public class ConfigModelRepo implements ConfigModelRepoAdder, Serializable, Iter ApplicationType applicationType, DeployState deployState, VespaModel vespaModel, - TreeConfigProducer parent, + TreeConfigProducer<AnyConfigProducer> parent, List<Element> elements) { for (Element servicesElement : elements) { ConfigModel model = buildModel(node, applicationType, deployState, vespaModel, parent, servicesElement); @@ -185,7 +186,7 @@ public class ConfigModelRepo implements ConfigModelRepoAdder, Serializable, Iter ApplicationType applicationType, DeployState deployState, VespaModel vespaModel, - TreeConfigProducer parent, + TreeConfigProducer<AnyConfigProducer> parent, Element servicesElement) { ConfigModelBuilder builder = node.builder; ConfigModelContext context = ConfigModelContext.create(applicationType, deployState, vespaModel, this, parent, getIdString(servicesElement)); diff --git a/config-model/src/main/java/com/yahoo/config/model/admin/AdminModel.java b/config-model/src/main/java/com/yahoo/config/model/admin/AdminModel.java index d4fb96e3f19..1562dbbfb00 100644 --- a/config-model/src/main/java/com/yahoo/config/model/admin/AdminModel.java +++ b/config-model/src/main/java/com/yahoo/config/model/admin/AdminModel.java @@ -9,6 +9,7 @@ import com.yahoo.config.model.api.ModelContext; import com.yahoo.config.model.builder.xml.ConfigModelBuilder; import com.yahoo.config.model.builder.xml.ConfigModelId; import com.yahoo.config.model.deploy.DeployState; +import com.yahoo.config.model.producer.AnyConfigProducer; import com.yahoo.config.model.producer.TreeConfigProducer; import com.yahoo.vespa.model.admin.Admin; import com.yahoo.vespa.model.builder.xml.dom.DomAdminV2Builder; @@ -80,7 +81,7 @@ public class AdminModel extends ConfigModel { new BuilderV4().doBuild(model, adminElement, modelContext); return; } - TreeConfigProducer<?> parent = modelContext.getParentProducer(); + TreeConfigProducer<AnyConfigProducer> parent = modelContext.getParentProducer(); ModelContext.Properties properties = modelContext.getDeployState().getProperties(); DomAdminV2Builder domBuilder = new DomAdminV2Builder(modelContext.getApplicationType(), properties.multitenant(), @@ -109,7 +110,7 @@ public class AdminModel extends ConfigModel { @Override public void doBuild(AdminModel model, Element adminElement, ConfigModelContext modelContext) { - TreeConfigProducer<?> parent = modelContext.getParentProducer(); + TreeConfigProducer<AnyConfigProducer> parent = modelContext.getParentProducer(); ModelContext.Properties properties = modelContext.getDeployState().getProperties(); DomAdminV4Builder domBuilder = new DomAdminV4Builder(modelContext, properties.multitenant(), diff --git a/config-model/src/main/java/com/yahoo/config/model/builder/xml/ConfigModelBuilder.java b/config-model/src/main/java/com/yahoo/config/model/builder/xml/ConfigModelBuilder.java index c968006a5b6..45f64182b2a 100644 --- a/config-model/src/main/java/com/yahoo/config/model/builder/xml/ConfigModelBuilder.java +++ b/config-model/src/main/java/com/yahoo/config/model/builder/xml/ConfigModelBuilder.java @@ -8,6 +8,7 @@ import com.yahoo.config.model.ConfigModelInstanceFactory; import com.yahoo.config.model.ConfigModelRepo; import com.yahoo.config.model.api.ConfigModelPlugin; import com.yahoo.config.model.deploy.DeployState; +import com.yahoo.config.model.producer.AnyConfigProducer; import com.yahoo.config.model.producer.TreeConfigProducer; import com.yahoo.vespa.model.VespaModel; import org.w3c.dom.Element; @@ -55,7 +56,7 @@ public abstract class ConfigModelBuilder<MODEL extends ConfigModel> extends Abst * @param spec the XML element this is constructed from */ public final MODEL build(DeployState deployState, VespaModel vespaModel, ConfigModelRepo configModelRepo, - TreeConfigProducer<?> parent, Element spec) { + TreeConfigProducer<AnyConfigProducer> parent, Element spec) { ConfigModelContext context = ConfigModelContext.create(deployState, vespaModel, configModelRepo, parent, getIdString(spec)); return build(new DefaultModelInstanceFactory(), spec, context); } diff --git a/config-model/src/main/java/com/yahoo/config/model/producer/AbstractConfigProducerRoot.java b/config-model/src/main/java/com/yahoo/config/model/producer/AbstractConfigProducerRoot.java index 6dd94028e9c..ef3823d8873 100644 --- a/config-model/src/main/java/com/yahoo/config/model/producer/AbstractConfigProducerRoot.java +++ b/config-model/src/main/java/com/yahoo/config/model/producer/AbstractConfigProducerRoot.java @@ -15,7 +15,7 @@ import java.util.Optional; * * @author Tony Vaagenes */ -public abstract class AbstractConfigProducerRoot extends TreeConfigProducer<TreeConfigProducer<?>> +public abstract class AbstractConfigProducerRoot extends TreeConfigProducer<AnyConfigProducer> implements ConfigProducerRoot { /** The ConfigProducers contained in this model indexed by config id */ diff --git a/config-model/src/main/java/com/yahoo/config/model/test/MockRoot.java b/config-model/src/main/java/com/yahoo/config/model/test/MockRoot.java index f1113ee2d00..7b2aaa32136 100644 --- a/config-model/src/main/java/com/yahoo/config/model/test/MockRoot.java +++ b/config-model/src/main/java/com/yahoo/config/model/test/MockRoot.java @@ -107,7 +107,7 @@ public class MockRoot extends AbstractConfigProducerRoot { } @Override - public void addChild(TreeConfigProducer<?> abstractConfigProducer) { + public void addChild(AnyConfigProducer abstractConfigProducer) { super.addChild(abstractConfigProducer); } diff --git a/config-model/src/main/java/com/yahoo/vespa/model/AbstractService.java b/config-model/src/main/java/com/yahoo/vespa/model/AbstractService.java index 0041d3fa44c..8411fade6f6 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/AbstractService.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/AbstractService.java @@ -4,6 +4,7 @@ package com.yahoo.vespa.model; import com.yahoo.config.model.api.PortInfo; import com.yahoo.config.model.api.ServiceInfo; import com.yahoo.config.model.deploy.DeployState; +import com.yahoo.config.model.producer.AnyConfigProducer; import com.yahoo.config.model.producer.TreeConfigProducer; import com.yahoo.vespa.defaults.Defaults; @@ -27,7 +28,7 @@ import static com.yahoo.text.Lowercase.toLowerCase; * * @author gjoranv */ -public abstract class AbstractService extends TreeConfigProducer<TreeConfigProducer<?>> implements Service { +public abstract class AbstractService extends TreeConfigProducer<AnyConfigProducer> implements Service { // The physical host this Service runs on. private HostResource hostResource = null; diff --git a/config-model/src/main/java/com/yahoo/vespa/model/Client.java b/config-model/src/main/java/com/yahoo/vespa/model/Client.java index f9d93f97fa1..7f5a73ad125 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/Client.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/Client.java @@ -2,6 +2,7 @@ package com.yahoo.vespa.model; import com.yahoo.config.model.ApplicationConfigProducerRoot; +import com.yahoo.config.model.producer.AnyConfigProducer; import com.yahoo.config.model.producer.TreeConfigProducer; /** @@ -10,7 +11,7 @@ import com.yahoo.config.model.producer.TreeConfigProducer; * * @author Simon Thoresen Hult */ -public class Client extends TreeConfigProducer { +public class Client extends TreeConfigProducer<AnyConfigProducer> { /** * Constructs a client config producer that is added as a child to @@ -18,7 +19,7 @@ public class Client extends TreeConfigProducer { * * @param parent The parent config producer. */ - public Client(TreeConfigProducer parent) { + public Client(TreeConfigProducer<? super Client> parent) { super(parent, "client"); } diff --git a/config-model/src/main/java/com/yahoo/vespa/model/Host.java b/config-model/src/main/java/com/yahoo/vespa/model/Host.java index 4bf50f98550..3eace3673df 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/Host.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/Host.java @@ -24,7 +24,7 @@ public final class Host extends TreeConfigProducer<TreeConfigProducer<?>> implem * @param parent parent TreeConfigProducer in the config model. * @param hostname hostname for this host. */ - public Host(TreeConfigProducer<?> parent, String hostname) { + public Host(TreeConfigProducer<? super Host> parent, String hostname) { this(parent, hostname, false); } diff --git a/config-model/src/main/java/com/yahoo/vespa/model/SimpleConfigProducer.java b/config-model/src/main/java/com/yahoo/vespa/model/SimpleConfigProducer.java index bea9bb8edcc..99010ba041c 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/SimpleConfigProducer.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/SimpleConfigProducer.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.vespa.model; +import com.yahoo.config.model.producer.AnyConfigProducer; import com.yahoo.config.model.producer.TreeConfigProducer; /** @@ -8,7 +9,7 @@ import com.yahoo.config.model.producer.TreeConfigProducer; * * @author arnej27959 */ -public final class SimpleConfigProducer<T extends TreeConfigProducer<?>> extends TreeConfigProducer<T> { +public final class SimpleConfigProducer<T extends AnyConfigProducer> extends TreeConfigProducer<T> { private static final long serialVersionUID = 1L; diff --git a/config-model/src/main/java/com/yahoo/vespa/model/admin/Admin.java b/config-model/src/main/java/com/yahoo/vespa/model/admin/Admin.java index 0dc51411532..cfc5500bea8 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/admin/Admin.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/admin/Admin.java @@ -6,6 +6,7 @@ import com.yahoo.cloud.config.ZookeepersConfig; import com.yahoo.cloud.config.log.LogdConfig; import com.yahoo.config.model.ConfigModelContext.ApplicationType; import com.yahoo.config.model.deploy.DeployState; +import com.yahoo.config.model.producer.AnyConfigProducer; import com.yahoo.config.model.producer.TreeConfigProducer; import com.yahoo.config.provision.ClusterSpec; import com.yahoo.vespa.model.AbstractService; @@ -38,7 +39,7 @@ import static com.yahoo.vespa.model.admin.monitoring.MetricSet.empty; * * @author gjoranv */ -public class Admin extends TreeConfigProducer<Admin> implements Serializable { +public class Admin extends TreeConfigProducer<AnyConfigProducer> implements Serializable { private static final long serialVersionUID = 1L; diff --git a/config-model/src/main/java/com/yahoo/vespa/model/admin/Configserver.java b/config-model/src/main/java/com/yahoo/vespa/model/admin/Configserver.java index 5c2f18a4303..d70c26d6e8f 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/admin/Configserver.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/admin/Configserver.java @@ -23,7 +23,7 @@ public class Configserver extends AbstractService { private final int rpcPort; - public Configserver(TreeConfigProducer parent, String name, int rpcPort) { + public Configserver(TreeConfigProducer<? super Configserver> parent, String name, int rpcPort) { super(parent, name); this.rpcPort = rpcPort; portsMeta.on(0).tag("rpc").tag("config"); diff --git a/config-model/src/main/java/com/yahoo/vespa/model/admin/LogForwarder.java b/config-model/src/main/java/com/yahoo/vespa/model/admin/LogForwarder.java index d68241c4e1f..6284c0bc625 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/admin/LogForwarder.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/admin/LogForwarder.java @@ -41,7 +41,7 @@ public class LogForwarder extends AbstractService implements LogforwarderConfig. * Creates a new LogForwarder instance. */ // TODO: Use proper types? - public LogForwarder(TreeConfigProducer parent, Config config) { + public LogForwarder(TreeConfigProducer<? super LogForwarder> parent, Config config) { super(parent, "logforwarder"); this.config = config; setProp("clustertype", "hosts"); diff --git a/config-model/src/main/java/com/yahoo/vespa/model/admin/Logserver.java b/config-model/src/main/java/com/yahoo/vespa/model/admin/Logserver.java index a45ce37c7b7..7d7d0007b5e 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/admin/Logserver.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/admin/Logserver.java @@ -19,7 +19,7 @@ public class Logserver extends AbstractService { private static final String logArchiveDir = "$ROOT/logs/vespa/logarchive"; private String compressionType = "gzip"; - public Logserver(TreeConfigProducer parent) { + public Logserver(TreeConfigProducer<? super Logserver> parent) { super(parent, "logserver"); portsMeta.on(0).tag("logtp").tag("rpc"); portsMeta.on(1).tag("unused"); diff --git a/config-model/src/main/java/com/yahoo/vespa/model/admin/ModelConfigProvider.java b/config-model/src/main/java/com/yahoo/vespa/model/admin/ModelConfigProvider.java index be75a25eff8..e96c41c92e5 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/admin/ModelConfigProvider.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/admin/ModelConfigProvider.java @@ -2,6 +2,7 @@ package com.yahoo.vespa.model.admin; import com.yahoo.config.model.ApplicationConfigProducerRoot; +import com.yahoo.config.model.producer.AnyConfigProducer; import com.yahoo.config.model.producer.TreeConfigProducer; /** @@ -11,9 +12,9 @@ import com.yahoo.config.model.producer.TreeConfigProducer; * @author gjoranv * @since 5.0.8 */ -public class ModelConfigProvider extends TreeConfigProducer { +public class ModelConfigProvider extends TreeConfigProducer<AnyConfigProducer> { - public ModelConfigProvider(TreeConfigProducer<?> parent) { + public ModelConfigProvider(TreeConfigProducer<AnyConfigProducer> parent) { super(parent, "model"); } } diff --git a/config-model/src/main/java/com/yahoo/vespa/model/builder/VespaModelBuilder.java b/config-model/src/main/java/com/yahoo/vespa/model/builder/VespaModelBuilder.java index 8853280ac09..3ad81ef9f57 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/builder/VespaModelBuilder.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/builder/VespaModelBuilder.java @@ -4,6 +4,7 @@ package com.yahoo.vespa.model.builder; import com.yahoo.config.application.api.DeployLogger; import com.yahoo.config.model.ConfigModelRepo; import com.yahoo.config.model.deploy.DeployState; +import com.yahoo.config.model.producer.AnyConfigProducer; import com.yahoo.config.model.producer.TreeConfigProducer; import com.yahoo.config.model.ApplicationConfigProducerRoot; @@ -14,7 +15,7 @@ import com.yahoo.config.model.ApplicationConfigProducerRoot; */ public abstract class VespaModelBuilder { - public abstract ApplicationConfigProducerRoot getRoot(String name, DeployState deployState, TreeConfigProducer parent); + public abstract ApplicationConfigProducerRoot getRoot(String name, DeployState deployState, TreeConfigProducer<AnyConfigProducer> parent); /** * Processing that requires access across plugins @@ -22,6 +23,6 @@ public abstract class VespaModelBuilder { * @param producerRoot the root producer. * @param configModelRepo a {@link com.yahoo.config.model.ConfigModelRepo instance} */ - public abstract void postProc(DeployState deployState, TreeConfigProducer producerRoot, ConfigModelRepo configModelRepo); + public abstract void postProc(DeployState deployState, TreeConfigProducer<AnyConfigProducer> producerRoot, ConfigModelRepo configModelRepo); } diff --git a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/DomAdminBuilderBase.java b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/DomAdminBuilderBase.java index 709b18b57f7..55ea62d0590 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/DomAdminBuilderBase.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/DomAdminBuilderBase.java @@ -4,6 +4,7 @@ package com.yahoo.vespa.model.builder.xml.dom; import com.yahoo.config.model.ConfigModelContext.ApplicationType; import com.yahoo.config.model.api.ConfigServerSpec; import com.yahoo.config.model.deploy.DeployState; +import com.yahoo.config.model.producer.AnyConfigProducer; import com.yahoo.config.model.producer.TreeConfigProducer; import com.yahoo.container.logging.LevelsModSpec; import com.yahoo.text.XML; @@ -33,7 +34,7 @@ import java.util.Optional; * @author Ulf Lilleengen * @author Vegard Havdal */ -public abstract class DomAdminBuilderBase extends VespaDomBuilder.DomConfigProducerBuilder<Admin> { +public abstract class DomAdminBuilderBase extends VespaDomBuilder.DomConfigProducerBuilder<Admin, AnyConfigProducer> { private final ApplicationType applicationType; protected final List<ConfigServerSpec> configServerSpecs; @@ -47,7 +48,7 @@ public abstract class DomAdminBuilderBase extends VespaDomBuilder.DomConfigProdu this.configServerSpecs = configServerSpecs; } - List<Configserver> getConfigServersFromSpec(DeployState deployState, TreeConfigProducer<?> parent) { + List<Configserver> getConfigServersFromSpec(DeployState deployState, TreeConfigProducer<AnyConfigProducer> parent) { List<Configserver> configservers = new ArrayList<>(); for (ConfigServerSpec spec : configServerSpecs) { HostSystem hostSystem = parent.hostSystem(); @@ -63,7 +64,7 @@ public abstract class DomAdminBuilderBase extends VespaDomBuilder.DomConfigProdu } @Override - protected Admin doBuild(DeployState deployState, TreeConfigProducer<?> parent, Element adminElement) { + protected Admin doBuild(DeployState deployState, TreeConfigProducer<AnyConfigProducer> parent, Element adminElement) { Monitoring monitoring = getMonitoring(XML.getChild(adminElement,"monitoring"), deployState.isHosted()); Metrics metrics = new MetricsBuilder(applicationType, PredefinedMetricSets.get()) .buildMetrics(XML.getChild(adminElement, "metrics")); diff --git a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/DomAdminV2Builder.java b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/DomAdminV2Builder.java index 3c28ddcbc5d..57dc8955313 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/DomAdminV2Builder.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/DomAdminV2Builder.java @@ -4,6 +4,7 @@ package com.yahoo.vespa.model.builder.xml.dom; import com.yahoo.config.model.ConfigModelContext; import com.yahoo.config.model.api.ConfigServerSpec; import com.yahoo.config.model.deploy.DeployState; +import com.yahoo.config.model.producer.AnyConfigProducer; import com.yahoo.config.model.producer.TreeConfigProducer; import com.yahoo.text.XML; import com.yahoo.vespa.model.SimpleConfigProducer; @@ -104,19 +105,19 @@ public class DomAdminV2Builder extends DomAdminBuilderBase { return cluster; } - private List<Configserver> getConfigServers(DeployState deployState, TreeConfigProducer<?> parent, Element adminE) { + private List<Configserver> getConfigServers(DeployState deployState, TreeConfigProducer<AnyConfigProducer> parent, Element adminE) { Element configserversE = XML.getChild(adminE, "configservers"); if (configserversE == null) { Element adminserver = XML.getChild(adminE, "adminserver"); if (adminserver == null) { return createSingleConfigServer(deployState, parent); } else { - SimpleConfigProducer<?> configServers = new SimpleConfigProducer<>(parent, "configservers"); + SimpleConfigProducer<AnyConfigProducer> configServers = new SimpleConfigProducer<>(parent, "configservers"); return List.of(new ConfigserverBuilder(0, configServerSpecs).build(deployState, configServers, adminserver)); } } else { - SimpleConfigProducer<?> configServers = new SimpleConfigProducer<>(parent, "configservers"); + SimpleConfigProducer<AnyConfigProducer> configServers = new SimpleConfigProducer<>(parent, "configservers"); List<Configserver> configservers = new ArrayList<>(); int i = 0; for (Element configserverE : XML.getChildren(configserversE, "configserver")) @@ -127,21 +128,21 @@ public class DomAdminV2Builder extends DomAdminBuilderBase { /** Fallback when no config server is specified */ private List<Configserver> createSingleConfigServer(DeployState deployState, TreeConfigProducer<?> parent) { - SimpleConfigProducer<?> configServers = new SimpleConfigProducer<>(parent, "configservers"); + SimpleConfigProducer<AnyConfigProducer> configServers = new SimpleConfigProducer<>(parent, "configservers"); Configserver configServer = new Configserver(configServers, "configserver", Configserver.defaultRpcPort); configServer.setHostResource(parent.hostSystem().getHost(Container.SINGLENODE_CONTAINER_SERVICESPEC)); configServer.initService(deployState); return List.of(configServer); } - private List<Slobrok> getSlobroks(DeployState deployState, TreeConfigProducer<?> parent, Element slobroksE) { + private List<Slobrok> getSlobroks(DeployState deployState, TreeConfigProducer<AnyConfigProducer> parent, Element slobroksE) { List<Slobrok> slobroks = new ArrayList<>(); if (slobroksE != null) slobroks = getExplicitSlobrokSetup(deployState, parent, slobroksE); return slobroks; } - private List<Slobrok> getExplicitSlobrokSetup(DeployState deployState, TreeConfigProducer<?> parent, Element slobroksE) { + private List<Slobrok> getExplicitSlobrokSetup(DeployState deployState, TreeConfigProducer<AnyConfigProducer> parent, Element slobroksE) { List<Slobrok> slobroks = new ArrayList<>(); int i = 0; for (Element e : XML.getChildren(slobroksE, "slobrok")) @@ -149,17 +150,17 @@ public class DomAdminV2Builder extends DomAdminBuilderBase { return slobroks; } - private static class LogserverBuilder extends DomConfigProducerBuilder<Logserver> { + private static class LogserverBuilder extends DomConfigProducerBuilder<Logserver, AnyConfigProducer> { public LogserverBuilder() { } @Override - protected Logserver doBuild(DeployState deployState, TreeConfigProducer<?> parent, Element producerSpec) { + protected Logserver doBuild(DeployState deployState, TreeConfigProducer<AnyConfigProducer> parent, Element producerSpec) { return new Logserver(parent); } } - private static class ConfigserverBuilder extends DomConfigProducerBuilder<Configserver> { + private static class ConfigserverBuilder extends DomConfigProducerBuilder<Configserver, AnyConfigProducer> { private final int i; private final int rpcPort; @@ -173,14 +174,14 @@ public class DomAdminV2Builder extends DomAdminBuilderBase { } @Override - protected Configserver doBuild(DeployState deployState, TreeConfigProducer<?> parent, Element spec) { + protected Configserver doBuild(DeployState deployState, TreeConfigProducer<AnyConfigProducer> parent, Element spec) { var configServer = new Configserver(parent, "configserver." + i, rpcPort); configServer.setProp("index", i); return configServer; } } - private static class SlobrokBuilder extends DomConfigProducerBuilder<Slobrok> { + private static class SlobrokBuilder extends DomConfigProducerBuilder<Slobrok, AnyConfigProducer> { int i; @@ -189,13 +190,13 @@ public class DomAdminV2Builder extends DomAdminBuilderBase { } @Override - protected Slobrok doBuild(DeployState deployState, TreeConfigProducer<?> parent, Element spec) { + protected Slobrok doBuild(DeployState deployState, TreeConfigProducer<AnyConfigProducer> parent, Element spec) { return new Slobrok(parent, i, deployState.featureFlags()); } } - private static class ClusterControllerBuilder extends DomConfigProducerBuilder<ClusterControllerContainer> { + private static class ClusterControllerBuilder extends DomConfigProducerBuilder<ClusterControllerContainer, AnyConfigProducer> { int i; boolean runStandaloneZooKeeper; @@ -205,7 +206,7 @@ public class DomAdminV2Builder extends DomAdminBuilderBase { } @Override - protected ClusterControllerContainer doBuild(DeployState deployState, TreeConfigProducer<?> parent, Element spec) { + protected ClusterControllerContainer doBuild(DeployState deployState, TreeConfigProducer<AnyConfigProducer> parent, Element spec) { return new ClusterControllerContainer(parent, i, runStandaloneZooKeeper, deployState, false); } } diff --git a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/DomClientProviderBuilder.java b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/DomClientProviderBuilder.java index 59b2d29c6aa..3491f219a8e 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/DomClientProviderBuilder.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/DomClientProviderBuilder.java @@ -2,6 +2,7 @@ package com.yahoo.vespa.model.builder.xml.dom; import com.yahoo.config.model.deploy.DeployState; +import com.yahoo.config.model.producer.AnyConfigProducer; import com.yahoo.config.model.producer.TreeConfigProducer; import com.yahoo.text.XML; import com.yahoo.vespa.model.container.ApplicationContainerCluster; @@ -20,7 +21,7 @@ public class DomClientProviderBuilder extends DomHandlerBuilder { } @Override - protected Handler doBuild(DeployState deployState, TreeConfigProducer parent, Element clientElement) { + protected Handler doBuild(DeployState deployState, TreeConfigProducer<AnyConfigProducer> parent, Element clientElement) { Handler client = createHandler(clientElement); for (Element binding : XML.getChildren(clientElement, "binding")) diff --git a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/DomComponentBuilder.java b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/DomComponentBuilder.java index 2953b9da761..c57122e5bf5 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/DomComponentBuilder.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/DomComponentBuilder.java @@ -5,6 +5,7 @@ import com.yahoo.component.ComponentId; import com.yahoo.config.model.deploy.DeployState; import com.yahoo.container.bundle.BundleInstantiationSpecification; import com.yahoo.osgi.provider.model.ComponentModel; +import com.yahoo.config.model.producer.AnyConfigProducer; import com.yahoo.config.model.producer.TreeConfigProducer; import com.yahoo.text.XML; import com.yahoo.vespa.model.container.component.Component; @@ -15,7 +16,7 @@ import org.w3c.dom.Element; * @author gjoranv * @author Tony Vaagenes */ -public class DomComponentBuilder extends VespaDomBuilder.DomConfigProducerBuilder<Component<?, ?>> { +public class DomComponentBuilder extends VespaDomBuilder.DomConfigProducerBuilder<Component<?, ?>, AnyConfigProducer> { public static final String elementName = "component" ; @@ -30,7 +31,7 @@ public class DomComponentBuilder extends VespaDomBuilder.DomConfigProducerBuilde } @Override - protected Component doBuild(DeployState deployState, TreeConfigProducer<?> ancestor, Element spec) { + protected Component doBuild(DeployState deployState, TreeConfigProducer<AnyConfigProducer> ancestor, Element spec) { Component component = buildComponent(spec); addChildren(deployState, ancestor, spec, component); return component; @@ -43,13 +44,13 @@ public class DomComponentBuilder extends VespaDomBuilder.DomConfigProducerBuilde return new Component<Component<?, ?>, ComponentModel>(new ComponentModel(bundleSpec)); } - public static void addChildren(DeployState deployState, TreeConfigProducer ancestor, Element componentNode, Component<? super Component<?, ?>, ?> component) { + public static void addChildren(DeployState deployState, TreeConfigProducer<AnyConfigProducer> ancestor, Element componentNode, Component<? super Component<?, ?>, ?> component) { for (Element childNode : XML.getChildren(componentNode, elementName)) { addAndInjectChild(deployState, ancestor, component, childNode); } } - private static void addAndInjectChild(DeployState deployState, TreeConfigProducer ancestor, Component<? super Component<?, ?>, ?> component, Element childNode) { + private static void addAndInjectChild(DeployState deployState, TreeConfigProducer<AnyConfigProducer> ancestor, Component<? super Component<?, ?>, ?> component, Element childNode) { Component<?, ?> child = new DomComponentBuilder(component.getComponentId()).build(deployState, ancestor, childNode); component.addComponent(child); component.inject(child); diff --git a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/DomHandlerBuilder.java b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/DomHandlerBuilder.java index c3ff10c1297..5e0c5bab8ca 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/DomHandlerBuilder.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/DomHandlerBuilder.java @@ -3,6 +3,7 @@ package com.yahoo.vespa.model.builder.xml.dom; import com.yahoo.config.application.api.DeployLogger; import com.yahoo.config.model.deploy.DeployState; +import com.yahoo.config.model.producer.AnyConfigProducer; import com.yahoo.config.model.producer.TreeConfigProducer; import com.yahoo.container.bundle.BundleInstantiationSpecification; import com.yahoo.osgi.provider.model.ComponentModel; @@ -27,7 +28,7 @@ import static java.util.logging.Level.INFO; /** * @author gjoranv */ -public class DomHandlerBuilder extends VespaDomBuilder.DomConfigProducerBuilder<Handler> { +public class DomHandlerBuilder extends VespaDomBuilder.DomConfigProducerBuilder<Handler, AnyConfigProducer> { private static final Set<BindingPattern> reservedBindings = Set.of(METRICS_V2_HANDLER_BINDING_1, @@ -48,7 +49,7 @@ public class DomHandlerBuilder extends VespaDomBuilder.DomConfigProducerBuilder< } @Override - protected Handler doBuild(DeployState deployState, TreeConfigProducer<?> parent, Element handlerElement) { + protected Handler doBuild(DeployState deployState, TreeConfigProducer<AnyConfigProducer> parent, Element handlerElement) { Handler handler = createHandler(handlerElement); OptionalInt port = portBindingOverride.isPresent() && deployState.isHosted() && deployState.featureFlags().useRestrictedDataPlaneBindings() ? portBindingOverride diff --git a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/DomSearchTuningBuilder.java b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/DomSearchTuningBuilder.java index d2304eabe0c..dce9bfd73c3 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/DomSearchTuningBuilder.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/DomSearchTuningBuilder.java @@ -3,6 +3,7 @@ package com.yahoo.vespa.model.builder.xml.dom; import com.yahoo.config.model.deploy.DeployState; import com.yahoo.text.XML; +import com.yahoo.config.model.producer.AnyConfigProducer; import com.yahoo.config.model.producer.TreeConfigProducer; import com.yahoo.vespa.model.search.Tuning; import org.w3c.dom.Element; @@ -12,10 +13,10 @@ import org.w3c.dom.Element; * * @author geirst */ -public class DomSearchTuningBuilder extends VespaDomBuilder.DomConfigProducerBuilder<Tuning> { +public class DomSearchTuningBuilder extends VespaDomBuilder.DomConfigProducerBuilder<Tuning, AnyConfigProducer> { @Override - protected Tuning doBuild(DeployState deployState, TreeConfigProducer parent, Element spec) { + protected Tuning doBuild(DeployState deployState, TreeConfigProducer<AnyConfigProducer> parent, Element spec) { Tuning tuning = new Tuning(parent); for (Element e : XML.getChildren(spec)) { if (equals("searchnode", e)) diff --git a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/LegacyConfigModelBuilder.java b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/LegacyConfigModelBuilder.java index e5d33333420..f105c4b4fe1 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/LegacyConfigModelBuilder.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/LegacyConfigModelBuilder.java @@ -5,6 +5,7 @@ import com.yahoo.config.model.ConfigModel; import com.yahoo.config.model.ConfigModelContext; import com.yahoo.config.model.builder.xml.ConfigModelBuilder; import com.yahoo.config.model.ConfigModelInstanceFactory; +import com.yahoo.config.model.producer.AnyConfigProducer; import com.yahoo.config.model.producer.TreeConfigProducer; import org.w3c.dom.Element; @@ -23,7 +24,7 @@ public abstract class LegacyConfigModelBuilder<MODEL extends ConfigModel> extend @Override public MODEL build(ConfigModelInstanceFactory<MODEL> factory, Element spec, ConfigModelContext context) { VespaDomBuilder.DomSimpleConfigProducerBuilder builder = new VespaDomBuilder.DomSimpleConfigProducerBuilder(context.getProducerId()); - TreeConfigProducer producer = builder.build(context.getDeployState(), context.getParentProducer(), spec); + TreeConfigProducer<AnyConfigProducer> producer = builder.build(context.getDeployState(), context.getParentProducer(), spec); return super.build(factory, spec, context.withParent(producer)); } diff --git a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/VespaDomBuilder.java b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/VespaDomBuilder.java index 1b0987ea518..27ebf3a9657 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/VespaDomBuilder.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/VespaDomBuilder.java @@ -7,6 +7,7 @@ import com.yahoo.config.model.ApplicationConfigProducerRoot; import com.yahoo.config.model.ConfigModelRepo; import com.yahoo.config.model.builder.xml.XmlHelper; import com.yahoo.config.model.deploy.DeployState; +import com.yahoo.config.model.producer.AnyConfigProducer; import com.yahoo.config.model.producer.TreeConfigProducer; import com.yahoo.config.model.producer.UserConfigRepo; import com.yahoo.text.XML; @@ -61,7 +62,7 @@ public class VespaDomBuilder extends VespaModelBuilder { @Override - public ApplicationConfigProducerRoot getRoot(String name, DeployState deployState, TreeConfigProducer parent) { + public ApplicationConfigProducerRoot getRoot(String name, DeployState deployState, TreeConfigProducer<AnyConfigProducer> parent) { try { return new DomRootBuilder(name). build(deployState, parent, XmlHelper.getDocument(deployState.getApplicationPackage().getServices(), "services.xml") @@ -85,10 +86,11 @@ public class VespaDomBuilder extends VespaModelBuilder { * * @param <T> an {@link com.yahoo.config.model.producer.TreeConfigProducer} */ - public static abstract class DomConfigProducerBuilder<T extends TreeConfigProducer<?>> { + public static abstract class DomConfigProducerBuilder<T extends AnyConfigProducer, P extends AnyConfigProducer> + { // TODO: find good way to provide access to app package - public final T build(DeployState deployState, TreeConfigProducer<?> ancestor, Element producerSpec) { + public final T build(DeployState deployState, TreeConfigProducer<P> ancestor, Element producerSpec) { T t = doBuild(deployState, ancestor, producerSpec); if (t instanceof AbstractService) { @@ -100,9 +102,9 @@ public class VespaDomBuilder extends VespaModelBuilder { return t; } - protected abstract T doBuild(DeployState deployState, TreeConfigProducer<?> ancestor, Element producerSpec); + protected abstract T doBuild(DeployState deployState, TreeConfigProducer<P> ancestor, Element producerSpec); - private void initializeProducer(TreeConfigProducer<?> child, DeployState deployState, Element producerSpec) { + private void initializeProducer(AnyConfigProducer child, DeployState deployState, Element producerSpec) { UserConfigRepo userConfigs = UserConfigBuilder.build(producerSpec, deployState, deployState.getDeployLogger()); // TODO: must be made to work: //userConfigs.applyWarnings(child); @@ -174,7 +176,7 @@ public class VespaDomBuilder extends VespaModelBuilder { * * @author vegardh */ - static class DomSimpleConfigProducerBuilder extends DomConfigProducerBuilder<SimpleConfigProducer<?>> { + static class DomSimpleConfigProducerBuilder extends DomConfigProducerBuilder<SimpleConfigProducer<AnyConfigProducer>, AnyConfigProducer> { private final String configId; @@ -183,13 +185,13 @@ public class VespaDomBuilder extends VespaModelBuilder { } @Override - protected SimpleConfigProducer<?> doBuild(DeployState deployState, TreeConfigProducer<?> parent, + protected SimpleConfigProducer<AnyConfigProducer> doBuild(DeployState deployState, TreeConfigProducer<AnyConfigProducer> parent, Element producerSpec) { return new SimpleConfigProducer<>(parent, configId); } } - public static class DomRootBuilder extends VespaDomBuilder.DomConfigProducerBuilder<ApplicationConfigProducerRoot> { + public static class DomRootBuilder extends VespaDomBuilder.DomConfigProducerBuilder<ApplicationConfigProducerRoot, AnyConfigProducer> { private final String name; /** @@ -200,7 +202,7 @@ public class VespaDomBuilder extends VespaModelBuilder { } @Override - protected ApplicationConfigProducerRoot doBuild(DeployState deployState, TreeConfigProducer<?> parent, Element producerSpec) { + protected ApplicationConfigProducerRoot doBuild(DeployState deployState, TreeConfigProducer<AnyConfigProducer> parent, Element producerSpec) { ApplicationConfigProducerRoot root = new ApplicationConfigProducerRoot(parent, name, deployState.getDocumentModel(), @@ -242,7 +244,7 @@ public class VespaDomBuilder extends VespaModelBuilder { * @param root root config producer * @param configModelRepo a {@link ConfigModelRepo} */ - public void postProc(DeployState deployState, TreeConfigProducer root, ConfigModelRepo configModelRepo) { + public void postProc(DeployState deployState, TreeConfigProducer<AnyConfigProducer> root, ConfigModelRepo configModelRepo) { setContentSearchClusterIndexes(configModelRepo); createDocprocMBusServersAndClients(configModelRepo); if (deployState.isHosted()) validateContainerClusterIds(configModelRepo); diff --git a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/ChainsBuilder.java b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/ChainsBuilder.java index 759678686f5..cf117aa3b9a 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/ChainsBuilder.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/ChainsBuilder.java @@ -3,6 +3,7 @@ package com.yahoo.vespa.model.builder.xml.dom.chains; import com.yahoo.config.model.deploy.DeployState; import com.yahoo.text.XML; +import com.yahoo.config.model.producer.AnyConfigProducer; import com.yahoo.config.model.producer.TreeConfigProducer; import com.yahoo.vespa.model.container.component.chain.Chain; import com.yahoo.vespa.model.container.component.chain.ChainedComponent; @@ -24,7 +25,7 @@ public class ChainsBuilder<COMPONENT extends ChainedComponent<?>, CHAIN extends private final Map<String, Class<? extends DomChainBuilderBase<? extends COMPONENT, ? extends CHAIN>>> chainType2BuilderClass; // NOTE: The chain type string (key in chainType2BuilderClass) must match the xml tag name for the chain. - public ChainsBuilder(DeployState deployState, TreeConfigProducer<?> ancestor, List<Element> chainsElems, + public ChainsBuilder(DeployState deployState, TreeConfigProducer<AnyConfigProducer> ancestor, List<Element> chainsElems, Map<String, ComponentsBuilder.ComponentType<?>> outerComponentTypeByComponentName, Map<String, Class<? extends DomChainBuilderBase<? extends COMPONENT, ? extends CHAIN>>> chainType2BuilderClass) { @@ -36,7 +37,7 @@ public class ChainsBuilder<COMPONENT extends ChainedComponent<?>, CHAIN extends return Collections.unmodifiableCollection(chains); } - private void readChains(DeployState deployState, TreeConfigProducer<?> ancestor, List<Element> chainsElems, + private void readChains(DeployState deployState, TreeConfigProducer<AnyConfigProducer> ancestor, List<Element> chainsElems, Map<String, ComponentsBuilder.ComponentType<?>> outerSearcherTypeByComponentName) { for (Map.Entry<String, Class<? extends DomChainBuilderBase<? extends COMPONENT, ? extends CHAIN>>> @@ -49,7 +50,7 @@ public class ChainsBuilder<COMPONENT extends ChainedComponent<?>, CHAIN extends } } - private void readChain(DeployState deployState, TreeConfigProducer<?> ancestor, Element chainElem, + private void readChain(DeployState deployState, TreeConfigProducer<AnyConfigProducer> ancestor, Element chainElem, Class<? extends DomChainBuilderBase<? extends COMPONENT, ? extends CHAIN>> builderClass, Map<String, ComponentsBuilder.ComponentType<?>> outerSearcherTypeByComponentName) { diff --git a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/ComponentsBuilder.java b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/ComponentsBuilder.java index dc15b4e02f1..f97cc2562c3 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/ComponentsBuilder.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/ComponentsBuilder.java @@ -5,6 +5,7 @@ import com.yahoo.component.ComponentId; import com.yahoo.component.ComponentSpecification; import com.yahoo.config.model.deploy.DeployState; import com.yahoo.text.XML; +import com.yahoo.config.model.producer.AnyConfigProducer; import com.yahoo.config.model.producer.TreeConfigProducer; import com.yahoo.config.model.builder.xml.XmlHelper; import com.yahoo.vespa.model.builder.xml.dom.VespaDomBuilder; @@ -48,15 +49,15 @@ public class ComponentsBuilder<T extends ChainedComponent<?>> { final String name; - private final Class<? extends VespaDomBuilder.DomConfigProducerBuilder<T>> builderClass; + private final Class<? extends VespaDomBuilder.DomConfigProducerBuilder<T, AnyConfigProducer> > builderClass; - private ComponentType(String name, Class<? extends VespaDomBuilder.DomConfigProducerBuilder<T>> builderClass) { + private ComponentType(String name, Class<? extends VespaDomBuilder.DomConfigProducerBuilder<T, AnyConfigProducer> > builderClass) { this.name = name; this.builderClass = builderClass; values.add(this); } - public VespaDomBuilder.DomConfigProducerBuilder<T> createBuilder() { + public VespaDomBuilder.DomConfigProducerBuilder<T, AnyConfigProducer > createBuilder() { return DomBuilderCreator.create(builderClass); } } @@ -73,7 +74,7 @@ public class ComponentsBuilder<T extends ChainedComponent<?>> { * every component is a definition, not a reference. */ ComponentsBuilder(DeployState deployState, - TreeConfigProducer<?> ancestor, + TreeConfigProducer<AnyConfigProducer> ancestor, Collection<ComponentType<T>> componentTypes, List<Element> elementsContainingComponentElems, Map<String, ComponentType<?>> outerComponentTypeByComponentName) { @@ -81,7 +82,8 @@ public class ComponentsBuilder<T extends ChainedComponent<?>> { readComponents(deployState, ancestor, componentTypes, elementsContainingComponentElems, unmodifiable(outerComponentTypeByComponentName)); } - private void readComponents(DeployState deployState, TreeConfigProducer<?> ancestor, + private void readComponents(DeployState deployState, + TreeConfigProducer<AnyConfigProducer> ancestor, Collection<ComponentType<T>> componentTypes, List<Element> elementsContainingComponentElems, Map<String, ComponentType<?>> outerComponentTypeByComponentName) { @@ -95,7 +97,7 @@ public class ComponentsBuilder<T extends ChainedComponent<?>> { } } - private void readComponent(DeployState deployState, TreeConfigProducer<?> ancestor, + private void readComponent(DeployState deployState, TreeConfigProducer<AnyConfigProducer> ancestor, Element componentElement, ComponentType<T> componentType, Map<String, ComponentType<?>> outerComponentTypeByComponentName) { @@ -119,7 +121,7 @@ public class ComponentsBuilder<T extends ChainedComponent<?>> { outerComponentReferences.add(componentSpecification); } - private void readComponentDefinition(DeployState deployState, TreeConfigProducer<?> ancestor, Element componentElement, ComponentType<T> componentType) { + private void readComponentDefinition(DeployState deployState, TreeConfigProducer<AnyConfigProducer> ancestor, Element componentElement, ComponentType<T> componentType) { T component = componentType.createBuilder().build(deployState, ancestor, componentElement); componentDefinitions.add(component); updateComponentTypes(component.getComponentId(), componentType); diff --git a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/DomChainBuilderBase.java b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/DomChainBuilderBase.java index d562cdde848..e15c14a1f58 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/DomChainBuilderBase.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/DomChainBuilderBase.java @@ -3,6 +3,7 @@ package com.yahoo.vespa.model.builder.xml.dom.chains; import com.yahoo.component.chain.model.ChainSpecification; import com.yahoo.config.model.deploy.DeployState; +import com.yahoo.config.model.producer.AnyConfigProducer; import com.yahoo.config.model.producer.TreeConfigProducer; import com.yahoo.vespa.model.builder.xml.dom.VespaDomBuilder; import com.yahoo.vespa.model.container.component.chain.Chain; @@ -17,7 +18,7 @@ import java.util.Map; * @author Tony Vaagenes */ public abstract class DomChainBuilderBase<COMPONENT extends ChainedComponent<?>, CHAIN extends Chain<COMPONENT>> - extends VespaDomBuilder.DomConfigProducerBuilder<CHAIN> { + extends VespaDomBuilder.DomConfigProducerBuilder<CHAIN, AnyConfigProducer> { private final Collection<ComponentsBuilder.ComponentType<COMPONENT>> allowedComponentTypes; protected final Map<String, ComponentsBuilder.ComponentType<?>> outerComponentTypeByComponentName; @@ -28,7 +29,7 @@ public abstract class DomChainBuilderBase<COMPONENT extends ChainedComponent<?>, this.outerComponentTypeByComponentName = outerComponentTypeByComponentName; } - public final CHAIN doBuild(DeployState deployState, TreeConfigProducer<?> ancestor, Element producerSpec) { + public final CHAIN doBuild(DeployState deployState, TreeConfigProducer<AnyConfigProducer> ancestor, Element producerSpec) { ComponentsBuilder<COMPONENT> componentsBuilder = new ComponentsBuilder<>(deployState, ancestor, allowedComponentTypes, List.of(producerSpec), outerComponentTypeByComponentName); ChainSpecification specWithoutInnerComponents = @@ -46,6 +47,6 @@ public abstract class DomChainBuilderBase<COMPONENT extends ChainedComponent<?>, } } - protected abstract CHAIN buildChain(DeployState deployState, TreeConfigProducer<?> ancestor, Element producerSpec, + protected abstract CHAIN buildChain(DeployState deployState, TreeConfigProducer<AnyConfigProducer> ancestor, Element producerSpec, ChainSpecification specWithoutInnerComponents); } diff --git a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/DomChainsBuilder.java b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/DomChainsBuilder.java index d680ed0c861..98e1e256d17 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/DomChainsBuilder.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/DomChainsBuilder.java @@ -2,6 +2,7 @@ package com.yahoo.vespa.model.builder.xml.dom.chains; import com.yahoo.config.model.deploy.DeployState; +import com.yahoo.config.model.producer.AnyConfigProducer; import com.yahoo.config.model.producer.TreeConfigProducer; import com.yahoo.vespa.model.builder.xml.dom.VespaDomBuilder; import com.yahoo.vespa.model.builder.xml.dom.chains.ComponentsBuilder.ComponentType; @@ -22,7 +23,8 @@ import java.util.Map; */ public abstract class DomChainsBuilder<COMPONENT extends ChainedComponent<?>, CHAIN extends Chain<COMPONENT>, CHAINS extends Chains<CHAIN>> - extends VespaDomBuilder.DomConfigProducerBuilder<CHAINS> { + extends VespaDomBuilder.DomConfigProducerBuilder<CHAINS, AnyConfigProducer> +{ private final Collection<ComponentType<COMPONENT>> allowedComponentTypes; @@ -31,10 +33,10 @@ class DomChainsBuilder<COMPONENT extends ChainedComponent<?>, CHAIN extends Chai this.allowedComponentTypes = new ArrayList<>(allowedComponentTypes); } - protected abstract CHAINS newChainsInstance(TreeConfigProducer<?> parent); + protected abstract CHAINS newChainsInstance(TreeConfigProducer<AnyConfigProducer> parent); @Override - protected final CHAINS doBuild(DeployState deployState, TreeConfigProducer<?> parent, Element chainsElement) { + protected final CHAINS doBuild(DeployState deployState, TreeConfigProducer<AnyConfigProducer> parent, Element chainsElement) { CHAINS chains = newChainsInstance(parent); List<Element> allChainElements = allChainElements(deployState, chainsElement); @@ -56,12 +58,12 @@ class DomChainsBuilder<COMPONENT extends ChainedComponent<?>, CHAIN extends Chai return chainsElements; } - private ComponentsBuilder<COMPONENT> readOuterComponents(DeployState deployState, TreeConfigProducer<?> ancestor, List<Element> chainsElems) { + private ComponentsBuilder<COMPONENT> readOuterComponents(DeployState deployState, TreeConfigProducer<AnyConfigProducer> ancestor, List<Element> chainsElems) { return new ComponentsBuilder<>(deployState, ancestor, allowedComponentTypes, chainsElems, null); } protected abstract - ChainsBuilder<COMPONENT, CHAIN> readChains(DeployState deployState, TreeConfigProducer<?> ancestor, List<Element> allChainsElems, + ChainsBuilder<COMPONENT, CHAIN> readChains(DeployState deployState, TreeConfigProducer<AnyConfigProducer> ancestor, List<Element> allChainsElems, Map<String, ComponentsBuilder.ComponentType<?>> outerComponentTypeByComponentName); private void addOuterComponents(CHAINS chains, ComponentsBuilder<COMPONENT> outerComponentsBuilder) { diff --git a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/docproc/DocprocChainsBuilder.java b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/docproc/DocprocChainsBuilder.java index 4fb89374bd2..53a39ec90b1 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/docproc/DocprocChainsBuilder.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/docproc/DocprocChainsBuilder.java @@ -2,6 +2,7 @@ package com.yahoo.vespa.model.builder.xml.dom.chains.docproc; import com.yahoo.config.model.deploy.DeployState; +import com.yahoo.config.model.producer.AnyConfigProducer; import com.yahoo.config.model.producer.TreeConfigProducer; import com.yahoo.vespa.model.builder.xml.dom.chains.ChainsBuilder; import com.yahoo.vespa.model.builder.xml.dom.chains.ComponentsBuilder; @@ -29,7 +30,7 @@ public class DocprocChainsBuilder extends ChainsBuilder<DocumentProcessor, Docpr put("chain", DomDocprocChainBuilder.class); }}); - public DocprocChainsBuilder(DeployState deployState, TreeConfigProducer<?> ancestor, List<Element> docprocChainsElements, + public DocprocChainsBuilder(DeployState deployState, TreeConfigProducer<AnyConfigProducer> ancestor, List<Element> docprocChainsElements, Map<String, ComponentsBuilder.ComponentType<?>> outerSearcherTypeByComponentName) { super(deployState, ancestor, docprocChainsElements, outerSearcherTypeByComponentName, chainType2builderClass); } diff --git a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/docproc/DomDocprocChainBuilder.java b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/docproc/DomDocprocChainBuilder.java index 3eefdd30b30..a70340b079e 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/docproc/DomDocprocChainBuilder.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/docproc/DomDocprocChainBuilder.java @@ -4,6 +4,7 @@ package com.yahoo.vespa.model.builder.xml.dom.chains.docproc; import com.yahoo.collections.Pair; import com.yahoo.component.chain.model.ChainSpecification; import com.yahoo.config.model.deploy.DeployState; +import com.yahoo.config.model.producer.AnyConfigProducer; import com.yahoo.config.model.producer.TreeConfigProducer; import com.yahoo.vespa.model.builder.xml.dom.chains.ComponentsBuilder; import com.yahoo.vespa.model.builder.xml.dom.chains.DomChainBuilderBase; @@ -25,7 +26,7 @@ public class DomDocprocChainBuilder extends DomChainBuilderBase<DocumentProcesso } @Override - protected DocprocChain buildChain(DeployState deployState, TreeConfigProducer<?> ancestor, Element producerSpec, + protected DocprocChain buildChain(DeployState deployState, TreeConfigProducer<AnyConfigProducer> ancestor, Element producerSpec, ChainSpecification specWithoutInnerComponents) { Map<Pair<String, String>, String> fieldNameSchemaMap = DocumentProcessorModelBuilder.parseFieldNameSchemaMap(producerSpec); return new DocprocChain(specWithoutInnerComponents, fieldNameSchemaMap); diff --git a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/docproc/DomDocprocChainsBuilder.java b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/docproc/DomDocprocChainsBuilder.java index 8f43020422f..3a4470d9cf9 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/docproc/DomDocprocChainsBuilder.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/docproc/DomDocprocChainsBuilder.java @@ -2,6 +2,7 @@ package com.yahoo.vespa.model.builder.xml.dom.chains.docproc; import com.yahoo.config.model.deploy.DeployState; +import com.yahoo.config.model.producer.AnyConfigProducer; import com.yahoo.config.model.producer.TreeConfigProducer; import com.yahoo.vespa.model.builder.xml.dom.chains.ComponentsBuilder.ComponentType; import com.yahoo.vespa.model.builder.xml.dom.chains.DomChainsBuilder; @@ -24,12 +25,12 @@ public class DomDocprocChainsBuilder extends DomChainsBuilder<DocumentProcessor } @Override - protected DocprocChains newChainsInstance(TreeConfigProducer<?> parent) { + protected DocprocChains newChainsInstance(TreeConfigProducer<AnyConfigProducer> parent) { return new DocprocChains(parent, "docprocchains"); } @Override - protected DocprocChainsBuilder readChains(DeployState deployState, TreeConfigProducer<?> ancestor, List<Element> docprocChainsElements, + protected DocprocChainsBuilder readChains(DeployState deployState, TreeConfigProducer<AnyConfigProducer> ancestor, List<Element> docprocChainsElements, Map<String, ComponentType<?>> outerComponentTypeByComponentName) { return new DocprocChainsBuilder(deployState, ancestor, docprocChainsElements, outerComponentTypeByComponentName); } diff --git a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/docproc/DomDocumentProcessorBuilder.java b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/docproc/DomDocumentProcessorBuilder.java index a08e09cfb98..ee73ca093cf 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/docproc/DomDocumentProcessorBuilder.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/docproc/DomDocumentProcessorBuilder.java @@ -2,6 +2,7 @@ package com.yahoo.vespa.model.builder.xml.dom.chains.docproc; import com.yahoo.config.model.deploy.DeployState; +import com.yahoo.config.model.producer.AnyConfigProducer; import com.yahoo.config.model.producer.TreeConfigProducer; import com.yahoo.vespa.model.builder.xml.dom.VespaDomBuilder; import com.yahoo.vespa.model.container.docproc.DocumentProcessor; @@ -12,10 +13,10 @@ import org.w3c.dom.Element; * * @author gjoranv */ -public class DomDocumentProcessorBuilder extends VespaDomBuilder.DomConfigProducerBuilder<DocumentProcessor> { +public class DomDocumentProcessorBuilder extends VespaDomBuilder.DomConfigProducerBuilder<DocumentProcessor, AnyConfigProducer> { @Override - protected DocumentProcessor doBuild(DeployState deployState, TreeConfigProducer ancestor, Element documentProcessorElement) { + protected DocumentProcessor doBuild(DeployState deployState, TreeConfigProducer<AnyConfigProducer> ancestor, Element documentProcessorElement) { DocumentProcessorModelBuilder modelBuilder = new DocumentProcessorModelBuilder(documentProcessorElement); return new DocumentProcessor(modelBuilder.build()); } diff --git a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/processing/DomProcessingBuilder.java b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/processing/DomProcessingBuilder.java index 541c59705cf..e02f4ab87e0 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/processing/DomProcessingBuilder.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/processing/DomProcessingBuilder.java @@ -2,6 +2,7 @@ package com.yahoo.vespa.model.builder.xml.dom.chains.processing; import com.yahoo.config.model.deploy.DeployState; +import com.yahoo.config.model.producer.AnyConfigProducer; import com.yahoo.config.model.producer.TreeConfigProducer; import com.yahoo.vespa.model.builder.xml.dom.chains.ComponentsBuilder; import com.yahoo.vespa.model.builder.xml.dom.chains.DomChainsBuilder; @@ -24,12 +25,12 @@ public class DomProcessingBuilder extends DomChainsBuilder<Processor, Processing } @Override - protected ProcessingChains newChainsInstance(TreeConfigProducer<?> parent) { + protected ProcessingChains newChainsInstance(TreeConfigProducer<AnyConfigProducer> parent) { return new ProcessingChains(parent, "processing"); } @Override - protected ProcessingChainsBuilder readChains(DeployState deployState, TreeConfigProducer<?> ancestor, List<Element> processingChainsElements, + protected ProcessingChainsBuilder readChains(DeployState deployState, TreeConfigProducer<AnyConfigProducer> ancestor, List<Element> processingChainsElements, Map<String, ComponentsBuilder.ComponentType<?>> outerComponentTypeByComponentName) { return new ProcessingChainsBuilder(deployState, ancestor, processingChainsElements, outerComponentTypeByComponentName); } diff --git a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/processing/DomProcessingChainBuilder.java b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/processing/DomProcessingChainBuilder.java index b4d0bfad826..a0669630658 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/processing/DomProcessingChainBuilder.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/processing/DomProcessingChainBuilder.java @@ -3,6 +3,7 @@ package com.yahoo.vespa.model.builder.xml.dom.chains.processing; import com.yahoo.component.chain.model.ChainSpecification; import com.yahoo.config.model.deploy.DeployState; +import com.yahoo.config.model.producer.AnyConfigProducer; import com.yahoo.config.model.producer.TreeConfigProducer; import com.yahoo.vespa.model.builder.xml.dom.chains.ComponentsBuilder; import com.yahoo.vespa.model.builder.xml.dom.chains.DomChainBuilderBase; @@ -21,7 +22,7 @@ public class DomProcessingChainBuilder extends DomChainBuilderBase<Processor, Pr super(List.of(ComponentsBuilder.ComponentType.processor), outerComponentTypeByComponentName); } - protected ProcessingChain buildChain(DeployState deployState, TreeConfigProducer<?> ancestor, Element producerSpec, + protected ProcessingChain buildChain(DeployState deployState, TreeConfigProducer<AnyConfigProducer> ancestor, Element producerSpec, ChainSpecification specWithoutInnerComponents) { return new ProcessingChain(specWithoutInnerComponents); } diff --git a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/processing/DomProcessorBuilder.java b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/processing/DomProcessorBuilder.java index 1b4466c6f87..c064d5edc37 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/processing/DomProcessorBuilder.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/processing/DomProcessorBuilder.java @@ -4,6 +4,7 @@ package com.yahoo.vespa.model.builder.xml.dom.chains.processing; import com.yahoo.config.model.deploy.DeployState; import com.yahoo.vespa.model.builder.xml.dom.chains.ChainedComponentModelBuilder; import com.yahoo.vespa.model.container.processing.Processor; +import com.yahoo.config.model.producer.AnyConfigProducer; import com.yahoo.config.model.producer.TreeConfigProducer; import com.yahoo.vespa.model.builder.xml.dom.VespaDomBuilder; import org.w3c.dom.Element; @@ -14,10 +15,10 @@ import org.w3c.dom.Element; * @author bratseth * @since 5.1.6 */ -public class DomProcessorBuilder extends VespaDomBuilder.DomConfigProducerBuilder<Processor> { +public class DomProcessorBuilder extends VespaDomBuilder.DomConfigProducerBuilder<Processor, AnyConfigProducer> { @Override - protected Processor doBuild(DeployState deployState, TreeConfigProducer ancestor, Element processorElement) { + protected Processor doBuild(DeployState deployState, TreeConfigProducer<AnyConfigProducer> ancestor, Element processorElement) { ChainedComponentModelBuilder modelBuilder = new ChainedComponentModelBuilder(processorElement); return new Processor(modelBuilder.build()); } diff --git a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/processing/ProcessingChainsBuilder.java b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/processing/ProcessingChainsBuilder.java index 5b6ae90f6ce..275ecbd1ab8 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/processing/ProcessingChainsBuilder.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/processing/ProcessingChainsBuilder.java @@ -2,6 +2,7 @@ package com.yahoo.vespa.model.builder.xml.dom.chains.processing; import com.yahoo.config.model.deploy.DeployState; +import com.yahoo.config.model.producer.AnyConfigProducer; import com.yahoo.config.model.producer.TreeConfigProducer; import com.yahoo.vespa.model.builder.xml.dom.chains.ChainsBuilder; import com.yahoo.vespa.model.builder.xml.dom.chains.ComponentsBuilder; @@ -29,7 +30,7 @@ public class ProcessingChainsBuilder extends ChainsBuilder<Processor, Processing put("chain", DomProcessingChainBuilder.class); }}); - public ProcessingChainsBuilder(DeployState deployState, TreeConfigProducer<?> ancestor, List<Element> processingChainsElements, + public ProcessingChainsBuilder(DeployState deployState, TreeConfigProducer<AnyConfigProducer> ancestor, List<Element> processingChainsElements, Map<String, ComponentsBuilder.ComponentType<?>> outerSearcherTypeByComponentName) { super(deployState, ancestor, processingChainsElements, outerSearcherTypeByComponentName, chainType2builderClass); } diff --git a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/search/DomFederationSearcherBuilder.java b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/search/DomFederationSearcherBuilder.java index 3231936d5aa..e9bfc28752b 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/search/DomFederationSearcherBuilder.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/search/DomFederationSearcherBuilder.java @@ -8,6 +8,7 @@ import com.yahoo.config.model.deploy.DeployState; import com.yahoo.search.searchchain.model.federation.FederationOptions; import com.yahoo.search.searchchain.model.federation.FederationSearcherModel; import com.yahoo.text.XML; +import com.yahoo.config.model.producer.AnyConfigProducer; import com.yahoo.config.model.producer.TreeConfigProducer; import com.yahoo.vespa.model.builder.xml.dom.DomComponentBuilder; import com.yahoo.vespa.model.builder.xml.dom.VespaDomBuilder; @@ -26,7 +27,7 @@ import java.util.Optional; * * @author Tony Vaagenes */ -public class DomFederationSearcherBuilder extends VespaDomBuilder.DomConfigProducerBuilder<Searcher<?>> { +public class DomFederationSearcherBuilder extends VespaDomBuilder.DomConfigProducerBuilder<Searcher<?>, AnyConfigProducer> { static class FederationSearcherModelBuilder extends GenericChainedComponentModelBuilder { @@ -75,14 +76,14 @@ public class DomFederationSearcherBuilder extends VespaDomBuilder.DomConfigProdu } @Override - protected FederationSearcher doBuild(DeployState deployState, TreeConfigProducer<?> ancestor, Element searcherElement) { + protected FederationSearcher doBuild(DeployState deployState, TreeConfigProducer<AnyConfigProducer> ancestor, Element searcherElement) { FederationSearcherModel model = new FederationSearcherModelBuilder(searcherElement).build(); Optional<Component> targetSelector = buildTargetSelector(deployState, ancestor, searcherElement, model.getComponentId()); return new FederationSearcher(model, targetSelector); } - private Optional<Component> buildTargetSelector(DeployState deployState, TreeConfigProducer<?> ancestor, Element searcherElement, ComponentId namespace) { + private Optional<Component> buildTargetSelector(DeployState deployState, TreeConfigProducer<AnyConfigProducer> ancestor, Element searcherElement, ComponentId namespace) { Element targetSelectorElement = XML.getChild(searcherElement, "target-selector"); if (targetSelectorElement == null) return Optional.empty(); diff --git a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/search/DomProviderBuilder.java b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/search/DomProviderBuilder.java index 4e06bc6c67a..b6c2d18078b 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/search/DomProviderBuilder.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/search/DomProviderBuilder.java @@ -4,6 +4,7 @@ package com.yahoo.vespa.model.builder.xml.dom.chains.search; import com.yahoo.component.ComponentId; import com.yahoo.component.chain.model.ChainSpecification; import com.yahoo.config.model.deploy.DeployState; +import com.yahoo.config.model.producer.AnyConfigProducer; import com.yahoo.config.model.producer.TreeConfigProducer; import com.yahoo.search.searchchain.model.federation.FederationOptions; import com.yahoo.search.searchchain.model.federation.LocalProviderSpec; @@ -125,7 +126,7 @@ public class DomProviderBuilder extends DomGenericTargetBuilder<Provider> { } @Override - protected Provider buildChain(DeployState deployState, TreeConfigProducer<?> ancestor, Element providerElement, + protected Provider buildChain(DeployState deployState, TreeConfigProducer<AnyConfigProducer> ancestor, Element providerElement, ChainSpecification specWithoutInnerComponents) { ProviderReader providerReader = new ProviderReader(providerElement); @@ -140,7 +141,7 @@ public class DomProviderBuilder extends DomGenericTargetBuilder<Provider> { } - private Collection<Source> buildSources(DeployState deployState, TreeConfigProducer<?> ancestor, Element providerElement) { + private Collection<Source> buildSources(DeployState deployState, TreeConfigProducer<AnyConfigProducer> ancestor, Element providerElement) { List<Source> sources = new ArrayList<>(); for (Element sourceElement : XML.getChildren(providerElement, "source")) { sources.add(new DomSourceBuilder(outerComponentTypeByComponentName).build(deployState, ancestor, sourceElement)); diff --git a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/search/DomSearchChainBuilder.java b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/search/DomSearchChainBuilder.java index 0c349e60150..0d11b43db22 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/search/DomSearchChainBuilder.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/search/DomSearchChainBuilder.java @@ -3,6 +3,7 @@ package com.yahoo.vespa.model.builder.xml.dom.chains.search; import com.yahoo.component.chain.model.ChainSpecification; import com.yahoo.config.model.deploy.DeployState; +import com.yahoo.config.model.producer.AnyConfigProducer; import com.yahoo.config.model.producer.TreeConfigProducer; import com.yahoo.vespa.model.builder.xml.dom.chains.ComponentsBuilder; import com.yahoo.vespa.model.builder.xml.dom.chains.DomChainBuilderBase; @@ -24,7 +25,7 @@ public class DomSearchChainBuilder extends DomChainBuilderBase<Searcher<?>, Sear outerSearcherTypeByComponentName); } - protected SearchChain buildChain(DeployState deployState, TreeConfigProducer<?> ancestor, Element producerSpec, + protected SearchChain buildChain(DeployState deployState, TreeConfigProducer<AnyConfigProducer> ancestor, Element producerSpec, ChainSpecification specWithoutInnerComponents) { return new SearchChain(specWithoutInnerComponents); } diff --git a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/search/DomSearchChainsBuilder.java b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/search/DomSearchChainsBuilder.java index ef02b2b3806..0b3f6fb411a 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/search/DomSearchChainsBuilder.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/search/DomSearchChainsBuilder.java @@ -2,6 +2,7 @@ package com.yahoo.vespa.model.builder.xml.dom.chains.search; import com.yahoo.config.model.deploy.DeployState; +import com.yahoo.config.model.producer.AnyConfigProducer; import com.yahoo.config.model.producer.TreeConfigProducer; import com.yahoo.vespa.model.builder.xml.dom.chains.ComponentsBuilder.ComponentType; import com.yahoo.vespa.model.builder.xml.dom.chains.DomChainsBuilder; @@ -26,12 +27,12 @@ public class DomSearchChainsBuilder extends DomChainsBuilder<Searcher<?>, Search } @Override - protected SearchChains newChainsInstance(TreeConfigProducer<?> parent) { + protected SearchChains newChainsInstance(TreeConfigProducer<AnyConfigProducer> parent) { return new SearchChains(parent, "searchchains"); } @Override - protected SearchChainsBuilder readChains(DeployState deployState, TreeConfigProducer<?> ancestor, List<Element> searchChainsElements, + protected SearchChainsBuilder readChains(DeployState deployState, TreeConfigProducer<AnyConfigProducer> ancestor, List<Element> searchChainsElements, Map<String, ComponentType<?>> outerComponentTypeByComponentName) { return new SearchChainsBuilder(deployState, ancestor, searchChainsElements, outerComponentTypeByComponentName); } diff --git a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/search/DomSearcherBuilder.java b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/search/DomSearcherBuilder.java index 47f538bbbcf..3a2e2300cac 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/search/DomSearcherBuilder.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/search/DomSearcherBuilder.java @@ -3,6 +3,7 @@ package com.yahoo.vespa.model.builder.xml.dom.chains.search; import com.yahoo.component.chain.model.ChainedComponentModel; import com.yahoo.config.model.deploy.DeployState; +import com.yahoo.config.model.producer.AnyConfigProducer; import com.yahoo.config.model.producer.TreeConfigProducer; import com.yahoo.vespa.model.builder.xml.dom.VespaDomBuilder; import com.yahoo.vespa.model.builder.xml.dom.chains.ChainedComponentModelBuilder; @@ -13,10 +14,10 @@ import org.w3c.dom.Element; * Builds a Searcher from XML. * @author Tony Vaagenes */ -public class DomSearcherBuilder extends VespaDomBuilder.DomConfigProducerBuilder<Searcher<?>> { +public class DomSearcherBuilder extends VespaDomBuilder.DomConfigProducerBuilder<Searcher<?>, AnyConfigProducer> { @Override - protected Searcher<ChainedComponentModel> doBuild(DeployState deployState, TreeConfigProducer ancestor, Element searcherElement) { + protected Searcher<ChainedComponentModel> doBuild(DeployState deployState, TreeConfigProducer<AnyConfigProducer> ancestor, Element searcherElement) { ChainedComponentModelBuilder modelBuilder = new ChainedComponentModelBuilder(searcherElement); return new Searcher<>(modelBuilder.build()); } diff --git a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/search/DomSourceBuilder.java b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/search/DomSourceBuilder.java index 586e93f2174..8f8ae444f2f 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/search/DomSourceBuilder.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/search/DomSourceBuilder.java @@ -3,6 +3,7 @@ package com.yahoo.vespa.model.builder.xml.dom.chains.search; import com.yahoo.component.chain.model.ChainSpecification; import com.yahoo.config.model.deploy.DeployState; +import com.yahoo.config.model.producer.AnyConfigProducer; import com.yahoo.config.model.producer.TreeConfigProducer; import com.yahoo.config.model.builder.xml.XmlHelper; import com.yahoo.vespa.model.builder.xml.dom.chains.ComponentsBuilder; @@ -20,7 +21,7 @@ public class DomSourceBuilder extends DomGenericTargetBuilder<Source> { super(outerSearcherTypeByComponentName); } - protected Source buildChain(DeployState deployState, TreeConfigProducer<?> ancestor, Element producerSpec, ChainSpecification specWithoutInnerComponents) { + protected Source buildChain(DeployState deployState, TreeConfigProducer<AnyConfigProducer> ancestor, Element producerSpec, ChainSpecification specWithoutInnerComponents) { Source.GroupOption groupOption = XmlHelper.isReference(producerSpec) ? Source.GroupOption.participant : diff --git a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/search/SearchChainsBuilder.java b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/search/SearchChainsBuilder.java index 4740a283c26..de675901547 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/search/SearchChainsBuilder.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/search/SearchChainsBuilder.java @@ -2,6 +2,7 @@ package com.yahoo.vespa.model.builder.xml.dom.chains.search; import com.yahoo.config.model.deploy.DeployState; +import com.yahoo.config.model.producer.AnyConfigProducer; import com.yahoo.config.model.producer.TreeConfigProducer; import com.yahoo.vespa.model.builder.xml.dom.chains.ChainsBuilder; import com.yahoo.vespa.model.builder.xml.dom.chains.ComponentsBuilder; @@ -30,7 +31,7 @@ public class SearchChainsBuilder extends ChainsBuilder<Searcher<?>, SearchChain> put("provider", DomProviderBuilder.class); }}); - public SearchChainsBuilder(DeployState deployState, TreeConfigProducer<?> ancestor, List<Element> searchChainsElements, + public SearchChainsBuilder(DeployState deployState, TreeConfigProducer<AnyConfigProducer> ancestor, List<Element> searchChainsElements, Map<String, ComponentsBuilder.ComponentType<?>> outerSearcherTypeByComponentName) { super(deployState, ancestor, searchChainsElements, outerSearcherTypeByComponentName, chainType2builderClass); } diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/Container.java b/config-model/src/main/java/com/yahoo/vespa/model/container/Container.java index 091ecae6e06..6a6f4583eae 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/container/Container.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/container/Container.java @@ -353,7 +353,7 @@ public abstract class Container extends AbstractService implements if (child instanceof Component) allComponents.add((Component<?, ?>) child); - if (child instanceof TreeConfigProducer t) { + if (child instanceof TreeConfigProducer<?> t) { addAllEnabledComponents(allComponents, t); } } @@ -403,7 +403,7 @@ public abstract class Container extends AbstractService implements return Optional.ofNullable(containerClusterOrNull(parent)); } - private static ContainerCluster containerClusterOrNull(TreeConfigProducer producer) { + private static ContainerCluster containerClusterOrNull(AnyConfigProducer producer) { return producer instanceof ContainerCluster<?> ? (ContainerCluster<?>) producer : null; } diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/ContainerCluster.java b/config-model/src/main/java/com/yahoo/vespa/model/container/ContainerCluster.java index bf5698f81f7..d786135d3ee 100755 --- a/config-model/src/main/java/com/yahoo/vespa/model/container/ContainerCluster.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/container/ContainerCluster.java @@ -10,6 +10,7 @@ import com.yahoo.config.docproc.DocprocConfig; import com.yahoo.config.docproc.SchemamappingConfig; import com.yahoo.config.model.ApplicationConfigProducerRoot; import com.yahoo.config.model.deploy.DeployState; +import com.yahoo.config.model.producer.AnyConfigProducer; import com.yahoo.config.model.producer.TreeConfigProducer; import com.yahoo.config.provision.ClusterSpec; import com.yahoo.config.provision.Zone; @@ -83,7 +84,7 @@ import static com.yahoo.vespa.model.container.component.chain.ProcessingHandler. * @author Tony Vaagenes */ public abstract class ContainerCluster<CONTAINER extends Container> - extends TreeConfigProducer<TreeConfigProducer<?>> + extends TreeConfigProducer<AnyConfigProducer> implements ComponentsConfig.Producer, JdiscBindingsConfig.Producer, @@ -426,7 +427,7 @@ public abstract class ContainerCluster<CONTAINER extends Container> for (var child: current.getChildren().values()) { if (child instanceof Component) allComponents.add((Component<?, ?>) child); - + if (child instanceof TreeConfigProducer t && !(child instanceof Container)) recursivelyFindAllComponents(allComponents, t); } diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/component/ComponentGroup.java b/config-model/src/main/java/com/yahoo/vespa/model/container/component/ComponentGroup.java index 21f5cb5d5e3..3adce73a99c 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/container/component/ComponentGroup.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/container/component/ComponentGroup.java @@ -8,7 +8,7 @@ import com.yahoo.config.model.producer.TreeConfigProducer; */ public class ComponentGroup <CHILD extends Component<?, ?>> extends ConfigProducerGroup<CHILD> { - public ComponentGroup(TreeConfigProducer parent, String subId) { + public ComponentGroup(TreeConfigProducer<? super ConfigProducerGroup> parent, String subId) { super(parent, subId); } diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/component/ConfigProducerGroup.java b/config-model/src/main/java/com/yahoo/vespa/model/container/component/ConfigProducerGroup.java index bb19a5df679..edecd3ff627 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/container/component/ConfigProducerGroup.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/container/component/ConfigProducerGroup.java @@ -20,7 +20,7 @@ public class ConfigProducerGroup<CHILD extends TreeConfigProducer<?>> extends Tr private final Map<ComponentId, CHILD> producerById = new LinkedHashMap<>(); - public ConfigProducerGroup(TreeConfigProducer parent, String subId) { + public ConfigProducerGroup(TreeConfigProducer<? super ConfigProducerGroup> parent, String subId) { super(parent, subId); } diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/component/chain/Chain.java b/config-model/src/main/java/com/yahoo/vespa/model/container/component/chain/Chain.java index 9fb9dc3bde8..ce019f4a5b7 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/container/component/chain/Chain.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/container/component/chain/Chain.java @@ -4,6 +4,7 @@ package com.yahoo.vespa.model.container.component.chain; import com.yahoo.component.ComponentId; import com.yahoo.component.ComponentSpecification; import com.yahoo.component.chain.model.ChainSpecification; +import com.yahoo.config.model.producer.AnyConfigProducer; import com.yahoo.config.model.producer.TreeConfigProducer; import com.yahoo.vespa.model.container.component.ComponentGroup; @@ -19,7 +20,7 @@ import static com.yahoo.container.core.ChainsConfig.Chains.Type; * @author Tony Vaagenes * @author gjoranv */ -public class Chain<T extends ChainedComponent<?>> extends TreeConfigProducer<TreeConfigProducer<?>> { +public class Chain<T extends ChainedComponent<?>> extends TreeConfigProducer<AnyConfigProducer> { private final ComponentId componentId; private final ChainSpecification specWithoutInnerComponents; diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/component/chain/Chains.java b/config-model/src/main/java/com/yahoo/vespa/model/container/component/chain/Chains.java index e9d0d07dde1..e1fcdb31845 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/container/component/chain/Chains.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/container/component/chain/Chains.java @@ -4,6 +4,7 @@ package com.yahoo.vespa.model.container.component.chain; import com.yahoo.component.chain.model.ChainsModel; import com.yahoo.component.provider.ComponentRegistry; import com.yahoo.container.core.ChainsConfig; +import com.yahoo.config.model.producer.AnyConfigProducer; import com.yahoo.config.model.producer.TreeConfigProducer; import com.yahoo.vespa.model.container.component.ComponentGroup; import com.yahoo.vespa.model.container.component.ConfigProducerGroup; @@ -18,13 +19,13 @@ import java.util.Set; * @author gjoranv */ public class Chains<CHAIN extends Chain<?>> - extends TreeConfigProducer<TreeConfigProducer<?>> + extends TreeConfigProducer<AnyConfigProducer> implements ChainsConfig.Producer { private final ComponentGroup<ChainedComponent<?>> componentGroup; private final ConfigProducerGroup<CHAIN> chainGroup; - public Chains(TreeConfigProducer parent, String subId) { + public Chains(TreeConfigProducer<? super Chains> parent, String subId) { super(parent, subId); componentGroup = new ComponentGroup<>(this, "component"); chainGroup = new ConfigProducerGroup<>(this, "chain"); diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/docproc/DocprocChains.java b/config-model/src/main/java/com/yahoo/vespa/model/container/docproc/DocprocChains.java index b37296ee2e6..ad6baac41f8 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/container/docproc/DocprocChains.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/container/docproc/DocprocChains.java @@ -25,7 +25,7 @@ public class DocprocChains extends Chains<DocprocChain> { private final ProcessingHandler<DocprocChains> docprocHandler; - public DocprocChains(TreeConfigProducer<?> parent, String subId) { + public DocprocChains(TreeConfigProducer<? super Chains> parent, String subId) { super(parent, subId); docprocHandler = new ProcessingHandler<>( this, diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/http/FilterChains.java b/config-model/src/main/java/com/yahoo/vespa/model/container/http/FilterChains.java index f395c5e6777..b88680fcbc8 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/container/http/FilterChains.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/container/http/FilterChains.java @@ -15,7 +15,7 @@ import java.util.Set; */ public class FilterChains extends Chains<HttpFilterChain> { - public FilterChains(TreeConfigProducer<?> parent) { + public FilterChains(TreeConfigProducer<? super Chains> parent) { super(parent, "filters"); addChild(new SimpleComponent("com.yahoo.container.http.filter.FilterChainRepository")); diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/http/xml/FilterBuilder.java b/config-model/src/main/java/com/yahoo/vespa/model/container/http/xml/FilterBuilder.java index 283a6c76e39..07a159436a4 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/container/http/xml/FilterBuilder.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/container/http/xml/FilterBuilder.java @@ -2,6 +2,7 @@ package com.yahoo.vespa.model.container.http.xml; import com.yahoo.config.model.deploy.DeployState; +import com.yahoo.config.model.producer.AnyConfigProducer; import com.yahoo.config.model.producer.TreeConfigProducer; import com.yahoo.text.XML; import com.yahoo.vespa.model.builder.xml.dom.DomComponentBuilder; @@ -15,10 +16,10 @@ import org.w3c.dom.Element; * @author Tony Vaagenes * @author gjoranv */ -public class FilterBuilder extends VespaDomBuilder.DomConfigProducerBuilder<Filter> { +public class FilterBuilder extends VespaDomBuilder.DomConfigProducerBuilder<Filter, AnyConfigProducer> { @Override - protected Filter doBuild(DeployState deployState, TreeConfigProducer ancestor, Element filterElement) { + protected Filter doBuild(DeployState deployState, TreeConfigProducer<AnyConfigProducer> ancestor, Element filterElement) { ChainedComponentModelBuilder modelBuilder = new ChainedComponentModelBuilder(filterElement); Filter filter = new Filter(modelBuilder.build()); DomComponentBuilder.addChildren(deployState, ancestor, filterElement, filter); diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/http/xml/FilterChainBuilder.java b/config-model/src/main/java/com/yahoo/vespa/model/container/http/xml/FilterChainBuilder.java index 560748bf671..fcd397d4865 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/container/http/xml/FilterChainBuilder.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/container/http/xml/FilterChainBuilder.java @@ -3,6 +3,7 @@ package com.yahoo.vespa.model.container.http.xml; import com.yahoo.component.chain.model.ChainSpecification; import com.yahoo.config.model.deploy.DeployState; +import com.yahoo.config.model.producer.AnyConfigProducer; import com.yahoo.config.model.producer.TreeConfigProducer; import com.yahoo.vespa.model.builder.xml.dom.chains.DomChainBuilderBase; import com.yahoo.vespa.model.container.http.Filter; @@ -27,7 +28,7 @@ public class FilterChainBuilder extends DomChainBuilderBase<Filter, HttpFilterCh } @Override - protected HttpFilterChain buildChain(DeployState deployState, TreeConfigProducer<?> ancestor, Element producerSpec, ChainSpecification specWithoutInnerComponents) { + protected HttpFilterChain buildChain(DeployState deployState, TreeConfigProducer<AnyConfigProducer> ancestor, Element producerSpec, ChainSpecification specWithoutInnerComponents) { return new HttpFilterChain(specWithoutInnerComponents, HttpFilterChain.Type.USER); } } diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/http/xml/FilterChainsBuilder.java b/config-model/src/main/java/com/yahoo/vespa/model/container/http/xml/FilterChainsBuilder.java index cef9a5ffd96..d03e12b96e8 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/container/http/xml/FilterChainsBuilder.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/container/http/xml/FilterChainsBuilder.java @@ -2,6 +2,7 @@ package com.yahoo.vespa.model.container.http.xml; import com.yahoo.config.model.deploy.DeployState; +import com.yahoo.config.model.producer.AnyConfigProducer; import com.yahoo.config.model.producer.TreeConfigProducer; import com.yahoo.vespa.model.builder.xml.dom.chains.ChainsBuilder; import com.yahoo.vespa.model.builder.xml.dom.chains.ComponentsBuilder; @@ -35,14 +36,14 @@ public class FilterChainsBuilder extends DomChainsBuilder<Filter, HttpFilterChai } @Override - protected FilterChains newChainsInstance(TreeConfigProducer<?> parent) { + protected FilterChains newChainsInstance(TreeConfigProducer<AnyConfigProducer> parent) { return new FilterChains(parent); } @Override protected ChainsBuilder<Filter, HttpFilterChain> readChains( DeployState deployState, - TreeConfigProducer<?> ancestor, + TreeConfigProducer<AnyConfigProducer> ancestor, List<Element> allChainsElems, Map<String, ComponentsBuilder.ComponentType<?>> outerComponentTypeByComponentName) { return new ChainsBuilder<>(deployState, ancestor, allChainsElems, outerComponentTypeByComponentName, chainType2BuilderClass); diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/http/xml/HttpBuilder.java b/config-model/src/main/java/com/yahoo/vespa/model/container/http/xml/HttpBuilder.java index 81d0ab95d48..477274eb10a 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/container/http/xml/HttpBuilder.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/container/http/xml/HttpBuilder.java @@ -28,14 +28,14 @@ import java.util.logging.Level; * @author Tony Vaagenes * @author gjoranv */ -public class HttpBuilder extends VespaDomBuilder.DomConfigProducerBuilder<Http> { +public class HttpBuilder extends VespaDomBuilder.DomConfigProducerBuilder<Http, AnyConfigProducer> { static final String REQUEST_CHAIN_TAG_NAME = "request-chain"; static final String RESPONSE_CHAIN_TAG_NAME = "response-chain"; static final List<String> VALID_FILTER_CHAIN_TAG_NAMES = List.of(REQUEST_CHAIN_TAG_NAME, RESPONSE_CHAIN_TAG_NAME); @Override - protected Http doBuild(DeployState deployState, TreeConfigProducer<?> ancestor, Element spec) { + protected Http doBuild(DeployState deployState, TreeConfigProducer<AnyConfigProducer> ancestor, Element spec) { FilterChains filterChains; List<FilterBinding> bindings = new ArrayList<>(); AccessControl accessControl = null; diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/http/xml/JettyConnectorBuilder.java b/config-model/src/main/java/com/yahoo/vespa/model/container/http/xml/JettyConnectorBuilder.java index 28bdec31e05..37aa16dd92c 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/container/http/xml/JettyConnectorBuilder.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/container/http/xml/JettyConnectorBuilder.java @@ -4,6 +4,7 @@ package com.yahoo.vespa.model.container.http.xml; import com.yahoo.component.ComponentId; import com.yahoo.config.model.builder.xml.XmlHelper; import com.yahoo.config.model.deploy.DeployState; +import com.yahoo.config.model.producer.AnyConfigProducer; import com.yahoo.config.model.producer.TreeConfigProducer; import com.yahoo.text.XML; import com.yahoo.vespa.model.builder.xml.dom.ModelElement; @@ -23,10 +24,10 @@ import java.util.Optional; * @author Einar M R Rosenvinge * @author mortent */ -public class JettyConnectorBuilder extends VespaDomBuilder.DomConfigProducerBuilder<ConnectorFactory> { +public class JettyConnectorBuilder extends VespaDomBuilder.DomConfigProducerBuilder<ConnectorFactory, AnyConfigProducer> { @Override - protected ConnectorFactory doBuild(DeployState deployState, TreeConfigProducer<?> ancestor, Element serverSpec) { + protected ConnectorFactory doBuild(DeployState deployState, TreeConfigProducer<AnyConfigProducer> ancestor, Element serverSpec) { String name = XmlHelper.getIdString(serverSpec); int port = HttpBuilder.readPort(new ModelElement(serverSpec), deployState.isHosted()); ConnectorFactory.Builder builder = new ConnectorFactory.Builder(name, port); diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/http/xml/JettyHttpServerBuilder.java b/config-model/src/main/java/com/yahoo/vespa/model/container/http/xml/JettyHttpServerBuilder.java index 27ff9c3375c..846c9b53f61 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/container/http/xml/JettyHttpServerBuilder.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/container/http/xml/JettyHttpServerBuilder.java @@ -2,6 +2,7 @@ package com.yahoo.vespa.model.container.http.xml; import com.yahoo.config.model.deploy.DeployState; +import com.yahoo.config.model.producer.AnyConfigProducer; import com.yahoo.config.model.producer.TreeConfigProducer; import com.yahoo.text.XML; import com.yahoo.vespa.model.builder.xml.dom.VespaDomBuilder; @@ -13,7 +14,7 @@ import org.w3c.dom.Element; /** * @author Einar M R Rosenvinge */ -public class JettyHttpServerBuilder extends VespaDomBuilder.DomConfigProducerBuilder<JettyHttpServer> { +public class JettyHttpServerBuilder extends VespaDomBuilder.DomConfigProducerBuilder<JettyHttpServer, AnyConfigProducer> { private final ContainerCluster<?> cluster; @@ -22,7 +23,7 @@ public class JettyHttpServerBuilder extends VespaDomBuilder.DomConfigProducerBui } @Override - protected JettyHttpServer doBuild(DeployState deployState, TreeConfigProducer<?> ancestor, Element http) { + protected JettyHttpServer doBuild(DeployState deployState, TreeConfigProducer<AnyConfigProducer> ancestor, Element http) { JettyHttpServer jettyHttpServer = new JettyHttpServer("jdisc-jetty", cluster, deployState); for (Element serverSpec: XML.getChildren(http, "server")) { ConnectorFactory connectorFactory = new JettyConnectorBuilder().build(deployState, ancestor, serverSpec); diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/processing/ProcessingChains.java b/config-model/src/main/java/com/yahoo/vespa/model/container/processing/ProcessingChains.java index f6519e04122..330e1f96dc7 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/container/processing/ProcessingChains.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/container/processing/ProcessingChains.java @@ -16,7 +16,7 @@ public class ProcessingChains extends Chains<ProcessingChain> { public static final BindingPattern[] defaultBindings = new BindingPattern[]{SystemBindingPattern.fromHttpPath("/processing/*")}; - public ProcessingChains(TreeConfigProducer parent, String subId) { + public ProcessingChains(TreeConfigProducer<? super Chains> parent, String subId) { super(parent, subId); } diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/search/searchchain/SearchChains.java b/config-model/src/main/java/com/yahoo/vespa/model/container/search/searchchain/SearchChains.java index 33f755e9571..24f561417ca 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/container/search/searchchain/SearchChains.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/container/search/searchchain/SearchChains.java @@ -21,7 +21,7 @@ public class SearchChains extends Chains<SearchChain> { private final SourceGroupRegistry sourceGroups = new SourceGroupRegistry(); - public SearchChains(TreeConfigProducer<?> parent, String subId) { + public SearchChains(TreeConfigProducer<? super Chains> parent, String subId) { super(parent, subId); } diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/xml/AccessLogBuilder.java b/config-model/src/main/java/com/yahoo/vespa/model/container/xml/AccessLogBuilder.java index fc47ec8a724..ee7a9a7f457 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/container/xml/AccessLogBuilder.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/container/xml/AccessLogBuilder.java @@ -2,6 +2,7 @@ package com.yahoo.vespa.model.container.xml; import com.yahoo.config.model.deploy.DeployState; +import com.yahoo.config.model.producer.AnyConfigProducer; import com.yahoo.config.model.producer.TreeConfigProducer; import com.yahoo.vespa.model.builder.xml.dom.VespaDomBuilder; import com.yahoo.vespa.model.container.ContainerCluster; @@ -40,7 +41,7 @@ public class AccessLogBuilder { } } - private static class DomBuilder extends VespaDomBuilder.DomConfigProducerBuilder<AccessLogComponent> { + private static class DomBuilder extends VespaDomBuilder.DomConfigProducerBuilder<AccessLogComponent, AnyConfigProducer> { private final AccessLogType accessLogType; private final boolean isHostedVespa; @@ -50,7 +51,7 @@ public class AccessLogBuilder { } @Override - protected AccessLogComponent doBuild(DeployState deployState, TreeConfigProducer<?> ancestor, Element spec) { + protected AccessLogComponent doBuild(DeployState deployState, TreeConfigProducer<AnyConfigProducer> ancestor, Element spec) { String fallback = deployState.featureFlags().logFileCompressionAlgorithm("zstd"); return new AccessLogComponent( accessLogType, diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/xml/ContainerModelBuilder.java b/config-model/src/main/java/com/yahoo/vespa/model/container/xml/ContainerModelBuilder.java index 76526ca0b1e..af4ed037298 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/container/xml/ContainerModelBuilder.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/container/xml/ContainerModelBuilder.java @@ -24,6 +24,7 @@ import com.yahoo.config.model.application.provider.IncludeDirs; import com.yahoo.config.model.builder.xml.ConfigModelBuilder; import com.yahoo.config.model.builder.xml.ConfigModelId; import com.yahoo.config.model.deploy.DeployState; +import com.yahoo.config.model.producer.AnyConfigProducer; import com.yahoo.config.model.producer.TreeConfigProducer; import com.yahoo.config.provision.AthenzDomain; import com.yahoo.config.provision.AthenzService; @@ -191,9 +192,9 @@ public class ContainerModelBuilder extends ConfigModelBuilder<ContainerModel> { } private ApplicationContainerCluster createContainerCluster(Element spec, ConfigModelContext modelContext) { - return new VespaDomBuilder.DomConfigProducerBuilder<ApplicationContainerCluster>() { + return new VespaDomBuilder.DomConfigProducerBuilder<ApplicationContainerCluster, AnyConfigProducer>() { @Override - protected ApplicationContainerCluster doBuild(DeployState deployState, TreeConfigProducer<?> ancestor, Element producerSpec) { + protected ApplicationContainerCluster doBuild(DeployState deployState, TreeConfigProducer<AnyConfigProducer> ancestor, Element producerSpec) { return new ApplicationContainerCluster(ancestor, modelContext.getProducerId(), modelContext.getProducerId(), deployState); } diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/xml/ContainerServiceBuilder.java b/config-model/src/main/java/com/yahoo/vespa/model/container/xml/ContainerServiceBuilder.java index 32de7161a93..57a6e29e07d 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/container/xml/ContainerServiceBuilder.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/container/xml/ContainerServiceBuilder.java @@ -2,6 +2,7 @@ package com.yahoo.vespa.model.container.xml; import com.yahoo.config.model.deploy.DeployState; +import com.yahoo.config.model.producer.AnyConfigProducer; import com.yahoo.config.model.producer.TreeConfigProducer; import com.yahoo.vespa.model.builder.xml.dom.VespaDomBuilder; import com.yahoo.vespa.model.container.ApplicationContainer; @@ -10,7 +11,7 @@ import org.w3c.dom.Element; /** * @author Tony Vaagenes */ -public class ContainerServiceBuilder extends VespaDomBuilder.DomConfigProducerBuilder<ApplicationContainer> { +public class ContainerServiceBuilder extends VespaDomBuilder.DomConfigProducerBuilder<ApplicationContainer, AnyConfigProducer> { private final String id; private final int index; @@ -21,7 +22,7 @@ public class ContainerServiceBuilder extends VespaDomBuilder.DomConfigProducerBu } @Override - protected ApplicationContainer doBuild(DeployState deployState, TreeConfigProducer<?> parent, Element nodeElem) { + protected ApplicationContainer doBuild(DeployState deployState, TreeConfigProducer<AnyConfigProducer> parent, Element nodeElem) { return new ApplicationContainer(parent, id, index, deployState); } diff --git a/config-model/src/main/java/com/yahoo/vespa/model/content/ClusterControllerConfig.java b/config-model/src/main/java/com/yahoo/vespa/model/content/ClusterControllerConfig.java index 31e22b8fe6a..ee78412f6ec 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/content/ClusterControllerConfig.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/content/ClusterControllerConfig.java @@ -2,6 +2,7 @@ package com.yahoo.vespa.model.content; import com.yahoo.config.model.deploy.DeployState; +import com.yahoo.config.model.producer.AnyConfigProducer; import com.yahoo.config.model.producer.TreeConfigProducer; import com.yahoo.config.model.producer.AbstractConfigProducerRoot; import com.yahoo.vespa.config.content.FleetcontrollerConfig; @@ -18,7 +19,7 @@ import org.w3c.dom.Element; */ public class ClusterControllerConfig extends TreeConfigProducer<ClusterControllerConfig> implements FleetcontrollerConfig.Producer { - public static class Builder extends VespaDomBuilder.DomConfigProducerBuilder<ClusterControllerConfig> { + public static class Builder extends VespaDomBuilder.DomConfigProducerBuilder<ClusterControllerConfig, AnyConfigProducer> { private final String clusterName; private final ModelElement clusterElement; private final ResourceLimits resourceLimits; @@ -30,7 +31,7 @@ public class ClusterControllerConfig extends TreeConfigProducer<ClusterControlle } @Override - protected ClusterControllerConfig doBuild(DeployState deployState, TreeConfigProducer<?> ancestor, Element producerSpec) { + protected ClusterControllerConfig doBuild(DeployState deployState, TreeConfigProducer<AnyConfigProducer> ancestor, Element producerSpec) { ModelElement tuning = null; ModelElement clusterTuning = clusterElement.child("tuning"); diff --git a/config-model/src/main/java/com/yahoo/vespa/model/content/Content.java b/config-model/src/main/java/com/yahoo/vespa/model/content/Content.java index 383743a0d2e..ff7074fa60f 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/content/Content.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/content/Content.java @@ -13,6 +13,7 @@ import com.yahoo.config.model.admin.AdminModel; import com.yahoo.config.model.builder.xml.ConfigModelBuilder; import com.yahoo.config.model.builder.xml.ConfigModelId; import com.yahoo.config.model.deploy.DeployState; +import com.yahoo.config.model.producer.AnyConfigProducer; import com.yahoo.config.model.producer.TreeConfigProducer; import com.yahoo.vespa.model.AbstractService; import com.yahoo.vespa.model.HostResource; @@ -284,15 +285,24 @@ public class Content extends ConfigModel { cluster.setIndexingChain(indexingChain); } + private TreeConfigProducer<AnyConfigProducer> getDocProc(ApplicationConfigProducerRoot root) { + AnyConfigProducer current = root.getChildren().get(DOCPROC_RESERVED_NAME); + if (current == null) { + return new SimpleConfigProducer(root, DOCPROC_RESERVED_NAME); + } + if (current instanceof TreeConfigProducer t) { + return t; + } + throw new IllegalStateException("ApplicationConfigProducerRoot " + root + " with bad type for " + DOCPROC_RESERVED_NAME + ": " + current.getClass()); + } + /** Create a new container cluster for indexing and add it to the Vespa model */ private void createImplicitIndexingCluster(IndexedSearchCluster cluster, Content content, ConfigModelContext modelContext, ApplicationConfigProducerRoot root) { String indexerName = cluster.getIndexingClusterName(); - TreeConfigProducer<?> parent = root.getChildren().get(DOCPROC_RESERVED_NAME); - if (parent == null) - parent = new SimpleConfigProducer(root, DOCPROC_RESERVED_NAME); + TreeConfigProducer<AnyConfigProducer> parent = getDocProc(root); ApplicationContainerCluster indexingCluster = new ApplicationContainerCluster(parent, "cluster." + indexerName, indexerName, modelContext.getDeployState()); ContainerModel indexingClusterModel = new ContainerModel(modelContext.withParent(parent).withId(indexingCluster.getSubId())); indexingClusterModel.setCluster(indexingCluster); diff --git a/config-model/src/main/java/com/yahoo/vespa/model/content/ContentSearchCluster.java b/config-model/src/main/java/com/yahoo/vespa/model/content/ContentSearchCluster.java index 5b60f9492f4..0eed56a990b 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/content/ContentSearchCluster.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/content/ContentSearchCluster.java @@ -3,6 +3,7 @@ package com.yahoo.vespa.model.content; import com.yahoo.config.model.api.ModelContext; import com.yahoo.config.model.deploy.DeployState; +import com.yahoo.config.model.producer.AnyConfigProducer; import com.yahoo.config.model.producer.TreeConfigProducer; import com.yahoo.documentmodel.NewDocumentType; import com.yahoo.schema.Schema; @@ -39,7 +40,7 @@ import java.util.stream.Collectors; * Encapsulates the various options for search in a content model. * Wraps a search cluster from com.yahoo.vespa.model.search. */ -public class ContentSearchCluster extends TreeConfigProducer<SearchCluster> implements +public class ContentSearchCluster extends TreeConfigProducer<AnyConfigProducer> implements ProtonConfig.Producer, DispatchNodesConfig.Producer, DispatchConfig.Producer @@ -77,7 +78,7 @@ public class ContentSearchCluster extends TreeConfigProducer<SearchCluster> impl /** Whether the nodes of this cluster also hosts a container cluster in a hosted system */ private final double fractionOfMemoryReserved; - public static class Builder extends VespaDomBuilder.DomConfigProducerBuilder<ContentSearchCluster> { + public static class Builder extends VespaDomBuilder.DomConfigProducerBuilder<ContentSearchCluster, AnyConfigProducer> { private final Map<String, NewDocumentType> documentDefinitions; private final Set<NewDocumentType> globallyDistributedDocuments; @@ -94,7 +95,7 @@ public class ContentSearchCluster extends TreeConfigProducer<SearchCluster> impl } @Override - protected ContentSearchCluster doBuild(DeployState deployState, TreeConfigProducer<?> ancestor, Element producerSpec) { + protected ContentSearchCluster doBuild(DeployState deployState, TreeConfigProducer<AnyConfigProducer> ancestor, Element producerSpec) { ModelElement clusterElem = new ModelElement(producerSpec); String clusterName = ContentCluster.getClusterId(clusterElem); Boolean flushOnShutdownElem = clusterElem.childAsBoolean("engine.proton.flush-on-shutdown"); @@ -267,7 +268,7 @@ public class ContentSearchCluster extends TreeConfigProducer<SearchCluster> impl } public void addSearchNode(DeployState deployState, ContentNode node, StorageGroup parentGroup, ModelElement element) { - TreeConfigProducer<?> parent = hasIndexedCluster() ? getIndexed() : this; + TreeConfigProducer<AnyConfigProducer> parent = hasIndexedCluster() ? getIndexed() : this; NodeSpec spec = getNextSearchNodeSpec(parentGroup); SearchNode searchNode; diff --git a/config-model/src/main/java/com/yahoo/vespa/model/content/Distributor.java b/config-model/src/main/java/com/yahoo/vespa/model/content/Distributor.java index c7ac5eea905..0c5b45ab467 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/content/Distributor.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/content/Distributor.java @@ -5,6 +5,7 @@ import com.yahoo.config.model.api.ModelContext; import com.yahoo.config.model.deploy.DeployState; import com.yahoo.vespa.config.content.core.StorDistributormanagerConfig; import com.yahoo.vespa.config.content.core.StorServerConfig; +import com.yahoo.config.model.producer.AnyConfigProducer; import com.yahoo.config.model.producer.TreeConfigProducer; import com.yahoo.vespa.model.builder.xml.dom.ModelElement; import com.yahoo.vespa.model.builder.xml.dom.VespaDomBuilder; @@ -19,7 +20,7 @@ public class Distributor extends ContentNode implements StorDistributormanagerCo PersistenceEngine provider; - public static class Builder extends VespaDomBuilder.DomConfigProducerBuilder<Distributor> { + public static class Builder extends VespaDomBuilder.DomConfigProducerBuilder<Distributor, Distributor> { ModelElement clusterXml; PersistenceEngine persistenceProvider; @@ -29,7 +30,7 @@ public class Distributor extends ContentNode implements StorDistributormanagerCo } @Override - protected Distributor doBuild(DeployState deployState, TreeConfigProducer ancestor, Element producerSpec) { + protected Distributor doBuild(DeployState deployState, TreeConfigProducer<Distributor> ancestor, Element producerSpec) { return new Distributor(deployState.getProperties(), (DistributorCluster)ancestor, new ModelElement(producerSpec).integerAttribute("distribution-key"), clusterXml.integerAttribute("distributor-base-port"), persistenceProvider); } diff --git a/config-model/src/main/java/com/yahoo/vespa/model/content/DistributorCluster.java b/config-model/src/main/java/com/yahoo/vespa/model/content/DistributorCluster.java index dbe387952e0..dc62d079e88 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/content/DistributorCluster.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/content/DistributorCluster.java @@ -6,6 +6,7 @@ import com.yahoo.vespa.config.content.core.StorDistributormanagerConfig; import com.yahoo.vespa.config.content.core.StorServerConfig; import com.yahoo.document.select.DocumentSelector; import com.yahoo.document.select.parser.ParseException; +import com.yahoo.config.model.producer.AnyConfigProducer; import com.yahoo.config.model.producer.TreeConfigProducer; import com.yahoo.metrics.MetricsmanagerConfig; import com.yahoo.vespa.model.builder.xml.dom.ModelElement; @@ -32,7 +33,7 @@ public class DistributorCluster extends TreeConfigProducer<Distributor> implemen private final GcOptions gc; private final boolean hasIndexedDocumentType; private final int maxActivationInhibitedOutOfSyncGroups; - public static class Builder extends VespaDomBuilder.DomConfigProducerBuilder<DistributorCluster> { + public static class Builder extends VespaDomBuilder.DomConfigProducerBuilder<DistributorCluster, AnyConfigProducer> { ContentCluster parent; @@ -86,7 +87,7 @@ public class DistributorCluster extends TreeConfigProducer<Distributor> implemen } @Override - protected DistributorCluster doBuild(DeployState deployState, TreeConfigProducer<?> ancestor, Element producerSpec) { + protected DistributorCluster doBuild(DeployState deployState, TreeConfigProducer<AnyConfigProducer> ancestor, Element producerSpec) { final ModelElement clusterElement = new ModelElement(producerSpec); final ModelElement documentsNode = clusterElement.child("documents"); final GcOptions gc = parseGcOptions(documentsNode); diff --git a/config-model/src/main/java/com/yahoo/vespa/model/content/StorageGroup.java b/config-model/src/main/java/com/yahoo/vespa/model/content/StorageGroup.java index 36090aa7349..31ec764fbde 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/content/StorageGroup.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/content/StorageGroup.java @@ -519,4 +519,4 @@ public class StorageGroup { } } -}
\ No newline at end of file +} diff --git a/config-model/src/main/java/com/yahoo/vespa/model/content/StorageNode.java b/config-model/src/main/java/com/yahoo/vespa/model/content/StorageNode.java index 3d4057d6dcd..c0b0ec3943d 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/content/StorageNode.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/content/StorageNode.java @@ -3,6 +3,7 @@ package com.yahoo.vespa.model.content; import com.yahoo.config.model.api.ModelContext; import com.yahoo.config.model.deploy.DeployState; +import com.yahoo.config.model.producer.AnyConfigProducer; import com.yahoo.config.model.producer.TreeConfigProducer; import com.yahoo.vespa.config.content.StorFilestorConfig; import com.yahoo.vespa.config.content.core.StorBucketmoverConfig; @@ -29,10 +30,10 @@ public class StorageNode extends ContentNode implements StorServerConfig.Produce private final boolean retired; private final StorageCluster cluster; - public static class Builder extends VespaDomBuilder.DomConfigProducerBuilder<StorageNode> { + public static class Builder extends VespaDomBuilder.DomConfigProducerBuilder<StorageNode, StorageNode> { @Override - protected StorageNode doBuild(DeployState deployState, TreeConfigProducer<?> ancestor, Element producerSpec) { + protected StorageNode doBuild(DeployState deployState, TreeConfigProducer<StorageNode> ancestor, Element producerSpec) { ModelElement e = new ModelElement(producerSpec); return new StorageNode(deployState.getProperties(), (StorageCluster)ancestor, e.doubleAttribute("capacity"), e.integerAttribute("distribution-key"), false); } @@ -67,7 +68,7 @@ public class StorageNode extends ContentNode implements StorServerConfig.Produce public boolean isRetired() { return retired; } private boolean isProviderProton() { - for (TreeConfigProducer<?> producer : getChildren().values()) { + for (var producer : getChildren().values()) { if (producer instanceof ProtonProvider) { return true; } @@ -81,7 +82,7 @@ public class StorageNode extends ContentNode implements StorServerConfig.Produce builder.node_capacity(getCapacity()); - for (TreeConfigProducer<?> producer : getChildren().values()) { + for (var producer : getChildren().values()) { ((PersistenceEngine)producer).getConfig(builder); } } diff --git a/config-model/src/main/java/com/yahoo/vespa/model/content/cluster/ContentCluster.java b/config-model/src/main/java/com/yahoo/vespa/model/content/cluster/ContentCluster.java index 2acf07d954c..137e19e7d86 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/content/cluster/ContentCluster.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/content/cluster/ContentCluster.java @@ -5,6 +5,7 @@ import com.google.common.base.Preconditions; import com.yahoo.config.application.api.DeployLogger; import com.yahoo.config.model.ConfigModelContext; import com.yahoo.config.model.deploy.DeployState; +import com.yahoo.config.model.producer.AnyConfigProducer; import com.yahoo.config.model.producer.TreeConfigProducer; import com.yahoo.config.provision.ClusterMembership; import com.yahoo.config.provision.ClusterSpec; @@ -69,7 +70,7 @@ import java.util.logging.Level; * @author mostly somebody unknown * @author bratseth */ -public class ContentCluster extends TreeConfigProducer<TreeConfigProducer<?>> implements +public class ContentCluster extends TreeConfigProducer<AnyConfigProducer> implements DistributionConfig.Producer, StorDistributionConfig.Producer, StorDistributormanagerConfig.Producer, diff --git a/config-model/src/main/java/com/yahoo/vespa/model/content/engines/PersistenceEngine.java b/config-model/src/main/java/com/yahoo/vespa/model/content/engines/PersistenceEngine.java index 992ce4d906b..9b5050a6b8b 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/content/engines/PersistenceEngine.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/content/engines/PersistenceEngine.java @@ -3,15 +3,16 @@ package com.yahoo.vespa.model.content.engines; import com.yahoo.config.model.deploy.DeployState; import com.yahoo.vespa.config.content.core.StorServerConfig; +import com.yahoo.config.model.producer.AnyConfigProducer; import com.yahoo.config.model.producer.TreeConfigProducer; import com.yahoo.vespa.model.builder.xml.dom.ModelElement; import com.yahoo.vespa.model.content.StorageGroup; import com.yahoo.vespa.model.content.StorageNode; import com.yahoo.vespa.model.content.cluster.ContentCluster; -public abstract class PersistenceEngine extends TreeConfigProducer implements StorServerConfig.Producer { +public abstract class PersistenceEngine extends TreeConfigProducer<AnyConfigProducer> implements StorServerConfig.Producer { - public PersistenceEngine(TreeConfigProducer parent, String name) { + public PersistenceEngine(TreeConfigProducer<? super PersistenceEngine> parent, String name) { super(parent, name); } diff --git a/config-model/src/main/java/com/yahoo/vespa/model/content/storagecluster/StorageCluster.java b/config-model/src/main/java/com/yahoo/vespa/model/content/storagecluster/StorageCluster.java index 9f155c1e01d..7b269f62902 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/content/storagecluster/StorageCluster.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/content/storagecluster/StorageCluster.java @@ -9,6 +9,7 @@ import com.yahoo.vespa.config.content.StorFilestorConfig; import com.yahoo.vespa.config.content.core.StorServerConfig; import com.yahoo.vespa.config.content.PersistenceConfig; import com.yahoo.metrics.MetricsmanagerConfig; +import com.yahoo.config.model.producer.AnyConfigProducer; import com.yahoo.config.model.producer.TreeConfigProducer; import com.yahoo.vespa.model.builder.xml.dom.VespaDomBuilder; import com.yahoo.vespa.model.content.cluster.ContentCluster; @@ -28,9 +29,9 @@ public class StorageCluster extends TreeConfigProducer<StorageNode> PersistenceConfig.Producer, MetricsmanagerConfig.Producer { - public static class Builder extends VespaDomBuilder.DomConfigProducerBuilder<StorageCluster> { + public static class Builder extends VespaDomBuilder.DomConfigProducerBuilder<StorageCluster, AnyConfigProducer> { @Override - protected StorageCluster doBuild(DeployState deployState, TreeConfigProducer<?> ancestor, Element producerSpec) { + protected StorageCluster doBuild(DeployState deployState, TreeConfigProducer<AnyConfigProducer> ancestor, Element producerSpec) { final ModelElement clusterElem = new ModelElement(producerSpec); final ContentCluster cluster = (ContentCluster)ancestor; diff --git a/config-model/src/main/java/com/yahoo/vespa/model/search/IndexedSearchCluster.java b/config-model/src/main/java/com/yahoo/vespa/model/search/IndexedSearchCluster.java index b7ae142adcc..708a3f220ac 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/search/IndexedSearchCluster.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/search/IndexedSearchCluster.java @@ -4,6 +4,7 @@ package com.yahoo.vespa.model.search; import com.yahoo.config.ConfigInstance; import com.yahoo.config.model.api.ModelContext; import com.yahoo.config.model.deploy.DeployState; +import com.yahoo.config.model.producer.AnyConfigProducer; import com.yahoo.config.model.producer.TreeConfigProducer; import com.yahoo.prelude.fastsearch.DocumentdbInfoConfig; import com.yahoo.search.config.IndexInfoConfig; @@ -73,7 +74,7 @@ public class IndexedSearchCluster extends SearchCluster return routingSelector; } - public IndexedSearchCluster(TreeConfigProducer<SearchCluster> parent, String clusterName, int index, ModelContext.FeatureFlags featureFlags) { + public IndexedSearchCluster(TreeConfigProducer<AnyConfigProducer> parent, String clusterName, int index, ModelContext.FeatureFlags featureFlags) { super(parent, clusterName, index); documentDbsConfigProducer = new MultipleDocumentDatabasesConfigProducer(this, documentDbs); rootDispatch = new DispatchGroup(this); diff --git a/config-model/src/main/java/com/yahoo/vespa/model/search/SearchCluster.java b/config-model/src/main/java/com/yahoo/vespa/model/search/SearchCluster.java index 3e55be8825b..61455fcbf34 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/search/SearchCluster.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/search/SearchCluster.java @@ -9,6 +9,7 @@ import com.yahoo.vespa.config.search.RankProfilesConfig; import com.yahoo.prelude.fastsearch.DocumentdbInfoConfig; import com.yahoo.search.config.IndexInfoConfig; import com.yahoo.vespa.configdefinition.IlscriptsConfig; +import com.yahoo.config.model.producer.AnyConfigProducer; import com.yahoo.config.model.producer.TreeConfigProducer; import java.util.Collections; @@ -21,7 +22,7 @@ import java.util.Map; * * @author arnej27959 */ -public abstract class SearchCluster extends TreeConfigProducer<SearchCluster> +public abstract class SearchCluster extends TreeConfigProducer<AnyConfigProducer> implements DocumentdbInfoConfig.Producer, IndexInfoConfig.Producer, diff --git a/config-model/src/main/java/com/yahoo/vespa/model/search/SearchNode.java b/config-model/src/main/java/com/yahoo/vespa/model/search/SearchNode.java index 8df98e1ee6e..c8e01201047 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/search/SearchNode.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/search/SearchNode.java @@ -4,6 +4,7 @@ package com.yahoo.vespa.model.search; import com.yahoo.cloud.config.filedistribution.FiledistributorrpcConfig; import com.yahoo.config.model.api.ModelContext; import com.yahoo.config.model.deploy.DeployState; +import com.yahoo.config.model.producer.AnyConfigProducer; import com.yahoo.config.model.producer.TreeConfigProducer; import com.yahoo.config.provision.NodeResources; import com.yahoo.metrics.MetricsmanagerConfig; @@ -69,7 +70,7 @@ public class SearchNode extends AbstractService implements private final Optional<ResourceLimits> resourceLimits; private final double fractionOfMemoryReserved; - public static class Builder extends VespaDomBuilder.DomConfigProducerBuilder<SearchNode> { + public static class Builder extends VespaDomBuilder.DomConfigProducerBuilder<SearchNode, AnyConfigProducer> { private final String name; private final NodeSpec nodeSpec; @@ -94,7 +95,7 @@ public class SearchNode extends AbstractService implements } @Override - protected SearchNode doBuild(DeployState deployState, TreeConfigProducer<?> ancestor, Element producerSpec) { + protected SearchNode doBuild(DeployState deployState, TreeConfigProducer<AnyConfigProducer> ancestor, Element producerSpec) { return SearchNode.create(ancestor, name, contentNode.getDistributionKey(), nodeSpec, clusterName, contentNode, flushOnShutdown, tuning, resourceLimits, deployState.isHosted(), fractionOfMemoryReserved, deployState.featureFlags()); diff --git a/config-model/src/main/java/com/yahoo/vespa/model/search/StreamingSearchCluster.java b/config-model/src/main/java/com/yahoo/vespa/model/search/StreamingSearchCluster.java index 93ade261c14..f03e46cdcee 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/search/StreamingSearchCluster.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/search/StreamingSearchCluster.java @@ -2,6 +2,7 @@ package com.yahoo.vespa.model.search; import com.yahoo.config.model.deploy.DeployState; +import com.yahoo.config.model.producer.AnyConfigProducer; import com.yahoo.config.model.producer.TreeConfigProducer; import com.yahoo.prelude.fastsearch.DocumentdbInfoConfig; import com.yahoo.schema.Schema; @@ -34,7 +35,7 @@ public class StreamingSearchCluster extends SearchCluster implements private final String docTypeName; private DerivedConfiguration derivedConfig = null; - public StreamingSearchCluster(TreeConfigProducer<SearchCluster> parent, + public StreamingSearchCluster(TreeConfigProducer<AnyConfigProducer> parent, String clusterName, int index, String docTypeName, diff --git a/config-model/src/main/java/com/yahoo/vespa/model/search/TransactionLogServer.java b/config-model/src/main/java/com/yahoo/vespa/model/search/TransactionLogServer.java index 1533120d408..a520f09eef4 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/search/TransactionLogServer.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/search/TransactionLogServer.java @@ -3,6 +3,7 @@ package com.yahoo.vespa.model.search; import com.yahoo.config.model.deploy.DeployState; import com.yahoo.searchlib.TranslogserverConfig; +import com.yahoo.config.model.producer.AnyConfigProducer; import com.yahoo.config.model.producer.TreeConfigProducer; import com.yahoo.vespa.model.AbstractService; import com.yahoo.vespa.model.PortAllocBridge; @@ -24,7 +25,7 @@ public class TransactionLogServer extends AbstractService { setProp("clustertype", "search"); } - public static class Builder extends VespaDomBuilder.DomConfigProducerBuilder<TransactionLogServer> { + public static class Builder extends VespaDomBuilder.DomConfigProducerBuilder<TransactionLogServer, AnyConfigProducer> { private final String clusterName; private final Boolean useFsync; @@ -34,7 +35,7 @@ public class TransactionLogServer extends AbstractService { } @Override - protected TransactionLogServer doBuild(DeployState deployState, TreeConfigProducer<?> ancestor, Element producerSpec) { + protected TransactionLogServer doBuild(DeployState deployState, TreeConfigProducer<AnyConfigProducer> ancestor, Element producerSpec) { return new TransactionLogServer(ancestor, clusterName, useFsync); } diff --git a/config-model/src/test/java/com/yahoo/vespa/model/test/DomTestServiceBuilder.java b/config-model/src/test/java/com/yahoo/vespa/model/test/DomTestServiceBuilder.java index 71f54216187..ffd880e089a 100644 --- a/config-model/src/test/java/com/yahoo/vespa/model/test/DomTestServiceBuilder.java +++ b/config-model/src/test/java/com/yahoo/vespa/model/test/DomTestServiceBuilder.java @@ -2,6 +2,7 @@ package com.yahoo.vespa.model.test; import com.yahoo.config.model.deploy.DeployState; +import com.yahoo.config.model.producer.AnyConfigProducer; import com.yahoo.config.model.producer.TreeConfigProducer; import com.yahoo.vespa.model.builder.xml.dom.VespaDomBuilder; import org.w3c.dom.Element; @@ -12,7 +13,7 @@ import org.w3c.dom.Element; public class DomTestServiceBuilder { - static class SimpleServiceBuilder extends VespaDomBuilder.DomConfigProducerBuilder<SimpleService> { + static class SimpleServiceBuilder extends VespaDomBuilder.DomConfigProducerBuilder<SimpleService, AnyConfigProducer> { int i; public SimpleServiceBuilder(int i) { @@ -20,12 +21,12 @@ public class DomTestServiceBuilder { } @Override - protected SimpleService doBuild(DeployState deployState, TreeConfigProducer parent, Element spec) { + protected SimpleService doBuild(DeployState deployState, TreeConfigProducer<AnyConfigProducer> parent, Element spec) { return new SimpleService(parent, "simpleservice." + i); } } - static class ApiServiceBuilder extends VespaDomBuilder.DomConfigProducerBuilder<ApiService> { + static class ApiServiceBuilder extends VespaDomBuilder.DomConfigProducerBuilder<ApiService, AnyConfigProducer> { int i; public ApiServiceBuilder(int i) { @@ -33,12 +34,12 @@ public class DomTestServiceBuilder { } @Override - protected ApiService doBuild(DeployState deployState, TreeConfigProducer parent, Element spec) { + protected ApiService doBuild(DeployState deployState, TreeConfigProducer<AnyConfigProducer> parent, Element spec) { return new ApiService(parent, "apiservice." + i); } } - static class ParentServiceBuilder extends VespaDomBuilder.DomConfigProducerBuilder<ParentService> { + static class ParentServiceBuilder extends VespaDomBuilder.DomConfigProducerBuilder<ParentService, AnyConfigProducer> { int i; public ParentServiceBuilder(int i) { @@ -46,7 +47,7 @@ public class DomTestServiceBuilder { } @Override - protected ParentService doBuild(DeployState deployState, TreeConfigProducer parent, Element spec) { + protected ParentService doBuild(DeployState deployState, TreeConfigProducer<AnyConfigProducer> parent, Element spec) { return new ParentService(parent, "parentservice." + i, spec); } } |