From 20680e8901aa7b9aaf29eb0e93c2e5b6661485ed Mon Sep 17 00:00:00 2001 From: Tamas Cservenak Date: Mon, 16 Jun 2025 16:55:56 +0200 Subject: [PATCH] Metadata type out of coordinates (#1491) Fix for metadata type that contains `/` (slash), as right now the layout get messed up in such cases. Originally, the "type" was filename, and GAV are the coordinates, but with this simple change, we can (re)use Resolver to resolve files that are not in "addressable space", but still have all the benefit of caching/auth etc. --- .../impl/DefaultLocalPathComposer.java | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/DefaultLocalPathComposer.java b/maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/DefaultLocalPathComposer.java index dc55e1482..3604eed76 100644 --- a/maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/DefaultLocalPathComposer.java +++ b/maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/DefaultLocalPathComposer.java @@ -89,13 +89,19 @@ public String getPathForMetadata(Metadata metadata, String repositoryKey) { } private String insertRepositoryKey(String metadataType, String repositoryKey) { - String result; - int idx = metadataType.indexOf('.'); - if (idx < 0) { - result = metadataType + '-' + repositoryKey; + if (metadataType.contains("/") && !metadataType.endsWith("/")) { + int lastSlash = metadataType.lastIndexOf('/'); + return metadataType.substring(0, lastSlash + 1) + + insertRepositoryKey(metadataType.substring(lastSlash + 1), repositoryKey); } else { - result = metadataType.substring(0, idx) + '-' + repositoryKey + metadataType.substring(idx); + String result; + int idx = metadataType.indexOf('.'); + if (idx < 0) { + result = metadataType + '-' + repositoryKey; + } else { + result = metadataType.substring(0, idx) + '-' + repositoryKey + metadataType.substring(idx); + } + return result; } - return result; } }