You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by be...@apache.org on 2009/09/22 16:48:01 UTC
svn commit: r817681 - in
/maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/plugin:
DefaultPluginRealmCache.java PluginRealmCache.java
internal/DefaultMavenPluginManager.java
Author: bentmann
Date: Tue Sep 22 14:48:00 2009
New Revision: 817681
URL: http://svn.apache.org/viewvc?rev=817681&view=rev
Log:
[MNG-4194] API to safely release of plugin realms
o Allowed cache to track usage of plugins by projects
Modified:
maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginRealmCache.java
maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/plugin/PluginRealmCache.java
maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/plugin/internal/DefaultMavenPluginManager.java
Modified: maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginRealmCache.java
URL: http://svn.apache.org/viewvc/maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginRealmCache.java?rev=817681&r1=817680&r2=817681&view=diff
==============================================================================
--- maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginRealmCache.java (original)
+++ maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginRealmCache.java Tue Sep 22 14:48:00 2009
@@ -31,6 +31,7 @@
import org.apache.maven.model.Dependency;
import org.apache.maven.model.Exclusion;
import org.apache.maven.model.Plugin;
+import org.apache.maven.project.MavenProject;
import org.codehaus.plexus.classworlds.realm.ClassRealm;
import org.codehaus.plexus.component.annotations.Component;
@@ -233,4 +234,9 @@
return s1 != null ? s1.equals( s2 ) : s2 == null;
}
+ public void register( MavenProject project, ClassRealm pluginRealm )
+ {
+ // default cache does not track plugin usage
+ }
+
}
Modified: maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/plugin/PluginRealmCache.java
URL: http://svn.apache.org/viewvc/maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/plugin/PluginRealmCache.java?rev=817681&r1=817680&r2=817681&view=diff
==============================================================================
--- maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/plugin/PluginRealmCache.java (original)
+++ maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/plugin/PluginRealmCache.java Tue Sep 22 14:48:00 2009
@@ -24,6 +24,7 @@
import org.apache.maven.artifact.Artifact;
import org.apache.maven.artifact.repository.ArtifactRepository;
import org.apache.maven.model.Plugin;
+import org.apache.maven.project.MavenProject;
import org.codehaus.plexus.classworlds.realm.ClassRealm;
/**
@@ -57,4 +58,14 @@
void flush();
+ /**
+ * Registers the specified plugin realm for usage with the given project. Integrators can use the information
+ * collected from this method in combination with a custom cache implementation to dispose unused plugin realms from
+ * the cache.
+ *
+ * @param project The project that employs the plugin realm, must not be {@code null}.
+ * @param pluginRealm The plugin realm being used for the project, must not be {@code null}.
+ */
+ void register( MavenProject project, ClassRealm pluginRealm );
+
}
Modified: maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/plugin/internal/DefaultMavenPluginManager.java
URL: http://svn.apache.org/viewvc/maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/plugin/internal/DefaultMavenPluginManager.java?rev=817681&r1=817680&r2=817681&view=diff
==============================================================================
--- maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/plugin/internal/DefaultMavenPluginManager.java (original)
+++ maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/plugin/internal/DefaultMavenPluginManager.java Tue Sep 22 14:48:00 2009
@@ -297,9 +297,11 @@
{
Plugin plugin = pluginDescriptor.getPlugin();
+ MavenProject project = session.getCurrentProject();
+
PluginRealmCache.CacheRecord cacheRecord =
pluginRealmCache.get( plugin, parent, imports, session.getLocalRepository(),
- session.getCurrentProject().getPluginArtifactRepositories() );
+ project.getPluginArtifactRepositories() );
if ( cacheRecord != null )
{
@@ -311,9 +313,11 @@
createPluginRealm( pluginDescriptor, session, parent, imports );
pluginRealmCache.put( plugin, parent, imports, session.getLocalRepository(),
- session.getCurrentProject().getPluginArtifactRepositories(),
- pluginDescriptor.getClassRealm(), pluginDescriptor.getArtifacts() );
+ project.getPluginArtifactRepositories(), pluginDescriptor.getClassRealm(),
+ pluginDescriptor.getArtifacts() );
}
+
+ pluginRealmCache.register( project, pluginDescriptor.getClassRealm() );
}
private void createPluginRealm( PluginDescriptor pluginDescriptor, MavenSession session, ClassLoader parent,