This is an automated email from the ASF dual-hosted git repository.

cstamas pushed a commit to branch maven-resolver-1.9.x
in repository https://gitbox.apache.org/repos/asf/maven-resolver.git


The following commit(s) were added to refs/heads/maven-resolver-1.9.x by this 
push:
     new 09c3fa9f1 [1.9.x] Remove hack from Basic connector (#1675)
09c3fa9f1 is described below

commit 09c3fa9f1880058a2d29ca9ebcd3d2c23da0af4c
Author: Tamas Cservenak <[email protected]>
AuthorDate: Thu Nov 20 15:28:09 2025 +0100

    [1.9.x] Remove hack from Basic connector (#1675)
    
    There was an issue https://github.com/apache/maven-resolver/issues/996 that 
is still open and points to `MavenITmng4470AuthenticatedDeploymentToProxyTest` 
IT, so lets trigger it and lets fix it. OTOH, it may be very well already 
fixed...
    
    Unrelated: fix for reproducer... (was wondering whole day why and what 11 
things it resolved...)
---
 .../connector/basic/BasicRepositoryConnector.java  | 34 ++++------------------
 .../ResolveTransitiveDependenciesParallel.java     |  2 +-
 .../http/DeferredCredentialsProvider.java          |  6 ++--
 .../aether/transport/http/SharingAuthCache.java    | 15 ++++++----
 4 files changed, 19 insertions(+), 38 deletions(-)

diff --git 
a/maven-resolver-connector-basic/src/main/java/org/eclipse/aether/connector/basic/BasicRepositoryConnector.java
 
b/maven-resolver-connector-basic/src/main/java/org/eclipse/aether/connector/basic/BasicRepositoryConnector.java
index 11e9a9133..e39a5f5a1 100644
--- 
a/maven-resolver-connector-basic/src/main/java/org/eclipse/aether/connector/basic/BasicRepositoryConnector.java
+++ 
b/maven-resolver-connector-basic/src/main/java/org/eclipse/aether/connector/basic/BasicRepositoryConnector.java
@@ -188,8 +188,6 @@ final class BasicRepositoryConnector implements 
RepositoryConnector {
         RunnableErrorForwarder errorForwarder = new RunnableErrorForwarder();
         List<ChecksumAlgorithmFactory> checksumAlgorithmFactories = 
layout.getChecksumAlgorithmFactories();
 
-        boolean first = true;
-
         for (MetadataDownload transfer : safeMetadataDownloads) {
             URI location = layout.getLocation(transfer.getMetadata(), false);
 
@@ -211,12 +209,7 @@ final class BasicRepositoryConnector implements 
RepositoryConnector {
                     checksumLocations,
                     null,
                     listener);
-            if (first) {
-                task.run();
-                first = false;
-            } else {
-                executor.execute(errorForwarder.wrap(task));
-            }
+            executor.execute(errorForwarder.wrap(task));
         }
 
         for (ArtifactDownload transfer : safeArtifactDownloads) {
@@ -256,12 +249,7 @@ final class BasicRepositoryConnector implements 
RepositoryConnector {
                         providedChecksums,
                         listener);
             }
-            if (first) {
-                task.run();
-                first = false;
-            } else {
-                executor.execute(errorForwarder.wrap(task));
-            }
+            executor.execute(errorForwarder.wrap(task));
         }
 
         errorForwarder.await();
@@ -279,8 +267,6 @@ final class BasicRepositoryConnector implements 
RepositoryConnector {
         Executor executor = getExecutor(parallelPut ? 
safeArtifactUploads.size() + safeMetadataUploads.size() : 1);
         RunnableErrorForwarder errorForwarder = new RunnableErrorForwarder();
 
-        boolean first = true;
-
         for (ArtifactUpload transfer : safeArtifactUploads) {
             URI location = layout.getLocation(transfer.getArtifact(), true);
 
@@ -293,12 +279,8 @@ final class BasicRepositoryConnector implements 
RepositoryConnector {
 
             Runnable task = new PutTaskRunner(
                     location, transfer.getFile(), 
transfer.getFileTransformer(), checksumLocations, listener);
-            if (first) {
-                task.run();
-                first = false;
-            } else {
-                executor.execute(errorForwarder.wrap(task));
-            }
+
+            executor.execute(errorForwarder.wrap(task));
         }
 
         errorForwarder.await(); // make sure all artifacts are PUT before we 
go with Metadata
@@ -315,12 +297,8 @@ final class BasicRepositoryConnector implements 
RepositoryConnector {
                         layout.getChecksumLocations(transfer.getMetadata(), 
true, location);
 
                 Runnable task = new PutTaskRunner(location, 
transfer.getFile(), checksumLocations, listener);
-                if (first) {
-                    task.run();
-                    first = false;
-                } else {
-                    executor.execute(errorForwarder.wrap(task));
-                }
+
+                executor.execute(errorForwarder.wrap(task));
             }
 
             errorForwarder.await(); // make sure each group is done before 
starting next group
diff --git 
a/maven-resolver-demos/maven-resolver-demo-snippets/src/main/java/org/apache/maven/resolver/examples/ResolveTransitiveDependenciesParallel.java
 
b/maven-resolver-demos/maven-resolver-demo-snippets/src/main/java/org/apache/maven/resolver/examples/ResolveTransitiveDependenciesParallel.java
index c5825b6a1..6a5de0b86 100644
--- 
a/maven-resolver-demos/maven-resolver-demo-snippets/src/main/java/org/apache/maven/resolver/examples/ResolveTransitiveDependenciesParallel.java
+++ 
b/maven-resolver-demos/maven-resolver-demo-snippets/src/main/java/org/apache/maven/resolver/examples/ResolveTransitiveDependenciesParallel.java
@@ -216,7 +216,7 @@ public class ResolveTransitiveDependenciesParallel {
                 DependencyRequest dependencyRequest = new 
DependencyRequest(collectRequest, null);
                 List<ArtifactResult> artifactResults =
                         system.resolveDependencies(session, 
dependencyRequest).getArtifactResults();
-                int resolved = 9;
+                int resolved = 0;
                 int fails = 0;
                 for (ArtifactResult artifactResult : artifactResults) {
                     if (artifactResult.isResolved()) {
diff --git 
a/maven-resolver-transport-http/src/main/java/org/eclipse/aether/transport/http/DeferredCredentialsProvider.java
 
b/maven-resolver-transport-http/src/main/java/org/eclipse/aether/transport/http/DeferredCredentialsProvider.java
index 664e8fb06..c38d9e5ef 100644
--- 
a/maven-resolver-transport-http/src/main/java/org/eclipse/aether/transport/http/DeferredCredentialsProvider.java
+++ 
b/maven-resolver-transport-http/src/main/java/org/eclipse/aether/transport/http/DeferredCredentialsProvider.java
@@ -20,9 +20,9 @@ package org.eclipse.aether.transport.http;
 
 import java.net.InetAddress;
 import java.net.UnknownHostException;
-import java.util.HashMap;
 import java.util.Iterator;
 import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
 
 import org.apache.http.auth.AuthScope;
 import org.apache.http.auth.Credentials;
@@ -39,11 +39,11 @@ final class DeferredCredentialsProvider implements 
CredentialsProvider {
 
     private final CredentialsProvider delegate;
 
-    private final Map<AuthScope, Factory> factories;
+    private final ConcurrentHashMap<AuthScope, Factory> factories;
 
     DeferredCredentialsProvider() {
         delegate = new BasicCredentialsProvider();
-        factories = new HashMap<>();
+        factories = new ConcurrentHashMap<>();
     }
 
     public void setCredentials(AuthScope authScope, Factory factory) {
diff --git 
a/maven-resolver-transport-http/src/main/java/org/eclipse/aether/transport/http/SharingAuthCache.java
 
b/maven-resolver-transport-http/src/main/java/org/eclipse/aether/transport/http/SharingAuthCache.java
index f55b822ac..d7ed9c591 100644
--- 
a/maven-resolver-transport-http/src/main/java/org/eclipse/aether/transport/http/SharingAuthCache.java
+++ 
b/maven-resolver-transport-http/src/main/java/org/eclipse/aether/transport/http/SharingAuthCache.java
@@ -18,8 +18,8 @@
  */
 package org.eclipse.aether.transport.http;
 
-import java.util.HashMap;
 import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
 
 import org.apache.http.HttpHost;
 import org.apache.http.auth.AuthScheme;
@@ -33,11 +33,11 @@ final class SharingAuthCache implements AuthCache {
 
     private final LocalState state;
 
-    private final Map<HttpHost, AuthScheme> authSchemes;
+    private final ConcurrentHashMap<HttpHost, AuthScheme> authSchemes;
 
     SharingAuthCache(LocalState state) {
         this.state = state;
-        authSchemes = new HashMap<>();
+        authSchemes = new ConcurrentHashMap<>();
     }
 
     private static HttpHost toKey(HttpHost host) {
@@ -54,17 +54,20 @@ final class SharingAuthCache implements AuthCache {
         AuthScheme authScheme = authSchemes.get(host);
         if (authScheme == null) {
             authScheme = state.getAuthScheme(host);
-            authSchemes.put(host, authScheme);
+            if (authScheme != null) {
+                authSchemes.put(host, authScheme);
+            }
         }
         return authScheme;
     }
 
     @Override
     public void put(HttpHost host, AuthScheme authScheme) {
+        host = toKey(host);
         if (authScheme != null) {
-            authSchemes.put(toKey(host), authScheme);
+            authSchemes.put(host, authScheme);
         } else {
-            remove(host);
+            authSchemes.remove(host);
         }
     }
 

Reply via email to