From cbb0b56aab19a7e44b5b16055618bba9245795e4 Mon Sep 17 00:00:00 2001 From: Jon Bratseth Date: Mon, 5 Sep 2016 11:33:18 +0200 Subject: Use Optional not null in ConfigDefinitionStore --- .../yahoo/config/model/deploy/ConfigDefinitionStore.java | 7 ++++++- .../java/com/yahoo/config/model/deploy/DeployState.java | 16 +++++----------- 2 files changed, 11 insertions(+), 12 deletions(-) (limited to 'config-model/src/main/java/com/yahoo/config/model') 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 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 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 createLazyMapping(final ConfigDefinitionRepo configDefinitionRepo) { -- cgit v1.2.3