Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
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.java48
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();
- }
}

Back to the top