summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorgjoranv <gv@verizonmedia.com>2019-08-19 12:31:49 +0200
committerGitHub <noreply@github.com>2019-08-19 12:31:49 +0200
commit37d8f05290b94aa6f8f61bf4e3c22e84ad6e35ab (patch)
treeb1f533469466c44118156071ade7db9c94ec4dad
parent0e1adb57b5f6621c6adc37e7509d7acff2bb96e6 (diff)
parentfa4368cdc9422ca85024d1209c8be86ff46fd422 (diff)
Merge pull request #10265 from vespa-engine/hmusum/cleanup-namespace-handling-for-config
Hmusum/cleanup namespace handling for config
-rw-r--r--config-application-package/src/main/java/com/yahoo/config/model/application/provider/StaticConfigDefinitionRepo.java4
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/InstanceResolver.java3
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/DomConfigPayloadBuilder.java4
-rw-r--r--config-model/src/test/java/com/yahoo/config/model/ApplicationDeployTest.java16
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/builder/UserConfigBuilderTest.java10
-rwxr-xr-xconfig/src/main/java/com/yahoo/vespa/config/ConfigKey.java9
-rw-r--r--config/src/main/java/com/yahoo/vespa/config/util/ConfigUtils.java4
-rw-r--r--config/src/test/java/com/yahoo/vespa/config/ConfigKeyTest.java10
-rw-r--r--configgen/src/main/java/com/yahoo/config/codegen/CNode.java6
-rw-r--r--configgen/src/main/java/com/yahoo/config/codegen/JavaClassBuilder.java17
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" + //