Author: jdcasey
Date: Thu Nov 29 20:26:58 2007
New Revision: 599692

URL: http://svn.apache.org/viewvc?rev=599692&view=rev
Log:
Removing pluginRepository use (finally), and fixing pluginGroups usage with 
profiles from the settings and super-POM without an accompanying pom.xml in the 
project directory...I know, something of a convoluted case.

Modified:
    maven/components/trunk/maven-core/pom.xml
    
maven/components/trunk/maven-core/src/main/java/org/apache/maven/DefaultMaven.java
    
maven/components/trunk/maven-core/src/main/java/org/apache/maven/extension/DefaultBuildExtensionScanner.java
    
maven/components/trunk/maven-core/src/main/java/org/apache/maven/extension/DefaultExtensionManager.java
    
maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginManager.java
    
maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginMappingManager.java
    
maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/loader/DefaultPluginLoader.java
    
maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/version/DefaultPluginVersionManager.java
    
maven/components/trunk/maven-core/src/main/java/org/apache/maven/reactor/MavenExecutionException.java
    
maven/components/trunk/maven-embedder/src/test/java/org/apache/maven/embedder/MavenEmbedderProjectWithExtensionReadingTest.java
    
maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java
    
maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/MavenProject.java
    
maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/ProjectBuildingException.java
    
maven/components/trunk/maven-project/src/test/java/org/apache/maven/project/DefaultMavenProjectBuilderTest.java
    
maven/components/trunk/maven-project/src/test/java/org/apache/maven/project/SuperPomProjectBuilderTest.java

Modified: maven/components/trunk/maven-core/pom.xml
URL: 
http://svn.apache.org/viewvc/maven/components/trunk/maven-core/pom.xml?rev=599692&r1=599691&r2=599692&view=diff
==============================================================================
--- maven/components/trunk/maven-core/pom.xml (original)
+++ maven/components/trunk/maven-core/pom.xml Thu Nov 29 20:26:58 2007
@@ -115,6 +115,12 @@
       <version>1.2_Java1.3</version>
       <scope>test</scope>
     </dependency>
+    <dependency>
+      <groupId>org.apache.maven.shared</groupId>
+      <artifactId>maven-test-tools</artifactId>
+      <version>1.0-alpha-1</version>
+      <scope>test</scope>
+    </dependency>
     
     <!-- Needed for backward compat aspect. -->
     <dependency>

Modified: 
maven/components/trunk/maven-core/src/main/java/org/apache/maven/DefaultMaven.java
URL: 
http://svn.apache.org/viewvc/maven/components/trunk/maven-core/src/main/java/org/apache/maven/DefaultMaven.java?rev=599692&r1=599691&r2=599692&view=diff
==============================================================================
--- 
maven/components/trunk/maven-core/src/main/java/org/apache/maven/DefaultMaven.java
 (original)
+++ 
maven/components/trunk/maven-core/src/main/java/org/apache/maven/DefaultMaven.java
 Thu Nov 29 20:26:58 2007
