From 0aa9f04be346fda6d1b4b2d60127f65ae3609e19 Mon Sep 17 00:00:00 2001 From: Igor Fedorenko Date: Tue, 19 Aug 2014 07:39:12 -0400 Subject: 441257 fixed NPE evicting cached MavenProject instances Change-Id: If4c9d2ea013b910155b60384de1e5323894d49d4 Signed-off-by: Igor Fedorenko --- .../m2e/core/internal/project/ProjectCachePlunger.java | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/org.eclipse.m2e.core/src/org/eclipse/m2e/core/internal/project/ProjectCachePlunger.java b/org.eclipse.m2e.core/src/org/eclipse/m2e/core/internal/project/ProjectCachePlunger.java index 69d18c4b..4b9fbbea 100644 --- a/org.eclipse.m2e.core/src/org/eclipse/m2e/core/internal/project/ProjectCachePlunger.java +++ b/org.eclipse.m2e.core/src/org/eclipse/m2e/core/internal/project/ProjectCachePlunger.java @@ -21,7 +21,6 @@ import org.slf4j.LoggerFactory; import com.google.common.collect.HashMultimap; import com.google.common.collect.Multimap; -import org.eclipse.aether.RepositoryCache; import org.eclipse.aether.RepositorySystemSession; import org.eclipse.aether.repository.RepositoryPolicy; @@ -54,16 +53,18 @@ abstract class ProjectCachePlunger { } public Set removeProject(File pom, boolean forceDependencyUpdate) { - RepositorySystemSession session = MavenExecutionContext.getThreadContext().getRepositorySession(); - RepositoryCache sessionCache = session.getCache(); - + MavenExecutionContext context = MavenExecutionContext.getThreadContext(); + RepositorySystemSession session = context != null ? context.getRepositorySession() : null; + if(forceDependencyUpdate && session == null) { + throw new IllegalArgumentException(); + } final Set affectedProjects = new HashSet<>(); for(Key cacheKey : projectKeys.removeAll(pom)) { keyProjects.remove(cacheKey, pom); if(forceDependencyUpdate && RepositoryPolicy.UPDATE_POLICY_ALWAYS.equals(session.getUpdatePolicy()) - && sessionCache.get(session, cacheKey) == null) { - sessionCache.put(session, cacheKey, Boolean.TRUE); + && session.getCache().get(session, cacheKey) == null) { + session.getCache().put(session, cacheKey, Boolean.TRUE); for(File affectedPom : keyProjects.removeAll(cacheKey)) { affectedProjects.add(affectedPom); projectKeys.remove(affectedPom, cacheKey); -- cgit v1.2.3