diff options
author | gjoranv <gv@verizonmedia.com> | 2019-08-19 12:31:49 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-08-19 12:31:49 +0200 |
commit | 37d8f05290b94aa6f8f61bf4e3c22e84ad6e35ab (patch) | |
tree | b1f533469466c44118156071ade7db9c94ec4dad | |
parent | 0e1adb57b5f6621c6adc37e7509d7acff2bb96e6 (diff) | |
parent | fa4368cdc9422ca85024d1209c8be86ff46fd422 (diff) |
Merge pull request #10265 from vespa-engine/hmusum/cleanup-namespace-handling-for-config
Hmusum/cleanup namespace handling for config
10 files changed, 30 insertions, 53 deletions
diff --git a/config-application-package/src/main/java/com/yahoo/config/model/application/provider/StaticConfigDefinitionRepo.java b/config-application-package/src/main/java/com/yahoo/config/model/application/provider/StaticConfigDefinitionRepo.java index 58318958dfb..d9253d6105b 100644 --- a/config-application-package/src/main/java/com/yahoo/config/model/application/provider/StaticConfigDefinitionRepo.java +++ b/config-application-package/src/main/java/com/yahoo/config/model/application/provider/StaticConfigDefinitionRepo.java @@ -1,7 +1,6 @@ // Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. package com.yahoo.config.model.application.provider; -import com.yahoo.config.codegen.CNode; import com.yahoo.config.model.api.ConfigDefinitionRepo; import com.yahoo.io.IOUtils; import com.yahoo.log.LogLevel; @@ -16,7 +15,6 @@ import java.io.IOException; import java.util.Collections; import java.util.LinkedHashMap; import java.util.Map; -import java.util.stream.Collectors; /** * A global pool of all config definitions that this server knows about. These objects can be shared @@ -48,8 +46,6 @@ public class StaticConfigDefinitionRepo implements ConfigDefinitionRepo { private void addConfigDefinition(File def) { try { ConfigDefinitionKey key = ConfigUtils.createConfigDefinitionKeyFromDefFile(def); - if (key.getNamespace().isEmpty()) - key = new ConfigDefinitionKey(key.getName(), CNode.DEFAULT_NAMESPACE); addConfigDefinition(key, def); } catch (IOException e) { log.log(LogLevel.WARNING, "Exception adding config definition " + def, e); diff --git a/config-model/src/main/java/com/yahoo/vespa/model/InstanceResolver.java b/config-model/src/main/java/com/yahoo/vespa/model/InstanceResolver.java index f90b399d305..a8404b076d4 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/InstanceResolver.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/InstanceResolver.java @@ -135,8 +135,7 @@ class InstanceResolver { } static String packageName(ConfigDefinitionKey cKey, PackagePrefix packagePrefix) { - String prefix = packagePrefix.value; - return prefix + (cKey.getNamespace().isEmpty() ? CNode.DEFAULT_NAMESPACE : cKey.getNamespace()); + return packagePrefix.value + cKey.getNamespace(); } diff --git a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/DomConfigPayloadBuilder.java b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/DomConfigPayloadBuilder.java index d07f6c4e6fd..31231857aae 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/DomConfigPayloadBuilder.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/DomConfigPayloadBuilder.java @@ -86,11 +86,15 @@ public class DomConfigPayloadBuilder { } private static boolean validName(String name) { + if (name == null) return false; + Matcher m = namePattern.matcher(name); return m.matches(); } private static boolean validNamespace(String namespace) { + if (namespace == null) return false; + Matcher m = namespacePattern.matcher(namespace); return m.matches(); } 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 ae8e8fe7de5..ec9d631dec5 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 @@ -5,9 +5,10 @@ import com.google.common.io.Files; import com.yahoo.config.ConfigInstance; import com.yahoo.config.application.api.ApplicationMetaData; import com.yahoo.config.application.api.UnparsedConfigDefinition; -import com.yahoo.config.codegen.CNode; import com.yahoo.config.application.api.ApplicationPackage; -import com.yahoo.config.model.application.provider.*; +import com.yahoo.config.model.application.provider.Bundle; +import com.yahoo.config.model.application.provider.DeployData; +import com.yahoo.config.model.application.provider.FilesApplicationPackage; import com.yahoo.config.model.deploy.DeployState; import com.yahoo.path.Path; import com.yahoo.document.DataType; @@ -338,19 +339,16 @@ public class ApplicationDeployTest { DeployState deployState = new DeployState.Builder().applicationPackage(app).build(); - ConfigDefinition def = deployState.getConfigDefinition(new ConfigDefinitionKey("foo", CNode.DEFAULT_NAMESPACE)).get(); - assertThat(def.getNamespace(), is(CNode.DEFAULT_NAMESPACE)); - - def = deployState.getConfigDefinition(new ConfigDefinitionKey("baz", "xyzzy")).get(); + ConfigDefinition def = deployState.getConfigDefinition(new ConfigDefinitionKey("baz", "xyzzy")).get(); assertThat(def.getNamespace(), is("xyzzy")); 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)).get(); - assertThat(def.getNamespace(), is(CNode.DEFAULT_NAMESPACE)); - assertThat(def.getName(), is("xyzzy")); + def = deployState.getConfigDefinition(new ConfigDefinitionKey("bar", "xyzzy")).get(); + assertThat(def.getNamespace(), is("xyzzy")); + assertThat(def.getName(), is("bar")); } @Test(expected=IllegalArgumentException.class) 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 6bfd55ca5de..bbed96d3251 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 @@ -1,13 +1,13 @@ // Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. package com.yahoo.vespa.model.builder; -import com.yahoo.test.ArraytypesConfig; import com.yahoo.config.ConfigInstance; import com.yahoo.config.model.application.provider.BaseDeployLogger; +import com.yahoo.config.model.builder.xml.XmlHelper; import com.yahoo.config.model.deploy.ConfigDefinitionStore; -import com.yahoo.test.SimpletypesConfig; import com.yahoo.config.model.producer.UserConfigRepo; -import com.yahoo.config.model.builder.xml.XmlHelper; +import com.yahoo.test.ArraytypesConfig; +import com.yahoo.test.SimpletypesConfig; import com.yahoo.vespa.config.ConfigDefinitionKey; import com.yahoo.vespa.config.ConfigPayload; import com.yahoo.vespa.config.ConfigPayloadBuilder; @@ -22,7 +22,9 @@ import java.io.StringReader; import java.util.Optional; import static org.hamcrest.core.Is.is; -import static org.junit.Assert.*; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertThat; /** * @author Ulf Lilleengen diff --git a/config/src/main/java/com/yahoo/vespa/config/ConfigKey.java b/config/src/main/java/com/yahoo/vespa/config/ConfigKey.java index 930b74ea804..a1d069da284 100755 --- a/config/src/main/java/com/yahoo/vespa/config/ConfigKey.java +++ b/config/src/main/java/com/yahoo/vespa/config/ConfigKey.java @@ -3,7 +3,6 @@ package com.yahoo.vespa.config; import com.yahoo.config.ConfigInstance; import com.yahoo.config.ConfigurationRuntimeException; -import com.yahoo.config.codegen.CNode; import edu.umd.cs.findbugs.annotations.NonNull; import edu.umd.cs.findbugs.annotations.Nullable; @@ -48,11 +47,13 @@ public class ConfigKey<CONFIGCLASS extends ConfigInstance> implements Comparable } public ConfigKey(String name, String configIdString, String namespace, String defMd5, Class<CONFIGCLASS> clazz) { - if (name == null) - throw new ConfigurationRuntimeException("Config name must be non-null!"); + if (name == null || name.isEmpty()) + throw new ConfigurationRuntimeException("Config name cannot be null or empty!"); + if (namespace == null || namespace.isEmpty()) + throw new ConfigurationRuntimeException("Config namespace cannot be null or empty!"); this.name = name; this.configId = (configIdString == null) ? "" : configIdString; - this.namespace = (namespace == null) ? CNode.DEFAULT_NAMESPACE : namespace; + this.namespace = namespace; this.md5 = (defMd5 == null) ? "" : defMd5; this.configClass = clazz; } diff --git a/config/src/main/java/com/yahoo/vespa/config/util/ConfigUtils.java b/config/src/main/java/com/yahoo/vespa/config/util/ConfigUtils.java index 56ede8897ed..d7653572773 100644 --- a/config/src/main/java/com/yahoo/vespa/config/util/ConfigUtils.java +++ b/config/src/main/java/com/yahoo/vespa/config/util/ConfigUtils.java @@ -2,7 +2,6 @@ package com.yahoo.vespa.config.util; import com.yahoo.collections.Tuple2; -import com.yahoo.config.codegen.CNode; import com.yahoo.io.HexDump; import com.yahoo.io.IOUtils; import com.yahoo.net.HostName; @@ -302,9 +301,6 @@ public class ConfigUtils { */ static ConfigDefinitionKey createConfigDefinitionKeyFromDefContent(String name, byte[] content) { String namespace = ConfigUtils.getDefNamespace(new StringReader(Utf8.toString(content))); - if (namespace.isEmpty()) { - namespace = CNode.DEFAULT_NAMESPACE; - } return new ConfigDefinitionKey(name, namespace); } diff --git a/config/src/test/java/com/yahoo/vespa/config/ConfigKeyTest.java b/config/src/test/java/com/yahoo/vespa/config/ConfigKeyTest.java index 427014316cf..452d0d78897 100644 --- a/config/src/test/java/com/yahoo/vespa/config/ConfigKeyTest.java +++ b/config/src/test/java/com/yahoo/vespa/config/ConfigKeyTest.java @@ -7,10 +7,10 @@ import java.util.List; import com.yahoo.foo.AppConfig; import com.yahoo.config.ConfigurationRuntimeException; -import com.yahoo.config.codegen.CNode; import org.junit.Test; -import static org.junit.Assert.*; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotEquals; /** * @@ -27,7 +27,6 @@ public class ConfigKeyTest { assertEquals(key1, key2); ConfigKey<?> key3 = new ConfigKey<>("foo", "a/b/c/d", namespace); - assertFalse(key1.equals(key3)); assertNotEquals(key1, key3); assertEquals("a/b/c", new ConfigKey<>("foo", "a/b/c", namespace).getConfigId()); @@ -67,15 +66,10 @@ public class ConfigKeyTest { // Tests namespace and equals with combinations of namespace. @Test public void testNamespace() { - ConfigKey<?> noNamespace = new ConfigKey<>("name", "id", null); ConfigKey<?> namespaceFoo = new ConfigKey<>("name", "id", "foo"); ConfigKey<?> namespaceBar = new ConfigKey<>("name", "id", "bar"); - assertEquals(noNamespace, noNamespace); assertEquals(namespaceFoo, namespaceFoo); - assertNotEquals(noNamespace, namespaceFoo); - assertNotEquals(namespaceFoo, noNamespace); assertNotEquals(namespaceFoo, namespaceBar); - assertEquals(noNamespace.getNamespace(), CNode.DEFAULT_NAMESPACE); assertEquals(namespaceBar.getNamespace(), "bar"); } diff --git a/configgen/src/main/java/com/yahoo/config/codegen/CNode.java b/configgen/src/main/java/com/yahoo/config/codegen/CNode.java index ea88e115530..1c1fb5f5bce 100644 --- a/configgen/src/main/java/com/yahoo/config/codegen/CNode.java +++ b/configgen/src/main/java/com/yahoo/config/codegen/CNode.java @@ -3,17 +3,13 @@ package com.yahoo.config.codegen; import java.util.StringTokenizer; -import static com.yahoo.config.codegen.DefParser.DEFAULT_PACKAGE_PREFIX; - /** - * Abstract superclass for all nodes representing a definition file. + * Abstract superclass for all nodes representing a config definition. * * @author gjoranv */ public abstract class CNode { - public static final String DEFAULT_NAMESPACE = "config"; - // TODO: replace by "type" enum public final boolean isArray; public final boolean isMap; diff --git a/configgen/src/main/java/com/yahoo/config/codegen/JavaClassBuilder.java b/configgen/src/main/java/com/yahoo/config/codegen/JavaClassBuilder.java index 75149d7a50e..40c903ee929 100644 --- a/configgen/src/main/java/com/yahoo/config/codegen/JavaClassBuilder.java +++ b/configgen/src/main/java/com/yahoo/config/codegen/JavaClassBuilder.java @@ -23,11 +23,10 @@ import static com.yahoo.config.codegen.DefParser.DEFAULT_PACKAGE_PREFIX; */ public class JavaClassBuilder implements ClassBuilder { - public static final String INDENTATION = " "; + static final String INDENTATION = " "; private final InnerCNode root; private final NormalizedDefinition nd; - private final String packagePrefix; private final String javaPackage; private final String className; private final File destDir; @@ -35,7 +34,7 @@ public class JavaClassBuilder implements ClassBuilder { public JavaClassBuilder(InnerCNode root, NormalizedDefinition nd, File destDir, String rawPackagePrefix) { this.root = root; this.nd = nd; - this.packagePrefix = (rawPackagePrefix != null) ? rawPackagePrefix : DEFAULT_PACKAGE_PREFIX; + String packagePrefix = (rawPackagePrefix != null) ? rawPackagePrefix : DEFAULT_PACKAGE_PREFIX; this.javaPackage = (root.getPackage() != null) ? root.getPackage() : packagePrefix + root.getNamespace(); this.className = createClassName(root.getName()); this.destDir = destDir; @@ -74,15 +73,7 @@ public class JavaClassBuilder implements ClassBuilder { "import java.io.File;\n" + // "import java.nio.file.Path;\n" + // "import edu.umd.cs.findbugs.annotations.NonNull;\n" + // - getImportFrameworkClasses(root.getNamespace()); - } - - private String getImportFrameworkClasses(String namespace) { - if (CNode.DEFAULT_NAMESPACE.equals(namespace) == false) { - return "import " + packagePrefix + CNode.DEFAULT_NAMESPACE + ".*;"; - } else { - return ""; - } + "import com.yahoo.config.*;"; } // TODO: remove the extra comment line " *" if root.getCommentBlock is empty @@ -96,7 +87,7 @@ public class JavaClassBuilder implements ClassBuilder { " public final static String CONFIG_DEF_MD5 = \"" + root.getMd5() + "\";\n" + // " public final static String CONFIG_DEF_NAME = \"" + root.getName() + "\";\n" + // " public final static String CONFIG_DEF_NAMESPACE = \"" + root.getNamespace() + "\";\n" + // - " public final static String CONFIG_DEF_VERSION = \"" + root.getVersion() + "\";\n" + // TODO: Remove on Vespa 8 + " public final static String CONFIG_DEF_VERSION = \"" + root.getVersion() + "\";\n" + // TODO: Remove in Vespa 8 " public final static String[] CONFIG_DEF_SCHEMA = {\n" + // "" + indentCode(INDENTATION + INDENTATION, getDefSchema()) + "\n" + // " };\n" + // |