Home / Class/ Changelog Class — spring-boot Architecture

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

Analyze Your Own Codebase

Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.

Try Supermodel Free