diff --git a/spring-boot-tools/spring-boot-configuration-processor/src/main/java/org/springframework/boot/configurationprocessor/ConfigurationMetadataAnnotationProcessor.java b/spring-boot-tools/spring-boot-configuration-processor/src/main/java/org/springframework/boot/configurationprocessor/ConfigurationMetadataAnnotationProcessor.java index 6f6b580635..11e0ce750b 100644 --- a/spring-boot-tools/spring-boot-configuration-processor/src/main/java/org/springframework/boot/configurationprocessor/ConfigurationMetadataAnnotationProcessor.java +++ b/spring-boot-tools/spring-boot-configuration-processor/src/main/java/org/springframework/boot/configurationprocessor/ConfigurationMetadataAnnotationProcessor.java @@ -34,6 +34,7 @@ import javax.lang.model.SourceVersion; import javax.lang.model.element.AnnotationMirror; import javax.lang.model.element.AnnotationValue; import javax.lang.model.element.Element; +import javax.lang.model.element.ElementKind; import javax.lang.model.element.ExecutableElement; import javax.lang.model.element.Modifier; import javax.lang.model.element.TypeElement; @@ -207,7 +208,8 @@ public class ConfigurationMetadataAnnotationProcessor extends AbstractProcessor if (returnType != null && returnType instanceof TypeElement && annotation == null) { TypeElement returns = (TypeElement) returnType; - if (this.typeUtils.isEnclosedIn(returnType, element) || isNested) { + if ((this.typeUtils.isEnclosedIn(returnType, element) && returnType.getKind() != ElementKind.ENUM) + || isNested) { String nestedPrefix = ConfigurationMetadata .nestedPrefix(prefix, name); this.metadata.add(ItemMetadata.newGroup(nestedPrefix, diff --git a/spring-boot-tools/spring-boot-configuration-processor/src/test/java/org/springframework/boot/configurationprocessor/ConfigurationMetadataAnnotationProcessorTests.java b/spring-boot-tools/spring-boot-configuration-processor/src/test/java/org/springframework/boot/configurationprocessor/ConfigurationMetadataAnnotationProcessorTests.java index eee8c714a4..05710cede6 100644 --- a/spring-boot-tools/spring-boot-configuration-processor/src/test/java/org/springframework/boot/configurationprocessor/ConfigurationMetadataAnnotationProcessorTests.java +++ b/spring-boot-tools/spring-boot-configuration-processor/src/test/java/org/springframework/boot/configurationprocessor/ConfigurationMetadataAnnotationProcessorTests.java @@ -243,6 +243,8 @@ public class ConfigurationMetadataAnnotationProcessorTests { assertThat(metadata, containsGroup("config.third").ofType(SimplePojo.class) .fromSource(InnerClassProperties.class)); assertThat(metadata, containsProperty("config.third.value")); + assertThat(metadata, containsProperty("config.fourth").ofType(InnerClassProperties.Fourth.class)); + assertThat(metadata, not(containsGroup("config.fourth"))); } @Test diff --git a/spring-boot-tools/spring-boot-configuration-processor/src/test/java/org/springframework/boot/configurationsample/specific/InnerClassProperties.java b/spring-boot-tools/spring-boot-configuration-processor/src/test/java/org/springframework/boot/configurationsample/specific/InnerClassProperties.java index ff03fb68f5..74d03f575c 100644 --- a/spring-boot-tools/spring-boot-configuration-processor/src/test/java/org/springframework/boot/configurationsample/specific/InnerClassProperties.java +++ b/spring-boot-tools/spring-boot-configuration-processor/src/test/java/org/springframework/boot/configurationsample/specific/InnerClassProperties.java @@ -34,6 +34,8 @@ public class InnerClassProperties { @NestedConfigurationProperty private final SimplePojo third = new SimplePojo(); + private Fourth fourth; + public Foo getFirst() { return this.first; } @@ -50,6 +52,14 @@ public class InnerClassProperties { return this.third; } + public Fourth getFourth() { + return fourth; + } + + public void setFourth(Fourth fourth) { + this.fourth = fourth; + } + public static class Foo { private String name; @@ -83,4 +93,9 @@ public class InnerClassProperties { } + public static enum Fourth { + YES, + NO + } + }