Merge branch '3.4.x'

Closes gh-44136
This commit is contained in:
Andy Wilkinson
2025-02-05 10:59:19 +00:00
2 changed files with 28 additions and 4 deletions

View File

@@ -23,10 +23,13 @@ import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.Set;
import org.gradle.api.internal.tasks.userinput.UserInputHandler;
import org.springframework.boot.build.bom.Library;
import org.springframework.boot.build.bom.Library.VersionAlignment;
import org.springframework.boot.build.bom.bomr.version.DependencyVersion;
/**
* Interactive {@link UpgradeResolver} that uses command line input to choose the upgrades
@@ -69,11 +72,23 @@ public final class InteractiveUpgradeResolver implements UpgradeResolver {
if (versionOptions.isEmpty()) {
return null;
}
VersionOption defaultOption = new VersionOption(library.getVersion().getVersion());
VersionOption defaultOption = defaultOption(library);
VersionOption selected = selectOption(defaultOption, library, versionOptions);
return (selected.equals(defaultOption)) ? null : selected.upgrade(library);
}
private VersionOption defaultOption(Library library) {
VersionAlignment alignment = library.getVersionAlignment();
Set<String> alignedVersions = (alignment != null) ? alignment.resolve() : null;
if (alignedVersions != null && alignedVersions.size() == 1) {
DependencyVersion alignedVersion = DependencyVersion.parse(alignedVersions.iterator().next());
if (alignedVersion.equals(library.getVersion().getVersion())) {
return new VersionOption.AlignedVersionOption(alignedVersion, alignment);
}
}
return new VersionOption(library.getVersion().getVersion());
}
private VersionOption selectOption(VersionOption defaultOption, Library library,
List<VersionOption> versionOptions) {
VersionOption selected = this.userInputHandler.askUser((questions) -> {

View File

@@ -1,5 +1,5 @@
/*
* Copyright 2012-2024 the original author or authors.
* Copyright 2012-2025 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -77,8 +77,17 @@ class StandardLibraryUpdateResolver implements LibraryUpdateResolver {
}
protected List<VersionOption> getVersionOptions(Library library) {
VersionOption option = determineAlignedVersionOption(library);
return (option != null) ? List.of(option) : determineResolvedVersionOptions(library);
List<VersionOption> options = new ArrayList<>();
VersionOption alignedOption = determineAlignedVersionOption(library);
if (alignedOption != null) {
options.add(alignedOption);
}
for (VersionOption resolvedOption : determineResolvedVersionOptions(library)) {
if (alignedOption == null || !alignedOption.getVersion().equals(resolvedOption.getVersion())) {
options.add(resolvedOption);
}
}
return options;
}
private VersionOption determineAlignedVersionOption(Library library) {