summaryrefslogtreecommitdiffstats
path: root/config-model/src/main/java/com/yahoo/config/model
diff options
context:
space:
mode:
Diffstat (limited to 'config-model/src/main/java/com/yahoo/config/model')
-rw-r--r--config-model/src/main/java/com/yahoo/config/model/ApplicationConfigProducerRoot.java4
-rw-r--r--config-model/src/main/java/com/yahoo/config/model/ConfigModelContext.java30
-rw-r--r--config-model/src/main/java/com/yahoo/config/model/ConfigModelRepo.java24
-rw-r--r--config-model/src/main/java/com/yahoo/config/model/ConfigModelRepoAdder.java2
-rw-r--r--config-model/src/main/java/com/yahoo/config/model/builder/xml/ConfigModelBuilder.java5
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);
}