diff --git a/extensions/spring-boot-properties/deployment/src/main/java/io/quarkus/spring/boot/properties/deployment/ConfigurationPropertiesProcessor.java b/extensions/spring-boot-properties/deployment/src/main/java/io/quarkus/spring/boot/properties/deployment/ConfigurationPropertiesProcessor.java index e2f475ef4c963a..413d0a88e4943d 100644 --- a/extensions/spring-boot-properties/deployment/src/main/java/io/quarkus/spring/boot/properties/deployment/ConfigurationPropertiesProcessor.java +++ b/extensions/spring-boot-properties/deployment/src/main/java/io/quarkus/spring/boot/properties/deployment/ConfigurationPropertiesProcessor.java @@ -1,22 +1,22 @@ package io.quarkus.spring.boot.properties.deployment; -import org.jboss.jandex.AnnotationInstance; -import org.jboss.jandex.DotName; -import org.jboss.jandex.IndexView; -import org.springframework.boot.context.properties.ConfigurationProperties; - import io.quarkus.arc.config.ConfigProperties; +import io.quarkus.arc.deployment.ArcConfig; import io.quarkus.arc.deployment.configproperties.ConfigPropertiesMetadataBuildItem; import io.quarkus.deployment.Feature; import io.quarkus.deployment.annotations.BuildProducer; import io.quarkus.deployment.annotations.BuildStep; import io.quarkus.deployment.builditem.CombinedIndexBuildItem; import io.quarkus.deployment.builditem.FeatureBuildItem; +import org.jboss.jandex.AnnotationInstance; +import org.jboss.jandex.DotName; +import org.jboss.jandex.IndexView; +import org.springframework.boot.context.properties.ConfigurationProperties; public class ConfigurationPropertiesProcessor { - private static final DotName CONFIGURATION_PROPERTIES_ANNOTATION = DotName - .createSimple(ConfigurationProperties.class.getName()); + private static final DotName CONFIGURATION_PROPERTIES = + DotName.createSimple(ConfigurationProperties.class.getName()); @BuildStep public FeatureBuildItem registerFeature() { @@ -24,35 +24,39 @@ public FeatureBuildItem registerFeature() { } @BuildStep - public void produceConfigPropertiesMetadata(CombinedIndexBuildItem combinedIndex, + public void produceConfigPropertiesMetadata(CombinedIndexBuildItem combinedIndex, ArcConfig arcConfig, BuildProducer configPropertiesMetadataProducer) { - combinedIndex.getIndex() - .getAnnotations(CONFIGURATION_PROPERTIES_ANNOTATION) - .stream() - .map(annotation -> createConfigPropertiesMetadata(annotation, combinedIndex.getIndex())) - .forEach(configPropertiesMetadataProducer::produce); + ConfigProperties.NamingStrategy namingStrategy = arcConfig.configPropertiesDefaultNamingStrategy; + for (AnnotationInstance annotation : combinedIndex.getIndex().getAnnotations(CONFIGURATION_PROPERTIES)) { + configPropertiesMetadataProducer.produce( + createConfigPropertiesMetadata(annotation, combinedIndex.getIndex(), namingStrategy); + } } - private ConfigPropertiesMetadataBuildItem createConfigPropertiesMetadata(AnnotationInstance annotation, IndexView index) { + private ConfigPropertiesMetadataBuildItem createConfigPropertiesMetadata(AnnotationInstance annotation, + IndexView index, ConfigProperties.NamingStrategy namingStrategy) { switch (annotation.target().kind()) { case CLASS: - return createConfigPropertiesMetadataFromClass(annotation); + return createConfigPropertiesMetadataFromClass(annotation, namingStrategy); case METHOD: - return createConfigPropertiesMetadataFromMethod(annotation, index); + return createConfigPropertiesMetadataFromMethod(annotation, index, namingStrategy); default: - throw new IllegalArgumentException("Unsupported annotation target kind " + annotation.target().kind().name()); + throw new IllegalArgumentException( + "Unsupported annotation target kind " + annotation.target().kind().name()); } } - private ConfigPropertiesMetadataBuildItem createConfigPropertiesMetadataFromClass(AnnotationInstance annotation) { + private ConfigPropertiesMetadataBuildItem createConfigPropertiesMetadataFromClass(AnnotationInstance annotation, + ConfigProperties.NamingStrategy namingStrategy) { return new ConfigPropertiesMetadataBuildItem(annotation.target().asClass(), getPrefix(annotation), - ConfigProperties.NamingStrategy.VERBATIM, true, false); + namingStrategy, true, false); } private ConfigPropertiesMetadataBuildItem createConfigPropertiesMetadataFromMethod(AnnotationInstance annotation, - IndexView index) { - return new ConfigPropertiesMetadataBuildItem(index.getClassByName(annotation.target().asMethod().returnType().name()), - getPrefix(annotation), ConfigProperties.NamingStrategy.VERBATIM, true, false); + IndexView index, ConfigProperties.NamingStrategy namingStrategy) { + return new ConfigPropertiesMetadataBuildItem( + index.getClassByName(annotation.target().asMethod().returnType().name()), getPrefix(annotation), + namingStrategy, true, false); } private String getPrefix(AnnotationInstance annotation) { diff --git a/integration-tests/spring-boot-properties/src/main/resources/application.properties b/integration-tests/spring-boot-properties/src/main/resources/application.properties index dd2729e5c592fa..4842f056edd12e 100644 --- a/integration-tests/spring-boot-properties/src/main/resources/application.properties +++ b/integration-tests/spring-boot-properties/src/main/resources/application.properties @@ -1,5 +1,5 @@ cl.value=class-value -cl.anotherClass.value=true +cl.another-class.value=true bean.value=1 -bean.innerClass.value=inner-class-value -interface.value=interface-value \ No newline at end of file +bean.inner-class.value=inner-class-value +interface.value=interface-value