@@ -282,102 +282,116 @@
     {
         List projects = new ArrayList( files.size() );
 
-        for ( Iterator iterator = files.iterator(); iterator.hasNext(); )
+        if ( files.isEmpty() )
         {
-            File file = (File) iterator.next();
-
-            boolean usingReleasePom = false;
-
-            if ( RELEASE_POMv4.equals( file.getName() ) )
-            {
-                getLogger().info( "NOTE: Using release-pom: " + file + " in 
reactor build." );
-
-                usingReleasePom = true;
-            }
-
-            MavenProject project;
             try
             {
-                project = projectBuilder.build( file, localRepository, 
globalProfileManager );
+                projects.add( projectBuilder.buildStandaloneSuperProject( 
globalProfileManager ) );
             }
             catch ( ProjectBuildingException e )
             {
-                throw new MavenExecutionException( "Failed to build 
MavenProject instance for: " + file, file, e );
+                throw new MavenExecutionException( "Failed to build 
super-project instance.", e );
             }
-
-            if ( isRoot )
+        }
+        else
+        {
+            for ( Iterator iterator = files.iterator(); iterator.hasNext(); )
             {
-                project.setExecutionRoot( true );
-            }
+                File file = (File) iterator.next();
 
-            if ( ( project.getPrerequisites() != null ) && ( 
project.getPrerequisites().getMaven() != null ) )
-            {
-                DefaultArtifactVersion version = new DefaultArtifactVersion( 
project.getPrerequisites().getMaven() );
+                boolean usingReleasePom = false;
 
-                if ( runtimeInformation.getApplicationVersion().compareTo( 
version ) < 0 )
+                if ( RELEASE_POMv4.equals( file.getName() ) )
                 {
-                    throw new MavenExecutionException(
-                        "Unable to build project '" + file +
-                            "; it requires Maven version " + 
version.toString(), file );
-                }
-            }
+                    getLogger().info( "NOTE: Using release-pom: " + file + " 
in reactor build." );
 
-            if ( ( project.getModules() != null ) && 
!project.getModules().isEmpty() && recursive )
-            {
-                // TODO: Really should fail if it was not? What if it is 
aggregating - eg "ear"?
-                project.setPackaging( "pom" );
+                    usingReleasePom = true;
+                }
 
-                File basedir = file.getParentFile();
+                MavenProject project;
+                try
+                {
+                    project = projectBuilder.build( file, localRepository, 
globalProfileManager );
+                }
+                catch ( ProjectBuildingException e )
+                {
+                    throw new MavenExecutionException( "Failed to build 
MavenProject instance for: " + file, file, e );
+                }
 
-                // Initial ordering is as declared in the modules section
-                List moduleFiles = new ArrayList( project.getModules().size() 
);
+                if ( isRoot )
+                {
+                    project.setExecutionRoot( true );
+                }
 
-                for ( Iterator i = project.getModules().iterator(); 
i.hasNext(); )
+                if ( ( project.getPrerequisites() != null ) && ( 
project.getPrerequisites().getMaven() != null ) )
                 {
-                    String name = (String) i.next();
+                    DefaultArtifactVersion version = new 
DefaultArtifactVersion( project.getPrerequisites().getMaven() );
 
-                    if ( StringUtils.isEmpty( StringUtils.trim( name ) ) )
+                    if ( runtimeInformation.getApplicationVersion().compareTo( 
version ) < 0 )
                     {
-                        getLogger().warn( "Empty module detected. Please check 
you don't have any empty module definitions in your POM." );
-
-                        continue;
+                        throw new MavenExecutionException(
+                            "Unable to build project '" + file +
+                                "; it requires Maven version " + 
version.toString(), file );
                     }
+                }
 
-                    File moduleFile;
+                if ( ( project.getModules() != null ) && 
!project.getModules().isEmpty() && recursive )
+                {
+                    // TODO: Really should fail if it was not? What if it is 
aggregating - eg "ear"?
+                    project.setPackaging( "pom" );
 
-                    if ( usingReleasePom )
-                    {
-                        moduleFile = new File( basedir, name + "/" + 
Maven.RELEASE_POMv4 );
-                    }
-                    else
-                    {
-                        moduleFile = new File( basedir, name + "/" + 
Maven.POMv4 );
-                    }
+                    File basedir = file.getParentFile();
+
+                    // Initial ordering is as declared in the modules section
+                    List moduleFiles = new ArrayList( 
project.getModules().size() );
 
-                    if ( Os.isFamily( Os.FAMILY_WINDOWS ) )
+                    for ( Iterator i = project.getModules().iterator(); 
i.hasNext(); )
                     {
-                        // we don't canonicalize on unix to avoid interfering 
with symlinks
+                        String name = (String) i.next();
+
+                        if ( StringUtils.isEmpty( StringUtils.trim( name ) ) )
+                        {
+                            getLogger().warn( "Empty module detected. Please 
check you don't have any empty module definitions in your POM." );
+
+                            continue;
+                        }
+
+                        File moduleFile;
 
-                        try
+                        if ( usingReleasePom )
                         {
-                            moduleFile = moduleFile.getCanonicalFile();
+                            moduleFile = new File( basedir, name + "/" + 
Maven.RELEASE_POMv4 );
                         }
-                        catch ( IOException e )
+                        else
                         {
-                            throw new MavenExecutionException( "Unable to 
canonicalize file name " + moduleFile, e );
+                            moduleFile = new File( basedir, name + "/" + 
Maven.POMv4 );
                         }
-                    }
 
-                    moduleFiles.add( moduleFile );
-                }
+                        if ( Os.isFamily( Os.FAMILY_WINDOWS ) )
+                        {
+                            // we don't canonicalize on unix to avoid 
interfering with symlinks
 
-                List collectedProjects = collectProjects( moduleFiles, 
localRepository, recursive,
-                                                          
globalProfileManager, false );
+                            try
+                            {
+                                moduleFile = moduleFile.getCanonicalFile();
+                            }
+                            catch ( IOException e )
+                            {
+                                throw new MavenExecutionException( "Unable to 
canonicalize file name " + moduleFile, e );
+                            }
+                        }
+
+                        moduleFiles.add( moduleFile );
+                    }
 
-                projects.addAll( collectedProjects );
-                project.setCollectedProjects( collectedProjects );
+                    List collectedProjects = collectProjects( moduleFiles, 
localRepository, recursive,
+                                                              
globalProfileManager, false );
+
+                    projects.addAll( collectedProjects );
+                    project.setCollectedProjects( collectedProjects );
+                }
+                projects.add( project );
             }
-            projects.add( project );
         }
 
         return projects;

Modified: 
maven/components/trunk/maven-core/src/main/java/org/apache/maven/extension/DefaultBuildExtensionScanner.java
URL: 
http://svn.apache.org/viewvc/maven/components/trunk/maven-core/src/main/java/org/apache/maven/extension/DefaultBuildExtensionScanner.java?rev=599692&r1=599691&r2=599692&view=diff
==============================================================================
--- 
maven/components/trunk/maven-core/src/main/java/org/apache/maven/extension/DefaultBuildExtensionScanner.java
 (original)
+++ 
maven/components/trunk/maven-core/src/main/java/org/apache/maven/extension/DefaultBuildExtensionScanner.java
 Thu Nov 29 20:26:58 2007
@@ -26,7 +26,7 @@
 import org.apache.maven.model.Model;
 import org.apache.maven.model.Parent;
 import org.apache.maven.model.Plugin;
-import org.apache.maven.plugin.loader.PluginLoader;
+import org.apache.maven.model.PluginManagement;
 import org.apache.maven.profiles.ProfileManager;
 import org.apache.maven.profiles.activation.DefaultProfileActivationContext;
 import org.apache.maven.profiles.activation.ProfileActivationContext;
@@ -47,10 +47,12 @@
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.HashMap;
+import java.util.HashSet;
 import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
 import java.util.Properties;
+import java.util.Set;
 
 public class DefaultBuildExtensionScanner
     implements BuildExtensionScanner, LogEnabled
@@ -66,8 +68,6 @@
 
     private ModelInterpolator modelInterpolator;
 
-    private PluginLoader pluginLoader;
-
     public void scanForBuildExtensions( List files,
                                         MavenExecutionRequest request )
         throws ExtensionScanningException
@@ -112,6 +112,8 @@
 
             inheritedRemoteRepositories.addAll( originalRemoteRepositories );
 
+            Set managedPluginsWithExtensionsFlag = new HashSet();
+
             for ( ModelLineageIterator lineageIterator = 
lineage.reversedLineageIterator(); lineageIterator.hasNext(); )
             {
                 Model model = (Model) lineageIterator.next();
@@ -144,7 +146,9 @@
 
                 model = modelInterpolator.interpolate( model, 
inheritedInterpolationValues, false );
 
-                checkModelBuildForExtensions( model, request, 
inheritedRemoteRepositories );
+                grabManagedPluginsWithExtensionsFlagTurnedOn( model, 
managedPluginsWithExtensionsFlag );
+
+                checkModelBuildForExtensions( model, request, 
inheritedRemoteRepositories, managedPluginsWithExtensionsFlag );
 
                 if ( !reactorFiles.contains( modelPom ) )
                 {
@@ -180,6 +184,31 @@
         }
     }
 
+    private void grabManagedPluginsWithExtensionsFlagTurnedOn( Model model,
+                                                               Set 
managedPluginsWithExtensionsFlag )
+    {
+        Build build = model.getBuild();
+        if ( build != null )
+        {
+            PluginManagement pluginManagement = build.getPluginManagement();
+            if ( pluginManagement != null )
+            {
+                List plugins = pluginManagement.getPlugins();
+                if ( ( plugins != null ) && !plugins.isEmpty() )
+                {
+                    for ( Iterator it = plugins.iterator(); it.hasNext(); )
+                    {
+                        Plugin plugin = (Plugin) it.next();
+                        if ( plugin.isExtensions() )
+                        {
+                            managedPluginsWithExtensionsFlag.add( 
plugin.getKey() );
+                        }
+                    }
+                }
+            }
+        }
+    }
+
     private String createKey( Model model )
     {
         Parent parent = model.getParent();
@@ -271,7 +300,10 @@
         }
     }
 
-    private void checkModelBuildForExtensions( Model model, 
MavenExecutionRequest request, List remoteRepositories )
+    private void checkModelBuildForExtensions( Model model,
+                                               MavenExecutionRequest request,
+                                               List remoteRepositories,
+                                               Set 
managedPluginsWithExtensionsFlag )
         throws ExtensionScanningException
     {
         // FIXME: Fix the log level here.
@@ -316,7 +348,7 @@
                 {
                     Plugin plugin = (Plugin) extensionIterator.next();
 
-                    if ( plugin.isExtensions() )
+                    if ( plugin.isExtensions() || 
managedPluginsWithExtensionsFlag.contains( plugin.getKey() ) )
                     {
                         getLogger().debug( "Adding plugin: " + plugin.getKey() 
+ " as an extension(from model: " + model.getId() + ")" );
 

Modified: 
maven/components/trunk/maven-core/src/main/java/org/apache/maven/extension/DefaultExtensionManager.java
URL: 
http://svn.apache.org/viewvc/maven/components/trunk/maven-core/src/main/java/org/apache/maven/extension/DefaultExtensionManager.java?rev=599692&r1=599691&r2=599692&view=diff
==============================================================================
--- 
maven/components/trunk/maven-core/src/main/java/org/apache/maven/extension/DefaultExtensionManager.java
 (original)
+++ 
maven/components/trunk/maven-core/src/main/java/org/apache/maven/extension/DefaultExtensionManager.java
 Thu Nov 29 20:26:58 2007
@@ -63,7 +63,6 @@
 import org.codehaus.plexus.logging.AbstractLogEnabled;
 import org.codehaus.plexus.personality.plexus.lifecycle.phase.Contextualizable;
 
-import java.util.Collections;
 import java.util.Iterator;
 import java.util.LinkedHashSet;
 import java.util.List;
@@ -207,8 +206,7 @@
         {
             MavenProject dummyProject = new MavenProject( originatingModel );
 
-            dummyProject.setPluginArtifactRepositories( remoteRepositories );
-            dummyProject.setRemoteArtifactRepositories( Collections.EMPTY_LIST 
);
+            dummyProject.setRemoteArtifactRepositories( remoteRepositories );
 
             EventDispatcher dispatcher = new DefaultEventDispatcher( 
request.getEventMonitors() );
             MavenSession session = new MavenSession( container, request, 
dispatcher, null );

Modified: 
maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginManager.java
URL: 
http://svn.apache.org/viewvc/maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginManager.java?rev=599692&r1=599691&r2=599692&view=diff
==============================================================================
--- 
maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginManager.java
 (original)
+++ 
maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginManager.java
 Thu Nov 29 20:26:58 2007
@@ -151,7 +151,7 @@
         // TODO: since this is only used in the lifecycle executor, maybe it 
should be moved there? There is no other
         // use for the mapping manager in here
         return pluginMappingManager.getByPrefix( prefix, 
session.getSettings().getPluginGroups(),
-                                                 
project.getPluginArtifactRepositories(),
+                                                 
project.getRemoteArtifactRepositories(),
                                                  session.getLocalRepository() 
);
     }
 
@@ -213,7 +213,7 @@
 
                 List remoteRepositories = new ArrayList();
 
-                remoteRepositories.addAll( 
project.getPluginArtifactRepositories() );
+//                remoteRepositories.addAll( 
project.getPluginArtifactRepositories() );
 
                 remoteRepositories.addAll( 
project.getRemoteArtifactRepositories() );
 
@@ -226,7 +226,7 @@
 
                 pluginArtifact = project.replaceWithActiveArtifact( 
pluginArtifact );
 
-                artifactResolver.resolve( pluginArtifact, 
project.getPluginArtifactRepositories(),
+                artifactResolver.resolve( pluginArtifact, 
project.getRemoteArtifactRepositories(),
                                           localRepository );
 
                 addPlugin( plugin, pluginArtifact, project, session );
@@ -440,7 +440,7 @@
             resolutionGroup = artifactMetadataSource.retrieve(
                                                                pluginArtifact,
                                                                localRepository,
-                                                               
project.getPluginArtifactRepositories() );
+                                                               
project.getRemoteArtifactRepositories() );
         }
         catch ( ArtifactMetadataRetrievalException e )
         {

Modified: 
maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginMappingManager.java
URL: 
http://svn.apache.org/viewvc/maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginMappingManager.java?rev=599692&r1=599691&r2=599692&view=diff
==============================================================================
--- 
maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginMappingManager.java
 (original)
+++ 
maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginMappingManager.java
 Thu Nov 29 20:26:58 2007
@@ -29,7 +29,6 @@
 import org.codehaus.plexus.logging.AbstractLogEnabled;
 
 import java.util.ArrayList;
-import java.util.Collections;
 import java.util.HashMap;
 import java.util.Iterator;
 import java.util.List;
@@ -37,7 +36,7 @@
 
 /**
  * Manage plugin prefix to artifact ID mapping associations.
- * 
+ *
  * @author <a href="mailto:[EMAIL PROTECTED]">Brett Porter</a>
  * @version $Id: DefaultPluginMappingManager.java 495147 2007-01-11 07:47:53Z
  *          jvanzyl $
@@ -61,7 +60,14 @@
             loadPluginMappings( groupIds, pluginRepositories, localRepository 
);
         }
 
-        return (org.apache.maven.model.Plugin) pluginDefinitionsByPrefix.get( 
pluginPrefix );
+        org.apache.maven.model.Plugin result = (org.apache.maven.model.Plugin) 
pluginDefinitionsByPrefix.get( pluginPrefix );
+
+        if ( result == null )
+        {
+            getLogger().debug( "Failed to resolve plugin from prefix: " + 
pluginPrefix, new Throwable() );
+        }
+
+        return result;
     }
 
     private void loadPluginMappings( List groupIds, List pluginRepositories, 
ArtifactRepository localRepository )
@@ -100,6 +106,7 @@
     {
         RepositoryMetadata metadata = new GroupRepositoryMetadata( groupId );
 
+        getLogger().debug( "Checking repositories:\n" + pluginRepositories + 
"\n\nfor plugin prefix metadata: " + groupId );
         repositoryMetadataManager.resolve( metadata, pluginRepositories, 
localRepository );
 
         Metadata repoMetadata = metadata.getMetadata();
@@ -108,9 +115,10 @@
             for ( Iterator pluginIterator = 
repoMetadata.getPlugins().iterator(); pluginIterator.hasNext(); )
             {
                 Plugin mapping = (Plugin) pluginIterator.next();
+                getLogger().debug( "Found plugin: " + mapping.getName() + " 
with prefix: " + mapping.getPrefix() );
 
                 String prefix = mapping.getPrefix();
-                
+
                 //if the prefix has already been found, don't add it again.
                 //this is to preserve the correct ordering of prefix searching 
(MNG-2926)
                 if ( !pluginDefinitionsByPrefix.containsKey( prefix ) )

Modified: 
maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/loader/DefaultPluginLoader.java
URL: 
http://svn.apache.org/viewvc/maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/loader/DefaultPluginLoader.java?rev=599692&r1=599691&r2=599692&view=diff
==============================================================================
--- 
maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/loader/DefaultPluginLoader.java
 (original)
+++ 
maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/loader/DefaultPluginLoader.java
 Thu Nov 29 20:26:58 2007
@@ -164,7 +164,7 @@
         Settings settings = session.getSettings();
 
         Plugin plugin = pluginMappingManager.getByPrefix( prefix, 
settings.getPluginGroups(),
-                                                          
project.getPluginArtifactRepositories(), session.getLocalRepository() );
+                                                          
project.getRemoteArtifactRepositories(), session.getLocalRepository() );
 
         PluginDescriptor pluginDescriptor = null;
         if ( plugin != null )

Modified: 
maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/version/DefaultPluginVersionManager.java
URL: 
http://svn.apache.org/viewvc/maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/version/DefaultPluginVersionManager.java?rev=599692&r1=599691&r2=599692&view=diff
==============================================================================
--- 
maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/version/DefaultPluginVersionManager.java
 (original)
+++ 
maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/version/DefaultPluginVersionManager.java
 Thu Nov 29 20:26:58 2007
@@ -189,7 +189,7 @@
         try
         {
             ResolutionGroup resolutionGroup =
-                artifactMetadataSource.retrieve( artifact, localRepository, 
project.getPluginArtifactRepositories() );
+                artifactMetadataSource.retrieve( artifact, localRepository, 
project.getRemoteArtifactRepositories() );
 
             // switching this out with the actual resolved artifact instance, 
since the MMSource re-creates the pom
             // artifact.
@@ -215,7 +215,7 @@
                 {
                     artifact = artifactFactory.createProjectArtifact( groupId, 
artifactId, artifactVersion );
 
-                    pluginProject = mavenProjectBuilder.buildFromRepository( 
artifact, project.getPluginArtifactRepositories(), localRepository );
+                    pluginProject = mavenProjectBuilder.buildFromRepository( 
artifact, project.getRemoteArtifactRepositories(), localRepository );
                 }
                 catch ( ProjectBuildingException e )
                 {
@@ -250,7 +250,7 @@
                         try
                         {
                             List versions = 
artifactMetadataSource.retrieveAvailableVersions( artifact, localRepository,
-                                                                               
               project.getPluginArtifactRepositories() );
+                                                                               
               project.getRemoteArtifactRepositories() );
                             ArtifactVersion v = vr.matchVersion( versions );
                             artifactVersion = v != null ? v.toString() : null;
                         }

Modified: 
maven/components/trunk/maven-core/src/main/java/org/apache/maven/reactor/MavenExecutionException.java
URL: 
http://svn.apache.org/viewvc/maven/components/trunk/maven-core/src/main/java/org/apache/maven/reactor/MavenExecutionException.java?rev=599692&r1=599691&r2=599692&view=diff
==============================================================================
--- 
maven/components/trunk/maven-core/src/main/java/org/apache/maven/reactor/MavenExecutionException.java
 (original)
+++ 
maven/components/trunk/maven-core/src/main/java/org/apache/maven/reactor/MavenExecutionException.java
 Thu Nov 29 20:26:58 2007
@@ -81,6 +81,12 @@
         super( message, cause );
     }
 
+    public MavenExecutionException( String message,
+                                    ProjectBuildingException cause )
+    {
+        super( message, cause );
+    }
+
     public File getPomFile()
     {
         return pomFile;

Modified: 
maven/components/trunk/maven-embedder/src/test/java/org/apache/maven/embedder/MavenEmbedderProjectWithExtensionReadingTest.java
URL: 
http://svn.apache.org/viewvc/maven/components/trunk/maven-embedder/src/test/java/org/apache/maven/embedder/MavenEmbedderProjectWithExtensionReadingTest.java?rev=599692&r1=599691&r2=599692&view=diff
==============================================================================
--- 
maven/components/trunk/maven-embedder/src/test/java/org/apache/maven/embedder/MavenEmbedderProjectWithExtensionReadingTest.java
 (original)
+++ 
maven/components/trunk/maven-embedder/src/test/java/org/apache/maven/embedder/MavenEmbedderProjectWithExtensionReadingTest.java
 Thu Nov 29 20:26:58 2007
@@ -9,6 +9,7 @@
 import org.apache.maven.project.MavenProject;
 import org.codehaus.plexus.component.repository.ComponentDescriptor;
 import 
org.codehaus.plexus.component.repository.exception.ComponentLookupException;
+import org.codehaus.plexus.logging.Logger;
 
 import java.io.File;
 import java.util.Map;
@@ -21,7 +22,9 @@
         throws Exception
     {
         MavenExecutionRequest request = new 
DefaultMavenExecutionRequest().setShowErrors( true )
-            .setPom( new File( basedir, "src/test/resources/pom2.xml" ) );
+            .setPom( new File( basedir, "src/test/resources/pom2.xml" ) )
+            // TODO: Remove this!
+            .setLoggingLevel( Logger.LEVEL_DEBUG );
 
         ClassLoader classLoader = 
Thread.currentThread().getContextClassLoader();
 
@@ -39,11 +42,13 @@
 
         embedder.getPlexusContainer().addComponentDescriptor( cd );
 
-        // At this point the artifact handler will be inside the container and 
+        // At this point the artifact handler will be inside the container and
         // Maven internally will pick up the artifact handler and use it 
accordingly to
         // create the classpath appropriately.
 
         MavenExecutionResult result = embedder.readProjectWithDependencies( 
request );
+
+        System.out.println( "Got exceptions: " + result.getExceptions() );
 
         assertNoExceptions( result );
 

Modified: 
maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java
URL: 
http://svn.apache.org/viewvc/maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java?rev=599692&r1=599691&r2=599692&view=diff
==============================================================================
--- 
maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java
 (original)
+++ 
maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java
 Thu Nov 29 20:26:58 2007
@@ -222,6 +222,8 @@
 
         superModel.setVersion( STANDALONE_SUPERPOM_VERSION );
 
+        superModel = ModelUtils.cloneModel( superModel );
+
         List activeProfiles;
         if ( profileManager != null )
         {
@@ -239,12 +241,15 @@
         project.setManagedVersionMap(
             createManagedVersionMap( projectId, 
superModel.getDependencyManagement(), null ) );
 
+        getLogger().debug( "Activated the following profiles for standalone 
super-pom: " + activeProfiles );
         project.setActiveProfiles( activeProfiles );
 
+
         try
         {
-            project.setRemoteArtifactRepositories( 
mavenTools.buildArtifactRepositories( superModel.getRepositories() ) );
+            processProjectLogic( project, null, true );
 
+            project.setRemoteArtifactRepositories( 
mavenTools.buildArtifactRepositories( superModel.getRepositories() ) );
             project.setPluginArtifactRepositories( 
mavenTools.buildArtifactRepositories( superModel.getRepositories() ) );
         }
         catch ( InvalidRepositoryException e )
@@ -254,6 +259,15 @@
             throw new ProjectBuildingException( STANDALONE_SUPERPOM_GROUPID + 
":"
                                                 + 
STANDALONE_SUPERPOM_ARTIFACTID,
                                                 "Maven super-POM contains an 
invalid repository!",
+                                                e );
+        }
+        catch ( ModelInterpolationException e )
+        {
+            // we shouldn't be swallowing exceptions, no matter how unlikely.
+            // or, if we do, we should pay attention to the one coming from 
getSuperModel()...
+            throw new ProjectBuildingException( STANDALONE_SUPERPOM_GROUPID + 
":"
+                                                + 
STANDALONE_SUPERPOM_ARTIFACTID,
+                                                "Maven super-POM contains an 
invalid expressions!",
                                                 e );
         }
 

Modified: 
maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/MavenProject.java
URL: 
http://svn.apache.org/viewvc/maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/MavenProject.java?rev=599692&r1=599691&r2=599692&view=diff
==============================================================================
--- 
maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/MavenProject.java
 (original)
+++ 
maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/MavenProject.java
 Thu Nov 29 20:26:58 2007
@@ -1318,7 +1318,7 @@
      */
     public List getPluginArtifactRepositories()
     {
-        return pluginArtifactRepositories;
+        return getRemoteArtifactRepositories();
     }
 
     public ArtifactRepository getDistributionManagementArtifactRepository()
@@ -1330,7 +1330,7 @@
     public List getPluginRepositories()
     {
 //        return model.getPluginRepositories();
-        return Collections.EMPTY_LIST;
+        return model.getRepositories();
     }
 
     public void setActiveProfiles( List activeProfiles )

Modified: 
maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/ProjectBuildingException.java
URL: 
http://svn.apache.org/viewvc/maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/ProjectBuildingException.java?rev=599692&r1=599691&r2=599692&view=diff
==============================================================================
--- 
maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/ProjectBuildingException.java
 (original)
+++ 
maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/ProjectBuildingException.java
 Thu Nov 29 20:26:58 2007
@@ -272,6 +272,14 @@
         pomFile = new File ( pomLocation );
     }
 
+    public ProjectBuildingException( String projectId,
+                                     String message,
+                                     ModelInterpolationException cause )
+    {
+        super( message, cause );
+        this.projectId = projectId;
+    }
+
     public File getPomFile()
     {
         return pomFile;

Modified: 
maven/components/trunk/maven-project/src/test/java/org/apache/maven/project/DefaultMavenProjectBuilderTest.java
URL: 
http://svn.apache.org/viewvc/maven/components/trunk/maven-project/src/test/java/org/apache/maven/project/DefaultMavenProjectBuilderTest.java?rev=599692&r1=599691&r2=599692&view=diff
==============================================================================
--- 
maven/components/trunk/maven-project/src/test/java/org/apache/maven/project/DefaultMavenProjectBuilderTest.java
 (original)
+++ 
maven/components/trunk/maven-project/src/test/java/org/apache/maven/project/DefaultMavenProjectBuilderTest.java
 Thu Nov 29 20:26:58 2007
@@ -45,7 +45,7 @@
         super.setUp();
 
         projectBuilder = (DefaultMavenProjectBuilder) lookup( 
MavenProjectBuilder.ROLE );
-        
+
         localRepoDir = new File( System.getProperty( "java.io.tmpdir" ), 
"local-repo." + System.currentTimeMillis() );
         localRepoDir.mkdirs();
 
@@ -80,7 +80,7 @@
 
     /**
      * Check that we can build ok from the middle pom of a 
(parent,child,grandchild) heirarchy
-     * @throws Exception 
+     * @throws Exception
      */
     public void testBuildFromMiddlePom() throws Exception
     {
@@ -88,12 +88,12 @@
         File f2 = getTestFile( 
"src/test/resources/projects/grandchild-check/child/grandchild/pom.xml");
 
         getProject( f1 );
-        
+
         // it's the building of the grandchild project, having already cached 
the child project
         // (but not the parent project), which causes the problem.
         getProject( f2 );
     }
-    
+
     protected ArtifactRepository getLocalRepository()
         throws Exception
     {

Modified: 
maven/components/trunk/maven-project/src/test/java/org/apache/maven/project/SuperPomProjectBuilderTest.java
URL: 
http://svn.apache.org/viewvc/maven/components/trunk/maven-project/src/test/java/org/apache/maven/project/SuperPomProjectBuilderTest.java?rev=599692&r1=599691&r2=599692&view=diff
==============================================================================
--- 
maven/components/trunk/maven-project/src/test/java/org/apache/maven/project/SuperPomProjectBuilderTest.java
 (original)
+++ 
maven/components/trunk/maven-project/src/test/java/org/apache/maven/project/SuperPomProjectBuilderTest.java
 Thu Nov 29 20:26:58 2007
@@ -1,5 +1,16 @@
 package org.apache.maven.project;
 
+import org.apache.maven.artifact.repository.ArtifactRepository;
+import org.apache.maven.model.Profile;
+import org.apache.maven.model.Repository;
+import org.apache.maven.profiles.DefaultProfileManager;
+import org.apache.maven.profiles.ProfileManager;
+import org.apache.maven.profiles.activation.DefaultProfileActivationContext;
+
+import java.util.Iterator;
+import java.util.List;
+import java.util.Properties;
+
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
  * or more contributor license agreements.  See the NOTICE file
@@ -19,7 +30,6 @@
  * under the License.
  */
 
-
 public class SuperPomProjectBuilderTest
     extends AbstractMavenProjectTestCase
 {
@@ -31,12 +41,82 @@
         projectBuilder = (DefaultMavenProjectBuilder) lookup( 
MavenProjectBuilder.ROLE );
     }
 
-    public void testBuildFromMiddlePom() throws Exception
+    public void 
testStandaloneSuperPomContainsInjectedExternalProfileRepositories()
+        throws ProjectBuildingException
+    {
+        Profile profile = new Profile();
+        profile.setId( "test-profile" );
+
+        Repository repo = new Repository();
+        repo.setId( "test" );
+        repo.setUrl( "http://www.nowhere.com"; );
+
+        profile.addRepository( repo );
+
+        ProfileManager pm = new DefaultProfileManager( getContainer(), new 
DefaultProfileActivationContext( new Properties(), true ) );
+
+        pm.addProfile( profile );
+        pm.explicitlyActivate( profile.getId() );
+
+        MavenProject project = projectBuilder.buildStandaloneSuperProject( pm 
);
+
+        assertRepository( repo.getId(), project.getRepositories() );
+        assertRepository( repo.getId(), project.getPluginRepositories() );
+        assertArtifactRepository( repo.getId(), 
project.getRemoteArtifactRepositories() );
+        assertArtifactRepository( repo.getId(), 
project.getPluginArtifactRepositories() );
+    }
+
+    public void testStandaloneSuperPomContainsCentralRepo()
+        throws ProjectBuildingException
     {
         MavenProject project = projectBuilder.buildStandaloneSuperProject();
 
-        assertNotNull( project.getRemoteArtifactRepositories() );
-//
-//        assertNotNull( project.getPluginArtifactRepositories() );
+        assertRepository( "central", project.getRepositories() );
+        assertRepository( "central", project.getPluginRepositories() );
+        assertArtifactRepository( "central", 
project.getRemoteArtifactRepositories() );
+        assertArtifactRepository( "central", 
project.getPluginArtifactRepositories() );
     }
+
+    private void assertArtifactRepository( String id,
+                                           List repos )
+    {
+        assertNotNull( repos );
+        assertFalse( repos.isEmpty() );
+
+        boolean found = false;
+        for ( Iterator it = repos.iterator(); it.hasNext(); )
+        {
+            ArtifactRepository repo = (ArtifactRepository) it.next();
+
+            found = id.equals( repo.getId() );
+            if ( found )
+            {
+                break;
+            }
+        }
+
+        assertTrue( found );
+    }
+
+    private void assertRepository( String id,
+                                   List repos )
+    {
+        assertNotNull( repos );
+        assertFalse( repos.isEmpty() );
+
+        boolean found = false;
+        for ( Iterator it = repos.iterator(); it.hasNext(); )
+        {
+            Repository repo = (Repository) it.next();
+
+            found = id.equals( repo.getId() );
+            if ( found )
+            {
+                break;
+            }
+        }
+
+        assertTrue( found );
+    }
+
 }


Reply via email to