From 4426f0ee45846a905d2fe47bb0b998014d86ad39 Mon Sep 17 00:00:00 2001 From: Arne Juul Date: Mon, 13 Feb 2023 10:28:48 +0000 Subject: split AbstractConfigProducer --- .../model/ApplicationConfigProducerRoot.java | 11 +- .../com/yahoo/config/model/ConfigModelContext.java | 14 +- .../com/yahoo/config/model/ConfigModelRepo.java | 6 +- .../com/yahoo/config/model/admin/AdminModel.java | 6 +- .../model/builder/xml/ConfigModelBuilder.java | 4 +- .../model/producer/AbstractConfigProducer.java | 404 --------------------- .../model/producer/AbstractConfigProducerRoot.java | 2 +- .../config/model/producer/AnyConfigProducer.java | 297 +++++++++++++++ .../config/model/producer/TreeConfigProducer.java | 199 ++++++++++ .../config/model/producer/UserConfigRepo.java | 2 +- .../java/com/yahoo/config/model/test/MockRoot.java | 7 +- .../com/yahoo/vespa/model/AbstractService.java | 8 +- .../main/java/com/yahoo/vespa/model/Client.java | 6 +- .../com/yahoo/vespa/model/ConfigProducerRoot.java | 5 +- .../src/main/java/com/yahoo/vespa/model/Host.java | 10 +- .../java/com/yahoo/vespa/model/HostSystem.java | 6 +- .../yahoo/vespa/model/SimpleConfigProducer.java | 6 +- .../java/com/yahoo/vespa/model/VespaModel.java | 5 +- .../java/com/yahoo/vespa/model/admin/Admin.java | 6 +- .../com/yahoo/vespa/model/admin/Configserver.java | 4 +- .../com/yahoo/vespa/model/admin/LogForwarder.java | 4 +- .../com/yahoo/vespa/model/admin/Logserver.java | 4 +- .../vespa/model/admin/LogserverContainer.java | 4 +- .../model/admin/LogserverContainerCluster.java | 4 +- .../vespa/model/admin/ModelConfigProvider.java | 6 +- .../java/com/yahoo/vespa/model/admin/Slobrok.java | 4 +- .../ClusterControllerCluster.java | 6 +- .../ClusterControllerContainer.java | 4 +- .../ClusterControllerContainerCluster.java | 4 +- .../metricsproxy/MetricsProxyContainerCluster.java | 6 +- .../application/validation/RankSetupValidator.java | 4 +- .../vespa/model/builder/VespaModelBuilder.java | 6 +- .../model/builder/xml/dom/DomAdminBuilderBase.java | 6 +- .../model/builder/xml/dom/DomAdminV2Builder.java | 20 +- .../builder/xml/dom/DomClientProviderBuilder.java | 4 +- .../model/builder/xml/dom/DomComponentBuilder.java | 8 +- .../model/builder/xml/dom/DomHandlerBuilder.java | 4 +- .../builder/xml/dom/DomSearchTuningBuilder.java | 4 +- .../builder/xml/dom/LegacyConfigModelBuilder.java | 4 +- .../model/builder/xml/dom/VespaDomBuilder.java | 20 +- .../builder/xml/dom/chains/ChainsBuilder.java | 8 +- .../builder/xml/dom/chains/ComponentsBuilder.java | 10 +- .../xml/dom/chains/DomChainBuilderBase.java | 6 +- .../builder/xml/dom/chains/DomChainsBuilder.java | 10 +- .../dom/chains/docproc/DocprocChainsBuilder.java | 4 +- .../dom/chains/docproc/DomDocprocChainBuilder.java | 4 +- .../chains/docproc/DomDocprocChainsBuilder.java | 6 +- .../docproc/DomDocumentProcessorBuilder.java | 4 +- .../chains/processing/DomProcessingBuilder.java | 6 +- .../processing/DomProcessingChainBuilder.java | 4 +- .../dom/chains/processing/DomProcessorBuilder.java | 4 +- .../chains/processing/ProcessingChainsBuilder.java | 4 +- .../search/DomFederationSearcherBuilder.java | 6 +- .../xml/dom/chains/search/DomProviderBuilder.java | 6 +- .../dom/chains/search/DomSearchChainBuilder.java | 4 +- .../dom/chains/search/DomSearchChainsBuilder.java | 6 +- .../xml/dom/chains/search/DomSearcherBuilder.java | 4 +- .../xml/dom/chains/search/DomSourceBuilder.java | 4 +- .../xml/dom/chains/search/SearchChainsBuilder.java | 4 +- .../model/container/ApplicationContainer.java | 6 +- .../container/ApplicationContainerCluster.java | 4 +- .../com/yahoo/vespa/model/container/Container.java | 21 +- .../vespa/model/container/ContainerCluster.java | 16 +- .../vespa/model/container/component/Component.java | 6 +- .../model/container/component/ComponentGroup.java | 4 +- .../container/component/ConfigProducerGroup.java | 6 +- .../model/container/component/SimpleComponent.java | 4 +- .../model/container/component/chain/Chain.java | 4 +- .../component/chain/ChainedComponent.java | 6 +- .../model/container/component/chain/Chains.java | 6 +- .../configserver/ConfigserverCluster.java | 6 +- .../model/container/docproc/DocprocChains.java | 4 +- .../vespa/model/container/http/FilterChains.java | 4 +- .../com/yahoo/vespa/model/container/http/Http.java | 4 +- .../model/container/http/xml/FilterBuilder.java | 4 +- .../container/http/xml/FilterChainBuilder.java | 4 +- .../container/http/xml/FilterChainsBuilder.java | 6 +- .../model/container/http/xml/HttpBuilder.java | 11 +- .../container/http/xml/JettyConnectorBuilder.java | 4 +- .../container/http/xml/JettyHttpServerBuilder.java | 4 +- .../container/processing/ProcessingChains.java | 4 +- .../container/search/DispatcherComponent.java | 4 +- .../container/search/searchchain/SearchChains.java | 4 +- .../container/search/searchchain/Searcher.java | 4 +- .../model/container/search/searchchain/Source.java | 4 +- .../model/container/xml/AccessLogBuilder.java | 4 +- .../model/container/xml/ContainerModelBuilder.java | 4 +- .../container/xml/ContainerServiceBuilder.java | 4 +- .../xml/document/DocumentFactoryBuilder.java | 4 +- .../model/content/ClusterControllerConfig.java | 8 +- .../com/yahoo/vespa/model/content/Content.java | 4 +- .../com/yahoo/vespa/model/content/ContentNode.java | 4 +- .../vespa/model/content/ContentSearchCluster.java | 10 +- .../com/yahoo/vespa/model/content/Distributor.java | 4 +- .../vespa/model/content/DistributorCluster.java | 6 +- .../com/yahoo/vespa/model/content/StorageNode.java | 8 +- .../model/content/cluster/ContentCluster.java | 8 +- .../model/content/engines/PersistenceEngine.java | 6 +- .../content/storagecluster/StorageCluster.java | 8 +- .../FileDistributionConfigProducer.java | 6 +- .../FileDistributionConfigProvider.java | 6 +- .../java/com/yahoo/vespa/model/package-info.java | 16 +- .../yahoo/vespa/model/search/DocumentDatabase.java | 6 +- .../vespa/model/search/IndexedSearchCluster.java | 8 +- .../yahoo/vespa/model/search/SearchCluster.java | 6 +- .../com/yahoo/vespa/model/search/SearchNode.java | 8 +- .../vespa/model/search/StreamingSearchCluster.java | 8 +- .../vespa/model/search/TransactionLogServer.java | 6 +- .../java/com/yahoo/vespa/model/search/Tuning.java | 6 +- .../com/yahoo/vespa/model/utils/FileSender.java | 4 +- .../yahoo/config/model/ConfigModelContextTest.java | 4 +- .../model/producer/AbstractConfigProducerTest.java | 4 +- .../java/com/yahoo/vespa/model/HostPortsTest.java | 6 +- .../com/yahoo/vespa/model/HostResourceTest.java | 4 +- .../change/ConfigValueChangeValidatorTest.java | 8 +- .../change/StartupCommandChangeValidatorTest.java | 4 +- .../search/DomFederationSearcherBuilderTest.java | 4 +- .../com/yahoo/vespa/model/test/ApiService.java | 4 +- .../vespa/model/test/DomTestServiceBuilder.java | 8 +- .../vespa/model/test/ModelAmendingTestCase.java | 4 +- .../com/yahoo/vespa/model/test/ParentService.java | 4 +- .../com/yahoo/vespa/model/test/SimpleService.java | 4 +- .../yahoo/vespa/model/utils/FileSenderTest.java | 4 +- .../model/utils/internal/ReflectionUtilTest.java | 16 +- 124 files changed, 866 insertions(+), 766 deletions(-) delete mode 100644 config-model/src/main/java/com/yahoo/config/model/producer/AbstractConfigProducer.java create mode 100644 config-model/src/main/java/com/yahoo/config/model/producer/AnyConfigProducer.java create mode 100644 config-model/src/main/java/com/yahoo/config/model/producer/TreeConfigProducer.java 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 6a474b84161..052bb7e968a 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 @@ -13,7 +13,8 @@ import com.yahoo.cloud.config.log.LogdConfig; import com.yahoo.component.Version; import com.yahoo.config.model.api.ModelContext; import com.yahoo.config.model.deploy.DeployState; -import com.yahoo.config.model.producer.AbstractConfigProducer; +import com.yahoo.config.model.producer.AnyConfigProducer; +import com.yahoo.config.model.producer.TreeConfigProducer; import com.yahoo.config.provision.ApplicationId; import com.yahoo.document.config.DocumenttypesConfig; import com.yahoo.document.config.DocumentmanagerConfig; @@ -49,7 +50,7 @@ import java.util.Set; * * @author gjoranv */ -public class ApplicationConfigProducerRoot extends AbstractConfigProducer> implements CommonConfigsProducer { +public class ApplicationConfigProducerRoot extends TreeConfigProducer> implements CommonConfigsProducer { private final DocumentModel documentModel; private Routing routing = null; @@ -68,7 +69,7 @@ public class ApplicationConfigProducerRoot extends AbstractConfigProducer parent; + private final TreeConfigProducer parent; private final String producerId; private final DeployState deployState; private final VespaModel vespaModel; @@ -29,7 +29,7 @@ public final class ConfigModelContext { DeployState deployState, VespaModel vespaModel, ConfigModelRepoAdder configModelRepoAdder, - AbstractConfigProducer parent, + TreeConfigProducer parent, String producerId) { this.applicationType = applicationType; this.deployState = deployState; @@ -41,7 +41,7 @@ public final class ConfigModelContext { public ApplicationPackage getApplicationPackage() { return deployState.getApplicationPackage(); } public String getProducerId() { return producerId; } - public AbstractConfigProducer getParentProducer() { return parent; } + public TreeConfigProducer getParentProducer() { return parent; } public DeployLogger getDeployLogger() { return deployState.getDeployLogger(); } public DeployState getDeployState() { return deployState; } public ApplicationType getApplicationType() { return applicationType; } @@ -53,7 +53,7 @@ public final class ConfigModelContext { public ConfigModelRepoAdder getConfigModelRepoAdder() { return configModelRepoAdder; } /** Create a new context with a different parent */ - public ConfigModelContext withParent(AbstractConfigProducer newParent) { + public ConfigModelContext withParent(TreeConfigProducer newParent) { return ConfigModelContext.create(deployState, vespaModel, configModelRepoAdder, newParent, producerId); } @@ -77,7 +77,7 @@ public final class ConfigModelContext { public static ConfigModelContext create(DeployState deployState, VespaModel vespaModel, ConfigModelRepoAdder configModelRepoAdder, - AbstractConfigProducer parent, + TreeConfigProducer parent, String producerId) { return new ConfigModelContext(ApplicationType.DEFAULT, deployState, vespaModel, configModelRepoAdder, parent, producerId); } @@ -95,7 +95,7 @@ public final class ConfigModelContext { DeployState deployState, VespaModel vespaModel, ConfigModelRepoAdder configModelRepoAdder, - AbstractConfigProducer parent, + TreeConfigProducer 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 756646beddb..fc04ab6acc3 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,7 +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.AbstractConfigProducer; +import com.yahoo.config.model.producer.TreeConfigProducer; import com.yahoo.config.model.provision.HostsXmlProvisioner; import com.yahoo.text.XML; import com.yahoo.vespa.model.VespaModel; @@ -172,7 +172,7 @@ public class ConfigModelRepo implements ConfigModelRepoAdder, Serializable, Iter ApplicationType applicationType, DeployState deployState, VespaModel vespaModel, - AbstractConfigProducer parent, + TreeConfigProducer parent, List elements) { for (Element servicesElement : elements) { ConfigModel model = buildModel(node, applicationType, deployState, vespaModel, parent, servicesElement); @@ -185,7 +185,7 @@ public class ConfigModelRepo implements ConfigModelRepoAdder, Serializable, Iter ApplicationType applicationType, DeployState deployState, VespaModel vespaModel, - AbstractConfigProducer parent, + TreeConfigProducer 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 7fe7c4b9f68..d4fb96e3f19 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,7 +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.AbstractConfigProducer; +import com.yahoo.config.model.producer.TreeConfigProducer; import com.yahoo.vespa.model.admin.Admin; import com.yahoo.vespa.model.builder.xml.dom.DomAdminV2Builder; import com.yahoo.vespa.model.builder.xml.dom.DomAdminV4Builder; @@ -80,7 +80,7 @@ public class AdminModel extends ConfigModel { new BuilderV4().doBuild(model, adminElement, modelContext); return; } - AbstractConfigProducer parent = modelContext.getParentProducer(); + TreeConfigProducer parent = modelContext.getParentProducer(); ModelContext.Properties properties = modelContext.getDeployState().getProperties(); DomAdminV2Builder domBuilder = new DomAdminV2Builder(modelContext.getApplicationType(), properties.multitenant(), @@ -109,7 +109,7 @@ public class AdminModel extends ConfigModel { @Override public void doBuild(AdminModel model, Element adminElement, ConfigModelContext modelContext) { - AbstractConfigProducer parent = modelContext.getParentProducer(); + TreeConfigProducer 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 656f78ba2a9..c968006a5b6 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,7 +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.AbstractConfigProducer; +import com.yahoo.config.model.producer.TreeConfigProducer; import com.yahoo.vespa.model.VespaModel; import org.w3c.dom.Element; @@ -55,7 +55,7 @@ public abstract class ConfigModelBuilder extends Abst * @param spec the XML element this is constructed from */ public final MODEL build(DeployState deployState, VespaModel vespaModel, ConfigModelRepo configModelRepo, - AbstractConfigProducer parent, Element spec) { + TreeConfigProducer 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/AbstractConfigProducer.java b/config-model/src/main/java/com/yahoo/config/model/producer/AbstractConfigProducer.java deleted file mode 100644 index b86230c97e6..00000000000 --- a/config-model/src/main/java/com/yahoo/config/model/producer/AbstractConfigProducer.java +++ /dev/null @@ -1,404 +0,0 @@ -// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -package com.yahoo.config.model.producer; - -import com.yahoo.api.annotations.Beta; -import com.yahoo.config.ConfigInstance; -import com.yahoo.config.model.ApplicationConfigProducerRoot; -import com.yahoo.config.model.deploy.DeployState; -import com.yahoo.config.subscription.ConfigInstanceUtil; -import com.yahoo.vespa.config.ConfigDefinitionKey; -import com.yahoo.vespa.config.ConfigPayload; -import com.yahoo.vespa.config.ConfigPayloadBuilder; -import com.yahoo.vespa.config.ConfigTransformer; -import com.yahoo.vespa.config.GenericConfig; -import com.yahoo.vespa.model.ConfigProducer; -import com.yahoo.vespa.model.HostSystem; -import com.yahoo.vespa.model.Service; -import com.yahoo.vespa.model.SimpleConfigProducer; -import com.yahoo.vespa.model.admin.Admin; -import com.yahoo.vespa.model.admin.monitoring.Monitoring; -import com.yahoo.vespa.model.utils.FreezableMap; -import java.io.PrintStream; -import java.io.Serializable; -import java.util.ArrayList; -import java.util.Collections; -import java.util.LinkedHashMap; -import java.util.List; -import java.util.Map; -import java.util.logging.Level; -import java.util.logging.Logger; - -/** - * Superclass for all config producers. - * Config producers constructs and returns config instances on request. - * - * @author gjoranv - */ -public abstract class AbstractConfigProducer> - implements ConfigProducer, ConfigInstance.Producer, Serializable { - - private static final long serialVersionUID = 1L; - public static final Logger log = Logger.getLogger(AbstractConfigProducer.class.getPackage().toString()); - private final String subId; - private String configId = null; - - private final List descendantServices = new ArrayList<>(); - - private AbstractConfigProducer parent = null; - - private UserConfigRepo userConfigs = new UserConfigRepo(); - - private final FreezableMap childrenBySubId = new FreezableMap<>(LinkedHashMap.class); - - protected static boolean stateIsHosted(DeployState deployState) { - return (deployState != null) && deployState.isHosted(); - } - - /** - * Creates a new AbstractConfigProducer with the given parent and subId. - * This constructor will add the resulting producer to the children of parent. - * - * @param parent the parent of this ConfigProducer - * @param subId the fragment of the config id for the producer - */ - public AbstractConfigProducer(AbstractConfigProducer parent, String subId) { - this(subId); - if (parent != null) { - parent.addChild(this); - } - } - - /** Removes this from the config model */ - protected void remove() { - if (parent != null) - parent.removeChild(this); - } - - protected final void setParent(AbstractConfigProducer parent) { - this.parent = parent; - computeConfigId(); - } - - public final String getSubId() { return subId; } - - /** - * Create an config producer with a configId only. Used e.g. to create root nodes, and producers - * that are given children after construction using {@link #addChild(AbstractConfigProducer)}. - * - * @param subId The sub configId. Note that this can be prefixed when calling addChild with this producer as arg. - */ - public AbstractConfigProducer(String subId) { - if (subId.indexOf('/') != -1) { - throw new IllegalArgumentException("A subId might not contain '/' : '" + subId + "'"); - } - this.subId = subId; - } - - /** - * Adds a child to this config producer. - * - * @param child the child config producer to add - */ - protected void addChild(CHILD child) { - if (child == null) { - throw new IllegalArgumentException("Trying to add null child for: " + this); - } - if (child instanceof AbstractConfigProducerRoot) { - throw new IllegalArgumentException("Child cannot be a root node: " + child); - } - - child.setParent(this); - if (childrenBySubId.get(child.getSubId()) != null) { - throw new IllegalArgumentException("Multiple services/instances of the id '" + child.getSubId() + "' under the service/instance " + - errorMsgClassName() + " '" + subId + "'. (This is commonly caused by service/node index " + - "collisions in the config.)." + - "\nExisting instance: " + childrenBySubId.get(child.getSubId()) + - "\nAttempted to add: " + child); - } - childrenBySubId.put(child.getSubId(), child); - - if (child instanceof Service) { - addDescendantService((Service)child); - } - } - - public void removeChild(CHILD child) { - if (child.getParent() != this) - throw new IllegalArgumentException("Could not remove " + child + ": Expected its parent to be " + - this + ", but was " + child.getParent()); - - if (child instanceof Service) - descendantServices.remove(child); - - childrenBySubId.remove(child.getSubId()); - child.setParent(null); - } - - /** - * Helper to provide an error message on collisions of sub ids (ignore SimpleConfigProducer, use the parent in that case) - */ - private String errorMsgClassName() { - if (getClass().equals(SimpleConfigProducer.class)) return parent.getClass().getSimpleName(); - return getClass().getSimpleName(); - } - - /** - * Sets the user configs for this producer. - * - * @param repo User configs repo. - */ - public void setUserConfigs(UserConfigRepo repo) { this.userConfigs = repo; } - - /** Returns the user configs of this */ - @Override - public UserConfigRepo getUserConfigs() { return userConfigs; } - - /** - * ConfigProducers that must have a special config id should use - * setConfigId() instead of overloading this method. This is - * because config IDs must be registered through setConfigId(). - */ - public final String getConfigId() { - if (configId == null) throw new IllegalStateException("The system topology must be frozen first."); - return configId; - } - - /** - * Sets the config id for this producer. Will also add this - * service to the root node, so the new config id will be picked - * up. Note that this producer will be known with both the old - * and the new config id in the root node after using this method. - */ - protected void addConfigId(String id) { - if (id == null) throw new NullPointerException("Config ID cannot be null."); - getRoot().addDescendant(id, this); - if (!isVespa() && (getVespa() != null)) - getVespa().addDescendant(this); - } - - /** Returns this ConfigProducer's children (only 1st level) */ - public Map getChildren() { return Collections.unmodifiableMap(childrenBySubId); } - - @Beta - public > List getChildrenByTypeRecursive(Class type) { - List validChildren = new ArrayList<>(); - - if (this.getClass().equals(type)) { - validChildren.add(type.cast(this)); - } - - Map> children = this.getChildren(); - for (AbstractConfigProducer child : children.values()) { - validChildren.addAll(child.getChildrenByTypeRecursive(type)); - } - - return Collections.unmodifiableList(validChildren); - } - - /** Returns a list of all the children of this who are instances of Service */ - public List getDescendantServices() { return Collections.unmodifiableList(descendantServices); } - - protected void addDescendantService(Service s) { descendantServices.add(s); } - - @Override - public final boolean cascadeConfig(ConfigInstance.Builder builder) { - boolean found = false; - if (parent != null) - found = parent.cascadeConfig(builder); - - boolean foundHere = builder.dispatchGetConfig(this); - log.log(Level.FINE, () -> "cascadeconfig in " + this + ", getting config " + - builder.getClass().getDeclaringClass().getName() + " for config id '" + configId + - "' found here=" + foundHere); - found = found || foundHere; - return found; - } - - @Override - public final boolean addUserConfig(ConfigInstance.Builder builder) { - boolean didApply = false; - if (parent != null) { - didApply = parent.addUserConfig(builder); - } - - log.log(Level.FINEST, () -> "User configs is: " + userConfigs.toString()); - // TODO: What do we do with md5. Currently ignored for user configs? - ConfigDefinitionKey key = new ConfigDefinitionKey(builder.getDefName(), builder.getDefNamespace()); - if (userConfigs.get(key) != null) { - log.log(Level.FINEST, () -> "Apply in " + configId); - applyUserConfig(builder, userConfigs.get(key)); - didApply = true; - } - return didApply; - } - - private void applyUserConfig(ConfigInstance.Builder builder, ConfigPayloadBuilder payloadBuilder) { - ConfigInstance.Builder override; - if (builder instanceof GenericConfig.GenericConfigBuilder) { - // Means that the builder is unknown and that we should try to apply the payload without - // the real builder - override = getGenericConfigBuilderOverride((GenericConfig.GenericConfigBuilder) builder, payloadBuilder); - } else { - override = getConfigInstanceBuilderOverride(builder, ConfigPayload.fromBuilder(payloadBuilder)); - } - ConfigInstanceUtil.setValues(builder, override); - } - - private ConfigInstance.Builder getGenericConfigBuilderOverride(GenericConfig.GenericConfigBuilder builder, ConfigPayloadBuilder payloadBuilder) { - ConfigDefinitionKey key = new ConfigDefinitionKey(builder.getDefName(), builder.getDefNamespace()); - return new GenericConfig.GenericConfigBuilder(key, payloadBuilder); - } - - private ConfigInstance.Builder getConfigInstanceBuilderOverride(ConfigInstance.Builder builder, ConfigPayload payload) { - try { - ConfigTransformer transformer = new ConfigTransformer(builder.getClass().getEnclosingClass()); - return transformer.toConfigBuilder(payload); - } catch (IllegalArgumentException e) { - throw new IllegalArgumentException("Error applying override to builder", e); - } - } - - /** Returns the one and only HostSystem of the root node. Must be overridden by root node. */ - public HostSystem hostSystem() { return getRoot().hostSystem(); } - - public AbstractConfigProducerRoot getRoot() { - return parent == null ? null : parent.getRoot(); - } - - /** - * Returns the {@link ApplicationConfigProducerRoot} that is the parent of this sub-tree, or null - * if this sub-tree has no Vespa parent. - */ - private ApplicationConfigProducerRoot getVespa() { - if (isRoot()) return null; - return isVespa() ? (ApplicationConfigProducerRoot)this : parent.getVespa(); - } - - private boolean isRoot() { - return parent == null; - } - - private boolean isVespa() { - return ((this instanceof ApplicationConfigProducerRoot) && parent.isRoot()); - } - - public AbstractConfigProducer getParent() { return parent; } - - public void dump(PrintStream out) { - for (ConfigProducer c : getChildren().values()) { - out.println("id: " + c.getConfigId()); - if (c.getChildren().size() > 0) { - c.dump(out); - } - } - } - - void setupConfigId(String parentConfigId) { - if (this instanceof AbstractConfigProducerRoot) { - configId = ""; - } else { - configId = parentConfigId + subId; - addConfigId(configId); - } - computeConfigId(); - setupChildConfigIds(getConfigIdPrefix()); - } - - private String getConfigIdPrefix() { - if (this instanceof AbstractConfigProducerRoot || this instanceof ApplicationConfigProducerRoot) { - return ""; - } - if (configId == null) return null; - return configId + "/"; - } - - private void computeConfigId() { - if (parent == null) return; - String parentConfigId = parent.getConfigIdPrefix(); - if (parentConfigId == null) return; - String oldConfigId = configId; - if (this instanceof AbstractConfigProducerRoot) { - configId = ""; - } else { - configId = parentConfigId + subId; - } - if (oldConfigId == null) return; - if (!configId.equals(oldConfigId)) { - throw new IllegalArgumentException("configId cannot change "+oldConfigId+" -> "+configId+" (invalid topology change)"); - } - } - - private static ClassLoader findInheritedClassLoader(Class clazz, String producerName) { - Class[] interfazes = clazz.getInterfaces(); - for (Class interfaze : interfazes) { - if (producerName.equals(interfaze.getName())) { - return interfaze.getClassLoader(); - } - } - if (clazz.getSuperclass() == null) - return null; - return findInheritedClassLoader(clazz.getSuperclass(), producerName); - } - - protected ClassLoader getConfigClassLoader(String producerName) { - ClassLoader classLoader = findInheritedClassLoader(getClass(), producerName); - if (classLoader != null) - return classLoader; - - // TODO: Make logic correct, so that the deepest child will be the one winning. - for (AbstractConfigProducer child : childrenBySubId.values()) { - ClassLoader loader = child.getConfigClassLoader(producerName); - if (loader != null) { - return loader; - } - } - return null; - } - - private void setupChildConfigIds(String currentConfigId) { - for (AbstractConfigProducer child : childrenBySubId.values()) { - child.setupConfigId(currentConfigId); - } - } - - void aggregateDescendantServices() { - for (AbstractConfigProducer child : childrenBySubId.values()) { - child.aggregateDescendantServices(); - descendantServices.addAll(child.descendantServices); - } - } - - void freeze() { - childrenBySubId.freeze(); - for (AbstractConfigProducer child : childrenBySubId.values()) { - child.freeze(); - } - } - - public void mergeUserConfigs(UserConfigRepo newRepo) { - userConfigs.merge(newRepo); - } - - @Override - public void validate() throws Exception { - assert (childrenBySubId.isFrozen()); - - for (AbstractConfigProducer child : childrenBySubId.values()) { - child.validate(); - } - } - - // TODO: Make producers depend on AdminModel instead - /** Returns a monitoring service if configured, null otherwise */ - protected Monitoring getMonitoringService() { - AbstractConfigProducerRoot root = getRoot(); - Admin admin = (root == null? null : root.getAdmin()); - if (admin == null) { - return null; - } - if (admin.getMonitoring() != null) { - return admin.getMonitoring(); - } - return null; - } -} 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 d6c03a0f668..6dd94028e9c 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 AbstractConfigProducer> +public abstract class AbstractConfigProducerRoot extends TreeConfigProducer> implements ConfigProducerRoot { /** The ConfigProducers contained in this model indexed by config id */ diff --git a/config-model/src/main/java/com/yahoo/config/model/producer/AnyConfigProducer.java b/config-model/src/main/java/com/yahoo/config/model/producer/AnyConfigProducer.java new file mode 100644 index 00000000000..2cfe1590ad9 --- /dev/null +++ b/config-model/src/main/java/com/yahoo/config/model/producer/AnyConfigProducer.java @@ -0,0 +1,297 @@ +// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. +package com.yahoo.config.model.producer; + +import com.yahoo.api.annotations.Beta; +import com.yahoo.config.ConfigInstance; +import com.yahoo.config.model.ApplicationConfigProducerRoot; +import com.yahoo.config.model.deploy.DeployState; +import com.yahoo.config.subscription.ConfigInstanceUtil; +import com.yahoo.vespa.config.ConfigDefinitionKey; +import com.yahoo.vespa.config.ConfigPayload; +import com.yahoo.vespa.config.ConfigPayloadBuilder; +import com.yahoo.vespa.config.ConfigTransformer; +import com.yahoo.vespa.config.GenericConfig; +import com.yahoo.vespa.model.ConfigProducer; +import com.yahoo.vespa.model.HostSystem; +import com.yahoo.vespa.model.Service; +import com.yahoo.vespa.model.SimpleConfigProducer; +import com.yahoo.vespa.model.admin.Admin; +import com.yahoo.vespa.model.admin.monitoring.Monitoring; +import com.yahoo.vespa.model.utils.FreezableMap; +import java.io.PrintStream; +import java.io.Serializable; +import java.util.ArrayList; +import java.util.Collections; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; +import java.util.logging.Level; +import java.util.logging.Logger; + +/** + * Superclass for all config producers. + * Config producers constructs and returns config instances on request. + * + * @author gjoranv + */ +public abstract class AnyConfigProducer + implements ConfigProducer, ConfigInstance.Producer, Serializable { + + private static final long serialVersionUID = 1L; + public static final Logger log = Logger.getLogger(AnyConfigProducer.class.getPackage().toString()); + private final String subId; + private String configId = null; + + private final List descendantServices = new ArrayList<>(); + + private TreeConfigProducer parent = null; + + private UserConfigRepo userConfigs = new UserConfigRepo(); + + protected static boolean stateIsHosted(DeployState deployState) { + return (deployState != null) && deployState.isHosted(); + } + + /** + * Creates a new AnyConfigProducer with the given parent and subId. + * This constructor will add the resulting producer to the children of parent. + * + * @param parent the parent of this ConfigProducer + * @param subId the fragment of the config id for the producer + */ + public AnyConfigProducer(TreeConfigProducer parent, String subId) { + this(subId); + if (parent != null) { + parent.addChild(this); + } + } + + /** Removes this from the config model */ + protected void remove() { + if (parent != null) + parent.removeChild(this); + } + + protected final void setParent(TreeConfigProducer parent) { + this.parent = parent; + computeConfigId(); + } + + public final String getSubId() { return subId; } + + /** + * Create an config producer with a configId only. Used e.g. to create root nodes, and producers + * that are given parents after construction using {@link TreeConfigProducer#addChild(AnyConfigProducer)}. + * + * @param subId The sub configId. Note that this can be prefixed when calling addChild with this producer as arg. + */ + public AnyConfigProducer(String subId) { + if (subId.indexOf('/') != -1) { + throw new IllegalArgumentException("A subId might not contain '/' : '" + subId + "'"); + } + this.subId = subId; + } + + /** + * Helper to provide an error message on collisions of sub ids (ignore SimpleConfigProducer, use the parent in that case) + */ + protected String errorMsgClassName() { + if (getClass().equals(SimpleConfigProducer.class)) return parent.getClass().getSimpleName(); + return getClass().getSimpleName(); + } + + /** + * Sets the user configs for this producer. + * + * @param repo User configs repo. + */ + public void setUserConfigs(UserConfigRepo repo) { this.userConfigs = repo; } + + /** Returns the user configs of this */ + @Override + public UserConfigRepo getUserConfigs() { return userConfigs; } + + /** + * ConfigProducers that must have a special config id should use + * setConfigId() instead of overloading this method. This is + * because config IDs must be registered through setConfigId(). + */ + public final String getConfigId() { + if (configId == null) throw new IllegalStateException("The system topology must be frozen first."); + return configId; + } + + protected final String currentConfigId() { + return configId; + } + + /** + * Sets the config id for this producer. Will also add this + * service to the root node, so the new config id will be picked + * up. Note that this producer will be known with both the old + * and the new config id in the root node after using this method. + */ + protected void addConfigId(String id) { + if (id == null) throw new NullPointerException("Config ID cannot be null."); + getRoot().addDescendant(id, this); + if (!isVespa() && (getVespa() != null)) + getVespa().addDescendant(this); + } + + @Override + public final boolean cascadeConfig(ConfigInstance.Builder builder) { + boolean found = false; + if (parent != null) + found = parent.cascadeConfig(builder); + + boolean foundHere = builder.dispatchGetConfig(this); + log.log(Level.FINE, () -> "cascadeconfig in " + this + ", getting config " + + builder.getClass().getDeclaringClass().getName() + " for config id '" + configId + + "' found here=" + foundHere); + found = found || foundHere; + return found; + } + + @Override + public final boolean addUserConfig(ConfigInstance.Builder builder) { + boolean didApply = false; + if (parent != null) { + didApply = parent.addUserConfig(builder); + } + + log.log(Level.FINEST, () -> "User configs is: " + userConfigs.toString()); + // TODO: What do we do with md5. Currently ignored for user configs? + ConfigDefinitionKey key = new ConfigDefinitionKey(builder.getDefName(), builder.getDefNamespace()); + if (userConfigs.get(key) != null) { + log.log(Level.FINEST, () -> "Apply in " + configId); + applyUserConfig(builder, userConfigs.get(key)); + didApply = true; + } + return didApply; + } + + private void applyUserConfig(ConfigInstance.Builder builder, ConfigPayloadBuilder payloadBuilder) { + ConfigInstance.Builder override; + if (builder instanceof GenericConfig.GenericConfigBuilder) { + // Means that the builder is unknown and that we should try to apply the payload without + // the real builder + override = getGenericConfigBuilderOverride((GenericConfig.GenericConfigBuilder) builder, payloadBuilder); + } else { + override = getConfigInstanceBuilderOverride(builder, ConfigPayload.fromBuilder(payloadBuilder)); + } + ConfigInstanceUtil.setValues(builder, override); + } + + private ConfigInstance.Builder getGenericConfigBuilderOverride(GenericConfig.GenericConfigBuilder builder, ConfigPayloadBuilder payloadBuilder) { + ConfigDefinitionKey key = new ConfigDefinitionKey(builder.getDefName(), builder.getDefNamespace()); + return new GenericConfig.GenericConfigBuilder(key, payloadBuilder); + } + + private ConfigInstance.Builder getConfigInstanceBuilderOverride(ConfigInstance.Builder builder, ConfigPayload payload) { + try { + ConfigTransformer transformer = new ConfigTransformer(builder.getClass().getEnclosingClass()); + return transformer.toConfigBuilder(payload); + } catch (IllegalArgumentException e) { + throw new IllegalArgumentException("Error applying override to builder", e); + } + } + + /** Returns the one and only HostSystem of the root node. Must be overridden by root node. */ + public HostSystem hostSystem() { return getRoot().hostSystem(); } + + public AbstractConfigProducerRoot getRoot() { + return parent == null ? null : parent.getRoot(); + } + + /** + * Returns the {@link ApplicationConfigProducerRoot} that is the parent of this sub-tree, or null + * if this sub-tree has no Vespa parent. + */ + private ApplicationConfigProducerRoot getVespa() { + if (isRoot()) return null; + if (isVespa()) { + return (ApplicationConfigProducerRoot)this; + } else { + return getParent().getVespa(); + } + } + + private boolean isRoot() { + return parent == null; + } + + private boolean isVespa() { + return ((this instanceof ApplicationConfigProducerRoot) && getParent().isRoot()); + } + + public AnyConfigProducer getParent() { return parent; } + + void setupConfigId(String parentConfigId) { + if (this instanceof AbstractConfigProducerRoot) { + configId = ""; + } else { + configId = parentConfigId + subId; + addConfigId(configId); + } + computeConfigId(); + } + + private void computeConfigId() { + if (parent == null) return; + String parentConfigId = parent.getConfigIdPrefix(); + if (parentConfigId == null) return; + String oldConfigId = configId; + if (this instanceof AbstractConfigProducerRoot) { + configId = ""; + } else { + configId = parentConfigId + subId; + } + if (oldConfigId == null) return; + if (!configId.equals(oldConfigId)) { + throw new IllegalArgumentException("configId cannot change "+oldConfigId+" -> "+configId+" (invalid topology change)"); + } + } + + protected static ClassLoader findInheritedClassLoader(Class clazz, String producerName) { + Class[] interfazes = clazz.getInterfaces(); + for (Class interfaze : interfazes) { + if (producerName.equals(interfaze.getName())) { + return interfaze.getClassLoader(); + } + } + if (clazz.getSuperclass() == null) + return null; + return findInheritedClassLoader(clazz.getSuperclass(), producerName); + } + + protected ClassLoader getConfigClassLoader(String producerName) { + return findInheritedClassLoader(getClass(), producerName); + } + + public void mergeUserConfigs(UserConfigRepo newRepo) { + userConfigs.merge(newRepo); + } + + // TODO: Make producers depend on AdminModel instead + /** Returns a monitoring service if configured, null otherwise */ + protected Monitoring getMonitoringService() { + AbstractConfigProducerRoot root = getRoot(); + Admin admin = (root == null? null : root.getAdmin()); + if (admin == null) { + return null; + } + if (admin.getMonitoring() != null) { + return admin.getMonitoring(); + } + return null; + } + + // NOPs for all config producers without children; overridden in TreeConfigProducer + void aggregateDescendantServices() { } + public List getDescendantServices() { return List.of(); } + List getChildrenByTypeRecursive(Class type) { return List.of(); } + void freeze() { } + @Override + public void validate() throws Exception { } + +} diff --git a/config-model/src/main/java/com/yahoo/config/model/producer/TreeConfigProducer.java b/config-model/src/main/java/com/yahoo/config/model/producer/TreeConfigProducer.java new file mode 100644 index 00000000000..6b632572250 --- /dev/null +++ b/config-model/src/main/java/com/yahoo/config/model/producer/TreeConfigProducer.java @@ -0,0 +1,199 @@ +// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. +package com.yahoo.config.model.producer; + +import com.yahoo.api.annotations.Beta; +import com.yahoo.config.ConfigInstance; +import com.yahoo.config.model.ApplicationConfigProducerRoot; +import com.yahoo.config.model.deploy.DeployState; +import com.yahoo.config.subscription.ConfigInstanceUtil; +import com.yahoo.vespa.config.ConfigDefinitionKey; +import com.yahoo.vespa.config.ConfigPayload; +import com.yahoo.vespa.config.ConfigPayloadBuilder; +import com.yahoo.vespa.config.ConfigTransformer; +import com.yahoo.vespa.config.GenericConfig; +import com.yahoo.vespa.model.ConfigProducer; +import com.yahoo.vespa.model.HostSystem; +import com.yahoo.vespa.model.Service; +import com.yahoo.vespa.model.SimpleConfigProducer; +import com.yahoo.vespa.model.admin.Admin; +import com.yahoo.vespa.model.admin.monitoring.Monitoring; +import com.yahoo.vespa.model.utils.FreezableMap; +import java.io.PrintStream; +import java.io.Serializable; +import java.util.ArrayList; +import java.util.Collections; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; +import java.util.logging.Level; +import java.util.logging.Logger; + +/** + * Superclass for all config producers with children. + * Config producers constructs and returns config instances on request. + * + * @author gjoranv + */ +public abstract class TreeConfigProducer + extends AnyConfigProducer +{ + private static final long serialVersionUID = 1L; + private final List descendantServices = new ArrayList<>(); + private final FreezableMap childrenBySubId = new FreezableMap<>(LinkedHashMap.class); + + /** + * Creates a new TreeConfigProducer with the given parent and subId. + * This constructor will add the resulting producer to the children of parent. + * + * @param parent the parent of this ConfigProducer + * @param subId the fragment of the config id for the producer + */ + public TreeConfigProducer(TreeConfigProducer parent, String subId) { + super(parent, subId); + } + + /** + * Create an config producer with a configId only. Used e.g. to create root nodes, and producers + * that are given children after construction using {@link #addChild(AnyConfigProducer)}. + * + * @param subId The sub configId. Note that this can be prefixed when calling addChild with this producer as arg. + */ + public TreeConfigProducer(String subId) { + super(subId); + } + + /** + * Adds a child to this config producer. + * + * @param child the child config producer to add + */ + protected void addChild(CHILD child) { + if (child == null) { + throw new IllegalArgumentException("Trying to add null child for: " + this); + } + if (child instanceof AbstractConfigProducerRoot) { + throw new IllegalArgumentException("Child cannot be a root node: " + child); + } + + child.setParent(this); + if (childrenBySubId.get(child.getSubId()) != null) { + throw new IllegalArgumentException("Multiple services/instances of the id '" + child.getSubId() + "' under the service/instance " + + errorMsgClassName() + " '" + getSubId() + "'. (This is commonly caused by service/node index " + + "collisions in the config.)." + + "\nExisting instance: " + childrenBySubId.get(child.getSubId()) + + "\nAttempted to add: " + child); + } + childrenBySubId.put(child.getSubId(), child); + + if (child instanceof Service) { + addDescendantService((Service)child); + } + } + + public void removeChild(CHILD child) { + if (child.getParent() != this) + throw new IllegalArgumentException("Could not remove " + child + ": Expected its parent to be " + + this + ", but was " + child.getParent()); + + if (child instanceof Service) + descendantServices.remove(child); + + childrenBySubId.remove(child.getSubId()); + child.setParent(null); + } + + /** Returns this ConfigProducer's children (only 1st level) */ + public Map getChildren() { return Collections.unmodifiableMap(childrenBySubId); } + + @Beta + public List getChildrenByTypeRecursive(Class type) { + List validChildren = new ArrayList<>(); + + if (this.getClass().equals(type)) { + validChildren.add(type.cast(this)); + } + + Map children = this.getChildren(); + for (CHILD child : children.values()) { + validChildren.addAll(child.getChildrenByTypeRecursive(type)); + } + + return Collections.unmodifiableList(validChildren); + } + + /** Returns a list of all the children of this who are instances of Service */ + public List getDescendantServices() { return Collections.unmodifiableList(descendantServices); } + + protected void addDescendantService(Service s) { descendantServices.add(s); } + + public void dump(PrintStream out) { + for (ConfigProducer c : getChildren().values()) { + out.println("id: " + c.getConfigId()); + if (c.getChildren().size() > 0) { + c.dump(out); + } + } + } + + void setupConfigId(String parentConfigId) { + super.setupConfigId(parentConfigId); + setupChildConfigIds(getConfigIdPrefix()); + } + + String getConfigIdPrefix() { + if (this instanceof AbstractConfigProducerRoot || this instanceof ApplicationConfigProducerRoot) { + return ""; + } + if (currentConfigId() == null) { + return null; + } + return getConfigId() + "/"; + } + + @Override + protected ClassLoader getConfigClassLoader(String producerName) { + ClassLoader classLoader = findInheritedClassLoader(getClass(), producerName); + if (classLoader != null) + return classLoader; + + // TODO: Make logic correct, so that the deepest child will be the one winning. + for (AnyConfigProducer child : childrenBySubId.values()) { + ClassLoader loader = child.getConfigClassLoader(producerName); + if (loader != null) { + return loader; + } + } + return null; + } + + private void setupChildConfigIds(String currentConfigId) { + for (AnyConfigProducer child : childrenBySubId.values()) { + child.setupConfigId(currentConfigId); + } + } + + @Override + void aggregateDescendantServices() { + for (CHILD child : childrenBySubId.values()) { + child.aggregateDescendantServices(); + descendantServices.addAll(child.getDescendantServices()); + } + } + + @Override + void freeze() { + childrenBySubId.freeze(); + for (CHILD child : childrenBySubId.values()) { + child.freeze(); + } + } + + @Override + public void validate() throws Exception { + assert (childrenBySubId.isFrozen()); + for (CHILD child : childrenBySubId.values()) { + child.validate(); + } + } + +} diff --git a/config-model/src/main/java/com/yahoo/config/model/producer/UserConfigRepo.java b/config-model/src/main/java/com/yahoo/config/model/producer/UserConfigRepo.java index afa3e2de85f..3d7eafe658f 100644 --- a/config-model/src/main/java/com/yahoo/config/model/producer/UserConfigRepo.java +++ b/config-model/src/main/java/com/yahoo/config/model/producer/UserConfigRepo.java @@ -28,7 +28,7 @@ public class UserConfigRepo { } /** - * Must copy the builder, because the merge method on {@link AbstractConfigProducer} might override the row's builders otherwise + * Must copy the builder, because the merge method on {@link TreeConfigProducer} might override the row's builders otherwise */ private Map copyBuilders(Map source) { Map ret = new LinkedHashMap<>(); 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 80dca3776ae..f1113ee2d00 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 @@ -6,7 +6,8 @@ import com.yahoo.config.application.api.ApplicationPackage; 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.AbstractConfigProducer; +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.model.ConfigProducer; import com.yahoo.vespa.model.HostSystem; @@ -95,7 +96,7 @@ public class MockRoot extends AbstractConfigProducerRoot { public HostSystem hostSystem() { return hostSystem; } - public void addDescendant(String configId, AbstractConfigProducer descendant) { + public void addDescendant(String configId, AnyConfigProducer descendant) { if (id2producer.containsKey(configId)) { throw new RuntimeException ("Config ID '" + configId + "' cannot be reserved by an instance of class '" + @@ -106,7 +107,7 @@ public class MockRoot extends AbstractConfigProducerRoot { } @Override - public void addChild(AbstractConfigProducer abstractConfigProducer) { + public void addChild(TreeConfigProducer 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 d50f0336baf..0041d3fa44c 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,7 +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.AbstractConfigProducer; +import com.yahoo.config.model.producer.TreeConfigProducer; import com.yahoo.vespa.defaults.Defaults; import java.util.Collection; @@ -27,7 +27,7 @@ import static com.yahoo.text.Lowercase.toLowerCase; * * @author gjoranv */ -public abstract class AbstractService extends AbstractConfigProducer> implements Service { +public abstract class AbstractService extends TreeConfigProducer> implements Service { // The physical host this Service runs on. private HostResource hostResource = null; @@ -78,13 +78,13 @@ public abstract class AbstractService extends AbstractConfigProducer parent, String name) { + public AbstractService(TreeConfigProducer parent, String name) { super(parent, name); environmentVariables.put("VESPA_SILENCE_CORE_ON_OOM", true); } 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 799bee546c9..f9d93f97fa1 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,7 +2,7 @@ package com.yahoo.vespa.model; import com.yahoo.config.model.ApplicationConfigProducerRoot; -import com.yahoo.config.model.producer.AbstractConfigProducer; +import com.yahoo.config.model.producer.TreeConfigProducer; /** * This is a placeholder config producer that makes global configuration available through a single identifier. This @@ -10,7 +10,7 @@ import com.yahoo.config.model.producer.AbstractConfigProducer; * * @author Simon Thoresen Hult */ -public class Client extends AbstractConfigProducer { +public class Client extends TreeConfigProducer { /** * Constructs a client config producer that is added as a child to @@ -18,7 +18,7 @@ public class Client extends AbstractConfigProducer { * * @param parent The parent config producer. */ - public Client(AbstractConfigProducer parent) { + public Client(TreeConfigProducer parent) { super(parent, "client"); } diff --git a/config-model/src/main/java/com/yahoo/vespa/model/ConfigProducerRoot.java b/config-model/src/main/java/com/yahoo/vespa/model/ConfigProducerRoot.java index 8c4b7fa23aa..95ffd99a69e 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/ConfigProducerRoot.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/ConfigProducerRoot.java @@ -2,7 +2,8 @@ package com.yahoo.vespa.model; import com.yahoo.config.ConfigInstance; -import com.yahoo.config.model.producer.AbstractConfigProducer; +import com.yahoo.config.model.producer.AnyConfigProducer; +import com.yahoo.config.model.producer.TreeConfigProducer; import com.yahoo.vespa.model.admin.Admin; import java.util.Set; @@ -21,7 +22,7 @@ public interface ConfigProducerRoot extends ConfigProducer { * @param id string id of descendant * @param descendant the producer to add to this root node */ - void addDescendant(String id, AbstractConfigProducer descendant); + void addDescendant(String id, AnyConfigProducer descendant); /** * @return an unmodifiable copy of the set of configIds in this root. 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 1629e580faa..4bf50f98550 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 @@ -2,7 +2,7 @@ package com.yahoo.vespa.model; import com.yahoo.cloud.config.SentinelConfig; -import com.yahoo.config.model.producer.AbstractConfigProducer; +import com.yahoo.config.model.producer.TreeConfigProducer; import java.util.Objects; @@ -12,7 +12,7 @@ import java.util.Objects; * * @author gjoranv */ -public final class Host extends AbstractConfigProducer> implements SentinelConfig.Producer, Comparable { +public final class Host extends TreeConfigProducer> implements SentinelConfig.Producer, Comparable { private ConfigSentinel configSentinel = null; private final String hostname; @@ -21,14 +21,14 @@ public final class Host extends AbstractConfigProducer /** * Constructs a new Host instance. * - * @param parent parent AbstractConfigProducer in the config model. + * @param parent parent TreeConfigProducer in the config model. * @param hostname hostname for this host. */ - public Host(AbstractConfigProducer parent, String hostname) { + public Host(TreeConfigProducer parent, String hostname) { this(parent, hostname, false); } - private Host(AbstractConfigProducer parent, String hostname, boolean runsConfigServer) { + private Host(TreeConfigProducer parent, String hostname, boolean runsConfigServer) { super(parent, hostname); Objects.requireNonNull(hostname, "The host name of a host cannot be null"); this.runsConfigServer = runsConfigServer; diff --git a/config-model/src/main/java/com/yahoo/vespa/model/HostSystem.java b/config-model/src/main/java/com/yahoo/vespa/model/HostSystem.java index 25ad61528a5..a848586cccb 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/HostSystem.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/HostSystem.java @@ -3,7 +3,7 @@ package com.yahoo.vespa.model; import com.yahoo.config.application.api.DeployLogger; import com.yahoo.config.model.api.HostProvisioner; -import com.yahoo.config.model.producer.AbstractConfigProducer; +import com.yahoo.config.model.producer.TreeConfigProducer; import com.yahoo.config.provision.Capacity; import com.yahoo.config.provision.ClusterMembership; import com.yahoo.config.provision.ClusterSpec; @@ -29,7 +29,7 @@ import static java.util.logging.Level.FINE; * * @author gjoranv */ -public class HostSystem extends AbstractConfigProducer { +public class HostSystem extends TreeConfigProducer { private static final Logger log = Logger.getLogger(HostSystem.class.getName()); private static final boolean doCheckIp; @@ -45,7 +45,7 @@ public class HostSystem extends AbstractConfigProducer { doCheckIp = ! checkIpProperty.equalsIgnoreCase("false"); } - public HostSystem(AbstractConfigProducer parent, String name, HostProvisioner provisioner, DeployLogger deployLogger, boolean isHosted) { + public HostSystem(TreeConfigProducer parent, String name, HostProvisioner provisioner, DeployLogger deployLogger, boolean isHosted) { super(parent, name); this.provisioner = provisioner; this.deployLogger = deployLogger; 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 5230af02868..bea9bb8edcc 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,14 +1,14 @@ // 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.AbstractConfigProducer; +import com.yahoo.config.model.producer.TreeConfigProducer; /** * Some configuration level with no special handling of its own. * * @author arnej27959 */ -public final class SimpleConfigProducer> extends AbstractConfigProducer { +public final class SimpleConfigProducer> extends TreeConfigProducer { private static final long serialVersionUID = 1L; @@ -18,7 +18,7 @@ public final class SimpleConfigProducer> ext * @param parent parent ConfigProducer. * @param configId name of this instance */ - public SimpleConfigProducer(AbstractConfigProducer parent, String configId) { + public SimpleConfigProducer(TreeConfigProducer parent, String configId) { super(parent, configId); } diff --git a/config-model/src/main/java/com/yahoo/vespa/model/VespaModel.java b/config-model/src/main/java/com/yahoo/vespa/model/VespaModel.java index 69aacb75fb9..4e40bd768bf 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/VespaModel.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/VespaModel.java @@ -23,7 +23,8 @@ import com.yahoo.config.model.api.HostInfo; import com.yahoo.config.model.api.Model; import com.yahoo.config.model.api.Provisioned; import com.yahoo.config.model.deploy.DeployState; -import com.yahoo.config.model.producer.AbstractConfigProducer; +import com.yahoo.config.model.producer.AnyConfigProducer; +import com.yahoo.config.model.producer.TreeConfigProducer; import com.yahoo.config.model.producer.AbstractConfigProducerRoot; import com.yahoo.config.model.producer.UserConfigRepo; import com.yahoo.config.provision.AllocatedHosts; @@ -591,7 +592,7 @@ public final class VespaModel extends AbstractConfigProducerRoot implements Mode * @param configId the id to register with, not necessarily equal to descendant.getConfigId(). * @param descendant The configProducer descendant to add */ - public void addDescendant(String configId, AbstractConfigProducer descendant) { + public void addDescendant(String configId, AnyConfigProducer descendant) { if (id2producer.containsKey(configId)) { throw new RuntimeException ("Config ID '" + configId + "' cannot be reserved by an instance of class '" + 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 67a5b27533d..0dc51411532 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,7 +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.AbstractConfigProducer; +import com.yahoo.config.model.producer.TreeConfigProducer; import com.yahoo.config.provision.ClusterSpec; import com.yahoo.vespa.model.AbstractService; import com.yahoo.vespa.model.ConfigProxy; @@ -38,7 +38,7 @@ import static com.yahoo.vespa.model.admin.monitoring.MetricSet.empty; * * @author gjoranv */ -public class Admin extends AbstractConfigProducer implements Serializable { +public class Admin extends TreeConfigProducer implements Serializable { private static final long serialVersionUID = 1L; @@ -87,7 +87,7 @@ public class Admin extends AbstractConfigProducer implements Serializable private final FileDistributionConfigProducer fileDistribution; private final boolean multitenant; - public Admin(AbstractConfigProducer parent, + public Admin(TreeConfigProducer parent, Monitoring monitoring, Metrics metrics, boolean multitenant, 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 4b59a8feb98..5c2f18a4303 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 @@ -1,7 +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.admin; -import com.yahoo.config.model.producer.AbstractConfigProducer; +import com.yahoo.config.model.producer.TreeConfigProducer; import com.yahoo.vespa.model.AbstractService; import com.yahoo.vespa.model.PortAllocBridge; @@ -23,7 +23,7 @@ public class Configserver extends AbstractService { private final int rpcPort; - public Configserver(AbstractConfigProducer parent, String name, int rpcPort) { + public Configserver(TreeConfigProducer 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 5fc0efb4044..d68241c4e1f 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 @@ -2,7 +2,7 @@ package com.yahoo.vespa.model.admin; import com.yahoo.cloud.config.LogforwarderConfig; -import com.yahoo.config.model.producer.AbstractConfigProducer; +import com.yahoo.config.model.producer.TreeConfigProducer; import com.yahoo.vespa.model.AbstractService; import com.yahoo.vespa.model.PortAllocBridge; import java.util.Optional; @@ -41,7 +41,7 @@ public class LogForwarder extends AbstractService implements LogforwarderConfig. * Creates a new LogForwarder instance. */ // TODO: Use proper types? - public LogForwarder(AbstractConfigProducer parent, Config config) { + public LogForwarder(TreeConfigProducer 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 73447eea4a1..a45ce37c7b7 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 @@ -2,7 +2,7 @@ package com.yahoo.vespa.model.admin; import com.yahoo.config.model.deploy.DeployState; -import com.yahoo.config.model.producer.AbstractConfigProducer; +import com.yahoo.config.model.producer.TreeConfigProducer; import com.yahoo.vespa.model.AbstractService; import com.yahoo.vespa.model.PortAllocBridge; import java.util.Optional; @@ -19,7 +19,7 @@ public class Logserver extends AbstractService { private static final String logArchiveDir = "$ROOT/logs/vespa/logarchive"; private String compressionType = "gzip"; - public Logserver(AbstractConfigProducer parent) { + public Logserver(TreeConfigProducer 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/LogserverContainer.java b/config-model/src/main/java/com/yahoo/vespa/model/admin/LogserverContainer.java index a0fa0d9e7a4..e61b1e9119a 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/admin/LogserverContainer.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/admin/LogserverContainer.java @@ -4,7 +4,7 @@ package com.yahoo.vespa.model.admin; import com.yahoo.config.model.api.ModelContext; import com.yahoo.config.model.api.container.ContainerServiceType; import com.yahoo.config.model.deploy.DeployState; -import com.yahoo.config.model.producer.AbstractConfigProducer; +import com.yahoo.config.model.producer.TreeConfigProducer; import com.yahoo.config.provision.ClusterSpec; import com.yahoo.vespa.model.container.Container; import com.yahoo.vespa.model.container.component.AccessLogComponent; @@ -17,7 +17,7 @@ import java.util.Optional; */ public class LogserverContainer extends Container { - public LogserverContainer(AbstractConfigProducer parent, DeployState deployState) { + public LogserverContainer(TreeConfigProducer parent, DeployState deployState) { super(parent, "" + 0, 0, deployState); if (deployState.isHosted() && deployState.getProperties().applicationId().instance().isTester()) useDynamicPorts(); LogserverContainerCluster cluster = (LogserverContainerCluster) parent; diff --git a/config-model/src/main/java/com/yahoo/vespa/model/admin/LogserverContainerCluster.java b/config-model/src/main/java/com/yahoo/vespa/model/admin/LogserverContainerCluster.java index e9b6480f60d..e50c010c476 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/admin/LogserverContainerCluster.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/admin/LogserverContainerCluster.java @@ -2,7 +2,7 @@ package com.yahoo.vespa.model.admin; import com.yahoo.config.model.deploy.DeployState; -import com.yahoo.config.model.producer.AbstractConfigProducer; +import com.yahoo.config.model.producer.TreeConfigProducer; import com.yahoo.config.provision.ClusterSpec; import com.yahoo.search.config.QrStartConfig; import com.yahoo.vespa.model.container.ContainerCluster; @@ -16,7 +16,7 @@ import java.util.Optional; */ public class LogserverContainerCluster extends ContainerCluster { - public LogserverContainerCluster(AbstractConfigProducer parent, String name, DeployState deployState) { + public LogserverContainerCluster(TreeConfigProducer parent, String name, DeployState deployState) { super(parent, name, name, deployState, true); addDefaultHandlersWithVip(); 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 8c4d2ab7455..be75a25eff8 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,7 +2,7 @@ package com.yahoo.vespa.model.admin; import com.yahoo.config.model.ApplicationConfigProducerRoot; -import com.yahoo.config.model.producer.AbstractConfigProducer; +import com.yahoo.config.model.producer.TreeConfigProducer; /** * A config provider for the model config. The ModelConfig is a common config and produced by {@link ApplicationConfigProducerRoot} , this config @@ -11,9 +11,9 @@ import com.yahoo.config.model.producer.AbstractConfigProducer; * @author gjoranv * @since 5.0.8 */ -public class ModelConfigProvider extends AbstractConfigProducer { +public class ModelConfigProvider extends TreeConfigProducer { - public ModelConfigProvider(AbstractConfigProducer parent) { + public ModelConfigProvider(TreeConfigProducer parent) { super(parent, "model"); } } diff --git a/config-model/src/main/java/com/yahoo/vespa/model/admin/Slobrok.java b/config-model/src/main/java/com/yahoo/vespa/model/admin/Slobrok.java index 5567fc330d6..9e93d4d441f 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/admin/Slobrok.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/admin/Slobrok.java @@ -2,7 +2,7 @@ package com.yahoo.vespa.model.admin; import com.yahoo.config.model.api.ModelContext; -import com.yahoo.config.model.producer.AbstractConfigProducer; +import com.yahoo.config.model.producer.TreeConfigProducer; import com.yahoo.vespa.config.core.StateserverConfig; import com.yahoo.vespa.model.AbstractService; import com.yahoo.vespa.model.PortAllocBridge; @@ -28,7 +28,7 @@ public class Slobrok extends AbstractService implements StateserverConfig.Produc * @param parent the parent ConfigProducer. * @param index unique index for all slobroks */ - public Slobrok(AbstractConfigProducer parent, int index, + public Slobrok(TreeConfigProducer parent, int index, ModelContext.FeatureFlags featureFlags) { super(parent, "slobrok." + index); diff --git a/config-model/src/main/java/com/yahoo/vespa/model/admin/clustercontroller/ClusterControllerCluster.java b/config-model/src/main/java/com/yahoo/vespa/model/admin/clustercontroller/ClusterControllerCluster.java index 88acf6cafb8..53a1a48f5a1 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/admin/clustercontroller/ClusterControllerCluster.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/admin/clustercontroller/ClusterControllerCluster.java @@ -6,7 +6,7 @@ import com.yahoo.cloud.config.ZookeeperServerConfig; import com.yahoo.cloud.config.ZookeepersConfig; import com.yahoo.config.model.api.Model; import com.yahoo.config.model.deploy.DeployState; -import com.yahoo.config.model.producer.AbstractConfigProducer; +import com.yahoo.config.model.producer.TreeConfigProducer; import com.yahoo.config.provision.AllocatedHosts; import com.yahoo.config.provision.HostSpec; import com.yahoo.vespa.model.Service; @@ -27,7 +27,7 @@ import java.util.stream.Collectors; * * @author Ulf Lilleengen */ -public class ClusterControllerCluster extends AbstractConfigProducer implements +public class ClusterControllerCluster extends TreeConfigProducer implements ZookeeperServerConfig.Producer, ZookeepersConfig.Producer { @@ -35,7 +35,7 @@ public class ClusterControllerCluster extends AbstractConfigProducer previousHosts; - public ClusterControllerCluster(AbstractConfigProducer parent, String subId, DeployState deployState) { + public ClusterControllerCluster(TreeConfigProducer parent, String subId, DeployState deployState) { super(parent, subId); this.previousHosts = Collections.unmodifiableSet(deployState.getPreviousModel().stream() .map(Model::allocatedHosts) diff --git a/config-model/src/main/java/com/yahoo/vespa/model/admin/clustercontroller/ClusterControllerContainer.java b/config-model/src/main/java/com/yahoo/vespa/model/admin/clustercontroller/ClusterControllerContainer.java index d6569dcaa58..660f411a2f1 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/admin/clustercontroller/ClusterControllerContainer.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/admin/clustercontroller/ClusterControllerContainer.java @@ -6,7 +6,7 @@ import com.yahoo.component.ComponentSpecification; import com.yahoo.config.model.api.ModelContext; import com.yahoo.config.model.api.container.ContainerServiceType; import com.yahoo.config.model.deploy.DeployState; -import com.yahoo.config.model.producer.AbstractConfigProducer; +import com.yahoo.config.model.producer.TreeConfigProducer; import com.yahoo.config.provision.ClusterSpec; import com.yahoo.container.bundle.BundleInstantiationSpecification; import com.yahoo.container.di.config.PlatformBundlesConfig; @@ -50,7 +50,7 @@ public class ClusterControllerContainer extends Container implements private final Set bundles = new TreeSet<>(); // Ensure stable ordering - public ClusterControllerContainer(AbstractConfigProducer parent, + public ClusterControllerContainer(TreeConfigProducer parent, int index, boolean runStandaloneZooKeeper, DeployState deployState, diff --git a/config-model/src/main/java/com/yahoo/vespa/model/admin/clustercontroller/ClusterControllerContainerCluster.java b/config-model/src/main/java/com/yahoo/vespa/model/admin/clustercontroller/ClusterControllerContainerCluster.java index 2f9a9df10e2..25d5620eff9 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/admin/clustercontroller/ClusterControllerContainerCluster.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/admin/clustercontroller/ClusterControllerContainerCluster.java @@ -3,7 +3,7 @@ package com.yahoo.vespa.model.admin.clustercontroller; import com.yahoo.config.model.api.Reindexing; import com.yahoo.config.model.deploy.DeployState; -import com.yahoo.config.model.producer.AbstractConfigProducer; +import com.yahoo.config.model.producer.TreeConfigProducer; import com.yahoo.config.provision.ClusterSpec; import com.yahoo.search.config.QrStartConfig; import com.yahoo.vespa.model.container.ContainerCluster; @@ -27,7 +27,7 @@ public class ClusterControllerContainerCluster extends ContainerCluster parent, String subId, String name, DeployState deployState) { + TreeConfigProducer parent, String subId, String name, DeployState deployState) { super(parent, subId, name, deployState, false); addDefaultHandlersWithVip(); this.reindexingContext = createReindexingContext(deployState); diff --git a/config-model/src/main/java/com/yahoo/vespa/model/admin/metricsproxy/MetricsProxyContainerCluster.java b/config-model/src/main/java/com/yahoo/vespa/model/admin/metricsproxy/MetricsProxyContainerCluster.java index ab748dc1fd1..b9d0cf0d17b 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/admin/metricsproxy/MetricsProxyContainerCluster.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/admin/metricsproxy/MetricsProxyContainerCluster.java @@ -24,7 +24,7 @@ import ai.vespa.metricsproxy.telegraf.Telegraf; import ai.vespa.metricsproxy.telegraf.TelegrafConfig; import ai.vespa.metricsproxy.telegraf.TelegrafRegistry; import com.yahoo.config.model.deploy.DeployState; -import com.yahoo.config.model.producer.AbstractConfigProducer; +import com.yahoo.config.model.producer.TreeConfigProducer; import com.yahoo.config.model.producer.AbstractConfigProducerRoot; import com.yahoo.config.provision.ApplicationId; import com.yahoo.config.provision.Zone; @@ -92,10 +92,10 @@ public class MetricsProxyContainerCluster extends ContainerCluster parent; + private final TreeConfigProducer parent; private final ApplicationId applicationId; - public MetricsProxyContainerCluster(AbstractConfigProducer parent, String name, DeployState deployState) { + public MetricsProxyContainerCluster(TreeConfigProducer parent, String name, DeployState deployState) { super(parent, name, name, deployState, true); this.parent = parent; applicationId = deployState.getProperties().applicationId(); diff --git a/config-model/src/main/java/com/yahoo/vespa/model/application/validation/RankSetupValidator.java b/config-model/src/main/java/com/yahoo/vespa/model/application/validation/RankSetupValidator.java index 03f0bd7e266..cf3084adee5 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/application/validation/RankSetupValidator.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/application/validation/RankSetupValidator.java @@ -6,7 +6,7 @@ import com.yahoo.collections.Pair; import com.yahoo.config.ConfigInstance; import com.yahoo.config.application.api.DeployLogger; import com.yahoo.config.model.deploy.DeployState; -import com.yahoo.config.model.producer.AbstractConfigProducer; +import com.yahoo.config.model.producer.TreeConfigProducer; import com.yahoo.io.IOUtils; import com.yahoo.log.InvalidLogFormatException; import com.yahoo.log.LogMessage; @@ -108,7 +108,7 @@ public class RankSetupValidator extends Validator { IOUtils.recursiveDeleteDir(dir); } - private void writeConfigs(String dir, AbstractConfigProducer producer) throws IOException { + private void writeConfigs(String dir, TreeConfigProducer producer) throws IOException { RankProfilesConfig.Builder rpcb = new RankProfilesConfig.Builder(); ((RankProfilesConfig.Producer) producer).getConfig(rpcb); writeConfig(dir, RankProfilesConfig.getDefName() + ".cfg", rpcb.build()); 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 421e3a2902c..8853280ac09 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,7 +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.AbstractConfigProducer; +import com.yahoo.config.model.producer.TreeConfigProducer; import com.yahoo.config.model.ApplicationConfigProducerRoot; /** @@ -14,7 +14,7 @@ import com.yahoo.config.model.ApplicationConfigProducerRoot; */ public abstract class VespaModelBuilder { - public abstract ApplicationConfigProducerRoot getRoot(String name, DeployState deployState, AbstractConfigProducer parent); + public abstract ApplicationConfigProducerRoot getRoot(String name, DeployState deployState, TreeConfigProducer parent); /** * Processing that requires access across plugins @@ -22,6 +22,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, AbstractConfigProducer producerRoot, ConfigModelRepo configModelRepo); + public abstract void postProc(DeployState deployState, TreeConfigProducer 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 b7f9193d868..709b18b57f7 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,7 +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.AbstractConfigProducer; +import com.yahoo.config.model.producer.TreeConfigProducer; import com.yahoo.container.logging.LevelsModSpec; import com.yahoo.text.XML; import com.yahoo.vespa.model.Host; @@ -47,7 +47,7 @@ public abstract class DomAdminBuilderBase extends VespaDomBuilder.DomConfigProdu this.configServerSpecs = configServerSpecs; } - List getConfigServersFromSpec(DeployState deployState, AbstractConfigProducer parent) { + List getConfigServersFromSpec(DeployState deployState, TreeConfigProducer parent) { List configservers = new ArrayList<>(); for (ConfigServerSpec spec : configServerSpecs) { HostSystem hostSystem = parent.hostSystem(); @@ -63,7 +63,7 @@ public abstract class DomAdminBuilderBase extends VespaDomBuilder.DomConfigProdu } @Override - protected Admin doBuild(DeployState deployState, AbstractConfigProducer parent, Element adminElement) { + protected Admin doBuild(DeployState deployState, TreeConfigProducer 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 10a9688d52d..3c28ddcbc5d 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,7 +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.AbstractConfigProducer; +import com.yahoo.config.model.producer.TreeConfigProducer; import com.yahoo.text.XML; import com.yahoo.vespa.model.SimpleConfigProducer; import com.yahoo.vespa.model.admin.Admin; @@ -76,7 +76,7 @@ public class DomAdminV2Builder extends DomAdminBuilderBase { } private ClusterControllerContainerCluster addConfiguredClusterControllers(DeployState deployState, - AbstractConfigProducer parent, + TreeConfigProducer parent, Element admin) { Element controllersElements = XML.getChild(admin, "cluster-controllers"); if (controllersElements == null) return null; @@ -104,7 +104,7 @@ public class DomAdminV2Builder extends DomAdminBuilderBase { return cluster; } - private List getConfigServers(DeployState deployState, AbstractConfigProducer parent, Element adminE) { + private List getConfigServers(DeployState deployState, TreeConfigProducer parent, Element adminE) { Element configserversE = XML.getChild(adminE, "configservers"); if (configserversE == null) { Element adminserver = XML.getChild(adminE, "adminserver"); @@ -126,7 +126,7 @@ public class DomAdminV2Builder extends DomAdminBuilderBase { } /** Fallback when no config server is specified */ - private List createSingleConfigServer(DeployState deployState, AbstractConfigProducer parent) { + private List createSingleConfigServer(DeployState deployState, TreeConfigProducer parent) { SimpleConfigProducer configServers = new SimpleConfigProducer<>(parent, "configservers"); Configserver configServer = new Configserver(configServers, "configserver", Configserver.defaultRpcPort); configServer.setHostResource(parent.hostSystem().getHost(Container.SINGLENODE_CONTAINER_SERVICESPEC)); @@ -134,14 +134,14 @@ public class DomAdminV2Builder extends DomAdminBuilderBase { return List.of(configServer); } - private List getSlobroks(DeployState deployState, AbstractConfigProducer parent, Element slobroksE) { + private List getSlobroks(DeployState deployState, TreeConfigProducer parent, Element slobroksE) { List slobroks = new ArrayList<>(); if (slobroksE != null) slobroks = getExplicitSlobrokSetup(deployState, parent, slobroksE); return slobroks; } - private List getExplicitSlobrokSetup(DeployState deployState, AbstractConfigProducer parent, Element slobroksE) { + private List getExplicitSlobrokSetup(DeployState deployState, TreeConfigProducer parent, Element slobroksE) { List slobroks = new ArrayList<>(); int i = 0; for (Element e : XML.getChildren(slobroksE, "slobrok")) @@ -154,7 +154,7 @@ public class DomAdminV2Builder extends DomAdminBuilderBase { } @Override - protected Logserver doBuild(DeployState deployState, AbstractConfigProducer parent, Element producerSpec) { + protected Logserver doBuild(DeployState deployState, TreeConfigProducer parent, Element producerSpec) { return new Logserver(parent); } } @@ -173,7 +173,7 @@ public class DomAdminV2Builder extends DomAdminBuilderBase { } @Override - protected Configserver doBuild(DeployState deployState, AbstractConfigProducer parent, Element spec) { + protected Configserver doBuild(DeployState deployState, TreeConfigProducer parent, Element spec) { var configServer = new Configserver(parent, "configserver." + i, rpcPort); configServer.setProp("index", i); return configServer; @@ -189,7 +189,7 @@ public class DomAdminV2Builder extends DomAdminBuilderBase { } @Override - protected Slobrok doBuild(DeployState deployState, AbstractConfigProducer parent, Element spec) { + protected Slobrok doBuild(DeployState deployState, TreeConfigProducer parent, Element spec) { return new Slobrok(parent, i, deployState.featureFlags()); } @@ -205,7 +205,7 @@ public class DomAdminV2Builder extends DomAdminBuilderBase { } @Override - protected ClusterControllerContainer doBuild(DeployState deployState, AbstractConfigProducer parent, Element spec) { + protected ClusterControllerContainer doBuild(DeployState deployState, TreeConfigProducer 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 170e8940787..59b2d29c6aa 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,7 +2,7 @@ package com.yahoo.vespa.model.builder.xml.dom; import com.yahoo.config.model.deploy.DeployState; -import com.yahoo.config.model.producer.AbstractConfigProducer; +import com.yahoo.config.model.producer.TreeConfigProducer; import com.yahoo.text.XML; import com.yahoo.vespa.model.container.ApplicationContainerCluster; import com.yahoo.vespa.model.container.component.Handler; @@ -20,7 +20,7 @@ public class DomClientProviderBuilder extends DomHandlerBuilder { } @Override - protected Handler doBuild(DeployState deployState, AbstractConfigProducer parent, Element clientElement) { + protected Handler doBuild(DeployState deployState, TreeConfigProducer 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 6c3da20bfb9..2953b9da761 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,7 +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.AbstractConfigProducer; +import com.yahoo.config.model.producer.TreeConfigProducer; import com.yahoo.text.XML; import com.yahoo.vespa.model.container.component.Component; import com.yahoo.vespa.model.container.xml.BundleInstantiationSpecificationBuilder; @@ -30,7 +30,7 @@ public class DomComponentBuilder extends VespaDomBuilder.DomConfigProducerBuilde } @Override - protected Component doBuild(DeployState deployState, AbstractConfigProducer ancestor, Element spec) { + protected Component doBuild(DeployState deployState, TreeConfigProducer ancestor, Element spec) { Component component = buildComponent(spec); addChildren(deployState, ancestor, spec, component); return component; @@ -43,13 +43,13 @@ public class DomComponentBuilder extends VespaDomBuilder.DomConfigProducerBuilde return new Component, ComponentModel>(new ComponentModel(bundleSpec)); } - public static void addChildren(DeployState deployState, AbstractConfigProducer ancestor, Element componentNode, Component, ?> component) { + public static void addChildren(DeployState deployState, TreeConfigProducer ancestor, Element componentNode, Component, ?> component) { for (Element childNode : XML.getChildren(componentNode, elementName)) { addAndInjectChild(deployState, ancestor, component, childNode); } } - private static void addAndInjectChild(DeployState deployState, AbstractConfigProducer ancestor, Component, ?> component, Element childNode) { + private static void addAndInjectChild(DeployState deployState, TreeConfigProducer ancestor, 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 dde38544924..c3ff10c1297 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,7 +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.AbstractConfigProducer; +import com.yahoo.config.model.producer.TreeConfigProducer; import com.yahoo.container.bundle.BundleInstantiationSpecification; import com.yahoo.osgi.provider.model.ComponentModel; import com.yahoo.text.XML; @@ -48,7 +48,7 @@ public class DomHandlerBuilder extends VespaDomBuilder.DomConfigProducerBuilder< } @Override - protected Handler doBuild(DeployState deployState, AbstractConfigProducer parent, Element handlerElement) { + protected Handler doBuild(DeployState deployState, TreeConfigProducer 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 e76ba4577a7..d2304eabe0c 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,7 +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.AbstractConfigProducer; +import com.yahoo.config.model.producer.TreeConfigProducer; import com.yahoo.vespa.model.search.Tuning; import org.w3c.dom.Element; @@ -15,7 +15,7 @@ import org.w3c.dom.Element; public class DomSearchTuningBuilder extends VespaDomBuilder.DomConfigProducerBuilder { @Override - protected Tuning doBuild(DeployState deployState, AbstractConfigProducer parent, Element spec) { + protected Tuning doBuild(DeployState deployState, TreeConfigProducer 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 40e457ba69b..e5d33333420 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,7 +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.AbstractConfigProducer; +import com.yahoo.config.model.producer.TreeConfigProducer; import org.w3c.dom.Element; /** @@ -23,7 +23,7 @@ public abstract class LegacyConfigModelBuilder extend @Override public MODEL build(ConfigModelInstanceFactory factory, Element spec, ConfigModelContext context) { VespaDomBuilder.DomSimpleConfigProducerBuilder builder = new VespaDomBuilder.DomSimpleConfigProducerBuilder(context.getProducerId()); - AbstractConfigProducer producer = builder.build(context.getDeployState(), context.getParentProducer(), spec); + TreeConfigProducer 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 e4e56dcaaca..1b0987ea518 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,7 +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.AbstractConfigProducer; +import com.yahoo.config.model.producer.TreeConfigProducer; import com.yahoo.config.model.producer.UserConfigRepo; import com.yahoo.text.XML; import com.yahoo.vespa.model.AbstractService; @@ -61,7 +61,7 @@ public class VespaDomBuilder extends VespaModelBuilder { @Override - public ApplicationConfigProducerRoot getRoot(String name, DeployState deployState, AbstractConfigProducer parent) { + public ApplicationConfigProducerRoot getRoot(String name, DeployState deployState, TreeConfigProducer parent) { try { return new DomRootBuilder(name). build(deployState, parent, XmlHelper.getDocument(deployState.getApplicationPackage().getServices(), "services.xml") @@ -83,12 +83,12 @@ public class VespaDomBuilder extends VespaModelBuilder { * Base class for builders of producers using DOM. The purpose is to always * include hostalias, baseport and user config overrides generically. * - * @param an {@link com.yahoo.config.model.producer.AbstractConfigProducer} + * @param an {@link com.yahoo.config.model.producer.TreeConfigProducer} */ - public static abstract class DomConfigProducerBuilder> { + public static abstract class DomConfigProducerBuilder> { // TODO: find good way to provide access to app package - public final T build(DeployState deployState, AbstractConfigProducer ancestor, Element producerSpec) { + public final T build(DeployState deployState, TreeConfigProducer ancestor, Element producerSpec) { T t = doBuild(deployState, ancestor, producerSpec); if (t instanceof AbstractService) { @@ -100,9 +100,9 @@ public class VespaDomBuilder extends VespaModelBuilder { return t; } - protected abstract T doBuild(DeployState deployState, AbstractConfigProducer ancestor, Element producerSpec); + protected abstract T doBuild(DeployState deployState, TreeConfigProducer ancestor, Element producerSpec); - private void initializeProducer(AbstractConfigProducer child, DeployState deployState, Element producerSpec) { + private void initializeProducer(TreeConfigProducer child, DeployState deployState, Element producerSpec) { UserConfigRepo userConfigs = UserConfigBuilder.build(producerSpec, deployState, deployState.getDeployLogger()); // TODO: must be made to work: //userConfigs.applyWarnings(child); @@ -183,7 +183,7 @@ public class VespaDomBuilder extends VespaModelBuilder { } @Override - protected SimpleConfigProducer doBuild(DeployState deployState, AbstractConfigProducer parent, + protected SimpleConfigProducer doBuild(DeployState deployState, TreeConfigProducer parent, Element producerSpec) { return new SimpleConfigProducer<>(parent, configId); } @@ -200,7 +200,7 @@ public class VespaDomBuilder extends VespaModelBuilder { } @Override - protected ApplicationConfigProducerRoot doBuild(DeployState deployState, AbstractConfigProducer parent, Element producerSpec) { + protected ApplicationConfigProducerRoot doBuild(DeployState deployState, TreeConfigProducer parent, Element producerSpec) { ApplicationConfigProducerRoot root = new ApplicationConfigProducerRoot(parent, name, deployState.getDocumentModel(), @@ -242,7 +242,7 @@ public class VespaDomBuilder extends VespaModelBuilder { * @param root root config producer * @param configModelRepo a {@link ConfigModelRepo} */ - public void postProc(DeployState deployState, AbstractConfigProducer root, ConfigModelRepo configModelRepo) { + public void postProc(DeployState deployState, TreeConfigProducer 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 c48968333ac..759678686f5 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,7 +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.AbstractConfigProducer; +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; import org.w3c.dom.Element; @@ -24,7 +24,7 @@ public class ChainsBuilder, CHAIN extends private final Map>> chainType2BuilderClass; // NOTE: The chain type string (key in chainType2BuilderClass) must match the xml tag name for the chain. - public ChainsBuilder(DeployState deployState, AbstractConfigProducer ancestor, List chainsElems, + public ChainsBuilder(DeployState deployState, TreeConfigProducer ancestor, List chainsElems, Map> outerComponentTypeByComponentName, Map>> chainType2BuilderClass) { @@ -36,7 +36,7 @@ public class ChainsBuilder, CHAIN extends return Collections.unmodifiableCollection(chains); } - private void readChains(DeployState deployState, AbstractConfigProducer ancestor, List chainsElems, + private void readChains(DeployState deployState, TreeConfigProducer ancestor, List chainsElems, Map> outerSearcherTypeByComponentName) { for (Map.Entry>> @@ -49,7 +49,7 @@ public class ChainsBuilder, CHAIN extends } } - private void readChain(DeployState deployState, AbstractConfigProducer ancestor, Element chainElem, + private void readChain(DeployState deployState, TreeConfigProducer ancestor, Element chainElem, Class> builderClass, Map> 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 931b6807586..dc15b4e02f1 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,7 +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.AbstractConfigProducer; +import com.yahoo.config.model.producer.TreeConfigProducer; import com.yahoo.config.model.builder.xml.XmlHelper; import com.yahoo.vespa.model.builder.xml.dom.VespaDomBuilder; import com.yahoo.vespa.model.builder.xml.dom.chains.docproc.DomDocumentProcessorBuilder; @@ -73,7 +73,7 @@ public class ComponentsBuilder> { * every component is a definition, not a reference. */ ComponentsBuilder(DeployState deployState, - AbstractConfigProducer ancestor, + TreeConfigProducer ancestor, Collection> componentTypes, List elementsContainingComponentElems, Map> outerComponentTypeByComponentName) { @@ -81,7 +81,7 @@ public class ComponentsBuilder> { readComponents(deployState, ancestor, componentTypes, elementsContainingComponentElems, unmodifiable(outerComponentTypeByComponentName)); } - private void readComponents(DeployState deployState, AbstractConfigProducer ancestor, + private void readComponents(DeployState deployState, TreeConfigProducer ancestor, Collection> componentTypes, List elementsContainingComponentElems, Map> outerComponentTypeByComponentName) { @@ -95,7 +95,7 @@ public class ComponentsBuilder> { } } - private void readComponent(DeployState deployState, AbstractConfigProducer ancestor, + private void readComponent(DeployState deployState, TreeConfigProducer ancestor, Element componentElement, ComponentType componentType, Map> outerComponentTypeByComponentName) { @@ -119,7 +119,7 @@ public class ComponentsBuilder> { outerComponentReferences.add(componentSpecification); } - private void readComponentDefinition(DeployState deployState, AbstractConfigProducer ancestor, Element componentElement, ComponentType componentType) { + private void readComponentDefinition(DeployState deployState, TreeConfigProducer ancestor, Element componentElement, ComponentType 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 a6c9cca29e7..d562cdde848 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,7 +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.AbstractConfigProducer; +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; import com.yahoo.vespa.model.container.component.chain.ChainedComponent; @@ -28,7 +28,7 @@ public abstract class DomChainBuilderBase, this.outerComponentTypeByComponentName = outerComponentTypeByComponentName; } - public final CHAIN doBuild(DeployState deployState, AbstractConfigProducer ancestor, Element producerSpec) { + public final CHAIN doBuild(DeployState deployState, TreeConfigProducer ancestor, Element producerSpec) { ComponentsBuilder componentsBuilder = new ComponentsBuilder<>(deployState, ancestor, allowedComponentTypes, List.of(producerSpec), outerComponentTypeByComponentName); ChainSpecification specWithoutInnerComponents = @@ -46,6 +46,6 @@ public abstract class DomChainBuilderBase, } } - protected abstract CHAIN buildChain(DeployState deployState, AbstractConfigProducer ancestor, Element producerSpec, + protected abstract CHAIN buildChain(DeployState deployState, TreeConfigProducer 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 b40ee7f3136..d680ed0c861 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,7 +2,7 @@ package com.yahoo.vespa.model.builder.xml.dom.chains; import com.yahoo.config.model.deploy.DeployState; -import com.yahoo.config.model.producer.AbstractConfigProducer; +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; import com.yahoo.vespa.model.container.component.chain.Chain; @@ -31,10 +31,10 @@ class DomChainsBuilder, CHAIN extends Chai this.allowedComponentTypes = new ArrayList<>(allowedComponentTypes); } - protected abstract CHAINS newChainsInstance(AbstractConfigProducer parent); + protected abstract CHAINS newChainsInstance(TreeConfigProducer parent); @Override - protected final CHAINS doBuild(DeployState deployState, AbstractConfigProducer parent, Element chainsElement) { + protected final CHAINS doBuild(DeployState deployState, TreeConfigProducer parent, Element chainsElement) { CHAINS chains = newChainsInstance(parent); List allChainElements = allChainElements(deployState, chainsElement); @@ -56,12 +56,12 @@ class DomChainsBuilder, CHAIN extends Chai return chainsElements; } - private ComponentsBuilder readOuterComponents(DeployState deployState, AbstractConfigProducer ancestor, List chainsElems) { + private ComponentsBuilder readOuterComponents(DeployState deployState, TreeConfigProducer ancestor, List chainsElems) { return new ComponentsBuilder<>(deployState, ancestor, allowedComponentTypes, chainsElems, null); } protected abstract - ChainsBuilder readChains(DeployState deployState, AbstractConfigProducer ancestor, List allChainsElems, + ChainsBuilder readChains(DeployState deployState, TreeConfigProducer ancestor, List allChainsElems, Map> outerComponentTypeByComponentName); private void addOuterComponents(CHAINS chains, ComponentsBuilder 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 17441b2d7cd..4fb89374bd2 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,7 +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.AbstractConfigProducer; +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; import com.yahoo.vespa.model.builder.xml.dom.chains.DomChainBuilderBase; @@ -29,7 +29,7 @@ public class DocprocChainsBuilder extends ChainsBuilder ancestor, List docprocChainsElements, + public DocprocChainsBuilder(DeployState deployState, TreeConfigProducer ancestor, List docprocChainsElements, Map> 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 d4393b2cd9e..3eefdd30b30 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,7 +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.AbstractConfigProducer; +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; import com.yahoo.vespa.model.container.docproc.DocprocChain; @@ -25,7 +25,7 @@ public class DomDocprocChainBuilder extends DomChainBuilderBase ancestor, Element producerSpec, + protected DocprocChain buildChain(DeployState deployState, TreeConfigProducer ancestor, Element producerSpec, ChainSpecification specWithoutInnerComponents) { Map, 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 85f9d305afc..8f43020422f 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,7 +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.AbstractConfigProducer; +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; import com.yahoo.vespa.model.container.docproc.DocprocChain; @@ -24,12 +24,12 @@ public class DomDocprocChainsBuilder extends DomChainsBuilder parent) { + protected DocprocChains newChainsInstance(TreeConfigProducer parent) { return new DocprocChains(parent, "docprocchains"); } @Override - protected DocprocChainsBuilder readChains(DeployState deployState, AbstractConfigProducer ancestor, List docprocChainsElements, + protected DocprocChainsBuilder readChains(DeployState deployState, TreeConfigProducer ancestor, List docprocChainsElements, Map> 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 58c3e6f4ff8..a08e09cfb98 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,7 +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.AbstractConfigProducer; +import com.yahoo.config.model.producer.TreeConfigProducer; import com.yahoo.vespa.model.builder.xml.dom.VespaDomBuilder; import com.yahoo.vespa.model.container.docproc.DocumentProcessor; import org.w3c.dom.Element; @@ -15,7 +15,7 @@ import org.w3c.dom.Element; public class DomDocumentProcessorBuilder extends VespaDomBuilder.DomConfigProducerBuilder { @Override - protected DocumentProcessor doBuild(DeployState deployState, AbstractConfigProducer ancestor, Element documentProcessorElement) { + protected DocumentProcessor doBuild(DeployState deployState, TreeConfigProducer 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 bd7b6dd4716..541c59705cf 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,7 +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.AbstractConfigProducer; +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; import com.yahoo.vespa.model.container.processing.ProcessingChain; @@ -24,12 +24,12 @@ public class DomProcessingBuilder extends DomChainsBuilder parent) { + protected ProcessingChains newChainsInstance(TreeConfigProducer parent) { return new ProcessingChains(parent, "processing"); } @Override - protected ProcessingChainsBuilder readChains(DeployState deployState, AbstractConfigProducer ancestor, List processingChainsElements, + protected ProcessingChainsBuilder readChains(DeployState deployState, TreeConfigProducer ancestor, List processingChainsElements, Map> 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 fa6fff9dee3..b4d0bfad826 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,7 +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.AbstractConfigProducer; +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; import com.yahoo.vespa.model.container.processing.ProcessingChain; @@ -21,7 +21,7 @@ public class DomProcessingChainBuilder extends DomChainBuilderBase ancestor, Element producerSpec, + protected ProcessingChain buildChain(DeployState deployState, TreeConfigProducer 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 6f9dd964062..1b4466c6f87 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,7 +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.AbstractConfigProducer; +import com.yahoo.config.model.producer.TreeConfigProducer; import com.yahoo.vespa.model.builder.xml.dom.VespaDomBuilder; import org.w3c.dom.Element; @@ -17,7 +17,7 @@ import org.w3c.dom.Element; public class DomProcessorBuilder extends VespaDomBuilder.DomConfigProducerBuilder { @Override - protected Processor doBuild(DeployState deployState, AbstractConfigProducer ancestor, Element processorElement) { + protected Processor doBuild(DeployState deployState, TreeConfigProducer 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 f29b46cc327..5b6ae90f6ce 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,7 +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.AbstractConfigProducer; +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; import com.yahoo.vespa.model.builder.xml.dom.chains.DomChainBuilderBase; @@ -29,7 +29,7 @@ public class ProcessingChainsBuilder extends ChainsBuilder ancestor, List processingChainsElements, + public ProcessingChainsBuilder(DeployState deployState, TreeConfigProducer ancestor, List processingChainsElements, Map> 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 4edc368aaeb..3231936d5aa 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,7 +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.AbstractConfigProducer; +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; import com.yahoo.vespa.model.builder.xml.dom.chains.GenericChainedComponentModelBuilder; @@ -75,14 +75,14 @@ public class DomFederationSearcherBuilder extends VespaDomBuilder.DomConfigProdu } @Override - protected FederationSearcher doBuild(DeployState deployState, AbstractConfigProducer ancestor, Element searcherElement) { + protected FederationSearcher doBuild(DeployState deployState, TreeConfigProducer ancestor, Element searcherElement) { FederationSearcherModel model = new FederationSearcherModelBuilder(searcherElement).build(); Optional targetSelector = buildTargetSelector(deployState, ancestor, searcherElement, model.getComponentId()); return new FederationSearcher(model, targetSelector); } - private Optional buildTargetSelector(DeployState deployState, AbstractConfigProducer ancestor, Element searcherElement, ComponentId namespace) { + private Optional buildTargetSelector(DeployState deployState, TreeConfigProducer 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 b15c461f72f..4e06bc6c67a 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,7 +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.AbstractConfigProducer; +import com.yahoo.config.model.producer.TreeConfigProducer; import com.yahoo.search.searchchain.model.federation.FederationOptions; import com.yahoo.search.searchchain.model.federation.LocalProviderSpec; import com.yahoo.text.XML; @@ -125,7 +125,7 @@ public class DomProviderBuilder extends DomGenericTargetBuilder { } @Override - protected Provider buildChain(DeployState deployState, AbstractConfigProducer ancestor, Element providerElement, + protected Provider buildChain(DeployState deployState, TreeConfigProducer ancestor, Element providerElement, ChainSpecification specWithoutInnerComponents) { ProviderReader providerReader = new ProviderReader(providerElement); @@ -140,7 +140,7 @@ public class DomProviderBuilder extends DomGenericTargetBuilder { } - private Collection buildSources(DeployState deployState, AbstractConfigProducer ancestor, Element providerElement) { + private Collection buildSources(DeployState deployState, TreeConfigProducer ancestor, Element providerElement) { List 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 d4b65f85f3d..0c349e60150 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,7 +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.AbstractConfigProducer; +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; import com.yahoo.vespa.model.container.search.searchchain.SearchChain; @@ -24,7 +24,7 @@ public class DomSearchChainBuilder extends DomChainBuilderBase, Sear outerSearcherTypeByComponentName); } - protected SearchChain buildChain(DeployState deployState, AbstractConfigProducer ancestor, Element producerSpec, + protected SearchChain buildChain(DeployState deployState, TreeConfigProducer 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 798986273d0..ef02b2b3806 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,7 +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.AbstractConfigProducer; +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; import com.yahoo.vespa.model.container.search.searchchain.SearchChain; @@ -26,12 +26,12 @@ public class DomSearchChainsBuilder extends DomChainsBuilder, Search } @Override - protected SearchChains newChainsInstance(AbstractConfigProducer parent) { + protected SearchChains newChainsInstance(TreeConfigProducer parent) { return new SearchChains(parent, "searchchains"); } @Override - protected SearchChainsBuilder readChains(DeployState deployState, AbstractConfigProducer ancestor, List searchChainsElements, + protected SearchChainsBuilder readChains(DeployState deployState, TreeConfigProducer ancestor, List searchChainsElements, Map> 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 74ca0ef2734..47f538bbbcf 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,7 +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.AbstractConfigProducer; +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; import com.yahoo.vespa.model.container.search.searchchain.Searcher; @@ -16,7 +16,7 @@ import org.w3c.dom.Element; public class DomSearcherBuilder extends VespaDomBuilder.DomConfigProducerBuilder> { @Override - protected Searcher doBuild(DeployState deployState, AbstractConfigProducer ancestor, Element searcherElement) { + protected Searcher doBuild(DeployState deployState, TreeConfigProducer 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 a567e09fa7d..586e93f2174 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,7 +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.AbstractConfigProducer; +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; import com.yahoo.vespa.model.container.search.searchchain.Source; @@ -20,7 +20,7 @@ public class DomSourceBuilder extends DomGenericTargetBuilder { super(outerSearcherTypeByComponentName); } - protected Source buildChain(DeployState deployState, AbstractConfigProducer ancestor, Element producerSpec, ChainSpecification specWithoutInnerComponents) { + protected Source buildChain(DeployState deployState, TreeConfigProducer 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 65fc585c7af..4740a283c26 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,7 +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.AbstractConfigProducer; +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; import com.yahoo.vespa.model.builder.xml.dom.chains.DomChainBuilderBase; @@ -30,7 +30,7 @@ public class SearchChainsBuilder extends ChainsBuilder, SearchChain> put("provider", DomProviderBuilder.class); }}); - public SearchChainsBuilder(DeployState deployState, AbstractConfigProducer ancestor, List searchChainsElements, + public SearchChainsBuilder(DeployState deployState, TreeConfigProducer ancestor, List searchChainsElements, Map> outerSearcherTypeByComponentName) { super(deployState, ancestor, searchChainsElements, outerSearcherTypeByComponentName, chainType2builderClass); } diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/ApplicationContainer.java b/config-model/src/main/java/com/yahoo/vespa/model/container/ApplicationContainer.java index 53858f8cc0e..784902e2427 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/container/ApplicationContainer.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/container/ApplicationContainer.java @@ -5,7 +5,7 @@ import com.yahoo.cloud.config.ZookeeperServerConfig; import com.yahoo.config.model.api.ModelContext; import com.yahoo.config.model.api.container.ContainerServiceType; import com.yahoo.config.model.deploy.DeployState; -import com.yahoo.config.model.producer.AbstractConfigProducer; +import com.yahoo.config.model.producer.TreeConfigProducer; import com.yahoo.config.provision.ClusterSpec; import com.yahoo.config.provision.NodeResources; import com.yahoo.search.config.QrStartConfig; @@ -28,11 +28,11 @@ public final class ApplicationContainer extends Container implements private final boolean isHostedVespa; - public ApplicationContainer(AbstractConfigProducer parent, String name, int index, DeployState deployState) { + public ApplicationContainer(TreeConfigProducer parent, String name, int index, DeployState deployState) { this(parent, name, false, index, deployState); } - public ApplicationContainer(AbstractConfigProducer parent, String name, boolean retired, int index, DeployState deployState) { + public ApplicationContainer(TreeConfigProducer parent, String name, boolean retired, int index, DeployState deployState) { super(parent, name, retired, index, deployState); this.isHostedVespa = deployState.isHosted(); diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/ApplicationContainerCluster.java b/config-model/src/main/java/com/yahoo/vespa/model/container/ApplicationContainerCluster.java index 2f41c177ea5..004ff5516ba 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/container/ApplicationContainerCluster.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/container/ApplicationContainerCluster.java @@ -13,7 +13,7 @@ import com.yahoo.config.model.api.ApplicationClusterInfo; import com.yahoo.config.model.api.ContainerEndpoint; import com.yahoo.config.model.api.Model; import com.yahoo.config.model.deploy.DeployState; -import com.yahoo.config.model.producer.AbstractConfigProducer; +import com.yahoo.config.model.producer.TreeConfigProducer; import com.yahoo.config.provision.AllocatedHosts; import com.yahoo.config.provision.ClusterSpec; import com.yahoo.config.provision.HostSpec; @@ -97,7 +97,7 @@ public final class ApplicationContainerCluster extends ContainerCluster endpointList = List.of(); - public ApplicationContainerCluster(AbstractConfigProducer parent, String configSubId, String clusterId, DeployState deployState) { + public ApplicationContainerCluster(TreeConfigProducer parent, String configSubId, String clusterId, DeployState deployState) { super(parent, configSubId, clusterId, deployState, true, 10); this.tlsClientAuthority = deployState.tlsClientAuthority(); previousHosts = Collections.unmodifiableSet(deployState.getPreviousModel().stream() 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 0e4726c8cd5..091ecae6e06 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 @@ -4,7 +4,8 @@ package com.yahoo.vespa.model.container; import com.yahoo.config.model.api.ModelContext; import com.yahoo.config.model.api.container.ContainerServiceType; import com.yahoo.config.model.deploy.DeployState; -import com.yahoo.config.model.producer.AbstractConfigProducer; +import com.yahoo.config.model.producer.AnyConfigProducer; +import com.yahoo.config.model.producer.TreeConfigProducer; import com.yahoo.config.provision.ClusterSpec; import com.yahoo.container.ComponentsConfig; import com.yahoo.container.QrConfig; @@ -62,7 +63,7 @@ public abstract class Container extends AbstractService implements /** The cluster this container belongs to, or null if it is not added to any cluster */ private ContainerCluster owner = null; - protected final AbstractConfigProducer parent; + protected final TreeConfigProducer parent; private final String name; private boolean requireSpecificPorts = true; @@ -81,11 +82,11 @@ public abstract class Container extends AbstractService implements private final JettyHttpServer defaultHttpServer; - protected Container(AbstractConfigProducer parent, String name, int index, DeployState deployState) { + protected Container(TreeConfigProducer parent, String name, int index, DeployState deployState) { this(parent, name, false, index, deployState); } - protected Container(AbstractConfigProducer parent, String name, boolean retired, int index, DeployState deployState) { + protected Container(TreeConfigProducer parent, String name, boolean retired, int index, DeployState deployState) { super(parent, name); this.name = name; this.parent = parent; @@ -345,18 +346,20 @@ public abstract class Container extends AbstractService implements return Collections.unmodifiableCollection(allComponents); } - private void addAllEnabledComponents(Collection> allComponents, AbstractConfigProducer current) { - for (AbstractConfigProducer child: current.getChildren().values()) { + private void addAllEnabledComponents(Collection> allComponents, TreeConfigProducer current) { + for (var child: current.getChildren().values()) { if ( ! httpServerEnabled() && isHttpServer(child)) continue; if (child instanceof Component) allComponents.add((Component) child); - addAllEnabledComponents(allComponents, child); + if (child instanceof TreeConfigProducer t) { + addAllEnabledComponents(allComponents, t); + } } } - private boolean isHttpServer(AbstractConfigProducer component) { + private boolean isHttpServer(AnyConfigProducer component) { return component instanceof JettyHttpServer; } @@ -400,7 +403,7 @@ public abstract class Container extends AbstractService implements return Optional.ofNullable(containerClusterOrNull(parent)); } - private static ContainerCluster containerClusterOrNull(AbstractConfigProducer producer) { + private static ContainerCluster containerClusterOrNull(TreeConfigProducer 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 59263b1c465..bf5698f81f7 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,7 +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.AbstractConfigProducer; +import com.yahoo.config.model.producer.TreeConfigProducer; import com.yahoo.config.provision.ClusterSpec; import com.yahoo.config.provision.Zone; import com.yahoo.container.ComponentsConfig; @@ -83,7 +83,7 @@ import static com.yahoo.vespa.model.container.component.chain.ProcessingHandler. * @author Tony Vaagenes */ public abstract class ContainerCluster - extends AbstractConfigProducer> + extends TreeConfigProducer> implements ComponentsConfig.Producer, JdiscBindingsConfig.Producer, @@ -166,10 +166,10 @@ public abstract class ContainerCluster private boolean clientsLegacyMode; private List clients = List.of(); - public ContainerCluster(AbstractConfigProducer parent, String configSubId, String clusterId, DeployState deployState, boolean zooKeeperLocalhostAffinity) { + public ContainerCluster(TreeConfigProducer parent, String configSubId, String clusterId, DeployState deployState, boolean zooKeeperLocalhostAffinity) { this(parent, configSubId, clusterId, deployState, zooKeeperLocalhostAffinity, 1); } - public ContainerCluster(AbstractConfigProducer parent, String configSubId, String clusterId, DeployState deployState, boolean zooKeeperLocalhostAffinity, int defaultPoolNumThreads) { + public ContainerCluster(TreeConfigProducer parent, String configSubId, String clusterId, DeployState deployState, boolean zooKeeperLocalhostAffinity, int defaultPoolNumThreads) { super(parent, configSubId); this.name = clusterId; this.isHostedVespa = stateIsHosted(deployState); @@ -422,13 +422,13 @@ public abstract class ContainerCluster return Collections.unmodifiableCollection(allComponents); } - private void recursivelyFindAllComponents(Collection> allComponents, AbstractConfigProducer current) { - for (AbstractConfigProducer child: current.getChildren().values()) { + private void recursivelyFindAllComponents(Collection> allComponents, TreeConfigProducer current) { + for (var child: current.getChildren().values()) { if (child instanceof Component) allComponents.add((Component) child); - if (!(child instanceof Container)) - recursivelyFindAllComponents(allComponents, 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/Component.java b/config-model/src/main/java/com/yahoo/vespa/model/container/component/Component.java index 690b0f7f083..acc22d6ebab 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/container/component/Component.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/container/component/Component.java @@ -4,7 +4,7 @@ package com.yahoo.vespa.model.container.component; import com.yahoo.collections.Pair; import com.yahoo.component.ComponentId; import com.yahoo.component.ComponentSpecification; -import com.yahoo.config.model.producer.AbstractConfigProducer; +import com.yahoo.config.model.producer.TreeConfigProducer; import com.yahoo.osgi.provider.model.ComponentModel; import java.util.HashSet; @@ -15,8 +15,8 @@ import java.util.Set; * @author gjoranv * @author Tony Vaagenes */ -public class Component, MODEL extends ComponentModel> - extends AbstractConfigProducer implements Comparable> { +public class Component, MODEL extends ComponentModel> + extends TreeConfigProducer implements Comparable> { public final MODEL model; final Set> injectedComponents = new LinkedHashSet<>(); 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 5c0274a7a9e..21f5cb5d5e3 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 @@ -1,14 +1,14 @@ // Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. package com.yahoo.vespa.model.container.component; -import com.yahoo.config.model.producer.AbstractConfigProducer; +import com.yahoo.config.model.producer.TreeConfigProducer; /** * @author Tony Vaagenes */ public class ComponentGroup > extends ConfigProducerGroup { - public ComponentGroup(AbstractConfigProducer parent, String subId) { + public ComponentGroup(TreeConfigProducer 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 c4710b27868..bb19a5df679 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 @@ -2,7 +2,7 @@ package com.yahoo.vespa.model.container.component; import com.yahoo.component.ComponentId; -import com.yahoo.config.model.producer.AbstractConfigProducer; +import com.yahoo.config.model.producer.TreeConfigProducer; import java.util.ArrayList; import java.util.Collection; @@ -16,11 +16,11 @@ import java.util.Map; * * @author Tony Vaagenes */ -public class ConfigProducerGroup> extends AbstractConfigProducer { +public class ConfigProducerGroup> extends TreeConfigProducer { private final Map producerById = new LinkedHashMap<>(); - public ConfigProducerGroup(AbstractConfigProducer parent, String subId) { + public ConfigProducerGroup(TreeConfigProducer parent, String subId) { super(parent, subId); } diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/component/SimpleComponent.java b/config-model/src/main/java/com/yahoo/vespa/model/container/component/SimpleComponent.java index 23915afacdd..4d4a14cf9c3 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/container/component/SimpleComponent.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/container/component/SimpleComponent.java @@ -3,14 +3,14 @@ package com.yahoo.vespa.model.container.component; import com.yahoo.container.bundle.BundleInstantiationSpecification; import com.yahoo.osgi.provider.model.ComponentModel; -import com.yahoo.config.model.producer.AbstractConfigProducer; +import com.yahoo.config.model.producer.TreeConfigProducer; /** * A component that uses the class name as id, and resides in the container-disc bundle. * * @author gjoranv */ -public class SimpleComponent extends Component, ComponentModel> { +public class SimpleComponent extends Component, ComponentModel> { public SimpleComponent(ComponentModel model) { super(model); 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 1adbe523c05..9fb9dc3bde8 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,7 +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.AbstractConfigProducer; +import com.yahoo.config.model.producer.TreeConfigProducer; import com.yahoo.vespa.model.container.component.ComponentGroup; import java.util.ArrayList; @@ -19,7 +19,7 @@ import static com.yahoo.container.core.ChainsConfig.Chains.Type; * @author Tony Vaagenes * @author gjoranv */ -public class Chain> extends AbstractConfigProducer> { +public class Chain> extends TreeConfigProducer> { private final ComponentId componentId; private final ChainSpecification specWithoutInnerComponents; diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/component/chain/ChainedComponent.java b/config-model/src/main/java/com/yahoo/vespa/model/container/component/chain/ChainedComponent.java index e8001c9b5ec..94ae0eeb475 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/container/component/chain/ChainedComponent.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/container/component/chain/ChainedComponent.java @@ -3,7 +3,7 @@ package com.yahoo.vespa.model.container.component.chain; import com.yahoo.component.ComponentId; import com.yahoo.component.chain.model.ChainedComponentModel; -import com.yahoo.config.model.producer.AbstractConfigProducer; +import com.yahoo.config.model.producer.TreeConfigProducer; import com.yahoo.vespa.model.container.component.Component; @@ -13,7 +13,7 @@ import com.yahoo.vespa.model.container.component.Component; * * Base class for all ChainedComponent config producers. */ -public class ChainedComponent extends Component, T> { +public class ChainedComponent extends Component, T> { public ChainedComponent(T model) { super(model); @@ -27,7 +27,7 @@ public class ChainedComponent extends Component } private ComponentId namespace() { - AbstractConfigProducer owner = getParent().getParent(); + var owner = getParent().getParent(); return (owner instanceof Chain) ? ((Chain) owner).getGlobalComponentId() : null; 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 87fe99c938e..e9d0d07dde1 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,7 +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.AbstractConfigProducer; +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 +18,13 @@ import java.util.Set; * @author gjoranv */ public class Chains> - extends AbstractConfigProducer> + extends TreeConfigProducer> implements ChainsConfig.Producer { private final ComponentGroup> componentGroup; private final ConfigProducerGroup chainGroup; - public Chains(AbstractConfigProducer parent, String subId) { + public Chains(TreeConfigProducer 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/configserver/ConfigserverCluster.java b/config-model/src/main/java/com/yahoo/vespa/model/container/configserver/ConfigserverCluster.java index 4bec9123b77..66d069f138a 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/container/configserver/ConfigserverCluster.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/container/configserver/ConfigserverCluster.java @@ -4,7 +4,7 @@ package com.yahoo.vespa.model.container.configserver; import com.yahoo.cloud.config.ConfigserverConfig; import com.yahoo.cloud.config.CuratorConfig; import com.yahoo.cloud.config.ZookeeperServerConfig; -import com.yahoo.config.model.producer.AbstractConfigProducer; +import com.yahoo.config.model.producer.TreeConfigProducer; import com.yahoo.config.provision.Environment; import com.yahoo.config.provision.RegionName; import com.yahoo.config.provision.SystemName; @@ -25,7 +25,7 @@ import java.util.stream.IntStream; * * @author Ulf Lilleengen */ -public class ConfigserverCluster extends AbstractConfigProducer +public class ConfigserverCluster extends TreeConfigProducer implements ConfigserverConfig.Producer, CuratorConfig.Producer, @@ -36,7 +36,7 @@ public class ConfigserverCluster extends AbstractConfigProducer private final CloudConfigOptions options; private ContainerCluster containerCluster; - public ConfigserverCluster(AbstractConfigProducer parent, String subId, CloudConfigOptions options) { + public ConfigserverCluster(TreeConfigProducer parent, String subId, CloudConfigOptions options) { super(parent, subId); this.options = options; } 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 109ab3e806e..b37296ee2e6 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 @@ -2,7 +2,7 @@ package com.yahoo.vespa.model.container.docproc; import com.yahoo.component.ComponentId; -import com.yahoo.config.model.producer.AbstractConfigProducer; +import com.yahoo.config.model.producer.TreeConfigProducer; import com.yahoo.container.bundle.BundleInstantiationSpecification; import com.yahoo.container.jdisc.config.SessionConfig; import com.yahoo.docproc.jdisc.observability.DocprocsStatusExtension; @@ -25,7 +25,7 @@ public class DocprocChains extends Chains { private final ProcessingHandler docprocHandler; - public DocprocChains(AbstractConfigProducer parent, String subId) { + public DocprocChains(TreeConfigProducer 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 64506ed60e8..f395c5e6777 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 @@ -4,7 +4,7 @@ package com.yahoo.vespa.model.container.http; import com.yahoo.component.ComponentId; import com.yahoo.component.ComponentSpecification; import com.yahoo.component.chain.model.ChainSpecification; -import com.yahoo.config.model.producer.AbstractConfigProducer; +import com.yahoo.config.model.producer.TreeConfigProducer; import com.yahoo.vespa.model.container.component.SimpleComponent; import com.yahoo.vespa.model.container.component.chain.Chains; @@ -15,7 +15,7 @@ import java.util.Set; */ public class FilterChains extends Chains { - public FilterChains(AbstractConfigProducer parent) { + public FilterChains(TreeConfigProducer 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/Http.java b/config-model/src/main/java/com/yahoo/vespa/model/container/http/Http.java index e6096dc75b3..ebf0a6ed07a 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/container/http/Http.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/container/http/Http.java @@ -2,7 +2,7 @@ package com.yahoo.vespa.model.container.http; import com.yahoo.component.provider.ComponentRegistry; -import com.yahoo.config.model.producer.AbstractConfigProducer; +import com.yahoo.config.model.producer.TreeConfigProducer; import com.yahoo.jdisc.http.ServerConfig; import com.yahoo.vespa.model.container.component.chain.ChainedComponent; @@ -17,7 +17,7 @@ import java.util.concurrent.CopyOnWriteArrayList; * @author Tony Vaagenes * @author bjorncs */ -public class Http extends AbstractConfigProducer> implements ServerConfig.Producer { +public class Http extends TreeConfigProducer> implements ServerConfig.Producer { private final FilterChains filterChains; private final List bindings = new CopyOnWriteArrayList<>(); 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 71d3bb8711e..283a6c76e39 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,7 +2,7 @@ package com.yahoo.vespa.model.container.http.xml; import com.yahoo.config.model.deploy.DeployState; -import com.yahoo.config.model.producer.AbstractConfigProducer; +import com.yahoo.config.model.producer.TreeConfigProducer; import com.yahoo.text.XML; import com.yahoo.vespa.model.builder.xml.dom.DomComponentBuilder; import com.yahoo.vespa.model.builder.xml.dom.VespaDomBuilder; @@ -18,7 +18,7 @@ import org.w3c.dom.Element; public class FilterBuilder extends VespaDomBuilder.DomConfigProducerBuilder { @Override - protected Filter doBuild(DeployState deployState, AbstractConfigProducer ancestor, Element filterElement) { + protected Filter doBuild(DeployState deployState, TreeConfigProducer 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 7b81b3052a4..560748bf671 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,7 +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.AbstractConfigProducer; +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; import com.yahoo.vespa.model.container.http.HttpFilterChain; @@ -27,7 +27,7 @@ public class FilterChainBuilder extends DomChainBuilderBase ancestor, Element producerSpec, ChainSpecification specWithoutInnerComponents) { + protected HttpFilterChain buildChain(DeployState deployState, TreeConfigProducer 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 6325ee8da05..cef9a5ffd96 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,7 +2,7 @@ package com.yahoo.vespa.model.container.http.xml; import com.yahoo.config.model.deploy.DeployState; -import com.yahoo.config.model.producer.AbstractConfigProducer; +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; import com.yahoo.vespa.model.builder.xml.dom.chains.ComponentsBuilder.ComponentType; @@ -35,14 +35,14 @@ public class FilterChainsBuilder extends DomChainsBuilder parent) { + protected FilterChains newChainsInstance(TreeConfigProducer parent) { return new FilterChains(parent); } @Override protected ChainsBuilder readChains( DeployState deployState, - AbstractConfigProducer ancestor, + TreeConfigProducer ancestor, List allChainsElems, Map> 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 a42d4a665ff..81d0ab95d48 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 @@ -4,7 +4,8 @@ package com.yahoo.vespa.model.container.http.xml; import com.yahoo.component.ComponentSpecification; import com.yahoo.config.model.builder.xml.XmlHelper; import com.yahoo.config.model.deploy.DeployState; -import com.yahoo.config.model.producer.AbstractConfigProducer; +import com.yahoo.config.model.producer.AnyConfigProducer; +import com.yahoo.config.model.producer.TreeConfigProducer; import com.yahoo.config.provision.AthenzDomain; import com.yahoo.text.XML; import com.yahoo.vespa.defaults.Defaults; @@ -34,7 +35,7 @@ public class HttpBuilder extends VespaDomBuilder.DomConfigProducerBuilder static final List VALID_FILTER_CHAIN_TAG_NAMES = List.of(REQUEST_CHAIN_TAG_NAME, RESPONSE_CHAIN_TAG_NAME); @Override - protected Http doBuild(DeployState deployState, AbstractConfigProducer ancestor, Element spec) { + protected Http doBuild(DeployState deployState, TreeConfigProducer ancestor, Element spec) { FilterChains filterChains; List bindings = new ArrayList<>(); AccessControl accessControl = null; @@ -66,7 +67,7 @@ public class HttpBuilder extends VespaDomBuilder.DomConfigProducerBuilder return http; } - private AccessControl buildAccessControl(DeployState deployState, AbstractConfigProducer ancestor, Element accessControlElem) { + private AccessControl buildAccessControl(DeployState deployState, TreeConfigProducer ancestor, Element accessControlElem) { AthenzDomain domain = getAccessControlDomain(deployState, accessControlElem); AccessControl.Builder builder = new AccessControl.Builder(domain.value()); @@ -129,8 +130,8 @@ public class HttpBuilder extends VespaDomBuilder.DomConfigProducerBuilder return tenantDomain != null ? tenantDomain : explicitDomain; } - private static Optional getContainerCluster(AbstractConfigProducer configProducer) { - AbstractConfigProducer currentProducer = configProducer; + private static Optional getContainerCluster(TreeConfigProducer configProducer) { + AnyConfigProducer currentProducer = configProducer; while (! ApplicationContainerCluster.class.isAssignableFrom(currentProducer.getClass())) { currentProducer = currentProducer.getParent(); if (currentProducer == 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 8a89355ee36..28bdec31e05 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,7 +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.AbstractConfigProducer; +import com.yahoo.config.model.producer.TreeConfigProducer; import com.yahoo.text.XML; import com.yahoo.vespa.model.builder.xml.dom.ModelElement; import com.yahoo.vespa.model.builder.xml.dom.VespaDomBuilder; @@ -26,7 +26,7 @@ import java.util.Optional; public class JettyConnectorBuilder extends VespaDomBuilder.DomConfigProducerBuilder { @Override - protected ConnectorFactory doBuild(DeployState deployState, AbstractConfigProducer ancestor, Element serverSpec) { + protected ConnectorFactory doBuild(DeployState deployState, TreeConfigProducer 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 e7bab901fa7..27ff9c3375c 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,7 +2,7 @@ package com.yahoo.vespa.model.container.http.xml; import com.yahoo.config.model.deploy.DeployState; -import com.yahoo.config.model.producer.AbstractConfigProducer; +import com.yahoo.config.model.producer.TreeConfigProducer; import com.yahoo.text.XML; import com.yahoo.vespa.model.builder.xml.dom.VespaDomBuilder; import com.yahoo.vespa.model.container.ContainerCluster; @@ -22,7 +22,7 @@ public class JettyHttpServerBuilder extends VespaDomBuilder.DomConfigProducerBui } @Override - protected JettyHttpServer doBuild(DeployState deployState, AbstractConfigProducer ancestor, Element http) { + protected JettyHttpServer doBuild(DeployState deployState, TreeConfigProducer 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 356aa1640a6..f6519e04122 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 @@ -1,7 +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.container.processing; -import com.yahoo.config.model.producer.AbstractConfigProducer; +import com.yahoo.config.model.producer.TreeConfigProducer; import com.yahoo.vespa.model.container.component.BindingPattern; import com.yahoo.vespa.model.container.component.SystemBindingPattern; import com.yahoo.vespa.model.container.component.chain.Chains; @@ -16,7 +16,7 @@ public class ProcessingChains extends Chains { public static final BindingPattern[] defaultBindings = new BindingPattern[]{SystemBindingPattern.fromHttpPath("/processing/*")}; - public ProcessingChains(AbstractConfigProducer parent, String subId) { + public ProcessingChains(TreeConfigProducer parent, String subId) { super(parent, subId); } diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/search/DispatcherComponent.java b/config-model/src/main/java/com/yahoo/vespa/model/container/search/DispatcherComponent.java index bfa3bfc5f9f..f9a3a1f1990 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/container/search/DispatcherComponent.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/container/search/DispatcherComponent.java @@ -1,7 +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.container.search; -import com.yahoo.config.model.producer.AbstractConfigProducer; +import com.yahoo.config.model.producer.TreeConfigProducer; import com.yahoo.osgi.provider.model.ComponentModel; import com.yahoo.vespa.config.search.DispatchConfig; import com.yahoo.vespa.config.search.DispatchNodesConfig; @@ -15,7 +15,7 @@ import com.yahoo.vespa.model.search.IndexedSearchCluster; * * @author bratseth */ -public class DispatcherComponent extends Component, ComponentModel> implements +public class DispatcherComponent extends Component, ComponentModel> implements DispatchConfig.Producer, DispatchNodesConfig.Producer { 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 739ff0e5e69..33f755e9571 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 @@ -3,7 +3,7 @@ package com.yahoo.vespa.model.container.search.searchchain; import com.yahoo.collections.CollectionUtil; import com.yahoo.component.provider.ComponentRegistry; -import com.yahoo.config.model.producer.AbstractConfigProducer; +import com.yahoo.config.model.producer.TreeConfigProducer; import com.yahoo.vespa.model.container.component.chain.Chains; import com.yahoo.vespa.model.search.SearchCluster; import com.yahoo.vespa.model.container.search.searchchain.defaultsearchchains.LocalClustersCreator; @@ -21,7 +21,7 @@ public class SearchChains extends Chains { private final SourceGroupRegistry sourceGroups = new SourceGroupRegistry(); - public SearchChains(AbstractConfigProducer parent, String subId) { + public SearchChains(TreeConfigProducer parent, String subId) { super(parent, subId); } diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/search/searchchain/Searcher.java b/config-model/src/main/java/com/yahoo/vespa/model/container/search/searchchain/Searcher.java index a24a12d0160..5eeaa8864e9 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/container/search/searchchain/Searcher.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/container/search/searchchain/Searcher.java @@ -2,7 +2,7 @@ package com.yahoo.vespa.model.container.search.searchchain; import com.yahoo.component.chain.model.ChainedComponentModel; -import com.yahoo.config.model.producer.AbstractConfigProducer; +import com.yahoo.config.model.producer.TreeConfigProducer; import com.yahoo.vespa.model.container.component.chain.ChainedComponent; /** @@ -16,7 +16,7 @@ public class Searcher extends ChainedComponent< } protected SearchChains getSearchChains() { - AbstractConfigProducer ancestor = getParent(); + var ancestor = getParent(); while (!(ancestor instanceof SearchChains)) { ancestor = ancestor.getParent(); } diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/search/searchchain/Source.java b/config-model/src/main/java/com/yahoo/vespa/model/container/search/searchchain/Source.java index 49c1a066982..7145467e63e 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/container/search/searchchain/Source.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/container/search/searchchain/Source.java @@ -4,7 +4,7 @@ package com.yahoo.vespa.model.container.search.searchchain; import com.yahoo.component.ComponentId; import com.yahoo.component.chain.model.ChainSpecification; import com.yahoo.search.searchchain.model.federation.FederationOptions; -import com.yahoo.config.model.producer.AbstractConfigProducer; +import com.yahoo.config.model.producer.TreeConfigProducer; import java.util.Arrays; @@ -41,7 +41,7 @@ public class Source extends GenericTarget { } public Provider getParentProvider() { - AbstractConfigProducer parent = getParent(); + var parent = getParent(); while (!(parent instanceof Provider)) { parent = parent.getParent(); } 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 4a264f1eebc..fc47ec8a724 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,7 +2,7 @@ package com.yahoo.vespa.model.container.xml; import com.yahoo.config.model.deploy.DeployState; -import com.yahoo.config.model.producer.AbstractConfigProducer; +import com.yahoo.config.model.producer.TreeConfigProducer; import com.yahoo.vespa.model.builder.xml.dom.VespaDomBuilder; import com.yahoo.vespa.model.container.ContainerCluster; import com.yahoo.vespa.model.container.component.AccessLogComponent; @@ -50,7 +50,7 @@ public class AccessLogBuilder { } @Override - protected AccessLogComponent doBuild(DeployState deployState, AbstractConfigProducer ancestor, Element spec) { + protected AccessLogComponent doBuild(DeployState deployState, TreeConfigProducer 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 d93487ca88d..76526ca0b1e 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,7 +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.AbstractConfigProducer; +import com.yahoo.config.model.producer.TreeConfigProducer; import com.yahoo.config.provision.AthenzDomain; import com.yahoo.config.provision.AthenzService; import com.yahoo.config.provision.Capacity; @@ -193,7 +193,7 @@ public class ContainerModelBuilder extends ConfigModelBuilder { private ApplicationContainerCluster createContainerCluster(Element spec, ConfigModelContext modelContext) { return new VespaDomBuilder.DomConfigProducerBuilder() { @Override - protected ApplicationContainerCluster doBuild(DeployState deployState, AbstractConfigProducer ancestor, Element producerSpec) { + protected ApplicationContainerCluster doBuild(DeployState deployState, TreeConfigProducer 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 13f5f70e6c0..32de7161a93 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,7 +2,7 @@ package com.yahoo.vespa.model.container.xml; import com.yahoo.config.model.deploy.DeployState; -import com.yahoo.config.model.producer.AbstractConfigProducer; +import com.yahoo.config.model.producer.TreeConfigProducer; import com.yahoo.vespa.model.builder.xml.dom.VespaDomBuilder; import com.yahoo.vespa.model.container.ApplicationContainer; import org.w3c.dom.Element; @@ -21,7 +21,7 @@ public class ContainerServiceBuilder extends VespaDomBuilder.DomConfigProducerBu } @Override - protected ApplicationContainer doBuild(DeployState deployState, AbstractConfigProducer parent, Element nodeElem) { + protected ApplicationContainer doBuild(DeployState deployState, TreeConfigProducer parent, Element nodeElem) { return new ApplicationContainer(parent, id, index, deployState); } diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/xml/document/DocumentFactoryBuilder.java b/config-model/src/main/java/com/yahoo/vespa/model/container/xml/document/DocumentFactoryBuilder.java index 7f3d7981bb6..fa835c0c2e9 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/container/xml/document/DocumentFactoryBuilder.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/container/xml/document/DocumentFactoryBuilder.java @@ -1,7 +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.container.xml.document; -import com.yahoo.config.model.producer.AbstractConfigProducer; +import com.yahoo.config.model.producer.TreeConfigProducer; import com.yahoo.container.bundle.BundleInstantiationSpecification; import com.yahoo.osgi.provider.model.ComponentModel; import com.yahoo.text.XML; @@ -30,7 +30,7 @@ public class DocumentFactoryBuilder { String pkg = clazz.substring(0, clazz.lastIndexOf('.')); String concDocFactory=pkg+"."+CONCRETE_DOC_FACTORY_CLASS; String bundle = e.getAttribute("bundle"); - Component, ComponentModel> component = new Component<>( + Component, ComponentModel> component = new Component<>( new ComponentModel(BundleInstantiationSpecification.fromStrings(concDocFactory, concDocFactory, bundle))); if (!cluster.getComponentsMap().containsKey(component.getComponentId())) cluster.addComponent(component); types.put(type, concDocFactory); 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 df70f7c3158..31e22b8fe6a 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,7 +2,7 @@ package com.yahoo.vespa.model.content; import com.yahoo.config.model.deploy.DeployState; -import com.yahoo.config.model.producer.AbstractConfigProducer; +import com.yahoo.config.model.producer.TreeConfigProducer; import com.yahoo.config.model.producer.AbstractConfigProducerRoot; import com.yahoo.vespa.config.content.FleetcontrollerConfig; import com.yahoo.vespa.model.VespaModel; @@ -16,7 +16,7 @@ import org.w3c.dom.Element; * * TODO: Author */ -public class ClusterControllerConfig extends AbstractConfigProducer implements FleetcontrollerConfig.Producer { +public class ClusterControllerConfig extends TreeConfigProducer implements FleetcontrollerConfig.Producer { public static class Builder extends VespaDomBuilder.DomConfigProducerBuilder { private final String clusterName; @@ -30,7 +30,7 @@ public class ClusterControllerConfig extends AbstractConfigProducer ancestor, Element producerSpec) { + protected ClusterControllerConfig doBuild(DeployState deployState, TreeConfigProducer ancestor, Element producerSpec) { ModelElement tuning = null; ModelElement clusterTuning = clusterElement.child("tuning"); @@ -75,7 +75,7 @@ public class ClusterControllerConfig extends AbstractConfigProducer parent, + private ClusterControllerConfig(TreeConfigProducer parent, String clusterName, Duration initProgressTime, Duration transitionTime, 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 a0053b839c2..383743a0d2e 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,7 +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.AbstractConfigProducer; +import com.yahoo.config.model.producer.TreeConfigProducer; import com.yahoo.vespa.model.AbstractService; import com.yahoo.vespa.model.HostResource; import com.yahoo.vespa.model.SimpleConfigProducer; @@ -290,7 +290,7 @@ public class Content extends ConfigModel { ConfigModelContext modelContext, ApplicationConfigProducerRoot root) { String indexerName = cluster.getIndexingClusterName(); - AbstractConfigProducer parent = root.getChildren().get(DOCPROC_RESERVED_NAME); + TreeConfigProducer parent = root.getChildren().get(DOCPROC_RESERVED_NAME); if (parent == null) parent = new SimpleConfigProducer(root, DOCPROC_RESERVED_NAME); ApplicationContainerCluster indexingCluster = new ApplicationContainerCluster(parent, "cluster." + indexerName, indexerName, modelContext.getDeployState()); diff --git a/config-model/src/main/java/com/yahoo/vespa/model/content/ContentNode.java b/config-model/src/main/java/com/yahoo/vespa/model/content/ContentNode.java index c52bb6fa2de..cbcc28c7003 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/content/ContentNode.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/content/ContentNode.java @@ -6,7 +6,7 @@ import com.yahoo.metrics.MetricsmanagerConfig; import com.yahoo.vespa.config.content.core.StorCommunicationmanagerConfig; import com.yahoo.vespa.config.content.core.StorServerConfig; import com.yahoo.vespa.config.content.core.StorStatusConfig; -import com.yahoo.config.model.producer.AbstractConfigProducer; +import com.yahoo.config.model.producer.TreeConfigProducer; import com.yahoo.vespa.model.AbstractService; import com.yahoo.vespa.model.PortAllocBridge; import com.yahoo.vespa.model.application.validation.RestartConfigs; @@ -27,7 +27,7 @@ public abstract class ContentNode extends AbstractService private final int rpc_num_targets; private final int rpc_events_before_wakeup; - public ContentNode(ModelContext.FeatureFlags featureFlags, AbstractConfigProducer parent, String clusterName, String rootDirectory, int distributionKey) { + public ContentNode(ModelContext.FeatureFlags featureFlags, TreeConfigProducer parent, String clusterName, String rootDirectory, int distributionKey) { super(parent, "" + distributionKey); this.distributionKey = distributionKey; this.rootDirectory = rootDirectory; 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 d4a41a090b9..5b60f9492f4 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,7 +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.AbstractConfigProducer; +import com.yahoo.config.model.producer.TreeConfigProducer; import com.yahoo.documentmodel.NewDocumentType; import com.yahoo.schema.Schema; import com.yahoo.schema.derived.SchemaInfo; @@ -39,7 +39,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 AbstractConfigProducer implements +public class ContentSearchCluster extends TreeConfigProducer implements ProtonConfig.Producer, DispatchNodesConfig.Producer, DispatchConfig.Producer @@ -94,7 +94,7 @@ public class ContentSearchCluster extends AbstractConfigProducer } @Override - protected ContentSearchCluster doBuild(DeployState deployState, AbstractConfigProducer ancestor, Element producerSpec) { + protected ContentSearchCluster doBuild(DeployState deployState, TreeConfigProducer ancestor, Element producerSpec) { ModelElement clusterElem = new ModelElement(producerSpec); String clusterName = ContentCluster.getClusterId(clusterElem); Boolean flushOnShutdownElem = clusterElem.childAsBoolean("engine.proton.flush-on-shutdown"); @@ -195,7 +195,7 @@ public class ContentSearchCluster extends AbstractConfigProducer } } - private ContentSearchCluster(AbstractConfigProducer parent, + private ContentSearchCluster(TreeConfigProducer parent, String clusterName, ModelContext.FeatureFlags featureFlags, Map documentDefinitions, @@ -267,7 +267,7 @@ public class ContentSearchCluster extends AbstractConfigProducer } public void addSearchNode(DeployState deployState, ContentNode node, StorageGroup parentGroup, ModelElement element) { - AbstractConfigProducer parent = hasIndexedCluster() ? getIndexed() : this; + TreeConfigProducer 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 921d49abc07..c7ac5eea905 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,7 +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.AbstractConfigProducer; +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; import com.yahoo.vespa.model.content.engines.PersistenceEngine; @@ -29,7 +29,7 @@ public class Distributor extends ContentNode implements StorDistributormanagerCo } @Override - protected Distributor doBuild(DeployState deployState, AbstractConfigProducer ancestor, Element producerSpec) { + protected Distributor doBuild(DeployState deployState, TreeConfigProducer 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 6ca5ba3a8ca..dbe387952e0 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,7 +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.AbstractConfigProducer; +import com.yahoo.config.model.producer.TreeConfigProducer; import com.yahoo.metrics.MetricsmanagerConfig; import com.yahoo.vespa.model.builder.xml.dom.ModelElement; import com.yahoo.vespa.model.builder.xml.dom.VespaDomBuilder; @@ -18,7 +18,7 @@ import java.util.logging.Logger; /** * Generates distributor-specific configuration. */ -public class DistributorCluster extends AbstractConfigProducer implements +public class DistributorCluster extends TreeConfigProducer implements StorDistributormanagerConfig.Producer, StorServerConfig.Producer, MetricsmanagerConfig.Producer { @@ -86,7 +86,7 @@ public class DistributorCluster extends AbstractConfigProducer impl } @Override - protected DistributorCluster doBuild(DeployState deployState, AbstractConfigProducer ancestor, Element producerSpec) { + protected DistributorCluster doBuild(DeployState deployState, TreeConfigProducer 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/StorageNode.java b/config-model/src/main/java/com/yahoo/vespa/model/content/StorageNode.java index 8b4a7451eb1..3d4057d6dcd 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,7 +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.AbstractConfigProducer; +import com.yahoo.config.model.producer.TreeConfigProducer; import com.yahoo.vespa.config.content.StorFilestorConfig; import com.yahoo.vespa.config.content.core.StorBucketmoverConfig; import com.yahoo.vespa.config.content.core.StorServerConfig; @@ -32,7 +32,7 @@ public class StorageNode extends ContentNode implements StorServerConfig.Produce public static class Builder extends VespaDomBuilder.DomConfigProducerBuilder { @Override - protected StorageNode doBuild(DeployState deployState, AbstractConfigProducer ancestor, Element producerSpec) { + protected StorageNode doBuild(DeployState deployState, TreeConfigProducer 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 +67,7 @@ public class StorageNode extends ContentNode implements StorServerConfig.Produce public boolean isRetired() { return retired; } private boolean isProviderProton() { - for (AbstractConfigProducer producer : getChildren().values()) { + for (TreeConfigProducer producer : getChildren().values()) { if (producer instanceof ProtonProvider) { return true; } @@ -81,7 +81,7 @@ public class StorageNode extends ContentNode implements StorServerConfig.Produce builder.node_capacity(getCapacity()); - for (AbstractConfigProducer producer : getChildren().values()) { + for (TreeConfigProducer 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 2d8d89e3bd2..2acf07d954c 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,7 +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.AbstractConfigProducer; +import com.yahoo.config.model.producer.TreeConfigProducer; import com.yahoo.config.provision.ClusterMembership; import com.yahoo.config.provision.ClusterSpec; import com.yahoo.config.provision.Environment; @@ -69,7 +69,7 @@ import java.util.logging.Level; * @author mostly somebody unknown * @author bratseth */ -public class ContentCluster extends AbstractConfigProducer> implements +public class ContentCluster extends TreeConfigProducer> implements DistributionConfig.Producer, StorDistributionConfig.Producer, StorDistributormanagerConfig.Producer, @@ -344,7 +344,7 @@ public class ContentCluster extends AbstractConfigProducer parent, + private ClusterControllerContainerCluster createClusterControllers(TreeConfigProducer parent, Collection hosts, String name, boolean runStandaloneZooKeeper, @@ -385,7 +385,7 @@ public class ContentCluster extends AbstractConfigProducer parent, String clusterId, + private ContentCluster(TreeConfigProducer parent, String clusterId, Map documentDefinitions, Set globallyDistributedDocuments, String routingSelection, Zone zone, boolean isHosted) { 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 d8e659080ae..992ce4d906b 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,15 @@ 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.AbstractConfigProducer; +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 AbstractConfigProducer implements StorServerConfig.Producer { +public abstract class PersistenceEngine extends TreeConfigProducer implements StorServerConfig.Producer { - public PersistenceEngine(AbstractConfigProducer parent, String name) { + public PersistenceEngine(TreeConfigProducer 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 9b59f6db742..9f155c1e01d 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,7 +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.AbstractConfigProducer; +import com.yahoo.config.model.producer.TreeConfigProducer; import com.yahoo.vespa.model.builder.xml.dom.VespaDomBuilder; import com.yahoo.vespa.model.content.cluster.ContentCluster; import com.yahoo.vespa.model.builder.xml.dom.ModelElement; @@ -19,7 +19,7 @@ import org.w3c.dom.Element; /** * Represents configuration that is common to all storage nodes. */ -public class StorageCluster extends AbstractConfigProducer +public class StorageCluster extends TreeConfigProducer implements StorServerConfig.Producer, StorBucketmoverConfig.Producer, StorIntegritycheckerConfig.Producer, @@ -30,7 +30,7 @@ public class StorageCluster extends AbstractConfigProducer { public static class Builder extends VespaDomBuilder.DomConfigProducerBuilder { @Override - protected StorageCluster doBuild(DeployState deployState, AbstractConfigProducer ancestor, Element producerSpec) { + protected StorageCluster doBuild(DeployState deployState, TreeConfigProducer ancestor, Element producerSpec) { final ModelElement clusterElem = new ModelElement(producerSpec); final ContentCluster cluster = (ContentCluster)ancestor; @@ -51,7 +51,7 @@ public class StorageCluster extends AbstractConfigProducer private final StorVisitorProducer storVisitorProducer; private final PersistenceProducer persistenceProducer; - StorageCluster(AbstractConfigProducer parent, + StorageCluster(TreeConfigProducer parent, String clusterName, FileStorProducer fileStorProducer, IntegrityCheckerProducer integrityCheckerProducer, diff --git a/config-model/src/main/java/com/yahoo/vespa/model/filedistribution/FileDistributionConfigProducer.java b/config-model/src/main/java/com/yahoo/vespa/model/filedistribution/FileDistributionConfigProducer.java index 34041217b0a..4af59bee5f0 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/filedistribution/FileDistributionConfigProducer.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/filedistribution/FileDistributionConfigProducer.java @@ -1,7 +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.filedistribution; -import com.yahoo.config.model.producer.AbstractConfigProducer; +import com.yahoo.config.model.producer.TreeConfigProducer; import com.yahoo.vespa.model.Host; import java.util.IdentityHashMap; @@ -12,11 +12,11 @@ import java.util.Map; * * @author hmusum */ -public class FileDistributionConfigProducer extends AbstractConfigProducer> { +public class FileDistributionConfigProducer extends TreeConfigProducer> { private final Map fileDistributionConfigProviders = new IdentityHashMap<>(); - public FileDistributionConfigProducer(AbstractConfigProducer parent) { + public FileDistributionConfigProducer(TreeConfigProducer parent) { super(parent, "filedistribution"); } diff --git a/config-model/src/main/java/com/yahoo/vespa/model/filedistribution/FileDistributionConfigProvider.java b/config-model/src/main/java/com/yahoo/vespa/model/filedistribution/FileDistributionConfigProvider.java index bf776ecf623..b6617a6aa50 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/filedistribution/FileDistributionConfigProvider.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/filedistribution/FileDistributionConfigProvider.java @@ -2,15 +2,15 @@ package com.yahoo.vespa.model.filedistribution; import com.yahoo.cloud.config.filedistribution.FiledistributorrpcConfig; -import com.yahoo.config.model.producer.AbstractConfigProducer; +import com.yahoo.config.model.producer.TreeConfigProducer; import com.yahoo.vespa.model.ConfigProxy; import com.yahoo.vespa.model.Host; -public class FileDistributionConfigProvider extends AbstractConfigProducer> implements FiledistributorrpcConfig.Producer { +public class FileDistributionConfigProvider extends TreeConfigProducer> implements FiledistributorrpcConfig.Producer { private final Host host; - public FileDistributionConfigProvider(AbstractConfigProducer parent, Host host) { + public FileDistributionConfigProvider(TreeConfigProducer parent, Host host) { super(parent, host.getHostname()); this.host = host; } diff --git a/config-model/src/main/java/com/yahoo/vespa/model/package-info.java b/config-model/src/main/java/com/yahoo/vespa/model/package-info.java index be1506c9418..bed513ef39c 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/package-info.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/package-info.java @@ -8,18 +8,18 @@ href="#plugin_loading">plugin loading and currently instantiates one {@link com.yahoo.config.model.ApplicationConfigProducerRoot Vespa} object. VespaModel is the root node in a tree of {@link -com.yahoo.config.model.producer.AbstractConfigProducer - AbstractConfigProducers} that is built from the structure of the +com.yahoo.config.model.producer.TreeConfigProducer + TreeConfigProducers} that is built from the structure of the user's specification. In a future version, the VespaModel can contain multiple Vespa instances, each built from a separate user specification (currently called 'services.xml').

-

Each AbstractConfigProducer in the tree represents an actual +

Each TreeConfigProducer in the tree represents an actual service or another logical unit in the Vespa system. An example of a logical unit is a cluster that holds a set of services. Each - child class of {@link com.yahoo.config.model.producer.AbstractConfigProducer - AbstractConfigProducer} can contain hard-wired config that should + child class of {@link com.yahoo.config.model.producer.TreeConfigProducer + TreeConfigProducer} can contain hard-wired config that should be delivered to the Vespa unit it represents, and its children. It can also keep track of the status of the unit.

@@ -83,7 +83,7 @@ com.yahoo.config.model.producer.AbstractConfigProducer could look like this: VespaModel.getConfig(builder, "grandchild_0"). This triggers a call to the {@link - com.yahoo.config.model.producer.AbstractConfigProducer#cascadeConfig(com.yahoo.config.ConfigInstance.Builder)}) AbstractConfigProducer.cascadeConfig} method for + com.yahoo.config.model.producer.TreeConfigProducer#cascadeConfig(com.yahoo.config.ConfigInstance.Builder)}) TreeConfigProducer.cascadeConfig} method for grandchild_0 which calls the same method in child_0, and finally in the VespaModel root node, where the {@link com.yahoo.vespa.model.VespaModel#getConfig(com.yahoo.config.ConfigInstance.Builder,String) @@ -120,8 +120,8 @@ com.yahoo.config.model.builder.xml.ConfigModelBuilder ConfigModelBuilder}. The
  • The constructors of all child classes of {@link -com.yahoo.config.model.producer.AbstractConfigProducer - AbstractConfigProducer} should throw a new 'RuntimeException' upon +com.yahoo.config.model.producer.TreeConfigProducer + TreeConfigProducer} should throw a new 'RuntimeException' upon errors in xml or other initialization problems. This allows the exception to be nested upwards, adding valuable information from each level in the ConfigProducer tree to the error message output diff --git a/config-model/src/main/java/com/yahoo/vespa/model/search/DocumentDatabase.java b/config-model/src/main/java/com/yahoo/vespa/model/search/DocumentDatabase.java index 46e15d96b55..9a05f6af322 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/search/DocumentDatabase.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/search/DocumentDatabase.java @@ -1,7 +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.search; -import com.yahoo.config.model.producer.AbstractConfigProducer; +import com.yahoo.config.model.producer.TreeConfigProducer; import com.yahoo.search.config.IndexInfoConfig; import com.yahoo.search.config.SchemaInfoConfig; import com.yahoo.schema.derived.DerivedConfiguration; @@ -21,7 +21,7 @@ import com.yahoo.vespa.configdefinition.IlscriptsConfig; * * @author geirst */ -public class DocumentDatabase extends AbstractConfigProducer implements +public class DocumentDatabase extends TreeConfigProducer implements IndexInfoConfig.Producer, IlscriptsConfig.Producer, AttributesConfig.Producer, @@ -38,7 +38,7 @@ public class DocumentDatabase extends AbstractConfigProducer i private final String schemaName; private final DerivedConfiguration derivedCfg; - public DocumentDatabase(AbstractConfigProducer parent, String schemaName, DerivedConfiguration derivedCfg) { + public DocumentDatabase(TreeConfigProducer parent, String schemaName, DerivedConfiguration derivedCfg) { super(parent, schemaName); this.schemaName = schemaName; this.derivedCfg = derivedCfg; 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 8e71de136e9..b7ae142adcc 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,7 +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.AbstractConfigProducer; +import com.yahoo.config.model.producer.TreeConfigProducer; import com.yahoo.prelude.fastsearch.DocumentdbInfoConfig; import com.yahoo.search.config.IndexInfoConfig; import com.yahoo.search.config.SchemaInfoConfig; @@ -73,7 +73,7 @@ public class IndexedSearchCluster extends SearchCluster return routingSelector; } - public IndexedSearchCluster(AbstractConfigProducer parent, String clusterName, int index, ModelContext.FeatureFlags featureFlags) { + public IndexedSearchCluster(TreeConfigProducer parent, String clusterName, int index, ModelContext.FeatureFlags featureFlags) { super(parent, clusterName, index); documentDbsConfigProducer = new MultipleDocumentDatabasesConfigProducer(this, documentDbs); rootDispatch = new DispatchGroup(this); @@ -351,7 +351,7 @@ public class IndexedSearchCluster extends SearchCluster * which is the parent to this. This avoids building the config multiple times. */ public static class MultipleDocumentDatabasesConfigProducer - extends AbstractConfigProducer + extends TreeConfigProducer implements AttributesConfig.Producer, IndexInfoConfig.Producer, IlscriptsConfig.Producer, @@ -359,7 +359,7 @@ public class IndexedSearchCluster extends SearchCluster RankProfilesConfig.Producer { private final List docDbs; - private MultipleDocumentDatabasesConfigProducer(AbstractConfigProducer parent, List docDbs) { + private MultipleDocumentDatabasesConfigProducer(TreeConfigProducer parent, List docDbs) { super(parent, "union"); this.docDbs = docDbs; } 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 c5f5c9a99a5..3e55be8825b 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,7 +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.AbstractConfigProducer; +import com.yahoo.config.model.producer.TreeConfigProducer; import java.util.Collections; import java.util.LinkedHashMap; @@ -21,7 +21,7 @@ import java.util.Map; * * @author arnej27959 */ -public abstract class SearchCluster extends AbstractConfigProducer +public abstract class SearchCluster extends TreeConfigProducer implements DocumentdbInfoConfig.Producer, IndexInfoConfig.Producer, @@ -34,7 +34,7 @@ public abstract class SearchCluster extends AbstractConfigProducer schemas = new LinkedHashMap<>(); - public SearchCluster(AbstractConfigProducer parent, String clusterName, int index) { + public SearchCluster(TreeConfigProducer parent, String clusterName, int index) { super(parent, "cluster." + clusterName); this.clusterName = clusterName; this.index = index; 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 2a211d0e1ce..8df98e1ee6e 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,7 +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.AbstractConfigProducer; +import com.yahoo.config.model.producer.TreeConfigProducer; import com.yahoo.config.provision.NodeResources; import com.yahoo.metrics.MetricsmanagerConfig; import com.yahoo.searchlib.TranslogserverConfig; @@ -94,7 +94,7 @@ public class SearchNode extends AbstractService implements } @Override - protected SearchNode doBuild(DeployState deployState, AbstractConfigProducer ancestor, Element producerSpec) { + protected SearchNode doBuild(DeployState deployState, TreeConfigProducer ancestor, Element producerSpec) { return SearchNode.create(ancestor, name, contentNode.getDistributionKey(), nodeSpec, clusterName, contentNode, flushOnShutdown, tuning, resourceLimits, deployState.isHosted(), fractionOfMemoryReserved, deployState.featureFlags()); @@ -102,7 +102,7 @@ public class SearchNode extends AbstractService implements } - public static SearchNode create(AbstractConfigProducer parent, String name, int distributionKey, NodeSpec nodeSpec, + public static SearchNode create(TreeConfigProducer parent, String name, int distributionKey, NodeSpec nodeSpec, String clusterName, AbstractService serviceLayerService, boolean flushOnShutdown, Optional tuning, Optional resourceLimits, boolean isHostedVespa, double fractionOfMemoryReserved, ModelContext.FeatureFlags featureFlags) { @@ -117,7 +117,7 @@ public class SearchNode extends AbstractService implements return node; } - private SearchNode(AbstractConfigProducer parent, String name, int distributionKey, NodeSpec nodeSpec, + private SearchNode(TreeConfigProducer parent, String name, int distributionKey, NodeSpec nodeSpec, String clusterName, AbstractService serviceLayerService, boolean flushOnShutdown, Optional tuning, Optional resourceLimits, boolean isHostedVespa, double fractionOfMemoryReserved) { 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 947079fb115..93ade261c14 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,7 +2,7 @@ package com.yahoo.vespa.model.search; import com.yahoo.config.model.deploy.DeployState; -import com.yahoo.config.model.producer.AbstractConfigProducer; +import com.yahoo.config.model.producer.TreeConfigProducer; import com.yahoo.prelude.fastsearch.DocumentdbInfoConfig; import com.yahoo.schema.Schema; import com.yahoo.schema.derived.AttributeFields; @@ -34,7 +34,7 @@ public class StreamingSearchCluster extends SearchCluster implements private final String docTypeName; private DerivedConfiguration derivedConfig = null; - public StreamingSearchCluster(AbstractConfigProducer parent, + public StreamingSearchCluster(TreeConfigProducer parent, String clusterName, int index, String docTypeName, @@ -123,9 +123,9 @@ public class StreamingSearchCluster extends SearchCluster implements derivedConfig.getSummaries().getConfig(builder); } - private class AttributesProducer extends AbstractConfigProducer implements AttributesConfig.Producer { + private class AttributesProducer extends TreeConfigProducer implements AttributesConfig.Producer { - AttributesProducer(AbstractConfigProducer parent, String docType) { + AttributesProducer(TreeConfigProducer parent, String docType) { super(parent, docType); } 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 b75a84cb8fc..1533120d408 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,7 +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.AbstractConfigProducer; +import com.yahoo.config.model.producer.TreeConfigProducer; import com.yahoo.vespa.model.AbstractService; import com.yahoo.vespa.model.PortAllocBridge; import com.yahoo.vespa.model.builder.xml.dom.VespaDomBuilder; @@ -16,7 +16,7 @@ public class TransactionLogServer extends AbstractService { private final Boolean useFsync; - public TransactionLogServer(AbstractConfigProducer searchNode, String clusterName, Boolean useFsync) { + public TransactionLogServer(TreeConfigProducer searchNode, String clusterName, Boolean useFsync) { super(searchNode, "transactionlogserver"); portsMeta.on(0).tag("tls"); this.useFsync = useFsync; @@ -34,7 +34,7 @@ public class TransactionLogServer extends AbstractService { } @Override - protected TransactionLogServer doBuild(DeployState deployState, AbstractConfigProducer ancestor, Element producerSpec) { + protected TransactionLogServer doBuild(DeployState deployState, TreeConfigProducer ancestor, Element producerSpec) { return new TransactionLogServer(ancestor, clusterName, useFsync); } diff --git a/config-model/src/main/java/com/yahoo/vespa/model/search/Tuning.java b/config-model/src/main/java/com/yahoo/vespa/model/search/Tuning.java index 2f28da60e7b..9d990b03d56 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/search/Tuning.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/search/Tuning.java @@ -1,7 +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.search; -import com.yahoo.config.model.producer.AbstractConfigProducer; +import com.yahoo.config.model.producer.TreeConfigProducer; import com.yahoo.vespa.config.search.core.ProtonConfig; import com.yahoo.vespa.model.content.DispatchTuning; @@ -13,7 +13,7 @@ import static com.yahoo.text.Lowercase.toLowerCase; * * @author geirst */ -public class Tuning extends AbstractConfigProducer implements ProtonConfig.Producer { +public class Tuning extends TreeConfigProducer implements ProtonConfig.Producer { public static class SearchNode implements ProtonConfig.Producer { @@ -396,7 +396,7 @@ public class Tuning extends AbstractConfigProducer implements ProtonConf public DispatchTuning dispatch = DispatchTuning.empty; public SearchNode searchNode; - public Tuning(AbstractConfigProducer parent) { + public Tuning(TreeConfigProducer parent) { super(parent, "tuning"); } diff --git a/config-model/src/main/java/com/yahoo/vespa/model/utils/FileSender.java b/config-model/src/main/java/com/yahoo/vespa/model/utils/FileSender.java index 5a443fa98be..a65a6bf3c77 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/utils/FileSender.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/utils/FileSender.java @@ -5,7 +5,7 @@ import com.yahoo.config.FileReference; import com.yahoo.config.ModelReference; import com.yahoo.config.application.api.DeployLogger; import com.yahoo.config.application.api.FileRegistry; -import com.yahoo.config.model.producer.AbstractConfigProducer; +import com.yahoo.config.model.producer.TreeConfigProducer; import com.yahoo.config.model.producer.UserConfigRepo; import com.yahoo.path.Path; import com.yahoo.vespa.config.ConfigDefinition; @@ -40,7 +40,7 @@ public class FileSender implements Serializable { /** * Sends all user configured files for a producer to all given services. */ - public > void sendUserConfiguredFiles(PRODUCER producer) { + public > void sendUserConfiguredFiles(PRODUCER producer) { if (services.isEmpty()) return; UserConfigRepo userConfigs = producer.getUserConfigs(); diff --git a/config-model/src/test/java/com/yahoo/config/model/ConfigModelContextTest.java b/config-model/src/test/java/com/yahoo/config/model/ConfigModelContextTest.java index 55fe909e70d..65df1cceb29 100644 --- a/config-model/src/test/java/com/yahoo/config/model/ConfigModelContextTest.java +++ b/config-model/src/test/java/com/yahoo/config/model/ConfigModelContextTest.java @@ -4,7 +4,7 @@ package com.yahoo.config.model; import com.yahoo.config.application.api.ApplicationPackage; import com.yahoo.config.application.api.DeployLogger; import com.yahoo.config.model.deploy.DeployState; -import com.yahoo.config.model.producer.AbstractConfigProducer; +import com.yahoo.config.model.producer.TreeConfigProducer; import com.yahoo.config.model.test.MockApplicationPackage; import com.yahoo.config.model.test.MockRoot; import org.junit.jupiter.api.Test; @@ -34,7 +34,7 @@ public class ConfigModelContextTest { ctx = ConfigModelContext.create(root.getDeployState(), null, null, root, id); assertEquals(id, ctx.getProducerId()); assertEquals(root, ctx.getParentProducer()); - AbstractConfigProducer newRoot = new MockRoot("bar"); + TreeConfigProducer newRoot = new MockRoot("bar"); ctx = ctx.withParent(newRoot); assertEquals(id, ctx.getProducerId()); assertNotEquals(root, ctx.getParentProducer()); diff --git a/config-model/src/test/java/com/yahoo/config/model/producer/AbstractConfigProducerTest.java b/config-model/src/test/java/com/yahoo/config/model/producer/AbstractConfigProducerTest.java index 763b9c25072..de53cf82a49 100644 --- a/config-model/src/test/java/com/yahoo/config/model/producer/AbstractConfigProducerTest.java +++ b/config-model/src/test/java/com/yahoo/config/model/producer/AbstractConfigProducerTest.java @@ -41,7 +41,7 @@ public class AbstractConfigProducerTest { assertEquals(1337, config.logserver().rpcport()); } - private static class MockLogdProducer extends AbstractConfigProducer implements LogdConfig.Producer { + private static class MockLogdProducer extends TreeConfigProducer implements LogdConfig.Producer { public MockLogdProducer(String subId) { super(subId); @@ -53,7 +53,7 @@ public class AbstractConfigProducerTest { } } - private static abstract class MockLogdSuperClass extends AbstractConfigProducer implements LogdConfig.Producer { + private static abstract class MockLogdSuperClass extends TreeConfigProducer implements LogdConfig.Producer { public MockLogdSuperClass(String subId) { super(subId); diff --git a/config-model/src/test/java/com/yahoo/vespa/model/HostPortsTest.java b/config-model/src/test/java/com/yahoo/vespa/model/HostPortsTest.java index 731aa02fd0b..a138ef71b2f 100644 --- a/config-model/src/test/java/com/yahoo/vespa/model/HostPortsTest.java +++ b/config-model/src/test/java/com/yahoo/vespa/model/HostPortsTest.java @@ -1,7 +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.AbstractConfigProducer; +import com.yahoo.config.model.producer.TreeConfigProducer; import com.yahoo.config.model.test.MockRoot; import com.yahoo.config.provision.NetworkPorts; @@ -115,7 +115,7 @@ public class HostPortsTest { } private static class MockSlobrok extends AbstractService { - MockSlobrok(AbstractConfigProducer parent, int number) { + MockSlobrok(TreeConfigProducer parent, int number) { super(parent, "slobrok."+number); } @Override public int getPortCount() { return 1; } @@ -133,7 +133,7 @@ public class HostPortsTest { private class TestService extends AbstractService { private final int portCount; - TestService(AbstractConfigProducer parent, int portCount) { + TestService(TreeConfigProducer parent, int portCount) { super(parent, "testService" + getCounter()); this.portCount = portCount; } diff --git a/config-model/src/test/java/com/yahoo/vespa/model/HostResourceTest.java b/config-model/src/test/java/com/yahoo/vespa/model/HostResourceTest.java index d59d0e51b23..7bcd67a8d42 100644 --- a/config-model/src/test/java/com/yahoo/vespa/model/HostResourceTest.java +++ b/config-model/src/test/java/com/yahoo/vespa/model/HostResourceTest.java @@ -1,7 +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.AbstractConfigProducer; +import com.yahoo.config.model.producer.TreeConfigProducer; import com.yahoo.config.model.test.MockRoot; import com.yahoo.config.provision.ClusterMembership; import com.yahoo.config.provision.ClusterSpec; @@ -65,7 +65,7 @@ public class HostResourceTest { private class TestService extends AbstractService { private final int portCount; - TestService(AbstractConfigProducer parent, int portCount) { + TestService(TreeConfigProducer parent, int portCount) { super(parent, "testService" + getCounter()); this.portCount = portCount; } diff --git a/config-model/src/test/java/com/yahoo/vespa/model/application/validation/change/ConfigValueChangeValidatorTest.java b/config-model/src/test/java/com/yahoo/vespa/model/application/validation/change/ConfigValueChangeValidatorTest.java index 069bf429b41..e6c5912f8ff 100644 --- a/config-model/src/test/java/com/yahoo/vespa/model/application/validation/change/ConfigValueChangeValidatorTest.java +++ b/config-model/src/test/java/com/yahoo/vespa/model/application/validation/change/ConfigValueChangeValidatorTest.java @@ -7,7 +7,7 @@ import com.yahoo.config.ConfigInstance; import com.yahoo.test.RestartConfig; import com.yahoo.test.SimpletypesConfig; import com.yahoo.config.model.api.ConfigChangeAction; -import com.yahoo.config.model.producer.AbstractConfigProducer; +import com.yahoo.config.model.producer.TreeConfigProducer; import com.yahoo.config.model.producer.AbstractConfigProducerRoot; import com.yahoo.config.model.test.MockRoot; import com.yahoo.vespa.model.AbstractService; @@ -229,7 +229,7 @@ public class ConfigValueChangeValidatorTest { "\n"; } - private static MockRoot createRootWithChildren(AbstractConfigProducer... children) { + private static MockRoot createRootWithChildren(TreeConfigProducer... children) { MockRoot root = new MockRoot(); List.of(children).forEach(root::addChild); root.freezeModelTopology(); @@ -252,7 +252,7 @@ public class ConfigValueChangeValidatorTest { @Override public void allocatePorts(int start, PortAllocBridge from) { } } - private static class SimpleConfigProducer extends AbstractConfigProducer> + private static class SimpleConfigProducer extends TreeConfigProducer> implements RestartConfig.Producer { public final int value; @@ -266,7 +266,7 @@ public class ConfigValueChangeValidatorTest { builder.value(value); } - public SimpleConfigProducer withChildren(AbstractConfigProducer... producer) { + public SimpleConfigProducer withChildren(TreeConfigProducer... producer) { List.of(producer).forEach(this::addChild); return this; } diff --git a/config-model/src/test/java/com/yahoo/vespa/model/application/validation/change/StartupCommandChangeValidatorTest.java b/config-model/src/test/java/com/yahoo/vespa/model/application/validation/change/StartupCommandChangeValidatorTest.java index 16687af5a9f..fe9b1910720 100644 --- a/config-model/src/test/java/com/yahoo/vespa/model/application/validation/change/StartupCommandChangeValidatorTest.java +++ b/config-model/src/test/java/com/yahoo/vespa/model/application/validation/change/StartupCommandChangeValidatorTest.java @@ -2,7 +2,7 @@ package com.yahoo.vespa.model.application.validation.change; import com.yahoo.config.model.api.ConfigChangeAction; -import com.yahoo.config.model.producer.AbstractConfigProducer; +import com.yahoo.config.model.producer.TreeConfigProducer; import com.yahoo.config.model.producer.AbstractConfigProducerRoot; import com.yahoo.config.model.test.MockRoot; import com.yahoo.vespa.model.AbstractService; @@ -52,7 +52,7 @@ public class StartupCommandChangeValidatorTest { return validator.findServicesWithChangedStartupCommand(currentModel, nextModel).toList(); } - private static MockRoot createRootWithChildren(AbstractConfigProducer... children) { + private static MockRoot createRootWithChildren(TreeConfigProducer... children) { MockRoot root = new MockRoot(); Arrays.asList(children).forEach(root::addChild); root.freezeModelTopology(); diff --git a/config-model/src/test/java/com/yahoo/vespa/model/builder/xml/dom/chains/search/DomFederationSearcherBuilderTest.java b/config-model/src/test/java/com/yahoo/vespa/model/builder/xml/dom/chains/search/DomFederationSearcherBuilderTest.java index 38488947db8..654f987d891 100644 --- a/config-model/src/test/java/com/yahoo/vespa/model/builder/xml/dom/chains/search/DomFederationSearcherBuilderTest.java +++ b/config-model/src/test/java/com/yahoo/vespa/model/builder/xml/dom/chains/search/DomFederationSearcherBuilderTest.java @@ -2,7 +2,7 @@ package com.yahoo.vespa.model.builder.xml.dom.chains.search; import com.yahoo.config.model.builder.xml.test.DomBuilderTest; -import com.yahoo.config.model.producer.AbstractConfigProducer; +import com.yahoo.config.model.producer.TreeConfigProducer; import com.yahoo.search.federation.FederationConfig; import com.yahoo.search.searchchain.model.federation.FederationSearcherModel; import com.yahoo.vespa.model.container.search.searchchain.FederationSearcher; @@ -61,7 +61,7 @@ public class DomFederationSearcherBuilderTest extends DomBuilderTest { String targetSelectorId = "my-id@federation-id"; - AbstractConfigProducer targetSelector = searcher.getChildren().get(targetSelectorId); + TreeConfigProducer targetSelector = searcher.getChildren().get(targetSelectorId); assertNotNull(targetSelector, "No target selector child found"); FederationConfig.Builder builder = new FederationConfig.Builder(); diff --git a/config-model/src/test/java/com/yahoo/vespa/model/test/ApiService.java b/config-model/src/test/java/com/yahoo/vespa/model/test/ApiService.java index f844453fd28..dd6ea783e79 100644 --- a/config-model/src/test/java/com/yahoo/vespa/model/test/ApiService.java +++ b/config-model/src/test/java/com/yahoo/vespa/model/test/ApiService.java @@ -1,7 +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.test; -import com.yahoo.config.model.producer.AbstractConfigProducer; +import com.yahoo.config.model.producer.TreeConfigProducer; import com.yahoo.vespa.model.AbstractService; import com.yahoo.vespa.model.PortAllocBridge; @@ -22,7 +22,7 @@ public class ApiService extends AbstractService implements com.yahoo.test.Standa * @param parent The parent ConfigProducer. * @param name Service name */ - public ApiService(AbstractConfigProducer parent, String name) { + public ApiService(TreeConfigProducer parent, String name) { super(parent, name); } 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 8da502ec2dd..71f54216187 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,7 +2,7 @@ package com.yahoo.vespa.model.test; import com.yahoo.config.model.deploy.DeployState; -import com.yahoo.config.model.producer.AbstractConfigProducer; +import com.yahoo.config.model.producer.TreeConfigProducer; import com.yahoo.vespa.model.builder.xml.dom.VespaDomBuilder; import org.w3c.dom.Element; @@ -20,7 +20,7 @@ public class DomTestServiceBuilder { } @Override - protected SimpleService doBuild(DeployState deployState, AbstractConfigProducer parent, Element spec) { + protected SimpleService doBuild(DeployState deployState, TreeConfigProducer parent, Element spec) { return new SimpleService(parent, "simpleservice." + i); } } @@ -33,7 +33,7 @@ public class DomTestServiceBuilder { } @Override - protected ApiService doBuild(DeployState deployState, AbstractConfigProducer parent, Element spec) { + protected ApiService doBuild(DeployState deployState, TreeConfigProducer parent, Element spec) { return new ApiService(parent, "apiservice." + i); } } @@ -46,7 +46,7 @@ public class DomTestServiceBuilder { } @Override - protected ParentService doBuild(DeployState deployState, AbstractConfigProducer parent, Element spec) { + protected ParentService doBuild(DeployState deployState, TreeConfigProducer parent, Element spec) { return new ParentService(parent, "parentservice." + i, spec); } } diff --git a/config-model/src/test/java/com/yahoo/vespa/model/test/ModelAmendingTestCase.java b/config-model/src/test/java/com/yahoo/vespa/model/test/ModelAmendingTestCase.java index 9be3b15be07..998e19794fc 100644 --- a/config-model/src/test/java/com/yahoo/vespa/model/test/ModelAmendingTestCase.java +++ b/config-model/src/test/java/com/yahoo/vespa/model/test/ModelAmendingTestCase.java @@ -10,7 +10,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.AbstractConfigProducer; +import com.yahoo.config.model.producer.TreeConfigProducer; import com.yahoo.vespa.defaults.Defaults; import com.yahoo.vespa.model.AbstractService; import com.yahoo.vespa.model.HostResource; @@ -165,7 +165,7 @@ public class ModelAmendingTestCase { /** To test that we can amend hosts with an additional service */ private static class AmendedService extends AbstractService { - public AmendedService(AbstractConfigProducer parent) { + public AmendedService(TreeConfigProducer parent) { super(parent, "testservice"); } diff --git a/config-model/src/test/java/com/yahoo/vespa/model/test/ParentService.java b/config-model/src/test/java/com/yahoo/vespa/model/test/ParentService.java index fc796be293a..1f33fe9c83e 100644 --- a/config-model/src/test/java/com/yahoo/vespa/model/test/ParentService.java +++ b/config-model/src/test/java/com/yahoo/vespa/model/test/ParentService.java @@ -2,7 +2,7 @@ package com.yahoo.vespa.model.test; import com.yahoo.test.StandardConfig.Builder; -import com.yahoo.config.model.producer.AbstractConfigProducer; +import com.yahoo.config.model.producer.TreeConfigProducer; import com.yahoo.vespa.model.AbstractService; import com.yahoo.vespa.model.PortAllocBridge; import org.w3c.dom.Element; @@ -21,7 +21,7 @@ public class ParentService extends AbstractService implements com.yahoo.test.Sta * @param name Service name * @param config The xml config Element for this Service */ - public ParentService(AbstractConfigProducer parent, String name, + public ParentService(TreeConfigProducer parent, String name, Element config) { super(parent, name); diff --git a/config-model/src/test/java/com/yahoo/vespa/model/test/SimpleService.java b/config-model/src/test/java/com/yahoo/vespa/model/test/SimpleService.java index e98b4f80ce3..ac3e2e321b4 100644 --- a/config-model/src/test/java/com/yahoo/vespa/model/test/SimpleService.java +++ b/config-model/src/test/java/com/yahoo/vespa/model/test/SimpleService.java @@ -2,7 +2,7 @@ package com.yahoo.vespa.model.test; import com.yahoo.test.StandardConfig.Builder; -import com.yahoo.config.model.producer.AbstractConfigProducer; +import com.yahoo.config.model.producer.TreeConfigProducer; import com.yahoo.vespa.model.AbstractService; import com.yahoo.vespa.model.PortAllocBridge; @@ -23,7 +23,7 @@ public class SimpleService extends AbstractService implements com.yahoo.test.Sta * @param parent The parent ConfigProducer. * @param name Service name */ - public SimpleService(AbstractConfigProducer parent, String name) { + public SimpleService(TreeConfigProducer parent, String name) { super(parent, name); portsMeta.on(0).tag("base") .on(1).tag("base") diff --git a/config-model/src/test/java/com/yahoo/vespa/model/utils/FileSenderTest.java b/config-model/src/test/java/com/yahoo/vespa/model/utils/FileSenderTest.java index e113e53f541..c122aba9cf1 100644 --- a/config-model/src/test/java/com/yahoo/vespa/model/utils/FileSenderTest.java +++ b/config-model/src/test/java/com/yahoo/vespa/model/utils/FileSenderTest.java @@ -7,7 +7,7 @@ import com.yahoo.config.ModelReference; import com.yahoo.config.UrlReference; import com.yahoo.config.application.api.FileRegistry; import com.yahoo.config.model.application.provider.BaseDeployLogger; -import com.yahoo.config.model.producer.AbstractConfigProducer; +import com.yahoo.config.model.producer.TreeConfigProducer; import com.yahoo.config.model.producer.UserConfigRepo; import com.yahoo.config.model.test.MockRoot; import com.yahoo.vespa.config.ConfigDefinition; @@ -250,7 +250,7 @@ public class FileSenderTest { private static class TestService extends AbstractService { - public TestService(AbstractConfigProducer parent, String name) { + public TestService(TreeConfigProducer parent, String name) { super(parent, name); } diff --git a/config-model/src/test/java/com/yahoo/vespa/model/utils/internal/ReflectionUtilTest.java b/config-model/src/test/java/com/yahoo/vespa/model/utils/internal/ReflectionUtilTest.java index d8ea631ac96..2a7a019915b 100644 --- a/config-model/src/test/java/com/yahoo/vespa/model/utils/internal/ReflectionUtilTest.java +++ b/config-model/src/test/java/com/yahoo/vespa/model/utils/internal/ReflectionUtilTest.java @@ -1,7 +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.utils.internal; -import com.yahoo.config.model.producer.AbstractConfigProducer; +import com.yahoo.config.model.producer.TreeConfigProducer; import com.yahoo.test.ArraytypesConfig; import com.yahoo.config.ChangesRequiringRestart; import com.yahoo.config.ConfigInstance; @@ -22,8 +22,8 @@ import static org.junit.jupiter.api.Assertions.*; */ public class ReflectionUtilTest { - private static class SimpleProducer extends AbstractConfigProducer implements SimpletypesConfig.Producer { - SimpleProducer(AbstractConfigProducer parent, String subId) { super(parent, subId); } + private static class SimpleProducer extends TreeConfigProducer implements SimpletypesConfig.Producer { + SimpleProducer(TreeConfigProducer parent, String subId) { super(parent, subId); } @Override public void getConfig(SimpletypesConfig.Builder builder) { } @@ -31,8 +31,8 @@ public class ReflectionUtilTest { private interface ProducerInterface extends SimpletypesConfig.Producer, ArraytypesConfig.Producer { } - private static class InterfaceImplementingProducer extends AbstractConfigProducer implements ProducerInterface { - InterfaceImplementingProducer(AbstractConfigProducer parent, String subId) { super(parent, subId); } + private static class InterfaceImplementingProducer extends TreeConfigProducer implements ProducerInterface { + InterfaceImplementingProducer(TreeConfigProducer parent, String subId) { super(parent, subId); } @Override public void getConfig(ArraytypesConfig.Builder builder) { } @@ -40,14 +40,14 @@ public class ReflectionUtilTest { public void getConfig(SimpletypesConfig.Builder builder) { } } - private static abstract class MyAbstractProducer extends AbstractConfigProducer implements SimpletypesConfig.Producer { - MyAbstractProducer(AbstractConfigProducer parent, String subId) { super(parent, subId); } + private static abstract class MyAbstractProducer extends TreeConfigProducer implements SimpletypesConfig.Producer { + MyAbstractProducer(TreeConfigProducer parent, String subId) { super(parent, subId); } @Override public void getConfig(SimpletypesConfig.Builder builder) { } } private static class ConcreteProducer extends MyAbstractProducer { - ConcreteProducer(AbstractConfigProducer parent, String subId) { super(parent, subId); } + ConcreteProducer(TreeConfigProducer parent, String subId) { super(parent, subId); } } private static class RestartConfig extends ConfigInstance { -- cgit v1.2.3