Commit fcf7240f authored by Andy Wilkinson's avatar Andy Wilkinson

Merge branch '2.5.x'

See gh-27047
parents 9b91c181 f7140d04
...@@ -86,13 +86,12 @@ public final class InteractiveUpgradeResolver implements UpgradeResolver { ...@@ -86,13 +86,12 @@ public final class InteractiveUpgradeResolver implements UpgradeResolver {
private List<VersionOption> getVersionOptions(Library library, Map<String, Library> libraries) { private List<VersionOption> getVersionOptions(Library library, Map<String, Library> libraries) {
if (library.getVersion().getVersionAlignment() != null) { if (library.getVersion().getVersionAlignment() != null) {
VersionOption alignedVersionOption = alignedVersionOption(library, libraries); return determineAlignedVersionOption(library, libraries);
if (!isPermitted(alignedVersionOption.version, library.getProhibitedVersions())) {
throw new InvalidUserDataException("Version alignment failed. Version " + alignedVersionOption.version
+ " from " + library.getName() + " is prohibited");
}
return Collections.singletonList(alignedVersionOption);
} }
return determineResolvedVersionOptions(library);
}
private List<VersionOption> determineResolvedVersionOptions(Library library) {
Map<String, SortedSet<DependencyVersion>> moduleVersions = new LinkedHashMap<>(); Map<String, SortedSet<DependencyVersion>> moduleVersions = new LinkedHashMap<>();
DependencyVersion libraryVersion = library.getVersion().getVersion(); DependencyVersion libraryVersion = library.getVersion().getVersion();
for (Group group : library.getGroups()) { for (Group group : library.getGroups()) {
...@@ -120,6 +119,18 @@ public final class InteractiveUpgradeResolver implements UpgradeResolver { ...@@ -120,6 +119,18 @@ public final class InteractiveUpgradeResolver implements UpgradeResolver {
.collect(Collectors.toList()); .collect(Collectors.toList());
} }
private List<VersionOption> determineAlignedVersionOption(Library library, Map<String, Library> libraries) {
VersionOption alignedVersionOption = alignedVersionOption(library, libraries);
if (alignedVersionOption == null) {
return Collections.emptyList();
}
if (!isPermitted(alignedVersionOption.version, library.getProhibitedVersions())) {
throw new InvalidUserDataException("Version alignment failed. Version " + alignedVersionOption.version
+ " from " + library.getName() + " is prohibited");
}
return Collections.singletonList(alignedVersionOption);
}
private VersionOption alignedVersionOption(Library library, Map<String, Library> libraries) { private VersionOption alignedVersionOption(Library library, Map<String, Library> libraries) {
VersionAlignment versionAlignment = library.getVersion().getVersionAlignment(); VersionAlignment versionAlignment = library.getVersion().getVersionAlignment();
Library alignmentLibrary = libraries.get(versionAlignment.getLibraryName()); Library alignmentLibrary = libraries.get(versionAlignment.getLibraryName());
...@@ -148,8 +159,9 @@ public final class InteractiveUpgradeResolver implements UpgradeResolver { ...@@ -148,8 +159,9 @@ public final class InteractiveUpgradeResolver implements UpgradeResolver {
throw new InvalidUserDataException("Cannot align with library '" + versionAlignment.getLibraryName() throw new InvalidUserDataException("Cannot align with library '" + versionAlignment.getLibraryName()
+ "' as it uses multiple different versions of this library's modules"); + "' as it uses multiple different versions of this library's modules");
} }
String requiredVersion = versions.iterator().next(); DependencyVersion version = DependencyVersion.parse(versions.iterator().next());
return new AlignedVersionOption(DependencyVersion.parse(requiredVersion), alignmentLibrary); return library.getVersion().getVersion().equals(version) ? null
: new AlignedVersionOption(version, alignmentLibrary);
} }
private boolean isPermitted(DependencyVersion dependencyVersion, List<ProhibitedVersion> prohibitedVersions) { private boolean isPermitted(DependencyVersion dependencyVersion, List<ProhibitedVersion> prohibitedVersions) {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment