Author: bentmann
Date: Sat Dec  4 20:49:18 2010
New Revision: 1042237

URL: http://svn.apache.org/viewvc?rev=1042237&view=rev
Log:
[MNG-4925] Mismanagement of container lookup realm can cause type 
incompatibilities for plugins looking up components by string

Modified:
    
maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/plugin/DefaultBuildPluginManager.java

Modified: 
maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/plugin/DefaultBuildPluginManager.java
URL: 
http://svn.apache.org/viewvc/maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/plugin/DefaultBuildPluginManager.java?rev=1042237&r1=1042236&r2=1042237&view=diff
==============================================================================
--- 
maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/plugin/DefaultBuildPluginManager.java
 (original)
+++ 
maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/plugin/DefaultBuildPluginManager.java
 Sat Dec  4 20:49:18 2010
@@ -86,8 +86,10 @@ public class DefaultBuildPluginManager
             throw new PluginExecutionException( mojoExecution, project, e );
         }
 
-        ClassRealm oldLookupRealm = container.getLookupRealm();
+        ClassRealm oldLookupRealm = container.setLookupRealm( pluginRealm );
+
         ClassLoader oldClassLoader = 
Thread.currentThread().getContextClassLoader();
+        Thread.currentThread().setContextClassLoader( pluginRealm );
 
         MavenSession oldSession = legacySupport.getSession();
 
@@ -95,8 +97,6 @@ public class DefaultBuildPluginManager
         {
             mojo = mavenPluginManager.getConfiguredMojo( Mojo.class, session, 
mojoExecution );
 
-            Thread.currentThread().setContextClassLoader( pluginRealm );
-
             legacySupport.setSession( session );
 
             // NOTE: DuplicateArtifactAttachmentException is currently 
unchecked, so be careful removing this try/catch!
@@ -158,12 +158,8 @@ public class DefaultBuildPluginManager
         {
             mavenPluginManager.releaseMojo( mojo, mojoExecution );
 
-            if ( oldLookupRealm != null )
-            {
-                container.setLookupRealm( null );
-            }
-
             Thread.currentThread().setContextClassLoader( oldClassLoader );
+            container.setLookupRealm( oldLookupRealm );
 
             legacySupport.setSession( oldSession );
         }


Reply via email to