Commit bdd532cc authored by Stephane Nicoll's avatar Stephane Nicoll

Clarify when a property was not renamed due to an incompatible type

Closes gh-11794
parent 43e5e83d
...@@ -25,6 +25,7 @@ import java.util.function.Function; ...@@ -25,6 +25,7 @@ import java.util.function.Function;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import org.springframework.boot.configurationmetadata.ConfigurationMetadataProperty; import org.springframework.boot.configurationmetadata.ConfigurationMetadataProperty;
import org.springframework.boot.configurationmetadata.Deprecation;
import org.springframework.util.StringUtils; import org.springframework.util.StringUtils;
/** /**
...@@ -74,10 +75,7 @@ class PropertiesMigrationReport { ...@@ -74,10 +75,7 @@ class PropertiesMigrationReport {
StringBuilder report = new StringBuilder(); StringBuilder report = new StringBuilder();
report.append(String.format("%nThe use of configuration keys that are no longer " report.append(String.format("%nThe use of configuration keys that are no longer "
+ "supported was found in the environment:%n%n")); + "supported was found in the environment:%n%n"));
append(report, content, append(report, content, this::determineReason);
(metadata) -> "Reason: "
+ (StringUtils.hasText(metadata.getDeprecation().getShortReason())
? metadata.getDeprecation().getShortReason() : "none"));
report.append(String.format("%n")); report.append(String.format("%n"));
report.append("Please refer to the migration guide or reference guide for " report.append("Please refer to the migration guide or reference guide for "
+ "potential alternatives."); + "potential alternatives.");
...@@ -85,6 +83,18 @@ class PropertiesMigrationReport { ...@@ -85,6 +83,18 @@ class PropertiesMigrationReport {
return report.toString(); return report.toString();
} }
private String determineReason(ConfigurationMetadataProperty metadata) {
Deprecation deprecation = metadata.getDeprecation();
if (StringUtils.hasText(deprecation.getShortReason())) {
return deprecation.getShortReason();
}
if (StringUtils.hasText(deprecation.getReplacement())) {
return String.format("Reason: Replacement key '%s' uses an incompatible "
+ "target type", deprecation.getReplacement());
}
return "none";
}
private Map<String, List<PropertyMigration>> getContent( private Map<String, List<PropertyMigration>> getContent(
Function<LegacyProperties, List<PropertyMigration>> extractor) { Function<LegacyProperties, List<PropertyMigration>> extractor) {
return this.content.entrySet().stream() return this.content.entrySet().stream()
......
...@@ -141,6 +141,18 @@ public class PropertiesMigrationReporterTests { ...@@ -141,6 +141,18 @@ public class PropertiesMigrationReporterTests {
assertMappedProperty(propertySource, "test.mapped.ttl", 5678L, null); assertMappedProperty(propertySource, "test.mapped.ttl", 5678L, null);
} }
@Test
public void reasonIsProvidedIfPropertyCouldNotBeRenamed() throws IOException {
this.environment.getPropertySources().addFirst(loadPropertySource("test",
"config/config-error-no-compatible-type.properties"));
String report = createErrorReport(
loadRepository("metadata/type-conversion-metadata.json"));
assertThat(report).isNotNull();
assertThat(report).containsSubsequence("Property source 'test'",
"wrong.inconvertible", "Line: 1", "Reason: Replacement key "
+ "'test.inconvertible' uses an incompatible target type");
}
private List<String> mapToNames(PropertySources sources) { private List<String> mapToNames(PropertySources sources) {
List<String> names = new ArrayList<>(); List<String> names = new ArrayList<>();
for (PropertySource<?> source : sources) { for (PropertySource<?> source : sources) {
......
...@@ -12,6 +12,10 @@ ...@@ -12,6 +12,10 @@
"name": "test.mapped", "name": "test.mapped",
"type": "java.util.Map<java.lang.String, java.time.Duration>" "type": "java.util.Map<java.lang.String, java.time.Duration>"
}, },
{
"name": "test.inconvertible",
"type": "com.example.One"
},
{ {
"name": "test.cache-seconds", "name": "test.cache-seconds",
"type": "java.lang.Integer", "type": "java.lang.Integer",
...@@ -35,6 +39,14 @@ ...@@ -35,6 +39,14 @@
"replacement": "test.mapped.ttl", "replacement": "test.mapped.ttl",
"level": "error" "level": "error"
} }
},
{
"name": "wrong.inconvertible",
"type": "com.example.Two",
"deprecation": {
"replacement": "test.inconvertible",
"level": "error"
}
} }
] ]
} }
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment