Polish "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
This commit is contained in:
Stéphane Nicoll
2026-01-30 17:00:32 +01:00
parent d760b171c3
commit a0a1ebfc18
7 changed files with 32 additions and 30 deletions
@@ -68,8 +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== Default Changed in %s%n%n", newVersionNumber);
writeDefaultChanged(differencesByType.get(DifferenceType.DEFAULT_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);
@@ -100,12 +100,12 @@ class ChangelogWriter implements AutoCloseable {
writeDeprecatedPropertyRow(difference.newProperty());
}
private void writeDefaultValueChanged(List<Difference> differences) {
private void writeDefaultChanged(List<Difference> differences) {
List<Difference> rows = sortProperties(differences, Difference::newProperty);
writeTable("| Key | Old Default | New Default", rows, this::writeDefaultValueChanged);
writeTable("| Key | Old Default | New Default", rows, this::writeDefaultChanged);
}
private void writeDefaultValueChanged(Difference difference) {
private void writeDefaultChanged(Difference difference) {
writeCell(monospace(difference.newProperty().getId()));
writeCell(monospace(asString(difference.oldProperty().getDefaultValue())));
writeCell(monospace(asString(difference.newProperty().getDefaultValue())));
@@ -52,7 +52,7 @@ record Difference(DifferenceType type, ConfigurationMetadataProperty oldProperty
return new Difference(DifferenceType.DELETED, oldProperty, newProperty);
}
if (!Objects.equals(oldProperty.getDefaultValue(), newProperty.getDefaultValue())) {
return new Difference(DifferenceType.DEFAULT_VALUE_CHANGED, oldProperty, newProperty);
return new Difference(DifferenceType.DEFAULT_CHANGED, oldProperty, newProperty);
}
return null;
}
@@ -40,8 +40,9 @@ enum DifferenceType {
DELETED,
/**
* The entry's default value has been changed.
* The entry's default value has changed. The entry exists in both the previous and
* current versions, but its default value is different.
*/
DEFAULT_VALUE_CHANGED
DEFAULT_CHANGED
}
@@ -65,19 +65,20 @@ 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()
List<Difference> defaultChanged = differences.differences()
.stream()
.filter((difference) -> difference.type() == DifferenceType.DEFAULT_VALUE_CHANGED)
.filter((difference) -> difference.type() == DifferenceType.DEFAULT_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"));
assertThat(defaultChanged).hasSize(2)
.anySatisfy((entry) -> assertProperty(entry.newProperty(), "test.default.array.change", String[].class,
new String[] { "b", "a" }))
.anySatisfy((entry) -> assertProperty(entry.newProperty(), "test.default.change", String.class, "new"));
}
private void assertProperty(ConfigurationMetadataProperty property, String id, Class<?> type, Object defaultValue) {
assertThat(property).isNotNull();
assertThat(property.getId()).isEqualTo(id);
assertThat(property.getType()).isEqualTo(type.getName());
assertThat(property.getType()).isEqualTo(type.getCanonicalName());
assertThat(property.getDefaultValue()).isEqualTo(defaultValue);
}
@@ -12,6 +12,12 @@
"description": "Test default value change.",
"defaultValue": "old"
},
{
"name": "test.default.array.change",
"type": "java.lang.String[]",
"description": "Test default array value change.",
"defaultValue": ["a", "b"]
},
{
"name": "test.replace",
"type": "java.lang.String",
@@ -47,12 +53,6 @@
"deprecation": {
"level": "error"
}
},
{
"name": "test.array.change",
"type": "java.lang.String[]",
"description": "Test array default value change.",
"defaultValue": ["a", "b"]
}
]
}
}
@@ -12,6 +12,12 @@
"description": "Test default value change.",
"defaultValue": "new"
},
{
"name": "test.default.array.change",
"type": "java.lang.String[]",
"description": "Test default array value change.",
"defaultValue": ["b", "a"]
},
{
"name": "test.replace",
"type": "java.lang.String",
@@ -66,12 +72,6 @@
"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"]
}
]
}
@@ -2,14 +2,14 @@ Configuration property changes between `1.0` and `2.0`
== Default Value Changed in 2.0
== Default Changed in 2.0
|======================
| Key | Old Default | New Default
| `test.array.change`
| `test.default.array.change`
| `a, b`
| `a, b, c`
| `b, a`
| `test.default.change`
| `old`