Refine inner class detection algorithm

Update the ConfigurationMetadataAnnotationProcessor nested class
algorithm to prevent inner classes being added as both groups and
properties.

Fixes gh-1975
This commit is contained in:
Phillip Webb
2014-11-21 14:16:37 -08:00
parent 2a9a749329
commit e56a1ba561
3 changed files with 26 additions and 22 deletions

View File

@@ -236,17 +236,14 @@ public class ConfigurationMetadataAnnotationProcessorTests {
assertThat(metadata, containsProperty("config.first.name"));
assertThat(metadata, containsProperty("config.first.bar.name"));
assertThat(metadata,
containsProperty("config.the-second", InnerClassProperties.Foo.class)
containsGroup("config.the-second", InnerClassProperties.Foo.class)
.fromSource(InnerClassProperties.class));
assertThat(metadata, containsProperty("config.the-second.name"));
assertThat(metadata, containsProperty("config.the-second.bar.name"));
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, containsProperty("config.fourth"));
assertThat(metadata, not(containsGroup("config.fourth")));
}

View File

@@ -119,10 +119,13 @@ public class ConfigurationMetadataMatchers {
ConfigurationMetadata metadata = (ConfigurationMetadata) item;
ItemMetadata property = getFirstPropertyWithName(metadata, this.name);
if (property == null) {
description.appendText("missing property " + this.name);
description.appendText("missing "
+ this.itemType.toString().toLowerCase() + " " + this.name);
}
else {
description.appendText("was property ").appendValue(property);
description.appendText(
"was " + this.itemType.toString().toLowerCase() + " ")
.appendValue(property);
}
}