Author: jdcasey
Date: Thu Sep 10 20:04:14 2009
New Revision: 813569

URL: http://svn.apache.org/viewvc?rev=813569&view=rev
Log:
[MNG-4347] merging feature branch.

Modified:
    maven/maven-2/branches/maven-2.2.x/   (props changed)
    maven/maven-2/branches/maven-2.2.x/apache-maven/   (props changed)
    maven/maven-2/branches/maven-2.2.x/apache-maven/src/test/   (props changed)
    
maven/maven-2/branches/maven-2.2.x/maven-core/src/main/java/org/apache/maven/DefaultMaven.java
    
maven/maven-2/branches/maven-2.2.x/maven-core/src/main/java/org/apache/maven/execution/MavenSession.java
    
maven/maven-2/branches/maven-2.2.x/maven-core/src/main/java/org/apache/maven/extension/DefaultExtensionManager.java
    
maven/maven-2/branches/maven-2.2.x/maven-core/src/main/java/org/apache/maven/extension/ExtensionManager.java
    
maven/maven-2/branches/maven-2.2.x/maven-core/src/main/java/org/apache/maven/lifecycle/DefaultLifecycleExecutor.java
    
maven/maven-2/branches/maven-2.2.x/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginManager.java
    
maven/maven-2/branches/maven-2.2.x/maven-core/src/main/java/org/apache/maven/plugin/MavenPluginValidator.java
   (props changed)
    
maven/maven-2/branches/maven-2.2.x/maven-core/src/main/resources/META-INF/plexus/components.xml
    maven/maven-2/branches/maven-2.2.x/maven-integration-tests/   (props 
changed)
    maven/maven-2/branches/maven-2.2.x/maven-model/src/test/   (props changed)
    
maven/maven-2/branches/maven-2.2.x/maven-project/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java
    
maven/maven-2/branches/maven-2.2.x/maven-project/src/main/java/org/apache/maven/project/DefaultProjectBuilderConfiguration.java
    
maven/maven-2/branches/maven-2.2.x/maven-project/src/main/java/org/apache/maven/project/MavenProjectBuilder.java
    
maven/maven-2/branches/maven-2.2.x/maven-project/src/main/java/org/apache/maven/project/ProjectBuilderConfiguration.java
    
maven/maven-2/branches/maven-2.2.x/maven-project/src/main/java/org/apache/maven/project/artifact/MavenMetadataSource.java
    
maven/maven-2/branches/maven-2.2.x/maven-project/src/test/java/org/apache/maven/project/interpolation/AbstractModelInterpolatorTest.java
   (props changed)
    maven/maven-2/branches/maven-2.2.x/maven-settings/   (props changed)
    maven/maven-2/branches/maven-2.2.x/maven-toolchain/   (props changed)
    
maven/maven-2/branches/maven-2.2.x/maven-toolchain/src/main/mdo/toolchains.mdo  
 (props changed)

Propchange: maven/maven-2/branches/maven-2.2.x/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Thu Sep 10 20:04:14 2009
@@ -4,4 +4,5 @@
 
/maven/components/branches/maven-2.1.0-RC:688883,689695,689976,689990,752168,752428,752622,752653,753089-753090,753320,755086,755199,755215
 
/maven/components/branches/maven-2.1.x:751686,767628,767631,768817,768995,769010-769011
 /maven/components/trunk:572229,720001,721902,726845,729292,792073
+/maven/maven-2/branches/maven-2.2.x-MNG-4347:813112
 /maven/sandbox/branches/maven/MNG-3379:678167

Propchange: maven/maven-2/branches/maven-2.2.x/apache-maven/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Thu Sep 10 20:04:14 2009
@@ -5,4 +5,5 @@
 
/maven/components/branches/maven-2.1.x/apache-maven:751686,767628,767631,768995,769010-769011
 /maven/components/trunk/apache-maven:720001,721902,726845,727688
 /maven/components/trunk/maven-distribution:727688
+/maven/maven-2/branches/maven-2.2.x-MNG-4347/apache-maven:813112
 /maven/sandbox/branches/maven/MNG-3379/apache-maven:678167

Propchange: maven/maven-2/branches/maven-2.2.x/apache-maven/src/test/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Thu Sep 10 20:04:14 2009
@@ -2,3 +2,4 @@
 /maven/components/branches/maven-2.0.x/apache-maven/src/test:736543
 
/maven/components/branches/maven-2.1.0-RC/apache-maven/src/test:752168,752428,752622,752653,753089-753090,753320,755086,755199,755215
 
/maven/components/branches/maven-2.1.x/apache-maven/src/test:751686,767628,767631,768995,769010-769011
+/maven/maven-2/branches/maven-2.2.x-MNG-4347/apache-maven/src/test:813112

Modified: 
maven/maven-2/branches/maven-2.2.x/maven-core/src/main/java/org/apache/maven/DefaultMaven.java
URL: 
http://svn.apache.org/viewvc/maven/maven-2/branches/maven-2.2.x/maven-core/src/main/java/org/apache/maven/DefaultMaven.java?rev=813569&r1=813568&r2=813569&view=diff
==============================================================================
--- 
maven/maven-2/branches/maven-2.2.x/maven-core/src/main/java/org/apache/maven/DefaultMaven.java
 (original)
+++ 
maven/maven-2/branches/maven-2.2.x/maven-core/src/main/java/org/apache/maven/DefaultMaven.java
 Thu Sep 10 20:04:14 2009
