Browse Source

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
pull/24789/head
Phillip Webb 5 years ago
parent
commit
cf09451ffb
  1. 2
      spring-boot-project/spring-boot-tools/spring-boot-configuration-processor/src/main/java/org/springframework/boot/configurationprocessor/MetadataCollector.java
  2. 9
      spring-boot-project/spring-boot-tools/spring-boot-configuration-processor/src/test/java/org/springframework/boot/configurationprocessor/IncrementalBuildMetadataGenerationTests.java

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

@ -111,7 +111,7 @@ public class MetadataCollector { @@ -111,7 +111,7 @@ public class MetadataCollector {
}
private boolean deletedInCurrentBuild(String sourceType) {
return this.processingEnvironment.getElementUtils().getTypeElement(sourceType) == null;
return this.processingEnvironment.getElementUtils().getTypeElement(sourceType.replace('$', '.')) == null;
}
private boolean processedInCurrentBuild(String sourceType) {

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

@ -23,6 +23,7 @@ import org.springframework.boot.configurationprocessor.metadata.Metadata; @@ -23,6 +23,7 @@ import org.springframework.boot.configurationprocessor.metadata.Metadata;
import org.springframework.boot.configurationsample.incremental.BarProperties;
import org.springframework.boot.configurationsample.incremental.FooProperties;
import org.springframework.boot.configurationsample.incremental.RenamedBarProperties;
import org.springframework.boot.configurationsample.simple.ClassWithNestedProperties;
import static org.assertj.core.api.Assertions.assertThat;
@ -92,4 +93,12 @@ class IncrementalBuildMetadataGenerationTests extends AbstractMetadataGeneration @@ -92,4 +93,12 @@ class IncrementalBuildMetadataGenerationTests extends AbstractMetadataGeneration
.has(Metadata.withProperty("bar.counter").withDefaultValue(0).fromSource(RenamedBarProperties.class));
}
@Test
void incrementalBuildDoesNotDeleteItems() throws Exception {
TestProject project = new TestProject(this.tempDir, ClassWithNestedProperties.class, FooProperties.class);
ConfigurationMetadata initialMetadata = project.fullBuild();
ConfigurationMetadata updatedMetadata = project.incrementalBuild(FooProperties.class);
assertThat(initialMetadata.getItems()).isEqualTo(updatedMetadata.getItems());
}
}

Loading…
Cancel
Save