Skip to content

Commit cf09451

Browse files
committed
Retain inner-class data on incremental compile
Ensure that metadata sourced from inner-types is not deleted when performing an incremental compile. Prior to this commit, the source type was searched using the `Outer$Inner` format. This is not supported `Elements.getTypeElement` so we now convert the names to `Outer.Inner`. Closes gh-10886
1 parent 9b4ccf4 commit cf09451

File tree

2 files changed

+10
-1
lines changed

2 files changed

+10
-1
lines changed

spring-boot-project/spring-boot-tools/spring-boot-configuration-processor/src/main/java/org/springframework/boot/configurationprocessor/MetadataCollector.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -111,7 +111,7 @@ private boolean shouldBeMerged(ItemMetadata itemMetadata) {
111111
}
112112

113113
private boolean deletedInCurrentBuild(String sourceType) {
114-
return this.processingEnvironment.getElementUtils().getTypeElement(sourceType) == null;
114+
return this.processingEnvironment.getElementUtils().getTypeElement(sourceType.replace('$', '.')) == null;
115115
}
116116

117117
private boolean processedInCurrentBuild(String sourceType) {

spring-boot-project/spring-boot-tools/spring-boot-configuration-processor/src/test/java/org/springframework/boot/configurationprocessor/IncrementalBuildMetadataGenerationTests.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
import org.springframework.boot.configurationsample.incremental.BarProperties;
2424
import org.springframework.boot.configurationsample.incremental.FooProperties;
2525
import org.springframework.boot.configurationsample.incremental.RenamedBarProperties;
26+
import org.springframework.boot.configurationsample.simple.ClassWithNestedProperties;
2627

2728
import static org.assertj.core.api.Assertions.assertThat;
2829

@@ -92,4 +93,12 @@ void incrementalBuildTypeRenamed() throws Exception {
9293
.has(Metadata.withProperty("bar.counter").withDefaultValue(0).fromSource(RenamedBarProperties.class));
9394
}
9495

96+
@Test
97+
void incrementalBuildDoesNotDeleteItems() throws Exception {
98+
TestProject project = new TestProject(this.tempDir, ClassWithNestedProperties.class, FooProperties.class);
99+
ConfigurationMetadata initialMetadata = project.fullBuild();
100+
ConfigurationMetadata updatedMetadata = project.incrementalBuild(FooProperties.class);
101+
assertThat(initialMetadata.getItems()).isEqualTo(updatedMetadata.getItems());
102+
}
103+
95104
}

0 commit comments

Comments
 (0)