@@ -63,6 +63,7 @@
 import org.apache.maven.project.MavenProjectBuilder;
 import org.apache.maven.project.MissingProjectException;
 import org.apache.maven.project.ProjectBuildingException;
+import org.apache.maven.project.artifact.MavenMetadataSource;
 import org.apache.maven.reactor.MavenExecutionException;
 import org.apache.maven.settings.Mirror;
 import org.apache.maven.settings.Proxy;
@@ -107,6 +108,8 @@
     protected ErrorDiagnostics errorDiagnostics;
 
     protected RuntimeInformation runtimeInformation;
+    
+    protected MavenMetadataSource mavenMetadataSource;
 
     private static final long MB = 1024 * 1024;
 
@@ -267,6 +270,9 @@
         globalProfileManager.loadSettingsProfiles( request.getSettings() );
 
         getLogger().info( "Scanning for projects..." );
+        
+        request.getProjectBuilderConfiguration()
+               .setMetadataSource( new MavenMetadataSource( 
mavenMetadataSource, request.getProjectBuilderConfiguration() ) );
 
         boolean foundProjects = true;
         List projects = getProjects( request );
@@ -616,9 +622,7 @@
     protected MavenSession createSession( MavenExecutionRequest request,
                                           ReactorManager rpm )
     {
-        return new MavenSession( container, request.getSettings(), 
request.getLocalRepository(),
-                                 request.getEventDispatcher(), rpm, 
request.getGoals(), request.getBaseDirectory(),
-                                 request.getExecutionProperties(), 
request.getUserProperties(), request.getStartTime() );
+        return new MavenSession( container, request, rpm );
     }
 
     /**

Modified: 
maven/maven-2/branches/maven-2.2.x/maven-core/src/main/java/org/apache/maven/execution/MavenSession.java
URL: 
http://svn.apache.org/viewvc/maven/maven-2/branches/maven-2.2.x/maven-core/src/main/java/org/apache/maven/execution/MavenSession.java?rev=813569&r1=813568&r2=813569&view=diff
==============================================================================
--- 
maven/maven-2/branches/maven-2.2.x/maven-core/src/main/java/org/apache/maven/execution/MavenSession.java
 (original)
+++ 
maven/maven-2/branches/maven-2.2.x/maven-core/src/main/java/org/apache/maven/execution/MavenSession.java
 Thu Sep 10 20:04:14 2009
@@ -25,6 +25,7 @@
 import org.apache.maven.project.DefaultProjectBuilderConfiguration;
 import org.apache.maven.project.MavenProject;
 import org.apache.maven.project.ProjectBuilderConfiguration;
+import org.apache.maven.project.artifact.MavenMetadataSource;
 import org.apache.maven.settings.Settings;
 import org.codehaus.plexus.PlexusContainer;
 import 
org.codehaus.plexus.component.repository.exception.ComponentLookupException;
@@ -44,7 +45,7 @@
 
     private ArtifactRepository localRepository;
 
-    private List goals;
+    private List<String> goals;
 
     private EventDispatcher eventDispatcher;
 
@@ -65,15 +66,17 @@
 
     private MavenProject currentProject;
 
+    private ProjectBuilderConfiguration projectBuilderConfig;
+
     public MavenSession( PlexusContainer container, Settings settings, 
ArtifactRepository localRepository,
-                         EventDispatcher eventDispatcher, ReactorManager 
reactorManager, List goals,
+                         EventDispatcher eventDispatcher, ReactorManager 
reactorManager, List<String> goals,
                          String executionRootDir, Properties 
executionProperties, Date startTime )
     {
         this( container, settings, localRepository, eventDispatcher, 
reactorManager, goals, executionRootDir, executionProperties, null, startTime );
     }
 
     public MavenSession( PlexusContainer container, Settings settings, 
ArtifactRepository localRepository,
-                         EventDispatcher eventDispatcher, ReactorManager 
reactorManager, List goals,
+                         EventDispatcher eventDispatcher, ReactorManager 
reactorManager, List<String> goals,
                          String executionRootDir, Properties 
executionProperties, Properties userProperties, Date startTime )
     {
         this.container = container;
@@ -97,6 +100,21 @@
         this.startTime = startTime;
     }
 
+    public MavenSession( PlexusContainer container, MavenExecutionRequest 
request, ReactorManager rpm )
+    {
+        this.container = container;
+        this.settings = request.getSettings();
+        this.localRepository = request.getLocalRepository();
+        this.eventDispatcher = request.getEventDispatcher();
+        this.reactorManager = rpm;
+        this.goals = request.getGoals();
+        this.executionRootDir = request.getBaseDirectory();
+        this.executionProperties = request.getExecutionProperties();
+        this.userProperties = request.getUserProperties();
+        this.startTime = request.getStartTime();
+        this.projectBuilderConfig = request.getProjectBuilderConfiguration();
+    }
+    
     public Map getPluginContext( PluginDescriptor pluginDescriptor, 
MavenProject project )
     {
         return reactorManager.getPluginContext( pluginDescriptor, project );
@@ -112,7 +130,7 @@
         return localRepository;
     }
 
-    public List getGoals()
+    public List<String> getGoals()
     {
         return goals;
     }
@@ -138,13 +156,13 @@
         return container.lookup( role, roleHint );
     }
 
-    public List lookupList( String role )
+    public List<?> lookupList( String role )
         throws ComponentLookupException
     {
         return container.lookupList( role );
     }
 
-    public Map lookupMap( String role )
+    public Map<String, ?> lookupMap( String role )
         throws ComponentLookupException
     {
         return container.lookupMap( role );
@@ -209,18 +227,19 @@
         this.userProperties = userProperties;
     }
 
-    /**
-     * NOTE: This varies from {...@link 
DefaultMavenExecutionRequest#getProjectBuilderConfiguration()} in that
-     * it doesn't supply a global profile manager.
-     */
     public ProjectBuilderConfiguration getProjectBuilderConfiguration()
     {
-        ProjectBuilderConfiguration config = new 
DefaultProjectBuilderConfiguration();
-        config.setLocalRepository( getLocalRepository() )
-              .setExecutionProperties( getExecutionProperties() )
-              .setUserProperties( getUserProperties() )
-              .setBuildStartTime( getStartTime() );
+        if ( projectBuilderConfig == null )
+        {
+            ProjectBuilderConfiguration config = new 
DefaultProjectBuilderConfiguration();
+            config.setLocalRepository( getLocalRepository() )
+                  .setExecutionProperties( getExecutionProperties() )
+                  .setUserProperties( getUserProperties() )
+                  .setBuildStartTime( getStartTime() );
+            
+            this.projectBuilderConfig = config;
+        }
 
-        return config;
+        return projectBuilderConfig;
     }
 }
