Merge branch '3.4.x'
Closes gh-44136
This commit is contained in:
@@ -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) -> {
|
||||
|
||||
@@ -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) {
|
||||
|
||||
Reference in New Issue
Block a user