diff options
Diffstat (limited to 'configgen')
-rw-r--r-- | configgen/CMakeLists.txt | 2 | ||||
-rw-r--r-- | configgen/pom.xml | 32 | ||||
-rw-r--r-- | configgen/src/main/java/com/yahoo/config/codegen/BuilderGenerator.java | 42 | ||||
-rw-r--r-- | configgen/src/test/resources/allfeatures.reference | 14 |
4 files changed, 72 insertions, 18 deletions
diff --git a/configgen/CMakeLists.txt b/configgen/CMakeLists.txt new file mode 100644 index 00000000000..107037f8008 --- /dev/null +++ b/configgen/CMakeLists.txt @@ -0,0 +1,2 @@ +# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. +install_java_artifact(configgen) diff --git a/configgen/pom.xml b/configgen/pom.xml index 7d316061a99..a335e345234 100644 --- a/configgen/pom.xml +++ b/configgen/pom.xml @@ -52,6 +52,38 @@ <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-install-plugin</artifactId> </plugin> + <plugin> + <!-- Add headers making this an OSGi bundle (cannot use bundle plugin as this is needed at bootstrap). + This is needed because the model of config definitions is part of codegen but needed by modules + doing generic access over config. + --> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-shade-plugin</artifactId> + <configuration> + <finalName>${project.artifactId}</finalName> + <transformers> + <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer"> + <manifestEntries> + <Export-Package>com.yahoo.config.codegen</Export-Package> + <Bundle-ManifestVersion>2</Bundle-ManifestVersion> + <Bundle-SymbolicName>${project.artifactId}</Bundle-SymbolicName> + <Bundle-Version>7.0.0</Bundle-Version> + <Bundle-Name>${project.artifactId}</Bundle-Name> + <Bundle-Vendor>Yahoo!</Bundle-Vendor> + <Bundle-ClassPath>.</Bundle-ClassPath> + </manifestEntries> + </transformer> + </transformers> + </configuration> + <executions> + <execution> + <phase>package</phase> + <goals> + <goal>shade</goal> + </goals> + </execution> + </executions> + </plugin> </plugins> </build> </project> diff --git a/configgen/src/main/java/com/yahoo/config/codegen/BuilderGenerator.java b/configgen/src/main/java/com/yahoo/config/codegen/BuilderGenerator.java index b3c4d0c5ff8..2ebe7ad03bf 100644 --- a/configgen/src/main/java/com/yahoo/config/codegen/BuilderGenerator.java +++ b/configgen/src/main/java/com/yahoo/config/codegen/BuilderGenerator.java @@ -44,7 +44,7 @@ public class BuilderGenerator { } private static String getSpecialRootBuilderCode(InnerCNode node) { - return (node.getParent() == null) ? "\n" + getDispatchCode() + "\n" : ""; + return (node.getParent() == null) ? "\n" + getRootDeclarations() + "\n" : ""; } private static String getBuildMethod(InnerCNode node) { @@ -53,26 +53,36 @@ public class BuilderGenerator { "}\n"; } - private static String getDispatchCode() { + private static String getRootDeclarations() { // Use full path to @Override, as users are free to define an inner node called // 'override'. (summarymap.def does) // The generated inner 'Override' class would otherwise be mistaken for the // annotation. - return "@java.lang.Override\n" + // - "public final boolean dispatchGetConfig(ConfigInstance.Producer producer) {\n" + // - " if (producer instanceof Producer) {\n" + // - " ((Producer)producer).getConfig(this);\n" + // - " return true;\n" + // + return "private boolean _applyOnRestart = false;\n" + + "\n" + + "@java.lang.Override\n" + + "public final boolean dispatchGetConfig(ConfigInstance.Producer producer) {\n" + + " if (producer instanceof Producer) {\n" + + " ((Producer)producer).getConfig(this);\n" + + " return true;\n" + " }\n" + // - " return false;\n" + // - "}\n" + // - "\n" + // - "@java.lang.Override\n" + // - "public final String getDefMd5() { return CONFIG_DEF_MD5; }\n" + // - "@java.lang.Override\n" + // - "public final String getDefName() { return CONFIG_DEF_NAME; }\n" + // - "@java.lang.Override\n" + // - "public final String getDefNamespace() { return CONFIG_DEF_NAMESPACE; }"; + " return false;\n" + + "}\n" + + "\n" + + "@java.lang.Override\n" + + "public final String getDefMd5() { return CONFIG_DEF_MD5; }\n" + + "\n" + + "@java.lang.Override\n" + + "public final String getDefName() { return CONFIG_DEF_NAME; }\n" + + "\n" + + "@java.lang.Override\n" + + "public final String getDefNamespace() { return CONFIG_DEF_NAMESPACE; }\n" + + "\n" + + "@java.lang.Override\n" + + "public final boolean getApplyOnRestart() { return _applyOnRestart; }\n" + + "\n" + + "@java.lang.Override\n" + + "public final void setApplyOnRestart(boolean applyOnRestart) { _applyOnRestart = applyOnRestart; }"; } private static String getUninitializedScalars(InnerCNode node) { diff --git a/configgen/src/test/resources/allfeatures.reference b/configgen/src/test/resources/allfeatures.reference index b84f01f380b..2008bbf6b52 100644 --- a/configgen/src/test/resources/allfeatures.reference +++ b/configgen/src/test/resources/allfeatures.reference @@ -601,6 +601,8 @@ public final class AllfeaturesConfig extends ConfigInstance { return this; } + private boolean _applyOnRestart = false; + @java.lang.Override public final boolean dispatchGetConfig(ConfigInstance.Producer producer) { if (producer instanceof Producer) { @@ -611,12 +613,20 @@ public final class AllfeaturesConfig extends ConfigInstance { } @java.lang.Override - public final String getDefMd5() { return CONFIG_DEF_MD5; } + public final String getDefMd5() { return CONFIG_DEF_MD5; } + @java.lang.Override - public final String getDefName() { return CONFIG_DEF_NAME; } + public final String getDefName() { return CONFIG_DEF_NAME; } + @java.lang.Override public final String getDefNamespace() { return CONFIG_DEF_NAMESPACE; } + @java.lang.Override + public final boolean getApplyOnRestart() { return _applyOnRestart; } + + @java.lang.Override + public final void setApplyOnRestart(boolean applyOnRestart) { _applyOnRestart = applyOnRestart; } + public AllfeaturesConfig build() { return new AllfeaturesConfig(this); } |