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
This commit is contained in:
		
							parent
							
								
									9b4ccf4ac6
								
							
						
					
					
						commit
						cf09451ffb
					
				| 
						 | 
					@ -111,7 +111,7 @@ public class MetadataCollector {
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	private boolean deletedInCurrentBuild(String sourceType) {
 | 
						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) {
 | 
						private boolean processedInCurrentBuild(String sourceType) {
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -23,6 +23,7 @@ import org.springframework.boot.configurationprocessor.metadata.Metadata;
 | 
				
			||||||
import org.springframework.boot.configurationsample.incremental.BarProperties;
 | 
					import org.springframework.boot.configurationsample.incremental.BarProperties;
 | 
				
			||||||
import org.springframework.boot.configurationsample.incremental.FooProperties;
 | 
					import org.springframework.boot.configurationsample.incremental.FooProperties;
 | 
				
			||||||
import org.springframework.boot.configurationsample.incremental.RenamedBarProperties;
 | 
					import org.springframework.boot.configurationsample.incremental.RenamedBarProperties;
 | 
				
			||||||
 | 
					import org.springframework.boot.configurationsample.simple.ClassWithNestedProperties;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import static org.assertj.core.api.Assertions.assertThat;
 | 
					import static org.assertj.core.api.Assertions.assertThat;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -92,4 +93,12 @@ class IncrementalBuildMetadataGenerationTests extends AbstractMetadataGeneration
 | 
				
			||||||
				.has(Metadata.withProperty("bar.counter").withDefaultValue(0).fromSource(RenamedBarProperties.class));
 | 
									.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…
	
		Reference in New Issue