mirror of
https://github.com/spring-projects/spring-boot.git
synced 2026-09-17 12:09:16 +00:00
Document properties whose default values have changed
This commit adds a new section in the Configuration Changelog to indicate properties whose default values have changed. See gh-48962 Signed-off-by: junpak <junpak.park@gmail.com>
This commit is contained in:
+13
@@ -68,6 +68,8 @@ class ChangelogWriter implements AutoCloseable {
|
||||
String newVersionNumber = changelog.newVersionNumber();
|
||||
Map<DifferenceType, List<Difference>> differencesByType = collateByType(changelog);
|
||||
write("Configuration property changes between `%s` and `%s`%n", oldVersionNumber, newVersionNumber);
|
||||
write("%n%n%n== Default Value Changed in %s%n%n", newVersionNumber);
|
||||
writeDefaultValueChanged(differencesByType.get(DifferenceType.DEFAULT_VALUE_CHANGED));
|
||||
write("%n%n%n== Deprecated in %s%n%n", newVersionNumber);
|
||||
writeDeprecated(differencesByType.get(DifferenceType.DEPRECATED));
|
||||
write("%n%n%n== Added in %s%n%n", newVersionNumber);
|
||||
@@ -98,6 +100,17 @@ class ChangelogWriter implements AutoCloseable {
|
||||
writeDeprecatedPropertyRow(difference.newProperty());
|
||||
}
|
||||
|
||||
private void writeDefaultValueChanged(List<Difference> differences) {
|
||||
List<Difference> rows = sortProperties(differences, Difference::newProperty);
|
||||
writeTable("| Key | Old Default | New Default", rows, this::writeDefaultValueChanged);
|
||||
}
|
||||
|
||||
private void writeDefaultValueChanged(Difference difference) {
|
||||
writeCell(monospace(difference.newProperty().getId()));
|
||||
writeCell(monospace(asString(difference.oldProperty().getDefaultValue())));
|
||||
writeCell(monospace(asString(difference.newProperty().getDefaultValue())));
|
||||
}
|
||||
|
||||
private void writeAdded(List<Difference> differences) {
|
||||
List<Difference> rows = sortProperties(differences, Difference::newProperty);
|
||||
writeTable("| Key | Default value | Description", rows, this::writeAdded);
|
||||
|
||||
+5
@@ -16,6 +16,8 @@
|
||||
|
||||
package org.springframework.boot.configurationmetadata.changelog;
|
||||
|
||||
import java.util.Objects;
|
||||
|
||||
import org.springframework.boot.configurationmetadata.ConfigurationMetadataProperty;
|
||||
import org.springframework.boot.configurationmetadata.Deprecation.Level;
|
||||
|
||||
@@ -49,6 +51,9 @@ record Difference(DifferenceType type, ConfigurationMetadataProperty oldProperty
|
||||
&& newProperty.isDeprecated() && newProperty.getDeprecation().getLevel() == Level.ERROR) {
|
||||
return new Difference(DifferenceType.DELETED, oldProperty, newProperty);
|
||||
}
|
||||
if (!Objects.equals(oldProperty.getDefaultValue(), newProperty.getDefaultValue())) {
|
||||
return new Difference(DifferenceType.DEFAULT_VALUE_CHANGED, oldProperty, newProperty);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
+6
-1
@@ -37,6 +37,11 @@ enum DifferenceType {
|
||||
/**
|
||||
* The entry has been deleted.
|
||||
*/
|
||||
DELETED
|
||||
DELETED,
|
||||
|
||||
/**
|
||||
* The entry's default value has been changed.
|
||||
*/
|
||||
DEFAULT_VALUE_CHANGED
|
||||
|
||||
}
|
||||
|
||||
+8
-1
@@ -39,7 +39,7 @@ class ChangelogTests {
|
||||
assertThat(differences).isNotNull();
|
||||
assertThat(differences.oldVersionNumber()).isEqualTo("1.0");
|
||||
assertThat(differences.newVersionNumber()).isEqualTo("2.0");
|
||||
assertThat(differences.differences()).hasSize(7);
|
||||
assertThat(differences.differences()).hasSize(9);
|
||||
List<Difference> added = differences.differences()
|
||||
.stream()
|
||||
.filter((difference) -> difference.type() == DifferenceType.ADDED)
|
||||
@@ -65,6 +65,13 @@ class ChangelogTests {
|
||||
assertThat(deprecated).hasSize(1);
|
||||
assertProperty(deprecated.get(0).oldProperty(), "test.deprecate", String.class, "wrong");
|
||||
assertProperty(deprecated.get(0).newProperty(), "test.deprecate", String.class, "wrong");
|
||||
List<Difference> defaultValueChanged = differences.differences()
|
||||
.stream()
|
||||
.filter((difference) -> difference.type() == DifferenceType.DEFAULT_VALUE_CHANGED)
|
||||
.toList();
|
||||
assertThat(defaultValueChanged).hasSize(2)
|
||||
.anySatisfy((entry) -> assertProperty(entry.newProperty(), "test.default.change", String.class, "new"))
|
||||
.anySatisfy((entry) -> assertThat(entry.newProperty().getId()).isEqualTo("test.array.change"));
|
||||
}
|
||||
|
||||
private void assertProperty(ConfigurationMetadataProperty property, String id, Class<?> type, Object defaultValue) {
|
||||
|
||||
+13
-1
@@ -6,6 +6,12 @@
|
||||
"description": "Test equality.",
|
||||
"defaultValue": "test"
|
||||
},
|
||||
{
|
||||
"name": "test.default.change",
|
||||
"type": "java.lang.String",
|
||||
"description": "Test default value change.",
|
||||
"defaultValue": "old"
|
||||
},
|
||||
{
|
||||
"name": "test.replace",
|
||||
"type": "java.lang.String",
|
||||
@@ -41,6 +47,12 @@
|
||||
"deprecation": {
|
||||
"level": "error"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "test.array.change",
|
||||
"type": "java.lang.String[]",
|
||||
"description": "Test array default value change.",
|
||||
"defaultValue": ["a", "b"]
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
+12
@@ -6,6 +6,12 @@
|
||||
"description": "Test add.",
|
||||
"defaultValue": "new"
|
||||
},
|
||||
{
|
||||
"name": "test.default.change",
|
||||
"type": "java.lang.String",
|
||||
"description": "Test default value change.",
|
||||
"defaultValue": "new"
|
||||
},
|
||||
{
|
||||
"name": "test.replace",
|
||||
"type": "java.lang.String",
|
||||
@@ -60,6 +66,12 @@
|
||||
"replacement": "test.new.property",
|
||||
"reason": "removed in third-party library without deprecation"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "test.array.change",
|
||||
"type": "java.lang.String[]",
|
||||
"description": "Test array default value change.",
|
||||
"defaultValue": ["a", "b", "c"]
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
+16
@@ -2,6 +2,22 @@ Configuration property changes between `1.0` and `2.0`
|
||||
|
||||
|
||||
|
||||
== Default Value Changed in 2.0
|
||||
|
||||
|======================
|
||||
| Key | Old Default | New Default
|
||||
|
||||
| `test.array.change`
|
||||
| `a, b`
|
||||
| `a, b, c`
|
||||
|
||||
| `test.default.change`
|
||||
| `old`
|
||||
| `new`
|
||||
|======================
|
||||
|
||||
|
||||
|
||||
== Deprecated in 2.0
|
||||
|
||||
|======================
|
||||
|
||||
Reference in New Issue
Block a user