You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by jv...@apache.org on 2012/11/25 04:12:50 UTC
svn commit: r1413287 - in /maven/maven-3/trunk:
maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginRealmCache.java
maven-embedder/src/main/java/org/apache/maven/cli/MavenCli.java
Author: jvanzyl
Date: Sun Nov 25 03:12:49 2012
New Revision: 1413287
URL: http://svn.apache.org/viewvc?rev=1413287&view=rev
Log:
cleanup of the class realm purging
Modified:
maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginRealmCache.java
maven/maven-3/trunk/maven-embedder/src/main/java/org/apache/maven/cli/MavenCli.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=1413287&r1=1413286&r2=1413287&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 Sun Nov 25 03:12:49 2012
@@ -29,7 +29,9 @@ import org.apache.maven.artifact.Artifac
import org.apache.maven.model.Plugin;
import org.apache.maven.project.MavenProject;
import org.codehaus.plexus.classworlds.realm.ClassRealm;
+import org.codehaus.plexus.classworlds.realm.NoSuchRealmException;
import org.codehaus.plexus.component.annotations.Component;
+import org.codehaus.plexus.personality.plexus.lifecycle.phase.Disposable;
import org.sonatype.aether.RepositorySystemSession;
import org.sonatype.aether.graph.DependencyFilter;
import org.sonatype.aether.repository.LocalRepository;
@@ -41,7 +43,7 @@ import org.sonatype.aether.repository.Wo
*/
@Component( role = PluginRealmCache.class )
public class DefaultPluginRealmCache
- implements PluginRealmCache
+ implements PluginRealmCache, Disposable
{
protected static class CacheKey
@@ -179,6 +181,18 @@ public class DefaultPluginRealmCache
public void flush()
{
+ for ( CacheRecord record : cache.values() )
+ {
+ ClassRealm realm = record.realm;
+ try
+ {
+ realm.getWorld().disposeRealm( realm.getId() );
+ }
+ catch ( NoSuchRealmException e )
+ {
+ // ignore
+ }
+ }
cache.clear();
}
@@ -197,4 +211,9 @@ public class DefaultPluginRealmCache
// default cache does not track plugin usage
}
+ public void dispose()
+ {
+ flush();
+ }
+
}
Modified: maven/maven-3/trunk/maven-embedder/src/main/java/org/apache/maven/cli/MavenCli.java
URL: http://svn.apache.org/viewvc/maven/maven-3/trunk/maven-embedder/src/main/java/org/apache/maven/cli/MavenCli.java?rev=1413287&r1=1413286&r2=1413287&view=diff
==============================================================================
--- maven/maven-3/trunk/maven-embedder/src/main/java/org/apache/maven/cli/MavenCli.java (original)
+++ maven/maven-3/trunk/maven-embedder/src/main/java/org/apache/maven/cli/MavenCli.java Sun Nov 25 03:12:49 2012
@@ -55,6 +55,7 @@ import org.apache.maven.execution.MavenE
import org.apache.maven.lifecycle.LifecycleExecutionException;
import org.apache.maven.lifecycle.internal.LifecycleWeaveBuilder;
import org.apache.maven.model.building.ModelProcessor;
+import org.apache.maven.plugin.PluginRealmCache;
import org.apache.maven.project.MavenProject;
import org.apache.maven.properties.internal.EnvironmentUtils;
import org.apache.maven.settings.building.DefaultSettingsBuildingRequest;
@@ -112,9 +113,6 @@ public class MavenCli
private ClassWorld classWorld;
- // Per-instance container supports fast embedded execution of core ITs
- private DefaultPlexusContainer container;
-
private LoggerManager plexusLoggerManager;
private ILoggerFactory slf4jLoggerFactory;
@@ -197,7 +195,7 @@ public class MavenCli
// TODO: need to externalize CliRequest
public int doMain( CliRequest cliRequest )
{
- PlexusContainer localContainer = this.container;
+ PlexusContainer localContainer = null;
try
{
initialize( cliRequest );
@@ -235,7 +233,7 @@ public class MavenCli
}
finally
{
- if ( localContainer != this.container )
+ if (localContainer != null)
{
localContainer.dispose();
}
@@ -377,10 +375,8 @@ public class MavenCli
cliRequest.classWorld = new ClassWorld( "plexus.core", Thread.currentThread().getContextClassLoader() );
}
- DefaultPlexusContainer container = this.container;
+ DefaultPlexusContainer container = null;
- if ( container == null )
- {
ContainerConfiguration cc = new DefaultContainerConfiguration()
.setClassWorld( cliRequest.classWorld )
.setRealm( setupContainerRealm( cliRequest ) )
@@ -405,12 +401,6 @@ public class MavenCli
customizeContainer( container );
- if ( cliRequest.classWorld == classWorld )
- {
- this.container = container;
- }
- }
-
container.getLoggerManager().setThresholds( cliRequest.request.getLoggingLevel() );
Thread.currentThread().setContextClassLoader( container.getContainerRealm() );