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 fd2d51e93..7f76efa7a 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 @@ -217,8 +217,6 @@ public void get( RunnableErrorForwarder errorForwarder = new RunnableErrorForwarder(); List checksumAlgorithmFactories = layout.getChecksumAlgorithmFactories(); - boolean first = true; - for (MetadataDownload transfer : safeMetadataDownloads) { URI location = layout.getLocation(transfer.getMetadata(), false); @@ -240,9 +238,8 @@ public void get( checksumLocations, null, listener); - if (executor == null || first) { + if (executor == null) { task.run(); - first = false; } else { executor.submit(errorForwarder.wrap(task)); } @@ -285,9 +282,8 @@ public void get( providedChecksums, listener); } - if (executor == null || first) { + if (executor == null) { task.run(); - first = false; } else { executor.submit(errorForwarder.wrap(task)); } @@ -309,8 +305,6 @@ public void put( getExecutor(false, parallelPut ? safeArtifactUploads.size() + safeMetadataUploads.size() : 1); RunnableErrorForwarder errorForwarder = new RunnableErrorForwarder(); - boolean first = true; - for (ArtifactUpload transfer : safeArtifactUploads) { URI location = layout.getLocation(transfer.getArtifact(), true); @@ -322,9 +316,8 @@ public void put( layout.getChecksumLocations(transfer.getArtifact(), true, location); Runnable task = new PutTaskRunner(location, transfer.getPath(), checksumLocations, listener); - if (executor == null || first) { + if (executor == null) { task.run(); - first = false; } else { executor.submit(errorForwarder.wrap(task)); } @@ -344,9 +337,8 @@ public void put( layout.getChecksumLocations(transfer.getMetadata(), true, location); Runnable task = new PutTaskRunner(location, transfer.getPath(), checksumLocations, listener); - if (executor == null || first) { + if (executor == null) { task.run(); - first = false; } else { executor.submit(errorForwarder.wrap(task)); } diff --git a/maven-resolver-transport-apache/src/main/java/org/eclipse/aether/transport/apache/DeferredCredentialsProvider.java b/maven-resolver-transport-apache/src/main/java/org/eclipse/aether/transport/apache/DeferredCredentialsProvider.java index bb0b20188..fd32f1dd7 100644 --- a/maven-resolver-transport-apache/src/main/java/org/eclipse/aether/transport/apache/DeferredCredentialsProvider.java +++ b/maven-resolver-transport-apache/src/main/java/org/eclipse/aether/transport/apache/DeferredCredentialsProvider.java @@ -20,9 +20,9 @@ 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 factories; + private final ConcurrentHashMap factories; DeferredCredentialsProvider() { delegate = new BasicCredentialsProvider(); - factories = new HashMap<>(); + factories = new ConcurrentHashMap<>(); } public void setCredentials(AuthScope authScope, Factory factory) { diff --git a/maven-resolver-transport-apache/src/main/java/org/eclipse/aether/transport/apache/SharingAuthCache.java b/maven-resolver-transport-apache/src/main/java/org/eclipse/aether/transport/apache/SharingAuthCache.java index ef4c25163..d868eacaf 100644 --- a/maven-resolver-transport-apache/src/main/java/org/eclipse/aether/transport/apache/SharingAuthCache.java +++ b/maven-resolver-transport-apache/src/main/java/org/eclipse/aether/transport/apache/SharingAuthCache.java @@ -18,8 +18,8 @@ */ package org.eclipse.aether.transport.apache; -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 authSchemes; + private final ConcurrentHashMap authSchemes; SharingAuthCache(LocalState state) { this.state = state; - authSchemes = new HashMap<>(); + authSchemes = new ConcurrentHashMap<>(); } private static HttpHost toKey(HttpHost host) { @@ -54,17 +54,20 @@ public AuthScheme get(HttpHost host) { 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); } }