diff options
Diffstat (limited to 'org.eclipse.m2e.core/src/org/eclipse/m2e/core/internal/project/EclipsePluginArtifactsCache.java')
-rw-r--r-- | org.eclipse.m2e.core/src/org/eclipse/m2e/core/internal/project/EclipsePluginArtifactsCache.java | 48 |
1 files changed, 23 insertions, 25 deletions
diff --git a/org.eclipse.m2e.core/src/org/eclipse/m2e/core/internal/project/EclipsePluginArtifactsCache.java b/org.eclipse.m2e.core/src/org/eclipse/m2e/core/internal/project/EclipsePluginArtifactsCache.java index 643bed31..c2284b86 100644 --- a/org.eclipse.m2e.core/src/org/eclipse/m2e/core/internal/project/EclipsePluginArtifactsCache.java +++ b/org.eclipse.m2e.core/src/org/eclipse/m2e/core/internal/project/EclipsePluginArtifactsCache.java @@ -11,43 +11,41 @@ package org.eclipse.m2e.core.internal.project; -import javax.inject.Singleton; +import java.io.File; +import java.util.Set; -import org.eclipse.aether.RepositoryCache; -import org.eclipse.aether.RepositorySystemSession; -import org.eclipse.aether.repository.RepositoryPolicy; +import javax.inject.Singleton; import org.apache.maven.plugin.DefaultPluginArtifactsCache; -import org.apache.maven.plugin.PluginResolutionException; +import org.apache.maven.project.MavenProject; -import org.eclipse.m2e.core.internal.embedder.MavenExecutionContext; +import org.eclipse.m2e.core.embedder.ArtifactKey; @Singleton -public class EclipsePluginArtifactsCache extends DefaultPluginArtifactsCache { - - public CacheRecord get(Key key) throws PluginResolutionException { - MavenExecutionContext context = MavenExecutionContext.getThreadContext(); +@SuppressWarnings("synthetic-access") +public class EclipsePluginArtifactsCache extends DefaultPluginArtifactsCache implements IManagedCache { - if(context == null) { - return super.get(key); + private final ProjectCachePlunger<Key> plunger = new ProjectCachePlunger<Key>() { + protected void flush(Key cacheKey) { + cache.remove(cacheKey); } + }; - RepositorySystemSession session = context.getRepositorySession(); - RepositoryCache sessionCache = session.getCache(); + @Override + public void register(MavenProject project, Key cacheKey, CacheRecord record) { + plunger.register(project, cacheKey); + } - if(!RepositoryPolicy.UPDATE_POLICY_ALWAYS.equals(session.getUpdatePolicy()) - || sessionCache.get(session, key) != null) { - return super.get(key); - } + @Override + public Set<File> removeProject(File pom, ArtifactKey mavenProject, boolean forceDependencyUpdate) { + return plunger.removeProject(pom, forceDependencyUpdate); + }; - // only force refresh once per repository session - cache.remove(key); - sessionCache.put(session, key, Boolean.TRUE); - return null; + @Override + public void flush() { + super.flush(); + plunger.flush(); } - public EclipsePluginArtifactsCache() { - super(); - } } |