From 2f9f5c09bdea07bf5946a68e2182f5b96e339f0c Mon Sep 17 00:00:00 2001 From: Tamas Cservenak Date: Tue, 20 Jun 2023 12:44:31 +0200 Subject: [PATCH] [MRESOLVER-373] Make GavNameResolver to distinguish names better This class currently gives away same names for artifact and metadata locks, that causes MRESOLVER-373 where artifact and metadata resolver together attempt illegal "lock upgrade", as both operate on same named lock. This is wrong, as all other name mappers distinguish among them, also in case of snapshots, there are cases when shared lock is enough for artifact but metadata MAY need refresh, hence exclusive. --- .../internal/impl/synccontext/named/GAVNameMapper.java | 2 +- .../impl/synccontext/named/GAVNameMapperTest.java | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/synccontext/named/GAVNameMapper.java b/maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/synccontext/named/GAVNameMapper.java index 8c47aea7b..556a9f686 100644 --- a/maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/synccontext/named/GAVNameMapper.java +++ b/maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/synccontext/named/GAVNameMapper.java @@ -116,6 +116,6 @@ public static NameMapper gav() { } public static NameMapper fileGav() { - return new GAVNameMapper(true, "", ".lock", "", ".lock", "~"); + return new GAVNameMapper(true, "artifact~", ".lock", "metadata~", ".lock", "~"); } } diff --git a/maven-resolver-impl/src/test/java/org/eclipse/aether/internal/impl/synccontext/named/GAVNameMapperTest.java b/maven-resolver-impl/src/test/java/org/eclipse/aether/internal/impl/synccontext/named/GAVNameMapperTest.java index 54d00b43e..0adc3b0ad 100644 --- a/maven-resolver-impl/src/test/java/org/eclipse/aether/internal/impl/synccontext/named/GAVNameMapperTest.java +++ b/maven-resolver-impl/src/test/java/org/eclipse/aether/internal/impl/synccontext/named/GAVNameMapperTest.java @@ -59,7 +59,7 @@ public void singleArtifact() { Collection names = mapper.nameLocks(session, singletonList(artifact), null); assertThat(names, hasSize(1)); - assertThat(names.iterator().next(), equalTo("group~artifact~1.0.lock")); + assertThat(names.iterator().next(), equalTo("artifact~group~artifact~1.0.lock")); } @Test @@ -69,7 +69,7 @@ public void singleMetadata() { Collection names = mapper.nameLocks(session, null, singletonList(metadata)); assertThat(names, hasSize(1)); - assertThat(names.iterator().next(), equalTo("group~artifact.lock")); + assertThat(names.iterator().next(), equalTo("metadata~group~artifact.lock")); } @Test @@ -83,7 +83,7 @@ public void oneAndOne() { Iterator namesIterator = names.iterator(); // they are sorted as well - assertThat(namesIterator.next(), equalTo("agroup~artifact~1.0.lock")); - assertThat(namesIterator.next(), equalTo("bgroup~artifact.lock")); + assertThat(namesIterator.next(), equalTo("artifact~agroup~artifact~1.0.lock")); + assertThat(namesIterator.next(), equalTo("metadata~bgroup~artifact.lock")); } }