diff --git a/versions-common/src/main/java/org/codehaus/mojo/versions/api/ArtifactVersionsCache.java b/versions-common/src/main/java/org/codehaus/mojo/versions/api/ArtifactVersionsCache.java index 4eea8923cc..5c242f2cbb 100644 --- a/versions-common/src/main/java/org/codehaus/mojo/versions/api/ArtifactVersionsCache.java +++ b/versions-common/src/main/java/org/codehaus/mojo/versions/api/ArtifactVersionsCache.java @@ -19,9 +19,9 @@ * under the License. */ -import java.util.HashMap; import java.util.Map; import java.util.Optional; +import java.util.concurrent.ConcurrentHashMap; import org.apache.commons.lang3.function.TriFunction; import org.apache.commons.lang3.tuple.Triple; @@ -32,7 +32,7 @@ public class ArtifactVersionsCache { private TriFunction, Boolean, ?> cachedFunction; private Map, Boolean>, Object> updateCache = - new HashMap<>(); + new ConcurrentHashMap<>(); /** * Constructs a new instance given the concrete function for obtaining the details diff --git a/versions-common/src/main/java/org/codehaus/mojo/versions/api/DefaultVersionsHelper.java b/versions-common/src/main/java/org/codehaus/mojo/versions/api/DefaultVersionsHelper.java index c027c63177..fdb835a5ee 100644 --- a/versions-common/src/main/java/org/codehaus/mojo/versions/api/DefaultVersionsHelper.java +++ b/versions-common/src/main/java/org/codehaus/mojo/versions/api/DefaultVersionsHelper.java @@ -40,6 +40,7 @@ import java.util.Set; import java.util.TreeMap; import java.util.TreeSet; +import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ExecutionException; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; @@ -150,7 +151,7 @@ RuleSet getRuleSet() { * * @since 2.12 */ - private final Map artifactBestFitRule = new HashMap<>(); + private final Map artifactBestFitRule = new ConcurrentHashMap<>(); private final List remoteProjectRepositories; @@ -441,7 +442,9 @@ protected Rule getBestFitRule(String groupId, String artifactId) { bestFit = rule; } - artifactBestFitRule.put(groupArtifactId, bestFit); + if (bestFit != null) { + artifactBestFitRule.put(groupArtifactId, bestFit); + } return bestFit; }