diff options
Diffstat (limited to 'config-model/src/main/java/com/yahoo/config/model')
5 files changed, 44 insertions, 21 deletions
diff --git a/config-model/src/main/java/com/yahoo/config/model/ApplicationConfigProducerRoot.java b/config-model/src/main/java/com/yahoo/config/model/ApplicationConfigProducerRoot.java index 912968747df..7a5969585e9 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 @@ -125,11 +125,11 @@ public class ApplicationConfigProducerRoot extends AbstractConfigProducer<Abstra } // TODO: Do this as another config model depending on the other models - public void setupRouting(ConfigModelRepo configModels) { + public void setupRouting(VespaModel vespaModel, ConfigModelRepo configModels) { if (admin != null) { Routing routing = configModels.getRouting(); if (routing == null) { - routing = new Routing(ConfigModelContext.create(configModels, this, "routing")); + routing = new Routing(ConfigModelContext.create(vespaModel, configModels, this, "routing")); configModels.add(routing); } this.routing = routing; diff --git a/config-model/src/main/java/com/yahoo/config/model/ConfigModelContext.java b/config-model/src/main/java/com/yahoo/config/model/ConfigModelContext.java index 78a8c161c3b..eea0b16b8e1 100644 --- a/config-model/src/main/java/com/yahoo/config/model/ConfigModelContext.java +++ b/config-model/src/main/java/com/yahoo/config/model/ConfigModelContext.java @@ -5,6 +5,7 @@ import com.yahoo.config.application.api.ApplicationPackage; import com.yahoo.config.application.api.DeployLogger; import com.yahoo.config.model.deploy.DeployState; import com.yahoo.config.model.producer.AbstractConfigProducer; +import com.yahoo.vespa.model.VespaModel; import java.util.stream.Stream; @@ -19,16 +20,18 @@ public final class ConfigModelContext { private final AbstractConfigProducer parent; private final String producerId; private final DeployState deployState; + private final VespaModel vespaModel; private final ConfigModelRepoAdder configModelRepoAdder; private final ApplicationType applicationType; private ConfigModelContext(ApplicationType applicationType, DeployState deployState, - ConfigModelRepoAdder configModelRepoAdder, + VespaModel vespaModel, ConfigModelRepoAdder configModelRepoAdder, AbstractConfigProducer parent, String producerId) { this.applicationType = applicationType; this.deployState = deployState; + this.vespaModel = vespaModel; this.configModelRepoAdder = configModelRepoAdder; this.parent = parent; this.producerId = producerId; @@ -40,18 +43,23 @@ public final class ConfigModelContext { public DeployLogger getDeployLogger() { return deployState.getDeployLogger(); } public DeployState getDeployState() { return deployState; } public ApplicationType getApplicationType() { return applicationType; } + public VespaModel vespaModel() { return vespaModel; } /** Returns write access to the config model repo, or null (only) if this is improperly initialized during testing */ public ConfigModelRepoAdder getConfigModelRepoAdder() { return configModelRepoAdder; } /** Create a new context with a different parent */ public ConfigModelContext withParent(AbstractConfigProducer newParent) { - return ConfigModelContext.create(deployState, configModelRepoAdder, newParent, producerId); + return ConfigModelContext.create(deployState, vespaModel, configModelRepoAdder, newParent, producerId); } /** Create a new context with a different config model producer id */ public ConfigModelContext withId(String producerId) { - return ConfigModelContext.create(deployState, configModelRepoAdder, parent, producerId); + return ConfigModelContext.create(deployState, vespaModel, configModelRepoAdder, parent, producerId); + } + + public ConfigModelContext with(VespaModel vespaModel) { + return ConfigModelContext.create(deployState, vespaModel, configModelRepoAdder, parent, producerId); } /** @@ -61,9 +69,9 @@ public final class ConfigModelContext { * @param producerId the id to be used for the config model. * @return a model context that can be passed to a model. */ - public static ConfigModelContext create(ConfigModelRepoAdder configModelRepoAdder, + public static ConfigModelContext create(VespaModel vespaModel, ConfigModelRepoAdder configModelRepoAdder, AbstractConfigProducer parent, String producerId) { - return create(parent.getRoot().getDeployState(), configModelRepoAdder, parent, producerId); + return create(parent.getRoot().getDeployState(), vespaModel, configModelRepoAdder, parent, producerId); } /** @@ -74,9 +82,12 @@ public final class ConfigModelContext { * @param producerId the id to be used for the config model * @return a model context that can be passed to a model */ - public static ConfigModelContext create(DeployState deployState, ConfigModelRepoAdder configModelRepoAdder, - AbstractConfigProducer parent, String producerId) { - return new ConfigModelContext(ApplicationType.DEFAULT, deployState, configModelRepoAdder, parent, producerId); + public static ConfigModelContext create(DeployState deployState, + VespaModel vespaModel, + ConfigModelRepoAdder configModelRepoAdder, + AbstractConfigProducer parent, + String producerId) { + return new ConfigModelContext(ApplicationType.DEFAULT, deployState, vespaModel, configModelRepoAdder, parent, producerId); } /** @@ -90,10 +101,11 @@ public final class ConfigModelContext { */ public static ConfigModelContext create(ApplicationType applicationType, DeployState deployState, + VespaModel vespaModel, ConfigModelRepoAdder configModelRepoAdder, AbstractConfigProducer parent, String producerId) { - return new ConfigModelContext(applicationType, deployState, configModelRepoAdder, parent, producerId); + return new ConfigModelContext(applicationType, deployState, vespaModel, configModelRepoAdder, parent, producerId); } public enum ApplicationType { 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 5ec34b62ca2..60089f04572 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 @@ -15,6 +15,7 @@ import com.yahoo.log.LogLevel; import com.yahoo.path.Path; import com.yahoo.text.XML; import com.yahoo.config.model.producer.AbstractConfigProducer; +import com.yahoo.vespa.model.VespaModel; import com.yahoo.vespa.model.builder.VespaModelBuilder; import com.yahoo.vespa.model.clients.Clients; import com.yahoo.vespa.model.content.Content; @@ -71,10 +72,13 @@ public class ConfigModelRepo implements ConfigModelRepoAdder, Serializable, Iter public Map<String,ConfigModel> asMap() { return Collections.unmodifiableMap(configModelMap); } /** Initialize part 1.: Reads the config models used in the application package. */ - public void readConfigModels(DeployState deployState, VespaModelBuilder builder, - ApplicationConfigProducerRoot root, ConfigModelRegistry configModelRegistry) throws IOException, SAXException { + public void readConfigModels(DeployState deployState, + VespaModel vespaModel, + VespaModelBuilder builder, + ApplicationConfigProducerRoot root, + ConfigModelRegistry configModelRegistry) throws IOException, SAXException { Element userServicesElement = getServicesFromApp(deployState.getApplicationPackage()); - readConfigModels(root, userServicesElement, deployState, configModelRegistry); + readConfigModels(root, userServicesElement, deployState, vespaModel, configModelRegistry); builder.postProc(root, this); } @@ -104,7 +108,11 @@ public class ConfigModelRepo implements ConfigModelRepoAdder, Serializable, Iter * @param servicesRoot XML root node of the services file */ @SuppressWarnings("deprecation") - private void readConfigModels(ApplicationConfigProducerRoot root, Element servicesRoot, DeployState deployState, ConfigModelRegistry configModelRegistry) throws IOException, SAXException { + private void readConfigModels(ApplicationConfigProducerRoot root, + Element servicesRoot, + DeployState deployState, + VespaModel vespaModel, + ConfigModelRegistry configModelRegistry) throws IOException, SAXException { final Map<ConfigModelBuilder, List<Element>> model2Element = new LinkedHashMap<>(); ModelGraphBuilder graphBuilder = new ModelGraphBuilder(); @@ -140,7 +148,7 @@ public class ConfigModelRepo implements ConfigModelRepoAdder, Serializable, Iter } for (ModelNode node : graphBuilder.build().topologicalSort()) - buildModels(node, getApplicationType(servicesRoot), deployState, root, model2Element.get(node.builder)); + buildModels(node, getApplicationType(servicesRoot), deployState, vespaModel, root, model2Element.get(node.builder)); for (ConfigModel model : configModels) model.initialize(ConfigModelRepo.this); // XXX deprecated } @@ -174,10 +182,11 @@ public class ConfigModelRepo implements ConfigModelRepoAdder, Serializable, Iter private void buildModels(ModelNode node, ApplicationType applicationType, DeployState deployState, + VespaModel vespaModel, AbstractConfigProducer parent, List<Element> elements) { for (Element servicesElement : elements) { - ConfigModel model = buildModel(node, applicationType, deployState, parent, servicesElement); + ConfigModel model = buildModel(node, applicationType, deployState, vespaModel, parent, servicesElement); if (model.isServing()) add(model); } @@ -186,10 +195,11 @@ public class ConfigModelRepo implements ConfigModelRepoAdder, Serializable, Iter private ConfigModel buildModel(ModelNode node, ApplicationType applicationType, DeployState deployState, + VespaModel vespaModel, AbstractConfigProducer parent, Element servicesElement) { ConfigModelBuilder builder = node.builder; - ConfigModelContext context = ConfigModelContext.create(applicationType, deployState, this, parent, getIdString(servicesElement)); + ConfigModelContext context = ConfigModelContext.create(applicationType, deployState, vespaModel, this, parent, getIdString(servicesElement)); return builder.build(node, servicesElement, context); } diff --git a/config-model/src/main/java/com/yahoo/config/model/ConfigModelRepoAdder.java b/config-model/src/main/java/com/yahoo/config/model/ConfigModelRepoAdder.java index b16b65b9540..731cae48881 100644 --- a/config-model/src/main/java/com/yahoo/config/model/ConfigModelRepoAdder.java +++ b/config-model/src/main/java/com/yahoo/config/model/ConfigModelRepoAdder.java @@ -5,7 +5,7 @@ package com.yahoo.config.model; * An interface which provides addition of new config models. * This exists because some models need to add additional models during the build phase so *write* access * to the config model repo is needed. *Read* access, on the other hand needs to happen through config model dependency - * inkection to avoid circular dependencies or undeclared dependencies working by accident. + * injection to avoid circular dependencies or undeclared dependencies working by accident. * * @author bratseth */ 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 bb0d24f9b26..b1e197db4eb 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 @@ -9,6 +9,7 @@ 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.vespa.model.VespaModel; import org.w3c.dom.Element; import java.lang.reflect.Constructor; @@ -54,9 +55,9 @@ public abstract class ConfigModelBuilder<MODEL extends ConfigModel> extends Abst * @param parent the root config producer this should be added to * @param spec the XML element this is constructed from */ - public final MODEL build(DeployState deployState, ConfigModelRepo configModelRepo, + public final MODEL build(DeployState deployState, VespaModel vespaModel, ConfigModelRepo configModelRepo, AbstractConfigProducer parent, Element spec) { - ConfigModelContext context = ConfigModelContext.create(deployState, configModelRepo, parent, getIdString(spec)); + ConfigModelContext context = ConfigModelContext.create(deployState, vespaModel, configModelRepo, parent, getIdString(spec)); return build(new DefaultModelInstanceFactory(), spec, context); } |