[MNG-4148][MNG-4347] Fixing through-line for the new session-specific metadata source, which is set in the execution request, passed into the session through that, and eventually used in the plugin manager and the extension manager from the session.

git-svn-id: https://svn.apache.org/repos/asf/maven/maven-2/branches/maven-2.2.x@813616 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/maven-core/src/main/java/org/apache/maven/execution/DefaultMavenExecutionRequest.java b/maven-core/src/main/java/org/apache/maven/execution/DefaultMavenExecutionRequest.java
index f573240..67db347 100644
--- a/maven-core/src/main/java/org/apache/maven/execution/DefaultMavenExecutionRequest.java
+++ b/maven-core/src/main/java/org/apache/maven/execution/DefaultMavenExecutionRequest.java
@@ -77,6 +77,9 @@
     
     private List selectedProjects;
 
+    // lazily initialized.
+    private ProjectBuilderConfiguration projectBuilderConfig;
+
     public DefaultMavenExecutionRequest( ArtifactRepository localRepository, Settings settings,
                                          EventDispatcher eventDispatcher, List goals, String baseDirectory,
                                          ProfileManager globalProfileManager, Properties executionProperties,
@@ -215,14 +218,19 @@
 
     public ProjectBuilderConfiguration getProjectBuilderConfiguration()
     {
-        ProjectBuilderConfiguration config = new DefaultProjectBuilderConfiguration();
-        config.setLocalRepository( getLocalRepository() )
-              .setGlobalProfileManager( getGlobalProfileManager() )
-              .setExecutionProperties( getExecutionProperties() )
-              .setUserProperties( getUserProperties() )
-              .setBuildStartTime( startTime );
+        if ( projectBuilderConfig == null )
+        {
+            ProjectBuilderConfiguration config = new DefaultProjectBuilderConfiguration();
+            config.setLocalRepository( getLocalRepository() )
+                  .setGlobalProfileManager( getGlobalProfileManager() )
+                  .setExecutionProperties( getExecutionProperties() )
+                  .setUserProperties( getUserProperties() )
+                  .setBuildStartTime( startTime );
+            
+            projectBuilderConfig = config;
+        }
 
-        return config;
+        return projectBuilderConfig;
     }
     
     public String getMakeBehavior()
diff --git a/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginManager.java b/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginManager.java
index 4fbfd30..67ab0c3 100644
--- a/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginManager.java
+++ b/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginManager.java
@@ -1498,6 +1498,12 @@
         {
             project.resolveActiveArtifacts();
         }
+        
+        ArtifactMetadataSource metadataSource = context.getProjectBuilderConfiguration().getMetadataSource();
+        if ( metadataSource == null )
+        {
+            metadataSource = artifactMetadataSource;
+        }
 
         Set resolvedArtifacts;
         try
@@ -1507,7 +1513,7 @@
                                                                                 project.getManagedVersionMap(),
                                                                                 context.getLocalRepository(),
                                                                                 project.getRemoteArtifactRepositories(),
-                                                                                artifactMetadataSource, filter );
+                                                                                metadataSource, filter );
             resolvedArtifacts = result.getArtifacts();
         }
         catch ( MultipleArtifactsNotFoundException me )