mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-03-22 15:19:59 +07:00
Fix snapshot version handling in annotations artifacts lookup
GitOrigin-RevId: 89689b905ef5fe3376a2adf9d403c2a7ff2e1755
This commit is contained in:
committed by
intellij-monorepo-bot
parent
9e93c11c7b
commit
a38d098d23
@@ -355,18 +355,19 @@ public final class ArtifactRepositoryManager {
|
||||
|
||||
final Version version = constraint.getVersion();
|
||||
if (version != null) {
|
||||
final String major = version.toString().split("[.\\-_]")[0];
|
||||
annotationsConstraint = "[" + major + ", " + version + "-an10000]";
|
||||
final String lower = chooseLowerBoundString(version);
|
||||
annotationsConstraint = "[" + lower + ", " + version + "-an10000]";
|
||||
}
|
||||
|
||||
final VersionRange range = constraint.getRange();
|
||||
if (range != null) {
|
||||
final String majorLower = range.getLowerBound().getVersion().toString().split("[.\\-_]")[0];
|
||||
Version lowerBoundVersion = range.getLowerBound().getVersion();
|
||||
|
||||
String lower = chooseLowerBoundString(lowerBoundVersion);
|
||||
String upper = range.getUpperBound().isInclusive()
|
||||
? range.getUpperBound().toString() + "-an10000]"
|
||||
: range.getUpperBound().toString() + ")";
|
||||
annotationsConstraint = "[" + majorLower + ", " + upper;
|
||||
annotationsConstraint = "[" + lower + ", " + upper;
|
||||
}
|
||||
|
||||
try {
|
||||
@@ -378,6 +379,20 @@ public final class ArtifactRepositoryManager {
|
||||
return Collections.singleton(constraint);
|
||||
}
|
||||
|
||||
private static String chooseLowerBoundString(Version lowerBoundVersion) {
|
||||
String lowerBoundString = lowerBoundVersion.toString();
|
||||
String candidate = lowerBoundString.split("[.\\-_]")[0];
|
||||
try {
|
||||
Version candidateVersion = ourVersioning.parseVersion(candidate);
|
||||
if (lowerBoundVersion.compareTo(candidateVersion) < 0) {
|
||||
return lowerBoundString;
|
||||
}
|
||||
} catch (InvalidVersionSpecificationException e) {
|
||||
LOG.info("Failed to parse major part of lower bound of version " + lowerBoundVersion, e);
|
||||
}
|
||||
return candidate;
|
||||
}
|
||||
|
||||
@NotNull
|
||||
private static DependencyFilter createScopeFilter() {
|
||||
return DependencyFilterUtils.classpathFilter(JavaScopes.COMPILE, JavaScopes.RUNTIME);
|
||||
|
||||
@@ -151,6 +151,22 @@ class JarRepositoryManagerTest : UsefulTestCase() {
|
||||
assertTrue("File name [${root.file.name} should contain '$expectedName'", root.file.name.contains(expectedName))
|
||||
}
|
||||
|
||||
@Test fun `test selection for snapshot`() {
|
||||
MavenRepoFixture(myMavenRepo).apply {
|
||||
addAnnotationsArtifact(version = "1-SNAPSHOT-an1")
|
||||
generateMavenMetadata("myGroup", "myArtifact")
|
||||
}
|
||||
|
||||
val description = JpsMavenRepositoryLibraryDescriptor("myGroup", "myArtifact", "1-SNAPSHOT")
|
||||
val promise: Promise<MutableList<OrderRoot>> = JarRepositoryManager.loadDependenciesAsync(myProject, description, setOf(ArtifactKind.ANNOTATIONS),
|
||||
listOf(myTestRepo), null)
|
||||
val result: List<OrderRoot>? = getResultingRoots(promise)
|
||||
|
||||
assertEquals(1, result?.size)
|
||||
val root = result?.get(0)!!
|
||||
assertEquals(AnnotationOrderRootType.getInstance(), root.type)
|
||||
}
|
||||
|
||||
|
||||
|
||||
private fun getResultingRoots(promise: Promise<MutableList<OrderRoot>>): List<OrderRoot>? {
|
||||
|
||||
Reference in New Issue
Block a user