Skip to content

Commit 0b8f2a5

Browse files
committed
Improve version upgrade suggestions when version is aligned
Closes gh-44132
1 parent 785dc18 commit 0b8f2a5

File tree

2 files changed

+28
-4
lines changed

2 files changed

+28
-4
lines changed

buildSrc/src/main/java/org/springframework/boot/build/bom/bomr/InteractiveUpgradeResolver.java

+16-1
Original file line numberDiff line numberDiff line change
@@ -23,10 +23,13 @@
2323
import java.util.List;
2424
import java.util.Map;
2525
import java.util.Objects;
26+
import java.util.Set;
2627

2728
import org.gradle.api.internal.tasks.userinput.UserInputHandler;
2829

2930
import org.springframework.boot.build.bom.Library;
31+
import org.springframework.boot.build.bom.Library.VersionAlignment;
32+
import org.springframework.boot.build.bom.bomr.version.DependencyVersion;
3033

3134
/**
3235
* Interactive {@link UpgradeResolver} that uses command line input to choose the upgrades
@@ -69,11 +72,23 @@ private Upgrade resolveUpgrade(LibraryWithVersionOptions libraryWithVersionOptio
6972
if (versionOptions.isEmpty()) {
7073
return null;
7174
}
72-
VersionOption defaultOption = new VersionOption(library.getVersion().getVersion());
75+
VersionOption defaultOption = defaultOption(library);
7376
VersionOption selected = selectOption(defaultOption, library, versionOptions);
7477
return (selected.equals(defaultOption)) ? null : new Upgrade(library, selected.getVersion());
7578
}
7679

80+
private VersionOption defaultOption(Library library) {
81+
VersionAlignment alignment = library.getVersionAlignment();
82+
Set<String> alignedVersions = (alignment != null) ? alignment.resolve() : null;
83+
if (alignedVersions != null && alignedVersions.size() == 1) {
84+
DependencyVersion alignedVersion = DependencyVersion.parse(alignedVersions.iterator().next());
85+
if (alignedVersion.equals(library.getVersion().getVersion())) {
86+
return new VersionOption.AlignedVersionOption(alignedVersion, alignment);
87+
}
88+
}
89+
return new VersionOption(library.getVersion().getVersion());
90+
}
91+
7792
private VersionOption selectOption(VersionOption defaultOption, Library library,
7893
List<VersionOption> versionOptions) {
7994
VersionOption selected = this.userInputHandler.askUser((questions) -> {

buildSrc/src/main/java/org/springframework/boot/build/bom/bomr/StandardLibraryUpdateResolver.java

+12-3
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright 2012-2024 the original author or authors.
2+
* Copyright 2012-2025 the original author or authors.
33
*
44
* Licensed under the Apache License, Version 2.0 (the "License");
55
* you may not use this file except in compliance with the License.
@@ -78,8 +78,17 @@ protected boolean isLibraryExcluded(Library library) {
7878
}
7979

8080
protected List<VersionOption> getVersionOptions(Library library) {
81-
VersionOption option = determineAlignedVersionOption(library);
82-
return (option != null) ? List.of(option) : determineResolvedVersionOptions(library);
81+
List<VersionOption> options = new ArrayList<>();
82+
VersionOption alignedOption = determineAlignedVersionOption(library);
83+
if (alignedOption != null) {
84+
options.add(alignedOption);
85+
}
86+
for (VersionOption resolvedOption : determineResolvedVersionOptions(library)) {
87+
if (alignedOption == null || !alignedOption.getVersion().equals(resolvedOption.getVersion())) {
88+
options.add(resolvedOption);
89+
}
90+
}
91+
return options;
8392
}
8493

8594
private VersionOption determineAlignedVersionOption(Library library) {

0 commit comments

Comments
 (0)