Avoid NPE when replacement property does not exist

See gh-15394
pull/16246/head
hdeadman 6 years ago committed by Stephane Nicoll
parent 6906859a60
commit a1b71ef910

@ -137,6 +137,9 @@ class PropertiesMigrationReporter {
if (lastDot != -1) {
ConfigurationMetadataProperty property = this.allProperties
.get(fullId.substring(0, lastDot));
if (property == null) {
return null;
}
String type = property.getType();
if (type != null && type.startsWith(Map.class.getName())) {
int lastComma = type.lastIndexOf(',');

@ -152,6 +152,19 @@ public class PropertiesMigrationReporterTests {
+ "'test.inconvertible' uses an incompatible target type");
}
@Test
public void invalidReplacementHandled() throws IOException {
this.environment.getPropertySources().addFirst(loadPropertySource("first",
"config/config-error-invalid-replacement.properties"));
String report = createErrorReport(
loadRepository("metadata/sample-metadata-invalid-replacement.json"));
assertThat(report).isNotNull();
assertThat(report).containsSubsequence("Property source 'first'",
"deprecated.six.test", "Line: 1", "Reason",
"Replacement key 'does.not.exist' uses an incompatible target type");
assertThat(report).doesNotContain("null");
}
private List<String> mapToNames(PropertySources sources) {
List<String> names = new ArrayList<>();
for (PropertySource<?> source : sources) {

@ -0,0 +1,12 @@
{
"properties": [
{
"name": "deprecated.six.test",
"type": "java.lang.String",
"deprecation": {
"replacement": "does.not.exist",
"level": "error"
}
}
]
}
Loading…
Cancel
Save