Changelog Class — spring-boot Architecture
Architecture documentation for the Changelog class in Changelog.java from the spring-boot codebase.
Entity Profile
Relationship Graph
Source Code
configuration-metadata/spring-boot-configuration-metadata-changelog-generator/src/main/java/org/springframework/boot/configurationmetadata/changelog/Changelog.java lines 38–73
record Changelog(String oldVersionNumber, String newVersionNumber, List<Difference> differences) {
static Changelog of(String oldVersionNumber, ConfigurationMetadataRepository oldMetadata, String newVersionNumber,
ConfigurationMetadataRepository newMetadata) {
return new Changelog(oldVersionNumber, newVersionNumber, computeDifferences(oldMetadata, newMetadata));
}
static List<Difference> computeDifferences(ConfigurationMetadataRepository oldMetadata,
ConfigurationMetadataRepository newMetadata) {
List<String> seenIds = new ArrayList<>();
List<Difference> differences = new ArrayList<>();
for (ConfigurationMetadataProperty oldProperty : oldMetadata.getAllProperties().values()) {
String id = oldProperty.getId();
seenIds.add(id);
ConfigurationMetadataProperty newProperty = newMetadata.getAllProperties().get(id);
Difference difference = Difference.compute(oldProperty, newProperty);
if (difference != null) {
differences.add(difference);
}
}
for (ConfigurationMetadataProperty newProperty : newMetadata.getAllProperties().values()) {
if (!seenIds.contains(newProperty.getId())) {
if (!newProperty.isDeprecated()) {
differences.add(new Difference(DifferenceType.ADDED, null, newProperty));
}
else {
DifferenceType differenceType = (newProperty.getDeprecation().getLevel() == Level.ERROR)
? DifferenceType.DELETED : DifferenceType.ADDED;
differences.add(new Difference(differenceType, null, newProperty));
}
}
}
return List.copyOf(differences);
}
}
Domain
Source
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free