Merge pull request #7261 from mkouba/issue-7257

RootDefinition - trim RuntimeConfig and RuntimeConfiguration suffixes
This commit is contained in:
Martin Kouba
2020-02-19 09:37:27 +01:00
committed by GitHub
10 changed files with 68 additions and 19 deletions

View File

@@ -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"),

View File

@@ -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<TestBeanBuildItem> testBeans,
BeanContainerBuildItem beanContainer,
TestRunTimeConfig runTimeConfig) {
TestRunTimeConfig runTimeConfig, FooRuntimeConfig fooRuntimeConfig) {
for (TestBeanBuildItem testBeanBuildItem : testBeans) {
Class<IConfigConsumer> beanClass = testBeanBuildItem.getConfigConsumer();
recorder.configureBeans(beanContainer.getValue(), beanClass, buildAndRunTimeConfig, runTimeConfig);
recorder.configureBeans(beanContainer.getValue(), beanClass, buildAndRunTimeConfig, runTimeConfig,
fooRuntimeConfig);
}
}

View File

@@ -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

View File

@@ -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 + '}';

View File

@@ -54,6 +54,7 @@ public class ConfiguredBeanTest {
Assertions.assertNotNull(configuredBean);
Assertions.assertNotNull(configuredBean.getBuildTimeConfig());
Assertions.assertNotNull(configuredBean.getRunTimeConfig());
Assertions.assertEquals("huhu", configuredBean.getFooRuntimeConfig().bar);
}
/**

View File

@@ -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);
}

View File

@@ -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<IConfigConsumer> 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);
}

View File

@@ -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();
}
}

View File

@@ -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 <<Configuration Root Phases>>. 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

View File

@@ -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;
}
/**