aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--config-model/src/main/java/com/yahoo/config/model/deploy/ConfigDefinitionStore.java7
-rw-r--r--config-model/src/main/java/com/yahoo/config/model/deploy/DeployState.java16
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/builder/UserConfigBuilder.java2
-rw-r--r--config-model/src/test/java/com/yahoo/config/model/ApplicationDeployTest.java14
-rw-r--r--config-model/src/test/java/com/yahoo/config/model/deploy/DeployStateTest.java14
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/builder/UserConfigBuilderTest.java3
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/application/Application.java1
7 files changed, 30 insertions, 27 deletions
diff --git a/config-model/src/main/java/com/yahoo/config/model/deploy/ConfigDefinitionStore.java b/config-model/src/main/java/com/yahoo/config/model/deploy/ConfigDefinitionStore.java
index 22ea054a27d..91beaebbdc4 100644
--- a/config-model/src/main/java/com/yahoo/config/model/deploy/ConfigDefinitionStore.java
+++ b/config-model/src/main/java/com/yahoo/config/model/deploy/ConfigDefinitionStore.java
@@ -4,12 +4,17 @@ package com.yahoo.config.model.deploy;
import com.yahoo.vespa.config.ConfigDefinition;
import com.yahoo.vespa.config.ConfigDefinitionKey;
+import java.util.Optional;
+
/**
* @author lulf
* @since 5.1
*/
public interface ConfigDefinitionStore {
- ConfigDefinition getConfigDefinition(ConfigDefinitionKey defKey);
+ /**
+ * Returns a config definition, or empty if the config definition is not found.
+ */
+ Optional<ConfigDefinition> getConfigDefinition(ConfigDefinitionKey defKey);
}
diff --git a/config-model/src/main/java/com/yahoo/config/model/deploy/DeployState.java b/config-model/src/main/java/com/yahoo/config/model/deploy/DeployState.java
index 3f229835914..8c75f37623b 100644
--- a/config-model/src/main/java/com/yahoo/config/model/deploy/DeployState.java
+++ b/config-model/src/main/java/com/yahoo/config/model/deploy/DeployState.java
@@ -123,14 +123,8 @@ public class DeployState implements ConfigDefinitionStore {
/** Returns the validation overrides of this. This is never null */
public ValidationOverrides validationOverrides() { return validationOverrides; }
- /**
- * Returns the config def with the given name and namespace.
- *
- * @param defKey The {@link ConfigDefinitionKey} that will uniquely identify a config definition.
- * @return The definition with a matching name and namespace
- * @throws java.lang.IllegalArgumentException if def is not found.
- */
- public final ConfigDefinition getConfigDefinition(ConfigDefinitionKey defKey) {
+ @Override
+ public final Optional<ConfigDefinition> getConfigDefinition(ConfigDefinitionKey defKey) {
if (existingConfigDefs == null) {
existingConfigDefs = new LinkedHashMap<>();
if (configDefinitionRepo.isPresent()) {
@@ -145,7 +139,7 @@ public class DeployState implements ConfigDefinitionStore {
}
ConfigDefinitionKey lookupKey = defKey;
// Fall back to just using name
- if (!existingConfigDefs.containsKey(lookupKey)) {
+ if ( ! existingConfigDefs.containsKey(lookupKey)) {
int count = 0;
for (ConfigDefinitionKey entry : existingConfigDefs.keySet()) {
@@ -174,7 +168,7 @@ public class DeployState implements ConfigDefinitionStore {
}
if (defArchive.get(defKey) != null) {
log.log(LogLevel.DEBUG, "Found in archive: " + defKey);
- return defArchive.get(defKey);
+ return Optional.ofNullable(defArchive.get(defKey));
}
log.log(LogLevel.DEBUG, "Retrieving config definition: " + defKey);
@@ -182,7 +176,7 @@ public class DeployState implements ConfigDefinitionStore {
log.log(LogLevel.DEBUG, "Adding " + def + " to archive");
defArchive.put(defKey, def);
- return def;
+ return Optional.ofNullable(def);
}
private static Map<ConfigDefinitionKey, UnparsedConfigDefinition> createLazyMapping(final ConfigDefinitionRepo configDefinitionRepo) {
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/builder/UserConfigBuilder.java b/config-model/src/main/java/com/yahoo/vespa/model/builder/UserConfigBuilder.java
index 612df56cfc9..bd93b733e1c 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/builder/UserConfigBuilder.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/builder/UserConfigBuilder.java
@@ -66,7 +66,7 @@ public class UserConfigBuilder {
*/
private static ConfigDefinition getConfigDef(ConfigDefinitionKey configDefinitionKey, ConfigDefinitionStore configDefinitionStore) {
try {
- return configDefinitionStore.getConfigDefinition(configDefinitionKey);
+ return configDefinitionStore.getConfigDefinition(configDefinitionKey).orElse(null);
} catch (IllegalArgumentException e) {
log.log(LogLevel.DEBUG, "Unable to retrieve config definition: " + e.getMessage());
return null;
diff --git a/config-model/src/test/java/com/yahoo/config/model/ApplicationDeployTest.java b/config-model/src/test/java/com/yahoo/config/model/ApplicationDeployTest.java
index 8958300538b..b68b758b842 100644
--- a/config-model/src/test/java/com/yahoo/config/model/ApplicationDeployTest.java
+++ b/config-model/src/test/java/com/yahoo/config/model/ApplicationDeployTest.java
@@ -341,30 +341,30 @@ public class ApplicationDeployTest {
DeployState deployState = new DeployState.Builder().applicationPackage(app).build();
- ConfigDefinition def = deployState.getConfigDefinition(new ConfigDefinitionKey("foo", CNode.DEFAULT_NAMESPACE));
+ ConfigDefinition def = deployState.getConfigDefinition(new ConfigDefinitionKey("foo", CNode.DEFAULT_NAMESPACE)).get();
assertThat(def.getNamespace(), is(CNode.DEFAULT_NAMESPACE));
- def = deployState.getConfigDefinition(new ConfigDefinitionKey("baz", CNode.DEFAULT_NAMESPACE));
+ def = deployState.getConfigDefinition(new ConfigDefinitionKey("baz", CNode.DEFAULT_NAMESPACE)).get();
assertThat(def.getNamespace(), is("xyzzy"));
- def = deployState.getConfigDefinition(new ConfigDefinitionKey("foo", "qux"));
+ def = deployState.getConfigDefinition(new ConfigDefinitionKey("foo", "qux")).get();
assertThat(def.getNamespace(), is("qux"));
// A config def without version in filename and version in file header
- def = deployState.getConfigDefinition(new ConfigDefinitionKey("xyzzy", CNode.DEFAULT_NAMESPACE));
+ def = deployState.getConfigDefinition(new ConfigDefinitionKey("xyzzy", CNode.DEFAULT_NAMESPACE)).get();
assertThat(def.getNamespace(), is(CNode.DEFAULT_NAMESPACE));
assertThat(def.getName(), is("xyzzy"));
// Without giving namespace, namespace is really CNode.DEFAULT_NAMESPACE
- def = deployState.getConfigDefinition(new ConfigDefinitionKey("baz", ""));
+ def = deployState.getConfigDefinition(new ConfigDefinitionKey("baz", "")).get();
assertThat(def.getNamespace(), is("xyzzy"));
// Without giving namespace, namespace is really xyzzy
- def = deployState.getConfigDefinition(new ConfigDefinitionKey("baz", ""));
+ def = deployState.getConfigDefinition(new ConfigDefinitionKey("baz", "")).get();
assertThat(def.getNamespace(), is("xyzzy"));
// Two defs, one with and one without namespace. The one with namespace should have precedence.
- def = deployState.getConfigDefinition(new ConfigDefinitionKey("bar", "xyzzy"));
+ def = deployState.getConfigDefinition(new ConfigDefinitionKey("bar", "xyzzy")).get();
assertThat(def.getNamespace(), is("xyzzy"));
assertTrue(def.getIntDefs().containsKey("foo")); // xyzzy.baz.def has precedence before baz.def, so foo exists
assertThat(def.getIntDefs().get("bar").getDefVal(), is(2));
diff --git a/config-model/src/test/java/com/yahoo/config/model/deploy/DeployStateTest.java b/config-model/src/test/java/com/yahoo/config/model/deploy/DeployStateTest.java
index a84cb7ca7f6..a84333b0e92 100644
--- a/config-model/src/test/java/com/yahoo/config/model/deploy/DeployStateTest.java
+++ b/config-model/src/test/java/com/yahoo/config/model/deploy/DeployStateTest.java
@@ -36,6 +36,7 @@ import static org.junit.Assert.fail;
* @since 5.12
*/
public class DeployStateTest {
+
@Test
public void testProvisionerIsSet() {
DeployState.Builder builder = new DeployState.Builder();
@@ -86,7 +87,7 @@ public class DeployStateTest {
assertNotNull(state.getConfigDefinition(new ConfigDefinitionKey("foo", "bar")));
assertNotNull(state.getConfigDefinition(new ConfigDefinitionKey("test1", "")));
- ConfigDefinition overridden = state.getConfigDefinition(new ConfigDefinitionKey("test2", "a.b"));
+ ConfigDefinition overridden = state.getConfigDefinition(new ConfigDefinitionKey("test2", "a.b")).get();
assertNotNull(overridden);
Double defaultValue = overridden.getDoubleDefs().get("doubleVal").getDefVal();
assertNotNull(defaultValue);
@@ -95,7 +96,7 @@ public class DeployStateTest {
@Test
public void testGetConfigDefinition() {
- final Map<ConfigDefinitionKey, com.yahoo.vespa.config.buildergen.ConfigDefinition> defs = new LinkedHashMap<>();
+ Map<ConfigDefinitionKey, com.yahoo.vespa.config.buildergen.ConfigDefinition> defs = new LinkedHashMap<>();
defs.put(new ConfigDefinitionKey("test2", "a.b"), new com.yahoo.vespa.config.buildergen.ConfigDefinition("test2", new String[]{"namespace=a.b", "doubleVal double default=1.0"}));
defs.put(new ConfigDefinitionKey("test2", "c.d"), new com.yahoo.vespa.config.buildergen.ConfigDefinition("test2", new String[]{"namespace=c.d", "doubleVal double default=1.0"}));
defs.put(new ConfigDefinitionKey("test3", "xyzzy"), new com.yahoo.vespa.config.buildergen.ConfigDefinition("test3", new String[]{"namespace=xyzzy", "message string"}));
@@ -112,13 +113,13 @@ public class DeployStateTest {
assertThat(e.getMessage(), is("Using config definition 'test2' is ambiguous, there are more than one config definitions with this name, please specify namespace"));
}
- final ConfigDefinition test1 = state.getConfigDefinition(new ConfigDefinitionKey("test2", "a.b"));
+ ConfigDefinition test1 = state.getConfigDefinition(new ConfigDefinitionKey("test2", "a.b")).get();
assertNotNull(test1);
assertThat(test1.getName(), is("test2"));
assertThat(test1.getNamespace(), is("a.b"));
// Should fallback to using test3 with another namespace, since only one exists
- ConfigDefinition test3 = state.getConfigDefinition(new ConfigDefinitionKey("test3", ""));
+ ConfigDefinition test3 = state.getConfigDefinition(new ConfigDefinitionKey("test3", "")).get();
assertNotNull(test3);
assertThat(test3.getName(), is("test3"));
assertThat(test3.getNamespace(), is("xyzzy"));
@@ -126,7 +127,7 @@ public class DeployStateTest {
@Test
public void testRotations() {
- final Set<Rotation> rotations = new HashSet<>();
+ Set<Rotation> rotations = new HashSet<>();
assertThat(new DeployState.Builder().rotations(rotations).build().getRotations().size(), is(0));
for (String name : new String[]{"rotation-001.vespa.a02.yahoodns.net", "rotation-002.vespa.a02.yahoodns.net"}) {
rotations.add(new Rotation(name));
@@ -134,7 +135,7 @@ public class DeployStateTest {
assertThat(new DeployState.Builder().rotations(rotations).build().getRotations(), equalTo(rotations));
}
- private DeployState createDeployState(ApplicationPackage app, final Map<ConfigDefinitionKey, com.yahoo.vespa.config.buildergen.ConfigDefinition> defs) {
+ private DeployState createDeployState(ApplicationPackage app, Map<ConfigDefinitionKey, com.yahoo.vespa.config.buildergen.ConfigDefinition> defs) {
DeployState.Builder builder = new DeployState.Builder().applicationPackage(app);
builder.configDefinitionRepo(new ConfigDefinitionRepo() {
@Override
@@ -144,5 +145,6 @@ public class DeployStateTest {
});
return builder.build();
}
+
}
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/builder/UserConfigBuilderTest.java b/config-model/src/test/java/com/yahoo/vespa/model/builder/UserConfigBuilderTest.java
index db35e2cac1e..a02a1c5677e 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/builder/UserConfigBuilderTest.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/builder/UserConfigBuilderTest.java
@@ -23,6 +23,7 @@ import javax.xml.parsers.ParserConfigurationException;
import java.io.IOException;
import java.io.Reader;
import java.io.StringReader;
+import java.util.Optional;
import static org.hamcrest.core.Is.is;
import static org.junit.Assert.*;
@@ -35,7 +36,7 @@ public class UserConfigBuilderTest {
private final ConfigDefinitionStore configDefinitionStore = new ConfigDefinitionStore() {
@Override
- public ConfigDefinition getConfigDefinition(ConfigDefinitionKey defKey) { return null; }
+ public Optional<ConfigDefinition> getConfigDefinition(ConfigDefinitionKey defKey) { return Optional.empty(); }
};
@Test
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/application/Application.java b/configserver/src/main/java/com/yahoo/vespa/config/server/application/Application.java
index 1b3da039145..ba96deca187 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/application/Application.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/application/Application.java
@@ -216,6 +216,7 @@ public class Application implements ModelResult {
* legacy config namespace (or not using config namespace))
*/
private static class ConfigDefinitionWrapper {
+
private final ConfigDefinitionKey defKey;
private final ConfigDefinition def;