Skip to content

Commit d8be5ca

Browse files
committed
Document properties that were added as deprecated
This commit handles a corner case where we have to add properties in a release that represents something we mean to remove but that's not ready to go away just yet. Those properties are now considered in the changelog, but marked as deprecated. Closes gh-47759
1 parent 1cfba04 commit d8be5ca

File tree

5 files changed

+28
-14
lines changed

5 files changed

+28
-14
lines changed

configuration-metadata/spring-boot-configuration-metadata-changelog-generator/src/main/java/org/springframework/boot/configurationmetadata/changelog/Changelog.java

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -57,12 +57,14 @@ static List<Difference> computeDifferences(ConfigurationMetadataRepository oldMe
5757
}
5858
for (ConfigurationMetadataProperty newProperty : newMetadata.getAllProperties().values()) {
5959
if (!seenIds.contains(newProperty.getId())) {
60-
if (newProperty.isDeprecated() && newProperty.getDeprecation().getLevel() == Level.ERROR) {
61-
differences.add(new Difference(DifferenceType.DELETED, null, newProperty));
62-
}
63-
else if (!newProperty.isDeprecated()) {
60+
if (!newProperty.isDeprecated()) {
6461
differences.add(new Difference(DifferenceType.ADDED, null, newProperty));
6562
}
63+
else {
64+
DifferenceType differenceType = (newProperty.getDeprecation().getLevel() == Level.ERROR)
65+
? DifferenceType.DELETED : DifferenceType.ADDED;
66+
differences.add(new Difference(differenceType, null, newProperty));
67+
}
6668
}
6769
}
6870
return List.copyOf(differences);

configuration-metadata/spring-boot-configuration-metadata-changelog-generator/src/main/java/org/springframework/boot/configurationmetadata/changelog/ChangelogWriter.java

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -104,7 +104,10 @@ private void writeAdded(List<Difference> differences) {
104104
}
105105

106106
private void writeAdded(Difference difference) {
107-
writeRegularPropertyRow(difference.newProperty());
107+
ConfigurationMetadataProperty property = difference.newProperty();
108+
writeCell(monospace(property.getId()) + (property.isDeprecated() ? " (deprecated)" : ""));
109+
writeCell(monospace(asString(property.getDefaultValue())));
110+
writeCell(property.getShortDescription());
108111
}
109112

110113
private void writeRemoved(List<Difference> deleted, List<Difference> deprecated) {
@@ -157,12 +160,6 @@ private void writeTableBreak() {
157160
write("|======================%n");
158161
}
159162

160-
private void writeRegularPropertyRow(ConfigurationMetadataProperty property) {
161-
writeCell(monospace(property.getId()));
162-
writeCell(monospace(asString(property.getDefaultValue())));
163-
writeCell(property.getShortDescription());
164-
}
165-
166163
private void writeDeprecatedPropertyRow(ConfigurationMetadataProperty property) {
167164
Deprecation deprecation = (property.getDeprecation() != null) ? property.getDeprecation() : new Deprecation();
168165
writeCell(monospace(property.getId()));

configuration-metadata/spring-boot-configuration-metadata-changelog-generator/src/test/java/org/springframework/boot/configurationmetadata/changelog/ChangelogTests.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -39,13 +39,14 @@ void diffContainsDifferencesBetweenLeftAndRightInputs() {
3939
assertThat(differences).isNotNull();
4040
assertThat(differences.oldVersionNumber()).isEqualTo("1.0");
4141
assertThat(differences.newVersionNumber()).isEqualTo("2.0");
42-
assertThat(differences.differences()).hasSize(5);
42+
assertThat(differences.differences()).hasSize(6);
4343
List<Difference> added = differences.differences()
4444
.stream()
4545
.filter((difference) -> difference.type() == DifferenceType.ADDED)
4646
.toList();
47-
assertThat(added).hasSize(1);
48-
assertProperty(added.get(0).newProperty(), "test.add", String.class, "new");
47+
assertThat(added).hasSize(2)
48+
.anySatisfy((entry) -> assertProperty(entry.newProperty(), "test.add", String.class, "new"))
49+
.anySatisfy((entry) -> assertProperty(entry.newProperty(), "test.add.deprecated", String.class, "test2"));
4950
List<Difference> deleted = differences.differences()
5051
.stream()
5152
.filter((difference) -> difference.type() == DifferenceType.DELETED)

configuration-metadata/spring-boot-configuration-metadata-changelog-generator/src/test/resources/sample-2.0.json

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,16 @@
66
"description": "Test add.",
77
"defaultValue": "new"
88
},
9+
{
10+
"name": "test.add.deprecated",
11+
"type": "java.lang.String",
12+
"description": "Test add deprecated.",
13+
"defaultValue": "test2",
14+
"deprecation": {
15+
"replacement": "test.equal",
16+
"reason": "Deprecated in favor of Equal"
17+
}
18+
},
919
{
1020
"name": "test.equal",
1121
"type": "java.lang.String",

configuration-metadata/spring-boot-configuration-metadata-changelog-generator/src/test/resources/sample.adoc

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,10 @@ _None_.
1616
| `test.add`
1717
| `new`
1818
| Test add.
19+
20+
| `test.add.deprecated` (deprecated)
21+
| `test2`
22+
| Test add deprecated.
1923
|======================
2024

2125

0 commit comments

Comments
 (0)