\ No newline at end of file

Modified: 
maven/maven-2/branches/maven-2.2.x/maven-core/src/main/java/org/apache/maven/extension/DefaultExtensionManager.java
URL: 
http://svn.apache.org/viewvc/maven/maven-2/branches/maven-2.2.x/maven-core/src/main/java/org/apache/maven/extension/DefaultExtensionManager.java?rev=813569&r1=813568&r2=813569&view=diff
==============================================================================
--- 
maven/maven-2/branches/maven-2.2.x/maven-core/src/main/java/org/apache/maven/extension/DefaultExtensionManager.java
 (original)
+++ 
maven/maven-2/branches/maven-2.2.x/maven-core/src/main/java/org/apache/maven/extension/DefaultExtensionManager.java
 Thu Sep 10 20:04:14 2009
@@ -38,7 +38,9 @@
 import org.apache.maven.artifact.resolver.filter.ArtifactFilter;
 import org.apache.maven.model.Extension;
 import org.apache.maven.plugin.DefaultPluginManager;
+import org.apache.maven.project.DefaultProjectBuilderConfiguration;
 import org.apache.maven.project.MavenProject;
+import org.apache.maven.project.ProjectBuilderConfiguration;
 import org.apache.maven.wagon.Wagon;
 import org.codehaus.classworlds.ClassRealm;
 import org.codehaus.classworlds.ClassWorld;
@@ -61,7 +63,6 @@
 import java.io.InputStreamReader;
 import java.util.Collections;
 import java.util.HashMap;
-import java.util.Iterator;
 import java.util.LinkedHashSet;
 import java.util.Map;
 import java.util.Set;
@@ -99,6 +100,14 @@
                               ArtifactRepository localRepository )
         throws ArtifactResolutionException, PlexusContainerException, 
