mirror of
https://github.com/jlengrand/quarkus.git
synced 2026-03-10 08:41:22 +00:00
committed by
Guillaume Smet
parent
7c1e1bde59
commit
1b05cb6fd3
@@ -267,7 +267,9 @@ public final class BuildTimeConfigurationReader {
|
||||
}
|
||||
objectsByRootClass.put(clazz, instance);
|
||||
String rootName = root.getRootName();
|
||||
nameBuilder.append('.').append(rootName);
|
||||
if (!rootName.isEmpty()) {
|
||||
nameBuilder.append('.').append(rootName);
|
||||
}
|
||||
readConfigGroup(root, instance, nameBuilder);
|
||||
nameBuilder.setLength(len);
|
||||
}
|
||||
|
||||
@@ -287,7 +287,7 @@ public final class RunTimeConfigurationGenerator {
|
||||
clinit.setModifiers(Opcodes.ACC_STATIC);
|
||||
clinit.invokeStaticMethod(PM_SET_RUNTIME_DEFAULT_PROFILE, clinit.load(ProfileManager.getActiveProfile()));
|
||||
clinitNameBuilder = clinit.newInstance(SB_NEW);
|
||||
clinit.invokeVirtualMethod(SB_APPEND_STRING, clinitNameBuilder, clinit.load("quarkus."));
|
||||
clinit.invokeVirtualMethod(SB_APPEND_STRING, clinitNameBuilder, clinit.load("quarkus"));
|
||||
|
||||
// create the map for build time config source
|
||||
final ResultHandle buildTimeValues = clinit.newInstance(HM_NEW);
|
||||
@@ -329,7 +329,7 @@ public final class RunTimeConfigurationGenerator {
|
||||
readConfig = cc.getMethodCreator(C_READ_CONFIG);
|
||||
// the readConfig name builder
|
||||
readConfigNameBuilder = readConfig.newInstance(SB_NEW);
|
||||
readConfig.invokeVirtualMethod(SB_APPEND_STRING, readConfigNameBuilder, readConfig.load("quarkus."));
|
||||
readConfig.invokeVirtualMethod(SB_APPEND_STRING, readConfigNameBuilder, readConfig.load("quarkus"));
|
||||
runTimePatternMap = buildTimeReadResult.getRunTimePatternMap();
|
||||
accessorFinder = new AccessorFinder();
|
||||
}
|
||||
@@ -466,6 +466,7 @@ public final class RunTimeConfigurationGenerator {
|
||||
.getConstructorFor(MethodDescriptor.ofConstructor(configurationClass));
|
||||
|
||||
// specific actions based on config phase
|
||||
String rootName = root.getRootName();
|
||||
if (root.getConfigPhase() == ConfigPhase.BUILD_AND_RUN_TIME_FIXED) {
|
||||
// config root field is final; we initialize it from clinit
|
||||
cc.getFieldCreator(rootFieldDescriptor)
|
||||
@@ -476,7 +477,10 @@ public final class RunTimeConfigurationGenerator {
|
||||
clinit.writeStaticField(rootFieldDescriptor, instance);
|
||||
instanceCache.put(rootFieldDescriptor, instance);
|
||||
// eager init as appropriate
|
||||
clinit.invokeVirtualMethod(SB_APPEND_STRING, clinitNameBuilder, clinit.load(root.getRootName()));
|
||||
if (!rootName.isEmpty()) {
|
||||
clinit.invokeVirtualMethod(SB_APPEND_CHAR, clinitNameBuilder, clinit.load('.'));
|
||||
clinit.invokeVirtualMethod(SB_APPEND_STRING, clinitNameBuilder, clinit.load(rootName));
|
||||
}
|
||||
clinit.invokeStaticMethod(initGroup, clinitConfig, clinitNameBuilder, instance);
|
||||
clinit.invokeVirtualMethod(SB_SET_LENGTH, clinitNameBuilder, clInitOldLen);
|
||||
} else if (root.getConfigPhase() == ConfigPhase.RUN_TIME) {
|
||||
@@ -487,8 +491,11 @@ public final class RunTimeConfigurationGenerator {
|
||||
final ResultHandle instance = readConfig.invokeStaticMethod(ctor);
|
||||
// assign instance to field
|
||||
readConfig.writeStaticField(rootFieldDescriptor, instance);
|
||||
readConfig.invokeVirtualMethod(SB_APPEND_STRING, readConfigNameBuilder,
|
||||
readConfig.load(root.getRootName()));
|
||||
if (!rootName.isEmpty()) {
|
||||
readConfig.invokeVirtualMethod(SB_APPEND_CHAR, readConfigNameBuilder, readConfig.load('.'));
|
||||
readConfig.invokeVirtualMethod(SB_APPEND_STRING, readConfigNameBuilder,
|
||||
readConfig.load(rootName));
|
||||
}
|
||||
readConfig.invokeStaticMethod(initGroup, runTimeConfig, readConfigNameBuilder, instance);
|
||||
readConfig.invokeVirtualMethod(SB_SET_LENGTH, readConfigNameBuilder, rcOldLen);
|
||||
} else {
|
||||
|
||||
@@ -52,7 +52,7 @@ public final class RootDefinition extends ClassDefinition {
|
||||
"Config");
|
||||
}
|
||||
if (rootName.equals(ConfigItem.PARENT)) {
|
||||
throw reportError(configClass, "Root cannot inherit parent name because it has no parent");
|
||||
rootName = "";
|
||||
} else if (rootName.equals(ConfigItem.ELEMENT_NAME)) {
|
||||
rootName = String.join("", (Iterable<String>) () -> lowerCaseFirst(trimmedSegments.iterator()));
|
||||
} else if (rootName.equals(ConfigItem.HYPHENATED_ELEMENT_NAME)) {
|
||||
|
||||
@@ -32,7 +32,11 @@ public final class FieldContainer extends Container {
|
||||
}
|
||||
final ClassDefinition enclosing = member.getEnclosingDefinition();
|
||||
if (enclosing instanceof RootDefinition) {
|
||||
sb.append(((RootDefinition) enclosing).getRootName().replace('.', ':'));
|
||||
RootDefinition rootDefinition = (RootDefinition) enclosing;
|
||||
String rootName = rootDefinition.getRootName();
|
||||
if (!rootName.isEmpty()) {
|
||||
sb.append(rootName.replace('.', ':'));
|
||||
}
|
||||
}
|
||||
if (sb.length() > 0) {
|
||||
sb.append(':');
|
||||
@@ -48,7 +52,11 @@ public final class FieldContainer extends Container {
|
||||
}
|
||||
final ClassDefinition enclosing = member.getEnclosingDefinition();
|
||||
if (enclosing instanceof RootDefinition) {
|
||||
sb.append(((RootDefinition) enclosing).getRootName());
|
||||
RootDefinition rootDefinition = (RootDefinition) enclosing;
|
||||
String rootName = rootDefinition.getRootName();
|
||||
if (!rootName.isEmpty()) {
|
||||
sb.append(rootName);
|
||||
}
|
||||
}
|
||||
final String propertyName = member.getPropertyName();
|
||||
if (!propertyName.isEmpty()) {
|
||||
|
||||
@@ -19,18 +19,19 @@ public final class PatternMapBuilder {
|
||||
for (RootDefinition rootDefinition : rootDefinitions) {
|
||||
final String rootName = rootDefinition.getRootName();
|
||||
ConfigPatternMap<Container> addTo = patternMap, child;
|
||||
assert !rootName.isEmpty();
|
||||
NameIterator ni = new NameIterator(rootName);
|
||||
assert ni.hasNext();
|
||||
do {
|
||||
final String seg = ni.getNextSegment();
|
||||
child = addTo.getChild(seg);
|
||||
ni.next();
|
||||
if (child == null) {
|
||||
addTo.addChild(seg, child = new ConfigPatternMap<>());
|
||||
}
|
||||
addTo = child;
|
||||
} while (ni.hasNext());
|
||||
if (!rootName.isEmpty()) {
|
||||
NameIterator ni = new NameIterator(rootName);
|
||||
assert ni.hasNext();
|
||||
do {
|
||||
final String seg = ni.getNextSegment();
|
||||
child = addTo.getChild(seg);
|
||||
ni.next();
|
||||
if (child == null) {
|
||||
addTo.addChild(seg, child = new ConfigPatternMap<>());
|
||||
}
|
||||
addTo = child;
|
||||
} while (ni.hasNext());
|
||||
}
|
||||
addGroup(addTo, rootDefinition, null);
|
||||
}
|
||||
return patternMap;
|
||||
|
||||
@@ -110,3 +110,6 @@ quarkus.btrt.map-of-numbers.key1=one
|
||||
quarkus.btrt.map-of-numbers.key2=two
|
||||
quarkus.btrt.my-enum=optional
|
||||
quarkus.btrt.my-enums=optional,enum-one,enum-two
|
||||
|
||||
### anonymous root property
|
||||
quarkus.test-property=foo
|
||||
|
||||
@@ -0,0 +1,12 @@
|
||||
package io.quarkus.extest.runtime.config;
|
||||
|
||||
import io.quarkus.runtime.annotations.ConfigItem;
|
||||
import io.quarkus.runtime.annotations.ConfigRoot;
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
@ConfigRoot(name = ConfigItem.PARENT)
|
||||
public class TopLevelRootConfig {
|
||||
String testProperty;
|
||||
}
|
||||
@@ -101,3 +101,6 @@ quarkus.btrt.map-of-numbers.key1=one
|
||||
quarkus.btrt.map-of-numbers.key2=two
|
||||
quarkus.btrt.my-enum=optional
|
||||
quarkus.btrt.my-enums=optional,enum-one,enum-two
|
||||
|
||||
### anonymous root property
|
||||
quarkus.test-property=foo
|
||||
|
||||
Reference in New Issue
Block a user