summaryrefslogtreecommitdiffstats
path: root/configgen/src/main/java/com/yahoo/config/codegen/MakeConfig.java
diff options
context:
space:
mode:
Diffstat (limited to 'configgen/src/main/java/com/yahoo/config/codegen/MakeConfig.java')
-rw-r--r--configgen/src/main/java/com/yahoo/config/codegen/MakeConfig.java20
1 files changed, 13 insertions, 7 deletions
diff --git a/configgen/src/main/java/com/yahoo/config/codegen/MakeConfig.java b/configgen/src/main/java/com/yahoo/config/codegen/MakeConfig.java
index 91d401c91b7..ef9af1c2b11 100644
--- a/configgen/src/main/java/com/yahoo/config/codegen/MakeConfig.java
+++ b/configgen/src/main/java/com/yahoo/config/codegen/MakeConfig.java
@@ -18,11 +18,11 @@ public class MakeConfig {
classBuilder = createClassBuilder(root, nd, properties);
}
- public static ClassBuilder createClassBuilder(InnerCNode root, NormalizedDefinition nd, MakeConfigProperties prop) {
- if (prop.language.equals("cppng") || prop.language.equals("cpp"))
- return new CppClassBuilder(root, nd, prop.destDir, prop.dirInRoot);
+ public static ClassBuilder createClassBuilder(InnerCNode root, NormalizedDefinition nd, MakeConfigProperties properties) {
+ if (isCpp(properties))
+ return new CppClassBuilder(root, nd, properties.destDir, properties.dirInRoot);
else
- return new JavaClassBuilder(root, nd, prop.destDir, prop.javaPackagePrefix);
+ return new JavaClassBuilder(root, nd, properties.destDir, properties.javaPackagePrefix);
}
public static boolean makeConfig(MakeConfigProperties properties) throws FileNotFoundException {
@@ -31,7 +31,7 @@ public class MakeConfig {
if (name.endsWith(".def")) name = name.substring(0, name.length() - 4);
DefParser parser = new DefParser(name, new FileReader(specFile));
InnerCNode configRoot = parser.getTree();
- checkNamespace(name, configRoot);
+ checkNamespaceAndPacakge(name, configRoot, isCpp(properties));
if (configRoot != null) {
MakeConfig mc = new MakeConfig(configRoot, parser.getNormalizedDefinition(), properties);
mc.buildClasses();
@@ -73,9 +73,15 @@ public class MakeConfig {
}
}
- private static void checkNamespace(String name, InnerCNode configRoot) {
- if (configRoot.defNamespace == null)
+ private static void checkNamespaceAndPacakge(String name, InnerCNode configRoot, boolean isCpp) {
+ if (isCpp && configRoot.defNamespace == null)
throw new IllegalArgumentException("In config definition '" + name + "': A namespace is required");
+ if (configRoot.defNamespace == null && configRoot.defPackage == null)
+ throw new IllegalArgumentException("In config definition '" + name + "': A package (or namespace) is required");
+ }
+
+ private static boolean isCpp(MakeConfigProperties properties) {
+ return (properties.language.equals("cppng") || properties.language.equals("cpp"));
}
// The Exceptions class below is copied from vespajlib/com.yahoo.protect.Exceptions