ArtifactNotFoundException
     {
+        addExtension( extension, project, new 
DefaultProjectBuilderConfiguration().setLocalRepository( localRepository ) );
+    }
+    
+    public void addExtension( Extension extension,
+                              MavenProject project,
+                              ProjectBuilderConfiguration builderConfig )
+        throws ArtifactResolutionException, PlexusContainerException, 
ArtifactNotFoundException
+    {
         String extensionId = ArtifactUtils.versionlessKey( 
extension.getGroupId(), extension.getArtifactId() );
 
         getLogger().debug( "Initialising extension: " + extensionId );
@@ -108,11 +117,17 @@
         if ( artifact != null )
         {
             ArtifactFilter filter = new ProjectArtifactExceptionFilter( 
artifactFilter, project.getArtifact() );
+            
+            ArtifactMetadataSource metadataSource = 
builderConfig.getMetadataSource();
+            if ( metadataSource == null )
+            {
+                metadataSource = artifactMetadataSource;
+            }
 
             ResolutionGroup resolutionGroup;
             try
             {
-                resolutionGroup = artifactMetadataSource.retrieve( artifact, 
localRepository,
+                resolutionGroup = metadataSource.retrieve( artifact, 
builderConfig.getLocalRepository(),
                                                                    
project.getRemoteArtifactRepositories() );
             }
             catch ( ArtifactMetadataRetrievalException e )
@@ -123,10 +138,10 @@
 
             // We use the same hack here to make sure that plexus 1.1 is 
available for extensions that do
             // not declare plexus-utils but need it. MNG-2900
-            Set rgArtifacts = resolutionGroup.getArtifacts();
+            Set<Artifact> rgArtifacts = resolutionGroup.getArtifacts();
             rgArtifacts = DefaultPluginManager.checkPlexusUtils( rgArtifacts, 
artifactFactory );
 
-            Set dependencies = new LinkedHashSet();
+            Set<Artifact> dependencies = new LinkedHashSet<Artifact>();
             dependencies.add( artifact );
             dependencies.addAll( rgArtifacts );
 
@@ -136,16 +151,16 @@
             ArtifactResolutionResult result = 
artifactResolver.resolveTransitively( dependencies, project.getArtifact(),
                                                                                
     Collections.EMPTY_MAP,
                                                                                
     //project.getManagedVersionMap(),
-                                                                               
     localRepository,
+                                                                               
     builderConfig.getLocalRepository(),
                                                                                
     project.getRemoteArtifactRepositories(),
-                                                                               
     artifactMetadataSource, filter );
+                                                                               
     metadataSource, filter );
 
             // gross hack for some backwards compat (MNG-2749)
             // if it is a lone artifact, then we assume it to be a resource 
package, and put it in the main container
             // as before. If it has dependencies, that's when we risk conflict 
and exile to the child container
             // jvz: we have to make this 2 because plexus is always added now.
 
-            Set artifacts = result.getArtifacts();
+            Set<Artifact> artifacts = result.getArtifacts();
 
             // Lifecycles are loaded by the Lifecycle executor by looking up 
lifecycle definitions from the
             // core container. So we need to look if an extension has a 
lifecycle mapping and use the container
@@ -153,10 +168,8 @@
 
             if ( extensionContainsLifeycle( artifact.getFile() ) )
             {
-                for ( Iterator i = artifacts.iterator(); i.hasNext(); )
+                for ( Artifact a : artifacts )
                 {
-                    Artifact a = (Artifact) i.next();
-
                     if ( artifactFilter.include( a ) )
                     {
                         getLogger().debug( "Adding extension to core 
container: " + a.getFile() );
@@ -167,10 +180,8 @@
             }
             else if ( artifacts.size() == 2 )
             {
-                for ( Iterator i = artifacts.iterator(); i.hasNext(); )
+                for ( Artifact a : artifacts )
                 {
-                    Artifact a = (Artifact) i.next();
-
                     if ( !a.getArtifactId().equals( "plexus-utils" ) )
                     {
                         a = project.replaceWithActiveArtifact( a );
@@ -191,10 +202,8 @@
                     extensionContainer = createContainer();
                 }
 
-                for ( Iterator i = result.getArtifacts().iterator(); 
i.hasNext(); )
+                for ( Artifact a : (Set<Artifact>) result.getArtifacts() )
                 {
-                    Artifact a = (Artifact) i.next();
-
                     a = project.replaceWithActiveArtifact( a );
 
                     getLogger().debug( "Adding to extension classpath: " + 
a.getFile() );

Modified: 
maven/maven-2/branches/maven-2.2.x/maven-core/src/main/java/org/apache/maven/extension/ExtensionManager.java
URL: 
http://svn.apache.org/viewvc/maven/maven-2/branches/maven-2.2.x/maven-core/src/main/java/org/apache/maven/extension/ExtensionManager.java?rev=813569&r1=813568&r2=813569&view=diff
==============================================================================
--- 
maven/maven-2/branches/maven-2.2.x/maven-core/src/main/java/org/apache/maven/extension/ExtensionManager.java
 (original)
+++ 
maven/maven-2/branches/maven-2.2.x/maven-core/src/main/java/org/apache/maven/extension/ExtensionManager.java
 Thu Sep 10 20:04:14 2009
@@ -25,6 +25,7 @@
 import org.apache.maven.artifact.resolver.ArtifactResolutionException;
 import org.apache.maven.model.Extension;
 import org.apache.maven.project.MavenProject;
+import org.apache.maven.project.ProjectBuilderConfiguration;
 import org.codehaus.plexus.PlexusContainerException;
 
 import java.util.Map;
@@ -43,4 +44,7 @@
     void registerWagons();
 
     Map<String, ArtifactHandler> getArtifactTypeHandlers();
+
+    void addExtension( Extension extension, MavenProject project, 
ProjectBuilderConfiguration builderConfig )
+        throws ArtifactResolutionException, PlexusContainerException, 
ArtifactNotFoundException;
 }

Modified: 
maven/maven-2/branches/maven-2.2.x/maven-core/src/main/java/org/apache/maven/lifecycle/DefaultLifecycleExecutor.java
URL: 
http://svn.apache.org/viewvc/maven/maven-2/branches/maven-2.2.x/maven-core/src/main/java/org/apache/maven/lifecycle/DefaultLifecycleExecutor.java?rev=813569&r1=813568&r2=813569&view=diff
==============================================================================
--- 
maven/maven-2/branches/maven-2.2.x/maven-core/src/main/java/org/apache/maven/lifecycle/DefaultLifecycleExecutor.java
 (original)
+++ 
maven/maven-2/branches/maven-2.2.x/maven-core/src/main/java/org/apache/maven/lifecycle/DefaultLifecycleExecutor.java
 Thu Sep 10 20:04:14 2009
@@ -193,7 +193,7 @@
                 try
                 {
                     getLogger().debug( "Adding extension: " + extension );
-                    extensionManager.addExtension( extension, project, 
session.getLocalRepository() );
+                    extensionManager.addExtension( extension, project, 
session.getProjectBuilderConfiguration() );
                 }
                 catch ( PlexusContainerException e )
                 {

Modified: 
maven/maven-2/branches/maven-2.2.x/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginManager.java
URL: 
http://svn.apache.org/viewvc/maven/maven-2/branches/maven-2.2.x/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginManager.java?rev=813569&r1=813568&r2=813569&view=diff
==============================================================================
--- 
maven/maven-2/branches/maven-2.2.x/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginManager.java
 (original)
+++ 
maven/maven-2/branches/maven-2.2.x/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginManager.java
 Thu Sep 10 20:04:14 2009
@@ -740,10 +740,16 @@
 
             ArtifactRepository localRepository = session.getLocalRepository();
 
+            ArtifactMetadataSource metadataSource = 
session.getProjectBuilderConfiguration().getMetadataSource();
+            if ( metadataSource == null )
+            {
+                 metadataSource = artifactMetadataSource;
+            }
+            
             ResolutionGroup resolutionGroup;
             try
             {
-                resolutionGroup = artifactMetadataSource.retrieve( 
pluginArtifact, localRepository,
+                resolutionGroup = metadataSource.retrieve( pluginArtifact, 
localRepository,
                                                                    
project.getPluginArtifactRepositories() );
             }
             catch ( ArtifactMetadataRetrievalException e )
@@ -835,7 +841,7 @@
             ArtifactResolutionResult result = 
artifactResolver.resolveTransitively( dependencies, pluginArtifact,
                                                                                
     pluginManagedDependencies,
                                                                                
     localRepository, repositories,
-                                                                               
     artifactMetadataSource,
+                                                                               
     metadataSource,
                                                                                
     artifactFilter );
 
             Set resolved = result.getArtifacts();

Propchange: 
maven/maven-2/branches/maven-2.2.x/maven-core/src/main/java/org/apache/maven/plugin/MavenPluginValidator.java
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Thu Sep 10 20:04:14 2009
@@ -6,4 +6,5 @@
 
/maven/components/branches/maven-2.1.x/maven-core/src/main/java/org/apache/maven/plugin/MavenPluginCollector.java:751686,753648,754505,754542
 
/maven/components/branches/maven-2.1.x/maven-core/src/main/java/org/apache/maven/plugin/MavenPluginValidator.java:767628,767631,768995,769010-769011
 
/maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/MavenPluginCollector.java:572229,720001,721902,726845,729292
+/maven/maven-2/branches/maven-2.2.x-MNG-4347/maven-core/src/main/java/org/apache/maven/plugin/MavenPluginValidator.java:813112
 
/maven/sandbox/branches/maven/MNG-3379/maven-core/src/main/java/org/apache/maven/plugin/MavenPluginCollector.java:678167

Modified: 
maven/maven-2/branches/maven-2.2.x/maven-core/src/main/resources/META-INF/plexus/components.xml
URL: 
http://svn.apache.org/viewvc/maven/maven-2/branches/maven-2.2.x/maven-core/src/main/resources/META-INF/plexus/components.xml?rev=813569&r1=813568&r2=813569&view=diff
==============================================================================
--- 
maven/maven-2/branches/maven-2.2.x/maven-core/src/main/resources/META-INF/plexus/components.xml
 (original)
+++ 
maven/maven-2/branches/maven-2.2.x/maven-core/src/main/resources/META-INF/plexus/components.xml
 Thu Sep 10 20:04:14 2009
@@ -108,6 +108,11 @@
         <requirement>
           <role>org.apache.maven.execution.RuntimeInformation</role>
         </requirement>
+        <requirement>
+          
<role>org.apache.maven.artifact.metadata.ArtifactMetadataSource</role>
+          <role-hint>maven</role-hint>
+          <field-name>mavenMetadataSource</field-name>
+        </requirement>
       </requirements>
     </component>
 

Propchange: maven/maven-2/branches/maven-2.2.x/maven-integration-tests/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Thu Sep 10 20:04:14 2009
@@ -2,3 +2,4 @@
 /maven/components/branches/maven-2.0.x/maven-integration-tests:736543
 
/maven/components/branches/maven-2.1.0-RC/maven-integration-tests:752168,752428,752622,752653,753089-753090,753320,755086,755199,755215
 
/maven/components/branches/maven-2.1.x/maven-integration-tests:751686,767628,767631,768995,769010-769011
+/maven/maven-2/branches/maven-2.2.x-MNG-4347/maven-integration-tests:813112

Propchange: maven/maven-2/branches/maven-2.2.x/maven-model/src/test/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Thu Sep 10 20:04:14 2009
@@ -2,3 +2,4 @@
 /maven/components/branches/maven-2.0.x/maven-model/src/test:736543
 
/maven/components/branches/maven-2.1.0-RC/maven-model/src/test:752168,752428,752622,752653,753089-753090,753320,755086,755199,755215
 
/maven/components/branches/maven-2.1.x/maven-model/src/test:751686,767628,767631,768995,769010-769011
+/maven/maven-2/branches/maven-2.2.x-MNG-4347/maven-model/src/test:813112

Modified: 
maven/maven-2/branches/maven-2.2.x/maven-project/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java
URL: 
http://svn.apache.org/viewvc/maven/maven-2/branches/maven-2.2.x/maven-project/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java?rev=813569&r1=813568&r2=813569&view=diff
==============================================================================
--- 
maven/maven-2/branches/maven-2.2.x/maven-project/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java
 (original)
+++ 
maven/maven-2/branches/maven-2.2.x/maven-project/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java
 Thu Sep 10 20:04:14 2009
@@ -239,6 +239,17 @@
                                              boolean allowStubModel )
         throws ProjectBuildingException
     {
+        ProjectBuilderConfiguration config = new 
DefaultProjectBuilderConfiguration().setLocalRepository( localRepository );
+        
+        return buildFromRepository( artifact, remoteArtifactRepositories, 
config, allowStubModel );
+    }
+
+    public MavenProject buildFromRepository( Artifact artifact,
+                                             List remoteArtifactRepositories,
+                                             ProjectBuilderConfiguration 
config,
+                                             boolean allowStubModel )
+        throws ProjectBuildingException
+    {
         String cacheKey = createCacheKey( artifact.getGroupId(), 
artifact.getArtifactId(), artifact.getVersion() );
 
         MavenProject project = (MavenProject) processedProjectCache.get( 
cacheKey );
@@ -248,9 +259,7 @@
             return project;
         }
 
-        Model model = findModelFromRepository( artifact, 
remoteArtifactRepositories, localRepository, allowStubModel );
-
-        ProjectBuilderConfiguration config = new 
DefaultProjectBuilderConfiguration().setLocalRepository( localRepository );
+        Model model = findModelFromRepository( artifact, 
remoteArtifactRepositories, config, allowStubModel );
 
         return buildInternal( "Artifact [" + artifact + "]", model, config, 
remoteArtifactRepositories,
                               null, false );
@@ -526,7 +535,7 @@
 
     private Model findModelFromRepository( Artifact artifact,
                                            List remoteArtifactRepositories,
-                                           ArtifactRepository localRepository,
+                                           ProjectBuilderConfiguration config,
                                            boolean allowStubModel )
         throws ProjectBuildingException
     {
@@ -555,7 +564,7 @@
 
         try
         {
-            artifactResolver.resolve( projectArtifact, 
remoteArtifactRepositories, localRepository );
+            artifactResolver.resolve( projectArtifact, 
remoteArtifactRepositories, config.getLocalRepository() );
 
             File file = projectArtifact.getFile();
 
@@ -574,7 +583,7 @@
                 status = ArtifactStatus.valueOf( 
distributionManagement.getStatus() );
             }
 
-            checkStatusAndUpdate( projectArtifact, status, file, 
remoteArtifactRepositories, localRepository );
+            checkStatusAndUpdate( projectArtifact, status, file, 
remoteArtifactRepositories, config.getLocalRepository() );
 
             // TODO: this is gross. Would like to give it the whole model, but 
maven-artifact shouldn't depend on that
             // Can a maven-core implementation of the Artifact interface store 
it, and be used in the exceptions?
@@ -859,6 +868,7 @@
 
         // only add the super repository if it wasn't overridden by a profile 
or project
         List repositories = new ArrayList( aggregatedRemoteWagonRepositories );
+        repositories.addAll( parentSearchRepositories );
 
         List superRepositories = buildArtifactRepositories( superModel );
 
@@ -996,7 +1006,7 @@
         // MNG-3482: Make sure depMgmt is interpolated before merging.
         if ( !isSuperPom )
         {
-            mergeManagedDependencies( model, config.getLocalRepository(), 
remoteRepositories );
+            mergeManagedDependencies( model, config, remoteRepositories );
         }
 
         // interpolation is before injection, because interpolation is 
off-limits in the injected variables
@@ -1389,7 +1399,7 @@
 
                 try
                 {
-                    model = findModelFromRepository( parentArtifact, 
remoteRepositories, config.getLocalRepository(), false );
+                    model = findModelFromRepository( parentArtifact, 
remoteRepositories, config, false );
                 }
                 catch ( ProjectBuildingException e )
                 {
@@ -1422,7 +1432,7 @@
         return project;
     }
 
-    private void mergeManagedDependencies(Model model, ArtifactRepository 
localRepository, List parentSearchRepositories)
+    private void mergeManagedDependencies(Model model, 
ProjectBuilderConfiguration config, List parentSearchRepositories)
         throws ProjectBuildingException
     {
         DependencyManagement modelDepMgmt = model.getDependencyManagement();
@@ -1453,7 +1463,7 @@
                     {
                         Artifact artifact = 
artifactFactory.createProjectArtifact( dep.getGroupId(), dep.getArtifactId(),
                                                                                
   dep.getVersion(), dep.getScope() );
-                        MavenProject project = buildFromRepository(artifact, 
parentSearchRepositories, localRepository, false);
+                        MavenProject project = buildFromRepository(artifact, 
parentSearchRepositories, config, false);
 
                         DependencyManagement depMgmt = 
project.getDependencyManagement();
 

Modified: 
maven/maven-2/branches/maven-2.2.x/maven-project/src/main/java/org/apache/maven/project/DefaultProjectBuilderConfiguration.java
URL: 
http://svn.apache.org/viewvc/maven/maven-2/branches/maven-2.2.x/maven-project/src/main/java/org/apache/maven/project/DefaultProjectBuilderConfiguration.java?rev=813569&r1=813568&r2=813569&view=diff
==============================================================================
--- 
maven/maven-2/branches/maven-2.2.x/maven-project/src/main/java/org/apache/maven/project/DefaultProjectBuilderConfiguration.java
 (original)
+++ 
maven/maven-2/branches/maven-2.2.x/maven-project/src/main/java/org/apache/maven/project/DefaultProjectBuilderConfiguration.java
 Thu Sep 10 20:04:14 2009
@@ -1,5 +1,6 @@
 package org.apache.maven.project;
 
+import org.apache.maven.artifact.metadata.ArtifactMetadataSource;
 import org.apache.maven.artifact.repository.ArtifactRepository;
 import org.apache.maven.profiles.ProfileManager;
 
@@ -20,6 +21,8 @@
 
     private Date buildStartTime;
 
+    private ArtifactMetadataSource metadataSource;
+
     public DefaultProjectBuilderConfiguration()
     {
     }
@@ -84,4 +87,15 @@
         return this;
     }
 
+    public ProjectBuilderConfiguration setMetadataSource( 
ArtifactMetadataSource metadataSource )
+    {
+        this.metadataSource = metadataSource;
+        return this;
+    }
+    
+    public ArtifactMetadataSource getMetadataSource()
+    {
+        return metadataSource;
+    }
+
 }

Modified: 
maven/maven-2/branches/maven-2.2.x/maven-project/src/main/java/org/apache/maven/project/MavenProjectBuilder.java
URL: 
http://svn.apache.org/viewvc/maven/maven-2/branches/maven-2.2.x/maven-project/src/main/java/org/apache/maven/project/MavenProjectBuilder.java?rev=813569&r1=813568&r2=813569&view=diff
==============================================================================
--- 
maven/maven-2/branches/maven-2.2.x/maven-project/src/main/java/org/apache/maven/project/MavenProjectBuilder.java
 (original)
+++ 
maven/maven-2/branches/maven-2.2.x/maven-project/src/main/java/org/apache/maven/project/MavenProjectBuilder.java
 Thu Sep 10 20:04:14 2009
@@ -91,6 +91,22 @@
         throws ProjectBuildingException;
 
     /**
+     * Build the artifact using the local repository and profile manager from 
the project-builder 
+     * configuration, resolving it if necessary.
+     *
+     * @param artifact the artifact description
+     * @param configuration The {...@link ProjectBuilderConfiguration} 
instance containing local 
+     *                      repository, profile manager, etc.
+     * @param remoteArtifactRepositories the remote repository list
+     * @param allowStubModel return a stub if the POM is not found
+     * @return the built project
+     * @throws ProjectBuildingException
+     */
+    MavenProject buildFromRepository( Artifact artifact, List 
remoteArtifactRepositories,
+                                      ProjectBuilderConfiguration 
configuration, boolean allowStubModel )
+        throws ProjectBuildingException;
+
+    /**
      * @deprecated Use {...@link 
MavenProjectBuilder#buildStandaloneSuperProject(ProjectBuilderConfiguration)} 
instead.
      */
     MavenProject buildStandaloneSuperProject( ArtifactRepository 
localRepository )

Modified: 
maven/maven-2/branches/maven-2.2.x/maven-project/src/main/java/org/apache/maven/project/ProjectBuilderConfiguration.java
URL: 
http://svn.apache.org/viewvc/maven/maven-2/branches/maven-2.2.x/maven-project/src/main/java/org/apache/maven/project/ProjectBuilderConfiguration.java?rev=813569&r1=813568&r2=813569&view=diff
==============================================================================
--- 
maven/maven-2/branches/maven-2.2.x/maven-project/src/main/java/org/apache/maven/project/ProjectBuilderConfiguration.java
 (original)
+++ 
maven/maven-2/branches/maven-2.2.x/maven-project/src/main/java/org/apache/maven/project/ProjectBuilderConfiguration.java
 Thu Sep 10 20:04:14 2009
@@ -1,5 +1,6 @@
 package org.apache.maven.project;
 
+import org.apache.maven.artifact.metadata.ArtifactMetadataSource;
 import org.apache.maven.artifact.repository.ArtifactRepository;
 import org.apache.maven.profiles.ProfileManager;
 
@@ -29,4 +30,8 @@
 
     ProjectBuilderConfiguration setBuildStartTime( Date buildStartTime );
 
+    ProjectBuilderConfiguration setMetadataSource( ArtifactMetadataSource mms 
);
+    
+    ArtifactMetadataSource getMetadataSource();
+
 }

Modified: 
maven/maven-2/branches/maven-2.2.x/maven-project/src/main/java/org/apache/maven/project/artifact/MavenMetadataSource.java
URL: 
http://svn.apache.org/viewvc/maven/maven-2/branches/maven-2.2.x/maven-project/src/main/java/org/apache/maven/project/artifact/MavenMetadataSource.java?rev=813569&r1=813568&r2=813569&view=diff
==============================================================================
--- 
maven/maven-2/branches/maven-2.2.x/maven-project/src/main/java/org/apache/maven/project/artifact/MavenMetadataSource.java
 (original)
+++ 
maven/maven-2/branches/maven-2.2.x/maven-project/src/main/java/org/apache/maven/project/artifact/MavenMetadataSource.java
 Thu Sep 10 20:04:14 2009
@@ -53,6 +53,7 @@
 import org.apache.maven.project.InvalidProjectModelException;
 import org.apache.maven.project.MavenProject;
 import org.apache.maven.project.MavenProjectBuilder;
+import org.apache.maven.project.ProjectBuilderConfiguration;
 import org.apache.maven.project.ProjectBuildingException;
 import org.apache.maven.project.validation.ModelValidationResult;
 import org.codehaus.plexus.logging.AbstractLogEnabled;
@@ -78,8 +79,29 @@
     // lazily instantiated and cached.
     private MavenProject superProject;
     
-    private Set warnedPoms = new HashSet();
-
+    // cache
+    private final Set<String> warnedPoms;
+    
+    // per-session information
+    private ProjectBuilderConfiguration projectBuilderConfig;
+    
+    public MavenMetadataSource()
+    {
+        warnedPoms = new HashSet<String>();
+    }
+    
+    public MavenMetadataSource( MavenMetadataSource mms, 
ProjectBuilderConfiguration configuration )
+    {
+        mavenProjectBuilder = mms.mavenProjectBuilder;
+        artifactFactory = mms.artifactFactory;
+        repositoryMetadataManager = mms.repositoryMetadataManager;
+        superProject = mms.superProject;
+        warnedPoms = mms.warnedPoms;
+        
+        projectBuilderConfig = configuration;
+        projectBuilderConfig.setMetadataSource( this );
+    }
+    
     /**
      * Resolve all relocations in the POM for this artifact, and return the 
new artifact coordinate.
      */
@@ -143,6 +165,12 @@
         throws ArtifactMetadataRetrievalException
     {
         MavenProject project = null;
+        
+        ProjectBuilderConfiguration config = projectBuilderConfig;
+        if ( config == null )
+        {
+            config = new 
DefaultProjectBuilderConfiguration().setLocalRepository( localRepository );
+        }
 
         Artifact pomArtifact;
         boolean done = false;
@@ -160,7 +188,7 @@
             {
                 try
                 {
-                    project = mavenProjectBuilder.buildFromRepository( 
pomArtifact, remoteRepositories, localRepository,
+                    project = mavenProjectBuilder.buildFromRepository( 
pomArtifact, remoteRepositories, config,
                                                                        true );
                 }
                 catch ( InvalidProjectModelException e )
@@ -352,11 +380,17 @@
     private List aggregateRepositoryLists( List remoteRepositories, List 
remoteArtifactRepositories )
         throws ArtifactMetadataRetrievalException
     {
+        ProjectBuilderConfiguration config = projectBuilderConfig;
+        if ( config == null )
+        {
+            config = new DefaultProjectBuilderConfiguration();
+        }
+        
         if ( superProject == null )
         {
             try
             {
-                superProject = 
mavenProjectBuilder.buildStandaloneSuperProject( new 
DefaultProjectBuilderConfiguration() );
+                superProject = 
mavenProjectBuilder.buildStandaloneSuperProject( config );
             }
             catch ( ProjectBuildingException e )
             {

Propchange: 
maven/maven-2/branches/maven-2.2.x/maven-project/src/test/java/org/apache/maven/project/interpolation/AbstractModelInterpolatorTest.java
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Thu Sep 10 20:04:14 2009
@@ -2,3 +2,4 @@
 
/maven/components/branches/maven-2.1.0-M1-RC/maven-project/src/test/java/org/apache/maven/project/interpolation/AbstractModelInterpolatorTest.java:690315,691793
 
/maven/components/branches/maven-2.1.0-RC/maven-project/src/test/java/org/apache/maven/project/interpolation/AbstractModelInterpolatorTest.java:688883,689695,689976,689990,752168,752428,752622,752653,753089-753090,753320,755086,755199,755215
 
/maven/components/branches/maven-2.1.x/maven-project/src/test/java/org/apache/maven/project/interpolation/AbstractModelInterpolatorTest.java:751686,767628,767631,768995,769010-769011
+/maven/maven-2/branches/maven-2.2.x-MNG-4347/maven-project/src/test/java/org/apache/maven/project/interpolation/AbstractModelInterpolatorTest.java:813112

Propchange: maven/maven-2/branches/maven-2.2.x/maven-settings/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Thu Sep 10 20:04:14 2009
@@ -5,4 +5,5 @@
 
/maven/components/branches/maven-2.1.x/maven-settings:751686,767628,767631,768817,768995,769010-769011
 /maven/components/trunk/maven-core:804537
 
/maven/components/trunk/maven-settings:572229,720001,721902,726845,729292,792073
+/maven/maven-2/branches/maven-2.2.x-MNG-4347/maven-settings:813112
 /maven/sandbox/branches/maven/MNG-3379/maven-settings:678167

Propchange: maven/maven-2/branches/maven-2.2.x/maven-toolchain/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Thu Sep 10 20:04:14 2009
@@ -5,4 +5,5 @@
 
/maven/components/branches/maven-2.1.x/maven-toolchain:751686,767628,767631,768817,768995,769010-769011
 /maven/components/trunk/maven-core:804533,804535
 
/maven/components/trunk/maven-toolchain:572229,720001,721902,726845,729292,792073
+/maven/maven-2/branches/maven-2.2.x-MNG-4347/maven-toolchain:813112
 /maven/sandbox/branches/maven/MNG-3379/maven-toolchain:678167

Propchange: 
maven/maven-2/branches/maven-2.2.x/maven-toolchain/src/main/mdo/toolchains.mdo
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Thu Sep 10 20:04:14 2009
@@ -1,2 +1,3 @@
 
/maven/components/branches/maven-2.1.x/maven-toolchain/src/main/mdo/toolchains.mdo:768778,768796,768995,769010-769011
 /maven/components/trunk/maven-core/src/main/mdo/toolchains.mdo:804535
+/maven/maven-2/branches/maven-2.2.x-MNG-4347/maven-toolchain/src/main/mdo/toolchains.mdo:813112


Reply via email to