You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by ah...@apache.org on 2012/12/01 15:50:03 UTC

[38/50] git commit: cleanup of the class realm purging

cleanup of the class realm purging

git-svn-id: https://svn.apache.org/repos/asf/maven/maven-3/trunk@1413287 13f79535-47bb-0310-9956-ffa450edef68


Project: http://git-wip-us.apache.org/repos/asf/maven/repo
Commit: http://git-wip-us.apache.org/repos/asf/maven/commit/8ef74a61
Tree: http://git-wip-us.apache.org/repos/asf/maven/tree/8ef74a61
Diff: http://git-wip-us.apache.org/repos/asf/maven/diff/8ef74a61

Branch: refs/heads/feature/colorized-console/log4j2
Commit: 8ef74a6133413d2ae7b2eb96279997127093c211
Parents: 87d252e
Author: Jason van Zyl <jv...@apache.org>
Authored: Sun Nov 25 03:12:49 2012 +0000
Committer: Arnaud HeĢritier <ah...@exoplatform.com>
Committed: Sat Dec 1 13:51:02 2012 +0100

----------------------------------------------------------------------
 .../maven/plugin/DefaultPluginRealmCache.java      |   21 ++++++++++++++-
 .../main/java/org/apache/maven/cli/MavenCli.java   |   18 +++----------
 2 files changed, 24 insertions(+), 15 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/maven/blob/8ef74a61/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginRealmCache.java
----------------------------------------------------------------------
diff --git a/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginRealmCache.java b/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginRealmCache.java
index 8962367..c821ae9 100644
--- a/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginRealmCache.java
+++ b/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginRealmCache.java
@@ -29,7 +29,9 @@ import org.apache.maven.artifact.Artifact;
 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.WorkspaceRepository;
  */
 @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();
+    }
+
 }

http://git-wip-us.apache.org/repos/asf/maven/blob/8ef74a61/maven-embedder/src/main/java/org/apache/maven/cli/MavenCli.java
----------------------------------------------------------------------
diff --git a/maven-embedder/src/main/java/org/apache/maven/cli/MavenCli.java b/maven-embedder/src/main/java/org/apache/maven/cli/MavenCli.java
index 5adebd7..fe6c336 100644
--- a/maven-embedder/src/main/java/org/apache/maven/cli/MavenCli.java
+++ b/maven-embedder/src/main/java/org/apache/maven/cli/MavenCli.java
@@ -55,6 +55,7 @@ import org.apache.maven.execution.MavenExecutionResult;
 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();
             }
@@ -381,10 +379,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 ) )
@@ -409,12 +405,6 @@ public class MavenCli
 
             customizeContainer( container );
 
-            if ( cliRequest.classWorld == classWorld )
-            {
-                this.container = container;
-            }
-        }
-
         container.getLoggerManager().setThresholds( cliRequest.request.getLoggingLevel() );
 
         Thread.currentThread().setContextClassLoader( container.getContainerRealm() );