From cc945bd3c6a520144097166f3696d84eeb9b9810 Mon Sep 17 00:00:00 2001 From: Martin Kouba Date: Tue, 18 Feb 2020 16:30:43 +0100 Subject: [PATCH] RootDefinition - trim RuntimeConfig and RuntimeConfiguration suffixes - resolves #7257 --- .../definition/RootDefinition.java | 6 ++++- .../extest/deployment/TestProcessor.java | 6 +++-- .../src/main/resources/application.properties | 3 +++ .../io/quarkus/extest/ConfiguredBean.java | 17 +++++++++--- .../io/quarkus/extest/ConfiguredBeanTest.java | 1 + .../extest/runtime/IConfigConsumer.java | 4 ++- .../quarkus/extest/runtime/TestRecorder.java | 9 +++---- .../runtime/config/FooRuntimeConfig.java | 26 +++++++++++++++++++ .../src/main/asciidoc/writing-extensions.adoc | 2 +- .../io/quarkus/it/extension/NativeBean.java | 13 +++++++--- 10 files changed, 68 insertions(+), 19 deletions(-) create mode 100644 core/test-extension/runtime/src/main/java/io/quarkus/extest/runtime/config/FooRuntimeConfig.java diff --git a/core/deployment/src/main/java/io/quarkus/deployment/configuration/definition/RootDefinition.java b/core/deployment/src/main/java/io/quarkus/deployment/configuration/definition/RootDefinition.java index ffbf3c46d..8d39d9c48 100644 --- a/core/deployment/src/main/java/io/quarkus/deployment/configuration/definition/RootDefinition.java +++ b/core/deployment/src/main/java/io/quarkus/deployment/configuration/definition/RootDefinition.java @@ -35,7 +35,11 @@ public final class RootDefinition extends ClassDefinition { withoutSuffix( withoutSuffix( withoutSuffix( - segments, + withoutSuffix( + withoutSuffix( + segments, + "Runtime", "Configuration"), + "Runtime", "Config"), "Run", "Time", "Configuration"), "Run", "Time", "Config"), "Configuration"), diff --git a/core/test-extension/deployment/src/main/java/io/quarkus/extest/deployment/TestProcessor.java b/core/test-extension/deployment/src/main/java/io/quarkus/extest/deployment/TestProcessor.java index c5f38c41e..f88fa8367 100644 --- a/core/test-extension/deployment/src/main/java/io/quarkus/extest/deployment/TestProcessor.java +++ b/core/test-extension/deployment/src/main/java/io/quarkus/extest/deployment/TestProcessor.java @@ -59,6 +59,7 @@ import io.quarkus.extest.runtime.TestAnnotation; import io.quarkus.extest.runtime.TestRecorder; import io.quarkus.extest.runtime.beans.CommandServlet; import io.quarkus.extest.runtime.beans.PublicKeyProducer; +import io.quarkus.extest.runtime.config.FooRuntimeConfig; import io.quarkus.extest.runtime.config.ObjectOfValue; import io.quarkus.extest.runtime.config.ObjectValueOf; import io.quarkus.extest.runtime.config.TestBuildAndRunTimeConfig; @@ -388,10 +389,11 @@ public final class TestProcessor { @Record(RUNTIME_INIT) void configureBeans(TestRecorder recorder, List testBeans, BeanContainerBuildItem beanContainer, - TestRunTimeConfig runTimeConfig) { + TestRunTimeConfig runTimeConfig, FooRuntimeConfig fooRuntimeConfig) { for (TestBeanBuildItem testBeanBuildItem : testBeans) { Class beanClass = testBeanBuildItem.getConfigConsumer(); - recorder.configureBeans(beanContainer.getValue(), beanClass, buildAndRunTimeConfig, runTimeConfig); + recorder.configureBeans(beanContainer.getValue(), beanClass, buildAndRunTimeConfig, runTimeConfig, + fooRuntimeConfig); } } diff --git a/core/test-extension/deployment/src/main/resources/application.properties b/core/test-extension/deployment/src/main/resources/application.properties index 4444b8a84..29b6228b3 100644 --- a/core/test-extension/deployment/src/main/resources/application.properties +++ b/core/test-extension/deployment/src/main/resources/application.properties @@ -118,3 +118,6 @@ quarkus.test-property=foo quarkus.rt.map-map.outer-key.inner-key=1234 quarkus.btrt.map-map.outer-key.inner-key=1234 quarkus.bt.map-map.outer-key.inner-key=1234 + +# Test config root with "RuntimeConfig" suffix +quarkus.foo.bar=huhu diff --git a/core/test-extension/deployment/src/test/java/io/quarkus/extest/ConfiguredBean.java b/core/test-extension/deployment/src/test/java/io/quarkus/extest/ConfiguredBean.java index fd18a68fb..b5c34882e 100644 --- a/core/test-extension/deployment/src/test/java/io/quarkus/extest/ConfiguredBean.java +++ b/core/test-extension/deployment/src/test/java/io/quarkus/extest/ConfiguredBean.java @@ -4,6 +4,7 @@ import javax.enterprise.event.Observes; import io.quarkus.extest.runtime.IConfigConsumer; import io.quarkus.extest.runtime.TestAnnotation; +import io.quarkus.extest.runtime.config.FooRuntimeConfig; import io.quarkus.extest.runtime.config.TestBuildAndRunTimeConfig; import io.quarkus.extest.runtime.config.TestRunTimeConfig; import io.quarkus.runtime.ShutdownEvent; @@ -14,8 +15,9 @@ import io.quarkus.runtime.StartupEvent; */ @TestAnnotation public class ConfiguredBean implements IConfigConsumer { - TestRunTimeConfig runTimeConfig; - TestBuildAndRunTimeConfig buildTimeConfig; + volatile TestRunTimeConfig runTimeConfig; + volatile TestBuildAndRunTimeConfig buildTimeConfig; + volatile FooRuntimeConfig fooRuntimeConfig; public ConfiguredBean() { System.out.printf("ConfiguredBean.ctor, %s%n", super.toString()); @@ -27,10 +29,13 @@ public class ConfiguredBean implements IConfigConsumer { * @param runTimeConfig */ @Override - public void loadConfig(TestBuildAndRunTimeConfig buildTimeConfig, TestRunTimeConfig runTimeConfig) { - System.out.printf("loadConfig, buildTimeConfig=%s, runTimeConfig=%s%n", buildTimeConfig, runTimeConfig); + public void loadConfig(TestBuildAndRunTimeConfig buildTimeConfig, TestRunTimeConfig runTimeConfig, + FooRuntimeConfig fooRuntimeConfig) { + System.out.printf("loadConfig, buildTimeConfig=%s, runTimeConfig=%s, fooRuntimeConfig=%s%n", buildTimeConfig, + runTimeConfig, fooRuntimeConfig); this.buildTimeConfig = buildTimeConfig; this.runTimeConfig = runTimeConfig; + this.fooRuntimeConfig = fooRuntimeConfig; } /** @@ -54,6 +59,10 @@ public class ConfiguredBean implements IConfigConsumer { return buildTimeConfig; } + public FooRuntimeConfig getFooRuntimeConfig() { + return fooRuntimeConfig; + } + @Override public String toString() { return "ConfiguredBean{runTimeConfig=" + runTimeConfig + '}'; diff --git a/core/test-extension/deployment/src/test/java/io/quarkus/extest/ConfiguredBeanTest.java b/core/test-extension/deployment/src/test/java/io/quarkus/extest/ConfiguredBeanTest.java index c80903eb0..b97ebef01 100644 --- a/core/test-extension/deployment/src/test/java/io/quarkus/extest/ConfiguredBeanTest.java +++ b/core/test-extension/deployment/src/test/java/io/quarkus/extest/ConfiguredBeanTest.java @@ -54,6 +54,7 @@ public class ConfiguredBeanTest { Assertions.assertNotNull(configuredBean); Assertions.assertNotNull(configuredBean.getBuildTimeConfig()); Assertions.assertNotNull(configuredBean.getRunTimeConfig()); + Assertions.assertEquals("huhu", configuredBean.getFooRuntimeConfig().bar); } /** diff --git a/core/test-extension/runtime/src/main/java/io/quarkus/extest/runtime/IConfigConsumer.java b/core/test-extension/runtime/src/main/java/io/quarkus/extest/runtime/IConfigConsumer.java index 1e6b9e3c6..7af418953 100644 --- a/core/test-extension/runtime/src/main/java/io/quarkus/extest/runtime/IConfigConsumer.java +++ b/core/test-extension/runtime/src/main/java/io/quarkus/extest/runtime/IConfigConsumer.java @@ -1,5 +1,6 @@ package io.quarkus.extest.runtime; +import io.quarkus.extest.runtime.config.FooRuntimeConfig; import io.quarkus.extest.runtime.config.TestBuildAndRunTimeConfig; import io.quarkus.extest.runtime.config.TestRunTimeConfig; @@ -7,5 +8,6 @@ import io.quarkus.extest.runtime.config.TestRunTimeConfig; * Interface used to pass the runtime configuration to an application bean for validation */ public interface IConfigConsumer { - void loadConfig(TestBuildAndRunTimeConfig buildTimeConfig, TestRunTimeConfig runTimeConfig); + void loadConfig(TestBuildAndRunTimeConfig buildTimeConfig, TestRunTimeConfig runTimeConfig, + FooRuntimeConfig fooRuntimeConfig); } diff --git a/core/test-extension/runtime/src/main/java/io/quarkus/extest/runtime/TestRecorder.java b/core/test-extension/runtime/src/main/java/io/quarkus/extest/runtime/TestRecorder.java index 5a53c0d92..412c2ebb9 100644 --- a/core/test-extension/runtime/src/main/java/io/quarkus/extest/runtime/TestRecorder.java +++ b/core/test-extension/runtime/src/main/java/io/quarkus/extest/runtime/TestRecorder.java @@ -8,6 +8,7 @@ import org.jboss.logging.Logger; import io.quarkus.arc.runtime.BeanContainer; import io.quarkus.extest.runtime.beans.PublicKeyProducer; +import io.quarkus.extest.runtime.config.FooRuntimeConfig; import io.quarkus.extest.runtime.config.TestBuildAndRunTimeConfig; import io.quarkus.extest.runtime.config.TestRunTimeConfig; import io.quarkus.extest.runtime.config.XmlConfig; @@ -17,11 +18,7 @@ import io.quarkus.runtime.annotations.Recorder; /** * The runtime recorder - * - * note that the use of the deprecated @Template is deliberate, to ensure that it still works. - * */ -@SuppressWarnings("deprecation") @Recorder public class TestRecorder { static final Logger log = Logger.getLogger(TestRecorder.class); @@ -38,10 +35,10 @@ public class TestRecorder { */ public void configureBeans(BeanContainer beanContainer, Class beanClass, TestBuildAndRunTimeConfig buildTimeConfig, - TestRunTimeConfig runTimeConfig) { + TestRunTimeConfig runTimeConfig, FooRuntimeConfig fooRuntimeConfig) { log.infof("Begin BeanContainerListener callback\n"); IConfigConsumer instance = beanContainer.instance(beanClass); - instance.loadConfig(buildTimeConfig, runTimeConfig); + instance.loadConfig(buildTimeConfig, runTimeConfig, fooRuntimeConfig); log.infof("configureBeans, instance=%s\n", instance); } diff --git a/core/test-extension/runtime/src/main/java/io/quarkus/extest/runtime/config/FooRuntimeConfig.java b/core/test-extension/runtime/src/main/java/io/quarkus/extest/runtime/config/FooRuntimeConfig.java new file mode 100644 index 000000000..731aca2cc --- /dev/null +++ b/core/test-extension/runtime/src/main/java/io/quarkus/extest/runtime/config/FooRuntimeConfig.java @@ -0,0 +1,26 @@ +package io.quarkus.extest.runtime.config; + +import io.quarkus.runtime.annotations.ConfigItem; +import io.quarkus.runtime.annotations.ConfigPhase; +import io.quarkus.runtime.annotations.ConfigRoot; + +/** + * Test config root with "RuntimeConfig" suffix. + */ +@ConfigRoot(phase = ConfigPhase.RUN_TIME) +public class FooRuntimeConfig { + + /** + * Test property. + */ + @ConfigItem(defaultValue = "baz") + public String bar; + + @Override + public String toString() { + StringBuilder builder = new StringBuilder(); + builder.append("FooRuntimeConfig [bar=").append(bar).append("]"); + return builder.toString(); + } + +} diff --git a/docs/src/main/asciidoc/writing-extensions.adoc b/docs/src/main/asciidoc/writing-extensions.adoc index 23b4414e0..a88a9afd8 100755 --- a/docs/src/main/asciidoc/writing-extensions.adoc +++ b/docs/src/main/asciidoc/writing-extensions.adoc @@ -921,7 +921,7 @@ lowercased, and re-joined using hyphens (`-`). A configuration root's class name can contain an extra suffix segment for the case where there are configuration roots for multiple <>. Classes which correspond to the `BUILD_TIME` and `BUILD_AND_RUN_TIME_FIXED` may end with `BuildTimeConfig` or `BuildTimeConfiguration`, and classes which correspond to the `RUN_TIME` phase -may end with `RunTimeConfig` or `RunTimeConfiguration`. +may end with `RuntimeConfig`, `RunTimeConfig`, `RuntimeConfiguration` or `RunTimeConfiguration`. Note: The current implementation is still using injection site to determine the root set, so to avoid migration problems, it is recommended that the injection site (field or parameter) have the same name as the configuration root class until diff --git a/integration-tests/test-extension/src/main/java/io/quarkus/it/extension/NativeBean.java b/integration-tests/test-extension/src/main/java/io/quarkus/it/extension/NativeBean.java index c37d09d20..61f11ff16 100644 --- a/integration-tests/test-extension/src/main/java/io/quarkus/it/extension/NativeBean.java +++ b/integration-tests/test-extension/src/main/java/io/quarkus/it/extension/NativeBean.java @@ -4,6 +4,7 @@ import javax.enterprise.event.Observes; import io.quarkus.extest.runtime.IConfigConsumer; import io.quarkus.extest.runtime.TestAnnotation; +import io.quarkus.extest.runtime.config.FooRuntimeConfig; import io.quarkus.extest.runtime.config.TestBuildAndRunTimeConfig; import io.quarkus.extest.runtime.config.TestRunTimeConfig; import io.quarkus.runtime.ShutdownEvent; @@ -11,8 +12,9 @@ import io.quarkus.runtime.StartupEvent; @TestAnnotation public class NativeBean implements IConfigConsumer { - TestRunTimeConfig runTimeConfig; - TestBuildAndRunTimeConfig buildTimeConfig; + volatile TestRunTimeConfig runTimeConfig; + volatile TestBuildAndRunTimeConfig buildTimeConfig; + volatile FooRuntimeConfig fooRuntimeConfig; public NativeBean() { System.out.printf("NativeBean.ctor, %s%n", super.toString()); @@ -24,10 +26,13 @@ public class NativeBean implements IConfigConsumer { * @param runTimeConfig */ @Override - public void loadConfig(TestBuildAndRunTimeConfig buildTimeConfig, TestRunTimeConfig runTimeConfig) { - System.out.printf("loadConfig, buildTimeConfig=%s, runTimeConfig=%s%n", buildTimeConfig, runTimeConfig); + public void loadConfig(TestBuildAndRunTimeConfig buildTimeConfig, TestRunTimeConfig runTimeConfig, + FooRuntimeConfig fooRuntimeConfig) { + System.out.printf("loadConfig, buildTimeConfig=%s, runTimeConfig=%s, fooRuntimeConfig=%s%n", buildTimeConfig, + runTimeConfig, fooRuntimeConfig); this.buildTimeConfig = buildTimeConfig; this.runTimeConfig = runTimeConfig; + this.fooRuntimeConfig = fooRuntimeConfig; } /**