You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by jv...@apache.org on 2009/02/07 02:50:22 UTC

svn commit: r741813 - in /maven/components/branches/MNG-3932: ./ apache-maven/ maven-compat/src/main/java/org/apache/maven/artifact/ maven-compat/src/main/java/org/apache/maven/project/ maven-compat/src/main/java/org/apache/maven/project/inheritance/ m...

Author: jvanzyl
Date: Sat Feb  7 01:50:20 2009
New Revision: 741813

URL: http://svn.apache.org/viewvc?rev=741813&view=rev
Log:
o merging from trunk

Added:
    maven/components/branches/MNG-3932/maven-embedder/src/test/projects/invalid-goal/
      - copied from r741812, maven/components/trunk/maven-embedder/src/test/projects/invalid-goal/
    maven/components/branches/MNG-3932/maven-embedder/src/test/projects/invalid-goal/pom.xml
      - copied unchanged from r741812, maven/components/trunk/maven-embedder/src/test/projects/invalid-goal/pom.xml
    maven/components/branches/MNG-3932/maven-mercury/src/main/java/org/apache/maven/mercury/PomProcessor.java
      - copied unchanged from r741812, maven/components/trunk/maven-mercury/src/main/java/org/apache/maven/mercury/PomProcessor.java
    maven/components/branches/MNG-3932/maven-mercury/src/main/java/org/apache/maven/mercury/PomProcessorException.java
      - copied unchanged from r741812, maven/components/trunk/maven-mercury/src/main/java/org/apache/maven/mercury/PomProcessorException.java
    maven/components/branches/MNG-3932/maven-project/src/test/resources-project-builder/dependencies-with-different-versions/
      - copied from r741812, maven/components/trunk/maven-project/src/test/resources-project-builder/dependencies-with-different-versions/
    maven/components/branches/MNG-3932/maven-project/src/test/resources-project-builder/dependencies-with-different-versions/pom.xml
      - copied unchanged from r741812, maven/components/trunk/maven-project/src/test/resources-project-builder/dependencies-with-different-versions/pom.xml
    maven/components/branches/MNG-3932/maven-project/src/test/resources-project-builder/execution-configuration-join/
      - copied from r741812, maven/components/trunk/maven-project/src/test/resources-project-builder/execution-configuration-join/
    maven/components/branches/MNG-3932/maven-project/src/test/resources-project-builder/execution-configuration-join/pom.xml
      - copied unchanged from r741812, maven/components/trunk/maven-project/src/test/resources-project-builder/execution-configuration-join/pom.xml
    maven/components/branches/MNG-3932/maven-project/src/test/resources-project-builder/multiple-filters/
      - copied from r741812, maven/components/trunk/maven-project/src/test/resources-project-builder/multiple-filters/
    maven/components/branches/MNG-3932/maven-project/src/test/resources-project-builder/multiple-filters/pom.xml
      - copied unchanged from r741812, maven/components/trunk/maven-project/src/test/resources-project-builder/multiple-filters/pom.xml
    maven/components/branches/MNG-3932/maven-project/src/test/resources-project-builder/parent-interpolation/
      - copied from r741812, maven/components/trunk/maven-project/src/test/resources-project-builder/parent-interpolation/
    maven/components/branches/MNG-3932/maven-project/src/test/resources-project-builder/parent-interpolation/pom.xml
      - copied unchanged from r741812, maven/components/trunk/maven-project/src/test/resources-project-builder/parent-interpolation/pom.xml
    maven/components/branches/MNG-3932/maven-project/src/test/resources-project-builder/parent-interpolation/sub/
      - copied from r741812, maven/components/trunk/maven-project/src/test/resources-project-builder/parent-interpolation/sub/
    maven/components/branches/MNG-3932/maven-project/src/test/resources-project-builder/parent-interpolation/sub/pom.xml
      - copied unchanged from r741812, maven/components/trunk/maven-project/src/test/resources-project-builder/parent-interpolation/sub/pom.xml
    maven/components/branches/MNG-3932/maven-project/src/test/resources-project-builder/plugin-config-properties/
      - copied from r741812, maven/components/trunk/maven-project/src/test/resources-project-builder/plugin-config-properties/
    maven/components/branches/MNG-3932/maven-project/src/test/resources-project-builder/plugin-config-properties/pom.xml
      - copied unchanged from r741812, maven/components/trunk/maven-project/src/test/resources-project-builder/plugin-config-properties/pom.xml
    maven/components/branches/MNG-3932/maven-project/src/test/resources-project-builder/pluginmanagement-inherited/
      - copied from r741812, maven/components/trunk/maven-project/src/test/resources-project-builder/pluginmanagement-inherited/
    maven/components/branches/MNG-3932/maven-project/src/test/resources-project-builder/pluginmanagement-inherited/pom.xml
      - copied unchanged from r741812, maven/components/trunk/maven-project/src/test/resources-project-builder/pluginmanagement-inherited/pom.xml
    maven/components/branches/MNG-3932/maven-project/src/test/resources-project-builder/pluginmanagement-inherited/sub/
      - copied from r741812, maven/components/trunk/maven-project/src/test/resources-project-builder/pluginmanagement-inherited/sub/
    maven/components/branches/MNG-3932/maven-project/src/test/resources-project-builder/pluginmanagement-inherited/sub/pom.xml
      - copied unchanged from r741812, maven/components/trunk/maven-project/src/test/resources-project-builder/pluginmanagement-inherited/sub/pom.xml
Modified:
    maven/components/branches/MNG-3932/   (props changed)
    maven/components/branches/MNG-3932/apache-maven/   (props changed)
    maven/components/branches/MNG-3932/apache-maven/pom.xml
    maven/components/branches/MNG-3932/maven-compat/src/main/java/org/apache/maven/artifact/   (props changed)
    maven/components/branches/MNG-3932/maven-compat/src/main/java/org/apache/maven/project/ModelUtils.java   (props changed)
    maven/components/branches/MNG-3932/maven-compat/src/main/java/org/apache/maven/project/inheritance/   (props changed)
    maven/components/branches/MNG-3932/maven-compat/src/main/java/org/apache/maven/project/path/   (props changed)
    maven/components/branches/MNG-3932/maven-compat/src/main/mdo/   (props changed)
    maven/components/branches/MNG-3932/maven-compat/src/test/   (props changed)
    maven/components/branches/MNG-3932/maven-compat/src/test/java/org/apache/maven/project/path/   (props changed)
    maven/components/branches/MNG-3932/maven-core/src/main/java/org/apache/maven/lifecycle/binding/DefaultLifecycleBindingManager.java
    maven/components/branches/MNG-3932/maven-core/src/main/java/org/apache/maven/listeners/   (props changed)
    maven/components/branches/MNG-3932/maven-core/src/main/java/org/apache/maven/listeners/BuildExtensionListener.java   (props changed)
    maven/components/branches/MNG-3932/maven-embedder/pom.xml
    maven/components/branches/MNG-3932/maven-embedder/src/main/java/org/apache/maven/cli/CLIReportingUtils.java
    maven/components/branches/MNG-3932/maven-embedder/src/main/java/org/apache/maven/embedder/MavenEmbedder.java
    maven/components/branches/MNG-3932/maven-embedder/src/main/java/org/apache/maven/embedder/execution/SettingsAdapter.java   (props changed)
    maven/components/branches/MNG-3932/maven-embedder/src/test/java/org/apache/maven/embedder/MavenEmbedderTest.java
    maven/components/branches/MNG-3932/maven-mercury/pom.xml
    maven/components/branches/MNG-3932/maven-mercury/src/main/java/org/apache/maven/mercury/MavenDomainModel.java
    maven/components/branches/MNG-3932/maven-project-builder/pom.xml
    maven/components/branches/MNG-3932/maven-project-builder/src/main/java/org/apache/maven/project/builder/PomTransformer.java
    maven/components/branches/MNG-3932/maven-project-builder/src/main/java/org/apache/maven/project/builder/ProjectUri.java
    maven/components/branches/MNG-3932/maven-project-builder/src/main/java/org/apache/maven/project/builder/profile/ProfileContext.java
    maven/components/branches/MNG-3932/maven-project-builder/src/main/resources/   (props changed)
    maven/components/branches/MNG-3932/maven-project-builder/src/test/java/org/apache/maven/project/builder/EnforcerPomTest.java   (props changed)
    maven/components/branches/MNG-3932/maven-project-builder/src/test/java/org/apache/maven/project/builder/profile/ProfileContextTest.java
    maven/components/branches/MNG-3932/maven-project/pom.xml
    maven/components/branches/MNG-3932/maven-project/src/main/java/org/apache/maven/profiles/AlwaysOnActivation.java   (props changed)
    maven/components/branches/MNG-3932/maven-project/src/main/java/org/apache/maven/profiles/DefaultMavenProfilesBuilder.java   (props changed)
    maven/components/branches/MNG-3932/maven-project/src/main/java/org/apache/maven/profiles/MavenProfilesBuilder.java   (props changed)
    maven/components/branches/MNG-3932/maven-project/src/main/java/org/apache/maven/profiles/ProfilesConversionUtils.java   (props changed)
    maven/components/branches/MNG-3932/maven-project/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java
    maven/components/branches/MNG-3932/maven-project/src/main/java/org/apache/maven/project/MavenProject.java
    maven/components/branches/MNG-3932/maven-project/src/main/java/org/apache/maven/project/builder/DefaultPomArtifactResolver.java   (props changed)
    maven/components/branches/MNG-3932/maven-project/src/main/java/org/apache/maven/project/builder/Mixer.java
    maven/components/branches/MNG-3932/maven-project/src/main/java/org/apache/maven/project/builder/PomClassicDomainModel.java
    maven/components/branches/MNG-3932/maven-project/src/main/java/org/apache/maven/project/builder/ProjectBuilder.java
    maven/components/branches/MNG-3932/maven-project/src/main/java/org/apache/maven/project/builder/impl/DefaultProjectBuilder.java
    maven/components/branches/MNG-3932/maven-project/src/main/mdo/   (props changed)
    maven/components/branches/MNG-3932/maven-project/src/test/java/org/apache/maven/project/builder/PomConstructionTest.java
    maven/components/branches/MNG-3932/maven-project/src/test/java/org/apache/maven/project/harness/PomTestWrapper.java
    maven/components/branches/MNG-3932/pom.xml

Propchange: maven/components/branches/MNG-3932/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Sat Feb  7 01:50:20 2009
@@ -4,4 +4,4 @@
 /maven/components/branches/maven-2.1.x:739385
 /maven/components/branches/sisbell-plugin-manager:738973-739966
 /maven/components/sisbell-plugin-manager:738757-738972
-/maven/components/trunk:739772-740199
+/maven/components/trunk:739772-740199,740316-741812

Propchange: maven/components/branches/MNG-3932/apache-maven/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Sat Feb  7 01:50:20 2009
@@ -3,5 +3,5 @@
 /maven/components/branches/maven-2.0.x/maven-distribution:679206,708871,720042,726541,727548,727998,728264,728940,729060,729738,729785,730631
 /maven/components/branches/sisbell-plugin-manager/apache-maven:738973-739966
 /maven/components/sisbell-plugin-manager/apache-maven:738757-738972
-/maven/components/trunk/apache-maven:739772-740199
+/maven/components/trunk/apache-maven:739772-740199,740316-741812
 /maven/components/trunk/maven-distribution:688587-696625,696644-699681

Modified: maven/components/branches/MNG-3932/apache-maven/pom.xml
URL: http://svn.apache.org/viewvc/maven/components/branches/MNG-3932/apache-maven/pom.xml?rev=741813&r1=741812&r2=741813&view=diff
==============================================================================
--- maven/components/branches/MNG-3932/apache-maven/pom.xml (original)
+++ maven/components/branches/MNG-3932/apache-maven/pom.xml Sat Feb  7 01:50:20 2009
@@ -73,6 +73,14 @@
       <groupId>org.sonatype.mercury</groupId>
       <artifactId>mercury-mp3-cli</artifactId>
     </dependency>
+    <dependency>
+      <!--
+      FIXME: org.sonatype.mercury:mercury-mp3:1.0-alpha-1:pom depends on a snapshot version of mercury-event.
+      -->
+      <groupId>org.apache.maven.mercury</groupId>
+      <artifactId>mercury-event</artifactId>
+      <version>${mercuryVersion}</version>
+    </dependency>
   </dependencies>
   <build>
     <plugins>

Propchange: maven/components/branches/MNG-3932/maven-compat/src/main/java/org/apache/maven/artifact/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Sat Feb  7 01:50:20 2009
@@ -4,4 +4,4 @@
 /maven/components/branches/maven-2.0.x/maven-artifact-manager/src/main/java/org/apache/maven/artifact:679206
 /maven/components/branches/sisbell-plugin-manager/maven-compat/src/main/java/org/apache/maven/artifact:738973-739966
 /maven/components/sisbell-plugin-manager/maven-compat/src/main/java/org/apache/maven/artifact:738757-738972
-/maven/components/trunk/maven-compat/src/main/java/org/apache/maven/artifact:739772-740199
+/maven/components/trunk/maven-compat/src/main/java/org/apache/maven/artifact:739772-740199,740316-741812

Propchange: maven/components/branches/MNG-3932/maven-compat/src/main/java/org/apache/maven/project/ModelUtils.java
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Sat Feb  7 01:50:20 2009
@@ -3,4 +3,4 @@
 /maven/components/branches/maven-2.0.x/maven-project/src/main/java/org/apache/maven/project/ModelUtils.java:679206,720042
 /maven/components/branches/sisbell-plugin-manager/maven-compat/src/main/java/org/apache/maven/project/ModelUtils.java:738973-739966
 /maven/components/sisbell-plugin-manager/maven-compat/src/main/java/org/apache/maven/project/ModelUtils.java:738757-738972
-/maven/components/trunk/maven-compat/src/main/java/org/apache/maven/project/ModelUtils.java:739772-740199
+/maven/components/trunk/maven-compat/src/main/java/org/apache/maven/project/ModelUtils.java:739772-740199,740316-741812

Propchange: maven/components/branches/MNG-3932/maven-compat/src/main/java/org/apache/maven/project/inheritance/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Sat Feb  7 01:50:20 2009
@@ -1,2 +1,3 @@
 /maven/components/branches/sisbell-plugin-manager/maven-compat/src/main/java/org/apache/maven/project/inheritance:738973-739966
 /maven/components/sisbell-plugin-manager/maven-compat/src/main/java/org/apache/maven/project/inheritance:738757-738972
+/maven/components/trunk/maven-compat/src/main/java/org/apache/maven/project/inheritance:740316-741812

Propchange: maven/components/branches/MNG-3932/maven-compat/src/main/java/org/apache/maven/project/path/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Sat Feb  7 01:50:20 2009
@@ -3,5 +3,5 @@
 /maven/components/branches/maven-2.0.x/maven-project/src/main/java/org/apache/maven/project/path:679206,720042
 /maven/components/branches/sisbell-plugin-manager/maven-compat/src/main/java/org/apache/maven/project/path:738973-739966
 /maven/components/sisbell-plugin-manager/maven-compat/src/main/java/org/apache/maven/project/path:738757-738972
-/maven/components/trunk/maven-compat/src/main/java/org/apache/maven/project/path:739772-740199
+/maven/components/trunk/maven-compat/src/main/java/org/apache/maven/project/path:739772-740199,740316-741812
 /maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/path:688587-696625,696644-699681

Propchange: maven/components/branches/MNG-3932/maven-compat/src/main/mdo/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Sat Feb  7 01:50:20 2009
@@ -4,4 +4,4 @@
 /maven/components/branches/maven-2.0.x/maven-artifact-manager/src/main/mdo:679206
 /maven/components/branches/sisbell-plugin-manager/maven-compat/src/main/mdo:738973-739966
 /maven/components/sisbell-plugin-manager/maven-compat/src/main/mdo:738757-738972
-/maven/components/trunk/maven-compat/src/main/mdo:739772-740199
+/maven/components/trunk/maven-compat/src/main/mdo:739772-740199,740316-741812

Propchange: maven/components/branches/MNG-3932/maven-compat/src/test/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Sat Feb  7 01:50:20 2009
@@ -4,4 +4,4 @@
 /maven/components/branches/maven-2.0.x/maven-artifact-manager/src/test:679206
 /maven/components/branches/sisbell-plugin-manager/maven-compat/src/test:738973-739966
 /maven/components/sisbell-plugin-manager/maven-compat/src/test:738757-738972
-/maven/components/trunk/maven-compat/src/test:739772-740199
+/maven/components/trunk/maven-compat/src/test:739772-740199,740316-741812

Propchange: maven/components/branches/MNG-3932/maven-compat/src/test/java/org/apache/maven/project/path/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Sat Feb  7 01:50:20 2009
@@ -3,5 +3,5 @@
 /maven/components/branches/maven-2.0.x/maven-project/src/test/java/org/apache/maven/project/path:679206,720042
 /maven/components/branches/sisbell-plugin-manager/maven-compat/src/test/java/org/apache/maven/project/path:738973-739966
 /maven/components/sisbell-plugin-manager/maven-compat/src/test/java/org/apache/maven/project/path:738757-738972
-/maven/components/trunk/maven-compat/src/test/java/org/apache/maven/project/path:739772-740199
+/maven/components/trunk/maven-compat/src/test/java/org/apache/maven/project/path:739772-740199,740316-741812
 /maven/components/trunk/maven-project/src/test/java/org/apache/maven/project/path:688587-696625,696644-699681

Modified: maven/components/branches/MNG-3932/maven-core/src/main/java/org/apache/maven/lifecycle/binding/DefaultLifecycleBindingManager.java
URL: http://svn.apache.org/viewvc/maven/components/branches/MNG-3932/maven-core/src/main/java/org/apache/maven/lifecycle/binding/DefaultLifecycleBindingManager.java?rev=741813&r1=741812&r2=741813&view=diff
==============================================================================
--- maven/components/branches/MNG-3932/maven-core/src/main/java/org/apache/maven/lifecycle/binding/DefaultLifecycleBindingManager.java (original)
+++ maven/components/branches/MNG-3932/maven-core/src/main/java/org/apache/maven/lifecycle/binding/DefaultLifecycleBindingManager.java Sat Feb  7 01:50:20 2009
@@ -248,6 +248,12 @@
                                         }
 
                                         MojoDescriptor mojoDescriptor = pluginDescriptor.getMojo( goal );
+                                        if(mojoDescriptor == null)
+                                        {
+                                            throw new LifecycleSpecificationException( "Mojo Descriptor for goal is invalid: Plugin = "
+                                                    + plugin.getKey() + ", Plugin Descriptor = "
+                                                    + pluginDescriptor.getPluginLookupKey() +", Goal = " + goal);
+                                        }
                                         phase = mojoDescriptor.getPhase();
 
                                         logger.debug( "Phase from plugin descriptor: " + mojoDescriptor.getFullGoalName() + " is: " + phase );

Propchange: maven/components/branches/MNG-3932/maven-core/src/main/java/org/apache/maven/listeners/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Sat Feb  7 01:50:20 2009
@@ -3,5 +3,5 @@
 /maven/components/branches/maven-2.0.x/maven-project/src/main/java/org/apache/maven/project/builder/listeners:679206
 /maven/components/branches/sisbell-plugin-manager/maven-core/src/main/java/org/apache/maven/listeners:738973-739966
 /maven/components/sisbell-plugin-manager/maven-core/src/main/java/org/apache/maven/listeners:738757-738972
-/maven/components/trunk/maven-core/src/main/java/org/apache/maven/listeners:739772-740199
+/maven/components/trunk/maven-core/src/main/java/org/apache/maven/listeners:739772-740199,740316-741812
 /maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/builder/listeners:688587-696625,696644-699681

Propchange: maven/components/branches/MNG-3932/maven-core/src/main/java/org/apache/maven/listeners/BuildExtensionListener.java
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Sat Feb  7 01:50:20 2009
@@ -3,5 +3,5 @@
 /maven/components/branches/maven-2.0.x/maven-project/src/main/java/org/apache/maven/project/builder/listeners/PluginExtensionListener.java:679206
 /maven/components/branches/sisbell-plugin-manager/maven-core/src/main/java/org/apache/maven/listeners/BuildExtensionListener.java:738973-739966
 /maven/components/sisbell-plugin-manager/maven-core/src/main/java/org/apache/maven/listeners/BuildExtensionListener.java:738757-738972
-/maven/components/trunk/maven-core/src/main/java/org/apache/maven/listeners/BuildExtensionListener.java:739772-740199
+/maven/components/trunk/maven-core/src/main/java/org/apache/maven/listeners/BuildExtensionListener.java:739772-740199,740316-741812
 /maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/builder/listeners/PluginExtensionListener.java:688587-696625,696644-699681

Modified: maven/components/branches/MNG-3932/maven-embedder/pom.xml
URL: http://svn.apache.org/viewvc/maven/components/branches/MNG-3932/maven-embedder/pom.xml?rev=741813&r1=741812&r2=741813&view=diff
==============================================================================
--- maven/components/branches/MNG-3932/maven-embedder/pom.xml (original)
+++ maven/components/branches/MNG-3932/maven-embedder/pom.xml Sat Feb  7 01:50:20 2009
@@ -59,6 +59,10 @@
       <groupId>easymock</groupId>
       <artifactId>easymock</artifactId>
     </dependency>
+    <dependency>
+    	<groupId>commons-jxpath</groupId>
+    	<artifactId>commons-jxpath</artifactId>
+    </dependency>      
   </dependencies>
   <build>
     <resources>

Modified: maven/components/branches/MNG-3932/maven-embedder/src/main/java/org/apache/maven/cli/CLIReportingUtils.java
URL: http://svn.apache.org/viewvc/maven/components/branches/MNG-3932/maven-embedder/src/main/java/org/apache/maven/cli/CLIReportingUtils.java?rev=741813&r1=741812&r2=741813&view=diff
==============================================================================
--- maven/components/branches/MNG-3932/maven-embedder/src/main/java/org/apache/maven/cli/CLIReportingUtils.java (original)
+++ maven/components/branches/MNG-3932/maven-embedder/src/main/java/org/apache/maven/cli/CLIReportingUtils.java Sat Feb  7 01:50:20 2009
@@ -264,18 +264,20 @@
         handleGenericException( e, showStackTraces, writer );
 
         MavenProject project = e.getProject();
-
-        writer.write( NEWLINE );
-        writer.write( "While building project with id: " );
-        writer.write( project.getId() );
-        writer.write( NEWLINE );
-        if ( project.getFile() != null )
+        if(project != null)
         {
-            writer.write( "Project File: " );
-            writer.write( project.getFile().getAbsolutePath() );
+            writer.write( NEWLINE );
+            writer.write( "While building project with id: " );
+            writer.write( project.getId() );
+            writer.write( NEWLINE );
+            if ( project.getFile() != null )
+            {
+                writer.write( "Project File: " );
+                writer.write( project.getFile().getAbsolutePath() );
+            }
+            writer.write( NEWLINE );
         }
-        writer.write( NEWLINE );
-
+        
         return true;
     }
 

Modified: maven/components/branches/MNG-3932/maven-embedder/src/main/java/org/apache/maven/embedder/MavenEmbedder.java
URL: http://svn.apache.org/viewvc/maven/components/branches/MNG-3932/maven-embedder/src/main/java/org/apache/maven/embedder/MavenEmbedder.java?rev=741813&r1=741812&r2=741813&view=diff
==============================================================================
--- maven/components/branches/MNG-3932/maven-embedder/src/main/java/org/apache/maven/embedder/MavenEmbedder.java (original)
+++ maven/components/branches/MNG-3932/maven-embedder/src/main/java/org/apache/maven/embedder/MavenEmbedder.java Sat Feb  7 01:50:20 2009
@@ -91,6 +91,7 @@
 import org.codehaus.plexus.component.repository.exception.ComponentRepositoryException;
 import org.codehaus.plexus.configuration.PlexusConfigurationException;
 import org.codehaus.plexus.configuration.PlexusConfiguration;
+import org.codehaus.plexus.configuration.xml.XmlPlexusConfiguration;
 import org.codehaus.plexus.logging.LoggerManager;
 import org.codehaus.plexus.util.IOUtil;
 import org.codehaus.plexus.util.ReaderFactory;
@@ -250,7 +251,7 @@
     }
 
     public PlexusConfiguration getPluginConfiguration(String pluginId, String mojoId, Model model) throws Exception
-    {        
+    {
         try {
             return mixer.mixPluginAndReturnConfig(pluginRepository.findPluginById(pluginId, mojoId), model);
         } catch (PlexusConfigurationException e) {
@@ -258,6 +259,24 @@
         }
     }
 
+    public Object getPluginConfigurationAsDom(String pluginId, String mojoId, Model model) throws Exception
+    {
+        try {
+            return mixer.mixPluginAndReturnConfigAsDom(pluginRepository.findPluginById(pluginId, mojoId), model);
+        } catch (PlexusConfigurationException e) {
+            throw new IOException(e.getMessage());
+        }
+    }
+
+    public Object getPluginConfigurationAsDom(String pluginId, String mojoId, Model model, String xpathExpression) throws Exception
+    {
+        try {
+            return mixer.mixPluginAndReturnConfigAsDom(pluginRepository.findPluginById(pluginId, mojoId), model, xpathExpression);
+        } catch (PlexusConfigurationException e) {
+            throw new IOException(e.getMessage());
+        }
+    }    
+
     // ----------------------------------------------------------------------
     // Settings
     // ----------------------------------------------------------------------

Propchange: maven/components/branches/MNG-3932/maven-embedder/src/main/java/org/apache/maven/embedder/execution/SettingsAdapter.java
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Sat Feb  7 01:50:20 2009
@@ -3,4 +3,4 @@
 /maven/components/branches/maven-2.0.x/maven-embedder/src/main/java/org/apache/maven/embedder/user/SettingsAdapter.java:679206
 /maven/components/branches/sisbell-plugin-manager/maven-embedder/src/main/java/org/apache/maven/embedder/execution/SettingsAdapter.java:738973-739966
 /maven/components/sisbell-plugin-manager/maven-embedder/src/main/java/org/apache/maven/embedder/execution/SettingsAdapter.java:738757-738972
-/maven/components/trunk/maven-embedder/src/main/java/org/apache/maven/embedder/execution/SettingsAdapter.java:739772-740199
+/maven/components/trunk/maven-embedder/src/main/java/org/apache/maven/embedder/execution/SettingsAdapter.java:739772-740199,740316-741812

Modified: maven/components/branches/MNG-3932/maven-embedder/src/test/java/org/apache/maven/embedder/MavenEmbedderTest.java
URL: http://svn.apache.org/viewvc/maven/components/branches/MNG-3932/maven-embedder/src/test/java/org/apache/maven/embedder/MavenEmbedderTest.java?rev=741813&r1=741812&r2=741813&view=diff
==============================================================================
--- maven/components/branches/MNG-3932/maven-embedder/src/test/java/org/apache/maven/embedder/MavenEmbedderTest.java (original)
+++ maven/components/branches/MNG-3932/maven-embedder/src/test/java/org/apache/maven/embedder/MavenEmbedderTest.java Sat Feb  7 01:50:20 2009
@@ -33,6 +33,7 @@
 import org.apache.maven.settings.SettingsConfigurationException;
 import org.apache.maven.settings.io.xpp3.SettingsXpp3Reader;
 import org.apache.maven.settings.io.xpp3.SettingsXpp3Writer;
+import org.apache.maven.lifecycle.LifecycleSpecificationException;
 import org.codehaus.plexus.util.FileUtils;
 import org.codehaus.plexus.util.IOUtil;
 import org.codehaus.plexus.util.ReaderFactory;
@@ -57,6 +58,7 @@
 
     protected MavenEmbedder maven;
 
+
     protected void setUp()
         throws Exception
     {
@@ -134,6 +136,30 @@
         assertTrue( jar.exists() );
     }
 
+    /*MNG-3919*/
+    public void testWithInvalidGoal()
+        throws Exception
+    {
+        File testDirectory = new File( basedir, "src/test/projects/invalid-goal" );
+
+        File targetDirectory = new File( basedir, "target/projects/invalid-goal" );
+
+        FileUtils.copyDirectoryStructure( testDirectory, targetDirectory );
+
+        MavenExecutionRequest request = new DefaultMavenExecutionRequest().setBaseDirectory( targetDirectory )
+            .setShowErrors( true ).setGoals( Arrays.asList( new String[]{"validate"} ) );
+
+        MavenExecutionResult result = maven.execute( request );
+        List exceptions = result.getExceptions();
+        assertEquals("Incorrect number of exceptions", 1, exceptions.size());
+
+        Iterator it = exceptions.iterator();
+        if( (it.next() instanceof NullPointerException))
+        {
+            fail("Null Pointer on Exception");
+        }
+    }
+
     public void testExecutionUsingAPomFile()
         throws Exception
     {

Modified: maven/components/branches/MNG-3932/maven-mercury/pom.xml
URL: http://svn.apache.org/viewvc/maven/components/branches/MNG-3932/maven-mercury/pom.xml?rev=741813&r1=741812&r2=741813&view=diff
==============================================================================
--- maven/components/branches/MNG-3932/maven-mercury/pom.xml (original)
+++ maven/components/branches/MNG-3932/maven-mercury/pom.xml Sat Feb  7 01:50:20 2009
@@ -41,6 +41,11 @@
       <groupId>org.codehaus.plexus</groupId>
       <artifactId>plexus-component-annotations</artifactId>
     </dependency>
+      
+    <dependency>
+      <groupId>org.sonatype.spice</groupId>
+      <artifactId>model-builder</artifactId>
+    </dependency>
 
     <!-- test dependencies  -->
     <dependency>

Modified: maven/components/branches/MNG-3932/maven-mercury/src/main/java/org/apache/maven/mercury/MavenDomainModel.java
URL: http://svn.apache.org/viewvc/maven/components/branches/MNG-3932/maven-mercury/src/main/java/org/apache/maven/mercury/MavenDomainModel.java?rev=741813&r1=741812&r2=741813&view=diff
==============================================================================
--- maven/components/branches/MNG-3932/maven-mercury/src/main/java/org/apache/maven/mercury/MavenDomainModel.java (original)
+++ maven/components/branches/MNG-3932/maven-mercury/src/main/java/org/apache/maven/mercury/MavenDomainModel.java Sat Feb  7 01:50:20 2009
@@ -125,7 +125,7 @@
     {
         ModelDataSource dataSource = new DefaultModelDataSource( modelProperties, PomTransformer.MODEL_CONTAINER_FACTORIES );
 
-        return new ProfileContext( dataSource, properties ).getActiveProfiles();
+        return new ProfileContext( dataSource, null, properties ).getActiveProfiles();
     }
 
     public ArtifactBasicMetadata getParentMetadata()

Modified: maven/components/branches/MNG-3932/maven-project-builder/pom.xml
URL: http://svn.apache.org/viewvc/maven/components/branches/MNG-3932/maven-project-builder/pom.xml?rev=741813&r1=741812&r2=741813&view=diff
==============================================================================
--- maven/components/branches/MNG-3932/maven-project-builder/pom.xml (original)
+++ maven/components/branches/MNG-3932/maven-project-builder/pom.xml Sat Feb  7 01:50:20 2009
@@ -33,4 +33,6 @@
       <scope>test</scope>
     </dependency>
   </dependencies>
+
+    
 </project>

Modified: maven/components/branches/MNG-3932/maven-project-builder/src/main/java/org/apache/maven/project/builder/PomTransformer.java
URL: http://svn.apache.org/viewvc/maven/components/branches/MNG-3932/maven-project-builder/src/main/java/org/apache/maven/project/builder/PomTransformer.java?rev=741813&r1=741812&r2=741813&view=diff
==============================================================================
--- maven/components/branches/MNG-3932/maven-project-builder/src/main/java/org/apache/maven/project/builder/PomTransformer.java (original)
+++ maven/components/branches/MNG-3932/maven-project-builder/src/main/java/org/apache/maven/project/builder/PomTransformer.java Sat Feb  7 01:50:20 2009
@@ -559,7 +559,6 @@
             }
 
             tmp.removeAll(replace);
-
                 
             //Missing Version Rule
             if ( getPropertyFor( ProjectUri.version, tmp ) == null )
@@ -742,6 +741,27 @@
             modelProperties.removeAll( clearedProperties );
         }
 
+        //Rules processed on collapsed pom
+
+        //Rule: Remove duplicate filters
+        List<ModelProperty> removedProperties = new ArrayList<ModelProperty>();
+        List<String> filters = new ArrayList<String>();
+        for(ModelProperty mp : modelProperties)
+        {
+            if(mp.getUri().equals(ProjectUri.Build.Filters.filter))
+            {
+                if(filters.contains(mp.getResolvedValue()))
+                {
+                    removedProperties.add(mp);
+                }
+                else
+                {
+                    filters.add(mp.getResolvedValue());   
+                }
+            }
+        }
+        modelProperties.removeAll(removedProperties);
+
         //Rule: Build plugin config overrides reporting plugin config
         ModelDataSource source = new DefaultModelDataSource( modelProperties, PomTransformer.MODEL_CONTAINER_FACTORIES );
 

Modified: maven/components/branches/MNG-3932/maven-project-builder/src/main/java/org/apache/maven/project/builder/ProjectUri.java
URL: http://svn.apache.org/viewvc/maven/components/branches/MNG-3932/maven-project-builder/src/main/java/org/apache/maven/project/builder/ProjectUri.java?rev=741813&r1=741812&r2=741813&view=diff
==============================================================================
--- maven/components/branches/MNG-3932/maven-project-builder/src/main/java/org/apache/maven/project/builder/ProjectUri.java (original)
+++ maven/components/branches/MNG-3932/maven-project-builder/src/main/java/org/apache/maven/project/builder/ProjectUri.java Sat Feb  7 01:50:20 2009
@@ -350,7 +350,7 @@
 
         public static class Filters
         {
-            public static String xUri = "http://apache.org/maven/project/build/filters#set";
+            public static String xUri = "http://apache.org/maven/project/build/filters#collection";
 
             public static String filter = xUri + "/filter";
         }

Modified: maven/components/branches/MNG-3932/maven-project-builder/src/main/java/org/apache/maven/project/builder/profile/ProfileContext.java
URL: http://svn.apache.org/viewvc/maven/components/branches/MNG-3932/maven-project-builder/src/main/java/org/apache/maven/project/builder/profile/ProfileContext.java?rev=741813&r1=741812&r2=741813&view=diff
==============================================================================
--- maven/components/branches/MNG-3932/maven-project-builder/src/main/java/org/apache/maven/project/builder/profile/ProfileContext.java (original)
+++ maven/components/branches/MNG-3932/maven-project-builder/src/main/java/org/apache/maven/project/builder/profile/ProfileContext.java Sat Feb  7 01:50:20 2009
@@ -1,9 +1,6 @@
 package org.apache.maven.project.builder.profile;
 
-import org.apache.maven.shared.model.ModelContainer;
-import org.apache.maven.shared.model.ModelDataSource;
-import org.apache.maven.shared.model.DataSourceException;
-import org.apache.maven.shared.model.InterpolatorProperty;
+import org.apache.maven.shared.model.*;
 import org.apache.maven.project.builder.ProjectUri;
 
 import java.util.*;
@@ -15,13 +12,17 @@
 
     private List<InterpolatorProperty> properties;
 
+    private Collection<String> activeProfileIds;
+
     List<ActiveProfileMatcher> matchers  = Collections.unmodifiableList( Arrays.asList(new ByDefaultMatcher(),
             new FileMatcher(), new JdkMatcher(), new OperatingSystemMatcher(), new PropertyMatcher()
          ) );
 
-    public ProfileContext(ModelDataSource modelDataSource, List<InterpolatorProperty> properties) {
+    public ProfileContext(ModelDataSource modelDataSource, Collection<String> activeProfileIds,
+                          List<InterpolatorProperty> properties) {
         this.modelDataSource = modelDataSource;
         this.properties = new ArrayList<InterpolatorProperty>(properties);
+        this.activeProfileIds = (activeProfileIds != null) ? activeProfileIds : new ArrayList<String>();
     }
 
     public Collection<ModelContainer> getActiveProfiles() throws DataSourceException {
@@ -32,10 +33,29 @@
             for(ActiveProfileMatcher matcher : matchers) {
                 if(matcher.isMatch(mc, properties)) {
                     matchedContainers.add(mc);
+                    continue;
                 }
             }
+
+            String profileId = getProfileId(mc.getProperties());
+            if(profileId != null && activeProfileIds.contains(profileId))
+            {
+                matchedContainers.add(mc);
+            }
         }
 
         return matchedContainers;       
     }
+
+    private String getProfileId(List<ModelProperty> modelProperties)
+    {
+        for(ModelProperty mp : modelProperties)
+        {
+            if(mp.getUri().equals(ProfileUri.Profiles.Profile.id))
+            {
+                return mp.getResolvedValue();
+            }
+        }
+        return null;
+    }
 }

Propchange: maven/components/branches/MNG-3932/maven-project-builder/src/main/resources/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Sat Feb  7 01:50:20 2009
@@ -3,4 +3,4 @@
 /maven/components/branches/maven-2.0.x/maven-project/src/main/resources:679206,720042
 /maven/components/branches/sisbell-plugin-manager/maven-project-builder/src/main/resources:738973-739966
 /maven/components/sisbell-plugin-manager/maven-project-builder/src/main/resources:738757-738972
-/maven/components/trunk/maven-project-builder/src/main/resources:739772-740199
+/maven/components/trunk/maven-project-builder/src/main/resources:739772-740199,740316-741812

Propchange: maven/components/branches/MNG-3932/maven-project-builder/src/test/java/org/apache/maven/project/builder/EnforcerPomTest.java
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Sat Feb  7 01:50:20 2009
@@ -4,4 +4,4 @@
 /maven/components/branches/sisbell-plugin-manager/maven-project-builder/src/test/java/org/apache/maven/project/builder/EnforcerPomTest.java:738973-739966
 /maven/components/sisbell-plugin-manager/maven-project-builder/src/test/java/org/apache/maven/project/builder/EnforcerPomTest.java:738757-738972
 /maven/components/trunk/maven-project-builder/src/test/java/EnforcerPomTest.java:688587-696625,696644-699681
-/maven/components/trunk/maven-project-builder/src/test/java/org/apache/maven/project/builder/EnforcerPomTest.java:739772-740199
+/maven/components/trunk/maven-project-builder/src/test/java/org/apache/maven/project/builder/EnforcerPomTest.java:739772-740199,740316-741812

Modified: maven/components/branches/MNG-3932/maven-project-builder/src/test/java/org/apache/maven/project/builder/profile/ProfileContextTest.java
URL: http://svn.apache.org/viewvc/maven/components/branches/MNG-3932/maven-project-builder/src/test/java/org/apache/maven/project/builder/profile/ProfileContextTest.java?rev=741813&r1=741812&r2=741813&view=diff
==============================================================================
--- maven/components/branches/MNG-3932/maven-project-builder/src/test/java/org/apache/maven/project/builder/profile/ProfileContextTest.java (original)
+++ maven/components/branches/MNG-3932/maven-project-builder/src/test/java/org/apache/maven/project/builder/profile/ProfileContextTest.java Sat Feb  7 01:50:20 2009
@@ -35,7 +35,27 @@
         List<InterpolatorProperty> interpolatorProperties = new ArrayList<InterpolatorProperty>();
         interpolatorProperties.add(new InterpolatorProperty( "${foo}", "bar"));
 
-        ProfileContext ctx = new ProfileContext(dataSource, interpolatorProperties);
+        ProfileContext ctx = new ProfileContext(dataSource, null, interpolatorProperties);
+
+        Collection<ModelContainer> profiles = ctx.getActiveProfiles();
+
+        assertTrue(profiles.size() == 1);
+
+    }
+
+    @org.junit.Test
+    public void getActiveProfilesById() throws DataSourceException {
+        List<ModelProperty> modelProperties = new ArrayList<ModelProperty>();
+        modelProperties.add(new ModelProperty(ProjectUri.xUri, null));
+        modelProperties.add(new ModelProperty(ProjectUri.Profiles.xUri, null));
+        modelProperties.add(new ModelProperty(ProjectUri.Profiles.Profile.xUri, null));
+        modelProperties.add(new ModelProperty(ProjectUri.Profiles.Profile.id , "test"));
+
+        DefaultModelDataSource dataSource = new DefaultModelDataSource(modelProperties, PomTransformer.MODEL_CONTAINER_FACTORIES );
+
+        List<InterpolatorProperty> interpolatorProperties = new ArrayList<InterpolatorProperty>();
+
+        ProfileContext ctx = new ProfileContext(dataSource, Arrays.asList("test"), interpolatorProperties);
 
         Collection<ModelContainer> profiles = ctx.getActiveProfiles();
 

Modified: maven/components/branches/MNG-3932/maven-project/pom.xml
URL: http://svn.apache.org/viewvc/maven/components/branches/MNG-3932/maven-project/pom.xml?rev=741813&r1=741812&r2=741813&view=diff
==============================================================================
--- maven/components/branches/MNG-3932/maven-project/pom.xml (original)
+++ maven/components/branches/MNG-3932/maven-project/pom.xml Sat Feb  7 01:50:20 2009
@@ -69,10 +69,12 @@
       <artifactId>maven-project-builder</artifactId>
     </dependency>
     <dependency>
+      <groupId>org.apache.maven</groupId>
+      <artifactId>maven-mercury</artifactId>
+    </dependency>
+    <dependency>
     	<groupId>commons-jxpath</groupId>
     	<artifactId>commons-jxpath</artifactId>
-    	<version>1.3</version>
-    	<scope>test</scope>
     </dependency>
   </dependencies>
   <build>

Propchange: maven/components/branches/MNG-3932/maven-project/src/main/java/org/apache/maven/profiles/AlwaysOnActivation.java
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Sat Feb  7 01:50:20 2009
@@ -3,4 +3,4 @@
 /maven/components/branches/maven-2.0.x/maven-profile/src/main/java/org/apache/maven/profiles/AlwaysOnActivation.java:679206
 /maven/components/branches/sisbell-plugin-manager/maven-project/src/main/java/org/apache/maven/profiles/AlwaysOnActivation.java:738973-739966
 /maven/components/sisbell-plugin-manager/maven-project/src/main/java/org/apache/maven/profiles/AlwaysOnActivation.java:738757-738972
-/maven/components/trunk/maven-project/src/main/java/org/apache/maven/profiles/AlwaysOnActivation.java:739772-740199
+/maven/components/trunk/maven-project/src/main/java/org/apache/maven/profiles/AlwaysOnActivation.java:739772-740199,740316-741812

Propchange: maven/components/branches/MNG-3932/maven-project/src/main/java/org/apache/maven/profiles/DefaultMavenProfilesBuilder.java
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Sat Feb  7 01:50:20 2009
@@ -3,4 +3,4 @@
 /maven/components/branches/maven-2.0.x/maven-profile/src/main/java/org/apache/maven/profiles/DefaultMavenProfilesBuilder.java:679206
 /maven/components/branches/sisbell-plugin-manager/maven-project/src/main/java/org/apache/maven/profiles/DefaultMavenProfilesBuilder.java:738973-739966
 /maven/components/sisbell-plugin-manager/maven-project/src/main/java/org/apache/maven/profiles/DefaultMavenProfilesBuilder.java:738757-738972
-/maven/components/trunk/maven-project/src/main/java/org/apache/maven/profiles/DefaultMavenProfilesBuilder.java:739772-740199
+/maven/components/trunk/maven-project/src/main/java/org/apache/maven/profiles/DefaultMavenProfilesBuilder.java:739772-740199,740316-741812

Propchange: maven/components/branches/MNG-3932/maven-project/src/main/java/org/apache/maven/profiles/MavenProfilesBuilder.java
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Sat Feb  7 01:50:20 2009
@@ -3,4 +3,4 @@
 /maven/components/branches/maven-2.0.x/maven-profile/src/main/java/org/apache/maven/profiles/MavenProfilesBuilder.java:679206
 /maven/components/branches/sisbell-plugin-manager/maven-project/src/main/java/org/apache/maven/profiles/MavenProfilesBuilder.java:738973-739966
 /maven/components/sisbell-plugin-manager/maven-project/src/main/java/org/apache/maven/profiles/MavenProfilesBuilder.java:738757-738972
-/maven/components/trunk/maven-project/src/main/java/org/apache/maven/profiles/MavenProfilesBuilder.java:739772-740199
+/maven/components/trunk/maven-project/src/main/java/org/apache/maven/profiles/MavenProfilesBuilder.java:739772-740199,740316-741812

Propchange: maven/components/branches/MNG-3932/maven-project/src/main/java/org/apache/maven/profiles/ProfilesConversionUtils.java
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Sat Feb  7 01:50:20 2009
@@ -3,4 +3,4 @@
 /maven/components/branches/maven-2.0.x/maven-profile/src/main/java/org/apache/maven/profiles/ProfilesConversionUtils.java:679206
 /maven/components/branches/sisbell-plugin-manager/maven-project/src/main/java/org/apache/maven/profiles/ProfilesConversionUtils.java:738973-739966
 /maven/components/sisbell-plugin-manager/maven-project/src/main/java/org/apache/maven/profiles/ProfilesConversionUtils.java:738757-738972
-/maven/components/trunk/maven-project/src/main/java/org/apache/maven/profiles/ProfilesConversionUtils.java:739772-740199
+/maven/components/trunk/maven-project/src/main/java/org/apache/maven/profiles/ProfilesConversionUtils.java:739772-740199,740316-741812

Modified: maven/components/branches/MNG-3932/maven-project/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java
URL: http://svn.apache.org/viewvc/maven/components/branches/MNG-3932/maven-project/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java?rev=741813&r1=741812&r2=741813&view=diff
==============================================================================
--- maven/components/branches/MNG-3932/maven-project/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java (original)
+++ maven/components/branches/MNG-3932/maven-project/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java Sat Feb  7 01:50:20 2009
@@ -119,7 +119,17 @@
     
     public MavenProject build( File projectDescriptor, ProjectBuilderConfiguration config )
         throws ProjectBuildingException
-    {  
+    {
+        if(projectDescriptor == null)
+        {
+            throw new IllegalArgumentException("projectDescriptor: null");
+        }
+
+        if(config == null)
+        {
+            throw new IllegalArgumentException("config: null");
+        }
+        
        List<ArtifactRepository> artifactRepositories = new ArrayList<ArtifactRepository>( );
        artifactRepositories.addAll( mavenTools.buildArtifactRepositories( projectBuilder.getSuperModel() ) );
        if(config.getRemoteRepositories() != null) 
@@ -398,7 +408,8 @@
                                                               null, 
                                                               interpolatorProperties, 
                                                               resolver,
-                                                              config );
+                                                              config,
+                                                              this);
         }
         catch ( IOException e )
         {
@@ -449,7 +460,7 @@
     private static void setBuildOutputDirectoryOnParent( MavenProject project )
     {
         MavenProject parent = project.getParent();
-        if ( parent != null )
+        if ( parent != null && parent.getFile() != null && parent.getModel().getBuild() != null)
         {
             parent.getModel().getBuild().setDirectory( parent.getFile().getAbsolutePath() );
             setBuildOutputDirectoryOnParent( parent );

Modified: maven/components/branches/MNG-3932/maven-project/src/main/java/org/apache/maven/project/MavenProject.java
URL: http://svn.apache.org/viewvc/maven/components/branches/MNG-3932/maven-project/src/main/java/org/apache/maven/project/MavenProject.java?rev=741813&r1=741812&r2=741813&view=diff
==============================================================================
--- maven/components/branches/MNG-3932/maven-project/src/main/java/org/apache/maven/project/MavenProject.java (original)
+++ maven/components/branches/MNG-3932/maven-project/src/main/java/org/apache/maven/project/MavenProject.java Sat Feb  7 01:50:20 2009
@@ -194,12 +194,41 @@
 
     public MavenProject( Model model )
     {
+        if(model == null)
+        {
+            throw new IllegalArgumentException("model: null");
+        }
         setModel( model );
     }
 
+    /**
+     * Constructor
+     *
+     * @param model - may not be null
+     * @param artifactFactory - may not be null
+     * @param mavenTools - may not be null
+     * @param mavenProjectBuilder
+     * @param projectBuilderConfiguration
+     * @throws InvalidRepositoryException
+     */
     public MavenProject( Model model, ArtifactFactory artifactFactory, MavenTools mavenTools, MavenProjectBuilder mavenProjectBuilder, ProjectBuilderConfiguration projectBuilderConfiguration )
         throws InvalidRepositoryException
     {
+        if(model == null)
+        {
+            throw new IllegalArgumentException("model: null");
+        }
+
+        if(artifactFactory == null)
+        {
+            throw new IllegalArgumentException("artifactFactory: null");
+        }
+
+        if(mavenTools == null)
+        {
+            throw new IllegalArgumentException("mavenTools: null");
+        }
+
         setModel( model );
         this.mavenProjectBuilder = mavenProjectBuilder;
         this.projectBuilderConfiguration = projectBuilderConfiguration;
@@ -330,7 +359,17 @@
     public MavenProject getParent()
     {
         if ( parent == null )
-        {
+        {   /*
+            if(mavenProjectBuilder == null)
+            {
+                throw new IllegalArgumentException("mavenProjectBuilder: null");
+            }
+
+            if(projectBuilderConfiguration == null)
+            {
+                throw new IllegalArgumentException("projectBuilderConfiguration: null");
+            }
+            */
             if ( parentFile != null )
             {
                 try

Propchange: maven/components/branches/MNG-3932/maven-project/src/main/java/org/apache/maven/project/builder/DefaultPomArtifactResolver.java
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Sat Feb  7 01:50:20 2009
@@ -3,4 +3,4 @@
 /maven/components/branches/maven-2.0.x/maven-project/src/main/java/org/apache/maven/project/builder/PomArtifactResolver.java:679206,720042
 /maven/components/branches/sisbell-plugin-manager/maven-project/src/main/java/org/apache/maven/project/builder/DefaultPomArtifactResolver.java:738973-739966
 /maven/components/sisbell-plugin-manager/maven-project/src/main/java/org/apache/maven/project/builder/DefaultPomArtifactResolver.java:738757-738972
-/maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/builder/DefaultPomArtifactResolver.java:739772-740199
+/maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/builder/DefaultPomArtifactResolver.java:739772-740199,740316-741812

Modified: maven/components/branches/MNG-3932/maven-project/src/main/java/org/apache/maven/project/builder/Mixer.java
URL: http://svn.apache.org/viewvc/maven/components/branches/MNG-3932/maven-project/src/main/java/org/apache/maven/project/builder/Mixer.java?rev=741813&r1=741812&r2=741813&view=diff
==============================================================================
--- maven/components/branches/MNG-3932/maven-project/src/main/java/org/apache/maven/project/builder/Mixer.java (original)
+++ maven/components/branches/MNG-3932/maven-project/src/main/java/org/apache/maven/project/builder/Mixer.java Sat Feb  7 01:50:20 2009
@@ -4,6 +4,7 @@
 import org.apache.maven.model.Plugin;
 import org.apache.maven.model.Model;
 import org.codehaus.plexus.configuration.PlexusConfiguration;
+import org.codehaus.plexus.util.xml.pull.XmlPullParserException;
 
 import java.io.IOException;
 
@@ -14,4 +15,10 @@
     Model mixPlugin(Plugin plugin, Model model) throws IOException;
 
     PlexusConfiguration mixPluginAndReturnConfig(Plugin plugin, Model model) throws IOException;
+
+    Object mixPluginAndReturnConfigAsDom(Plugin plugin, Model model) throws IOException,
+        XmlPullParserException;
+
+    Object mixPluginAndReturnConfigAsDom(Plugin plugin, Model model, String xpathExpression) throws IOException,
+        XmlPullParserException;    
 }

Modified: maven/components/branches/MNG-3932/maven-project/src/main/java/org/apache/maven/project/builder/PomClassicDomainModel.java
URL: http://svn.apache.org/viewvc/maven/components/branches/MNG-3932/maven-project/src/main/java/org/apache/maven/project/builder/PomClassicDomainModel.java?rev=741813&r1=741812&r2=741813&view=diff
==============================================================================
--- maven/components/branches/MNG-3932/maven-project/src/main/java/org/apache/maven/project/builder/PomClassicDomainModel.java (original)
+++ maven/components/branches/MNG-3932/maven-project/src/main/java/org/apache/maven/project/builder/PomClassicDomainModel.java Sat Feb  7 01:50:20 2009
@@ -77,6 +77,10 @@
     
     private int lineageCount;
 
+    public PomClassicDomainModel( List<ModelProperty> modelProperties)
+    {
+        this.modelProperties = modelProperties;
+    }
     /**
      * Constructor
      *

Modified: maven/components/branches/MNG-3932/maven-project/src/main/java/org/apache/maven/project/builder/ProjectBuilder.java
URL: http://svn.apache.org/viewvc/maven/components/branches/MNG-3932/maven-project/src/main/java/org/apache/maven/project/builder/ProjectBuilder.java?rev=741813&r1=741812&r2=741813&view=diff
==============================================================================
--- maven/components/branches/MNG-3932/maven-project/src/main/java/org/apache/maven/project/builder/ProjectBuilder.java (original)
+++ maven/components/branches/MNG-3932/maven-project/src/main/java/org/apache/maven/project/builder/ProjectBuilder.java Sat Feb  7 01:50:20 2009
@@ -27,6 +27,7 @@
 import org.apache.maven.model.Model;
 import org.apache.maven.project.MavenProject;
 import org.apache.maven.project.ProjectBuilderConfiguration;
+import org.apache.maven.project.MavenProjectBuilder;
 import org.apache.maven.shared.model.InterpolatorProperty;
 
 /**
@@ -54,7 +55,8 @@
                                      List<Model> mixins, 
                                      Collection<InterpolatorProperty> interpolatorProperties,
                                      PomArtifactResolver resolver, 
-                                     ProjectBuilderConfiguration projectBuilderConfiguration )
+                                     ProjectBuilderConfiguration projectBuilderConfiguration,
+                                     MavenProjectBuilder mavenProjectBuilder)
         throws IOException;
 
     Model getSuperModel();

Modified: maven/components/branches/MNG-3932/maven-project/src/main/java/org/apache/maven/project/builder/impl/DefaultProjectBuilder.java
URL: http://svn.apache.org/viewvc/maven/components/branches/MNG-3932/maven-project/src/main/java/org/apache/maven/project/builder/impl/DefaultProjectBuilder.java?rev=741813&r1=741812&r2=741813&view=diff
==============================================================================
--- maven/components/branches/MNG-3932/maven-project/src/main/java/org/apache/maven/project/builder/impl/DefaultProjectBuilder.java (original)
+++ maven/components/branches/MNG-3932/maven-project/src/main/java/org/apache/maven/project/builder/impl/DefaultProjectBuilder.java Sat Feb  7 01:50:20 2009
@@ -22,12 +22,19 @@
 import java.io.File;
 import java.io.IOException;
 import java.io.Reader;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.List;
+import java.io.StringReader;
+import java.util.*;
 
 import org.apache.maven.MavenTools;
+import org.apache.maven.profiles.activation.ProfileActivationContext;
+import org.apache.maven.mercury.PomProcessor;
+import org.apache.maven.mercury.PomProcessorException;
+import org.apache.maven.mercury.MavenDomainModel;
+import org.apache.maven.mercury.MavenDomainModelFactory;
+import org.apache.maven.mercury.builder.api.MetadataReader;
+import org.apache.maven.mercury.builder.api.MetadataReaderException;
+import org.apache.maven.mercury.builder.api.DependencyProcessorException;
+import org.apache.maven.mercury.artifact.ArtifactBasicMetadata;
 import org.apache.maven.artifact.Artifact;
 import org.apache.maven.artifact.InvalidRepositoryException;
 import org.apache.maven.artifact.factory.ArtifactFactory;
@@ -37,7 +44,11 @@
 import org.apache.maven.model.io.xpp3.MavenXpp3Reader;
 import org.apache.maven.project.MavenProject;
 import org.apache.maven.project.ProjectBuilderConfiguration;
+import org.apache.maven.project.MavenProjectBuilder;
 import org.apache.maven.project.builder.*;
+import org.apache.maven.project.builder.ProjectUri;
+import org.apache.maven.project.builder.profile.ProfileContext;
+import org.apache.maven.project.builder.profile.ProfileUri;
 import org.apache.maven.shared.model.*;
 import org.apache.maven.shared.model.impl.DefaultModelDataSource;
 import org.codehaus.plexus.component.annotations.Component;
@@ -46,39 +57,121 @@
 import org.codehaus.plexus.logging.Logger;
 import org.codehaus.plexus.util.IOUtil;
 import org.codehaus.plexus.util.ReaderFactory;
+import org.codehaus.plexus.util.xml.Xpp3DomBuilder;
+import org.codehaus.plexus.util.xml.pull.XmlPullParserException;
 import org.codehaus.plexus.configuration.PlexusConfiguration;
 import org.codehaus.plexus.configuration.xml.XmlPlexusConfiguration;
 import org.apache.maven.shared.model.ModelMarshaller;
+import org.apache.commons.jxpath.JXPathContext;
 
 /**
  * Default implementation of the project builder.
  */
 @Component(role = ProjectBuilder.class)
 public class DefaultProjectBuilder
-    implements ProjectBuilder, Mixer, LogEnabled
+    implements ProjectBuilder, Mixer, PomProcessor, LogEnabled
 {
     @Requirement
     private ArtifactFactory artifactFactory;
     
     @Requirement
     private MavenTools mavenTools;
-       
+
     @Requirement(role = ModelEventListener.class)
     List<ModelEventListener> listeners;
 
     private Logger logger;
 
+    public List<ModelProperty> getRawPom(ArtifactBasicMetadata bmd, MetadataReader mdReader, Map system, Map user)
+            throws MetadataReaderException, PomProcessorException {
+        if ( bmd == null )
+        {
+            throw new IllegalArgumentException( "bmd: null" );
+        }
+
+        if ( mdReader == null )
+        {
+            throw new IllegalArgumentException( "mdReader: null" );
+        }
+
+        List<InterpolatorProperty> interpolatorProperties = new ArrayList<InterpolatorProperty>();
+        interpolatorProperties.add( new InterpolatorProperty( "${mavenVersion}", "3.0-SNAPSHOT",
+                                                              PomInterpolatorTag.EXECUTION_PROPERTIES.name() ) );
+
+        if ( system != null )
+        {
+            interpolatorProperties.addAll(
+                InterpolatorProperty.toInterpolatorProperties( system, PomInterpolatorTag.EXECUTION_PROPERTIES.name() ) );
+        }
+        if ( user != null )
+        {
+            interpolatorProperties.addAll(
+                InterpolatorProperty.toInterpolatorProperties( user, PomInterpolatorTag.USER_PROPERTIES.name() ) );
+        }
+
+       List<DomainModel> domainModels = new ArrayList<DomainModel>();
+        try
+        {
+            // MavenDomainModel superPom =
+            //     new MavenDomainModel(MavenDependencyProcessor.class.getResourceAsStream( "pom-4.0.0.xml" ));
+            // domainModels.add(superPom);
+
+            byte[] superBytes = mdReader.readMetadata( bmd );
+
+            if ( superBytes == null || superBytes.length < 1 )
+                throw new PomProcessorException( "cannot read metadata for " + bmd.getGAV() );
+
+            MavenDomainModel domainModel = new MavenDomainModel( superBytes );
+            domainModels.add( domainModel );
+
+            Collection<ModelContainer> activeProfiles = domainModel.getActiveProfileContainers( interpolatorProperties );
+
+            for ( ModelContainer mc : activeProfiles )
+            {
+                domainModels.add( new MavenDomainModel( transformProfiles( mc.getProperties() ) ) );
+            }
+
+            List<DomainModel> parentModels = getParentsOfDomainModel( domainModel, mdReader );
+
+            if( parentModels == null )
+                throw new PomProcessorException( "cannot read parent for " + bmd.getGAV() );
+
+            domainModels.addAll( parentModels );
+        }
+        catch ( IOException e )
+        {
+            throw new MetadataReaderException( "Failed to create domain model. Message = " + e.getMessage() );
+        }
+
+        PomTransformer transformer = new PomTransformer( new MavenDomainModelFactory() );
+        ModelTransformerContext ctx =
+            new ModelTransformerContext( PomTransformer.MODEL_CONTAINER_INFOS );
+
+        try
+        {
+            MavenDomainModel model =
+                ( (MavenDomainModel) ctx.transform( domainModels, transformer, transformer, null,
+                                                    interpolatorProperties, null ) );
+            return model.getModelProperties();
+        }
+        catch ( IOException e )
+        {
+            throw new MetadataReaderException( "Unable to transform model" );
+        }
+    }
+
     public PomClassicDomainModel buildModel( File pom, 
                                              Collection<InterpolatorProperty> interpolatorProperties,
                                              PomArtifactResolver resolver )
         throws IOException    
     {
-        return buildModel( pom, null, interpolatorProperties, resolver );        
+        return buildModel( pom, null, interpolatorProperties, null, resolver );
     }    
     
-    public PomClassicDomainModel buildModel( File pom, 
+    private PomClassicDomainModel buildModel( File pom,
                                              List<Model> mixins,
                                              Collection<InterpolatorProperty> interpolatorProperties,
+                                             Collection<String> activeProfileIds,
                                              PomArtifactResolver resolver ) 
         throws IOException    
     {
@@ -103,6 +196,11 @@
             Collections.reverse( mixins );
         }
 
+        if(activeProfileIds == null)
+        {
+            activeProfileIds = new ArrayList<String>();
+        }
+
         List<InterpolatorProperty> properties;
         if ( interpolatorProperties == null )
         {
@@ -116,6 +214,11 @@
         PomClassicDomainModel domainModel = new PomClassicDomainModel( pom );
         domainModel.setProjectDirectory( pom.getParentFile() );
 
+        ProfileContext profileContext = new ProfileContext(new DefaultModelDataSource(domainModel.getModelProperties(),
+                PomTransformer.MODEL_CONTAINER_FACTORIES), activeProfileIds, properties);
+        Collection<ModelContainer> profileContainers = profileContext.getActiveProfiles();
+        //get mixin
+
         List<DomainModel> domainModels = new ArrayList<DomainModel>();
         domainModels.add( domainModel );
 
@@ -126,11 +229,11 @@
             List<DomainModel> mavenParents;
             if ( isParentLocal( domainModel.getModel().getParent(), pom.getParentFile() ) )
             {
-                mavenParents = getDomainModelParentsFromLocalPath( domainModel, resolver, pom.getParentFile() );
+                mavenParents = getDomainModelParentsFromLocalPath( domainModel, resolver, pom.getParentFile(), properties, activeProfileIds );
             }
             else
             {
-                mavenParents = getDomainModelParentsFromRepository( domainModel, resolver );
+                mavenParents = getDomainModelParentsFromRepository( domainModel, resolver, properties, activeProfileIds );
             }
             
             if ( mavenParents.size() > 0 )
@@ -170,12 +273,21 @@
                                             List<Model> mixins,
                                             Collection<InterpolatorProperty> interpolatorProperties,
                                             PomArtifactResolver resolver, 
-                                            ProjectBuilderConfiguration projectBuilderConfiguration )
+                                            ProjectBuilderConfiguration projectBuilderConfiguration,
+                                            MavenProjectBuilder mavenProjectBuilder)
         throws IOException
     {
+
+       List<String> profileIds = (projectBuilderConfiguration != null &&
+                projectBuilderConfiguration.getGlobalProfileManager() != null &&
+                projectBuilderConfiguration.getGlobalProfileManager().getProfileActivationContext() != null) ?
+               projectBuilderConfiguration.getGlobalProfileManager().getProfileActivationContext().getExplicitlyActiveProfileIds() : new ArrayList<String>();
+
+
         PomClassicDomainModel domainModel = buildModel( pom, 
                                                         mixins, 
-                                                        interpolatorProperties, 
+                                                        interpolatorProperties,
+                                                        profileIds,
                                                         resolver ); 
         
         try
@@ -183,7 +295,7 @@
             MavenProject mavenProject = new MavenProject( domainModel.getModel(), 
                                                           artifactFactory, 
                                                           mavenTools, 
-                                                          null, 
+                                                          mavenProjectBuilder, 
                                                           projectBuilderConfiguration );
             
             mavenProject.setParentFile( domainModel.getParentFile() );
@@ -223,7 +335,9 @@
     }
 
     private List<DomainModel> getDomainModelParentsFromRepository( PomClassicDomainModel domainModel,
-                                                                   PomArtifactResolver artifactResolver )
+                                                                   PomArtifactResolver artifactResolver,
+                                                                   List<InterpolatorProperty> properties,
+                                                                   Collection<String> activeProfileIds)
         throws IOException
     {
         List<DomainModel> domainModels = new ArrayList<DomainModel>();
@@ -249,7 +363,29 @@
         }
 
         domainModels.add( parentDomainModel );
-        domainModels.addAll( getDomainModelParentsFromRepository( parentDomainModel, artifactResolver ) );
+
+         ProfileContext profileContext = new ProfileContext(new DefaultModelDataSource(parentDomainModel.getModelProperties(),
+                PomTransformer.MODEL_CONTAINER_FACTORIES), activeProfileIds, properties);
+        Collection<ModelContainer> profileContainers = profileContext.getActiveProfiles();
+
+        for(ModelContainer mc : profileContainers)
+        {
+            List<ModelProperty> transformed = new ArrayList<ModelProperty>();
+            transformed.add(new ModelProperty(ProjectUri.xUri, null));
+            for(ModelProperty mp : mc.getProperties())
+            {
+                if(mp.getUri().startsWith(ProjectUri.Profiles.Profile.xUri) && !mp.getUri().equals(ProjectUri.Profiles.Profile.id)
+                        && !mp.getUri().startsWith(ProjectUri.Profiles.Profile.Activation.xUri) )
+                {
+                    transformed.add(new ModelProperty(mp.getUri().replace(ProjectUri.Profiles.Profile.xUri, ProjectUri.xUri),
+                            mp.getResolvedValue()));
+                }
+            }
+
+            domainModels.add(new PomClassicDomainModel(transformed));
+        }        
+
+        domainModels.addAll( getDomainModelParentsFromRepository( parentDomainModel, artifactResolver, properties, activeProfileIds ) );
         return domainModels;
     }
 
@@ -264,7 +400,9 @@
      */
     private List<DomainModel> getDomainModelParentsFromLocalPath( PomClassicDomainModel domainModel,
                                                                   PomArtifactResolver artifactResolver,
-                                                                  File projectDirectory )
+                                                                  File projectDirectory,
+                                                                  List<InterpolatorProperty> properties,
+                                                                  Collection<String> activeProfileIds)
         throws IOException
     {
         List<DomainModel> domainModels = new ArrayList<DomainModel>();
@@ -291,6 +429,25 @@
 
         PomClassicDomainModel parentDomainModel = new PomClassicDomainModel( parentFile );
         parentDomainModel.setProjectDirectory( parentFile.getParentFile() );
+         ProfileContext profileContext = new ProfileContext(new DefaultModelDataSource(parentDomainModel.getModelProperties(),
+                PomTransformer.MODEL_CONTAINER_FACTORIES), activeProfileIds, properties);
+        Collection<ModelContainer> profileContainers = profileContext.getActiveProfiles();
+
+        for(ModelContainer mc : profileContainers)
+        {
+            List<ModelProperty> transformed = new ArrayList<ModelProperty>();
+            transformed.add(new ModelProperty(ProjectUri.xUri, null));
+            for(ModelProperty mp : mc.getProperties())
+            {
+                if(mp.getUri().startsWith(ProjectUri.Profiles.Profile.xUri) && !mp.getUri().equals(ProjectUri.Profiles.Profile.id)
+                    && !mp.getUri().startsWith(ProjectUri.Profiles.Profile.Activation.xUri))
+                {
+                    transformed.add(new ModelProperty(mp.getUri().replace(ProjectUri.Profiles.Profile.xUri, ProjectUri.xUri),
+                            mp.getResolvedValue()));
+                }
+            }
+            domainModels.add(new PomClassicDomainModel(transformed));
+        }
 
         if ( !parentDomainModel.matchesParent( domainModel.getModel().getParent() ) )
         {
@@ -298,7 +455,7 @@
                     + parentDomainModel.getId() + ", Child ID = " + domainModel.getId() + ", Expected Parent ID = "
                     + domainModel.getModel().getParent().getId() );
             
-            List<DomainModel> parentDomainModels = getDomainModelParentsFromRepository( domainModel, artifactResolver );
+            List<DomainModel> parentDomainModels = getDomainModelParentsFromRepository( domainModel, artifactResolver, properties, activeProfileIds );
             
             if(parentDomainModels.size() == 0)
             {
@@ -316,11 +473,11 @@
             if ( isParentLocal( parentDomainModel.getModel().getParent(), parentFile.getParentFile() ) )
             {
                 domainModels.addAll( getDomainModelParentsFromLocalPath( parentDomainModel, artifactResolver,
-                                                                         parentFile.getParentFile() ) );
+                                                                         parentFile.getParentFile(), properties, activeProfileIds ) );
             }
             else
             {
-                domainModels.addAll( getDomainModelParentsFromRepository( parentDomainModel, artifactResolver ) );
+                domainModels.addAll( getDomainModelParentsFromRepository( parentDomainModel, artifactResolver, properties, activeProfileIds ) );
             }
         }
 
@@ -385,13 +542,36 @@
                                                                                                 null,
                                                                                                 listeners ) );
         return transformedDomainModel.getModel();
-      //  List<ModelProperty> pluginProperties = ModelMarshaller.marshallXmlToModelProperties(
-      //          (new PluginMixin(plugin)).getInputStream(), ProjectUri.Build.Plugins.xUri, null);
         
     }
 
     public PlexusConfiguration mixPluginAndReturnConfig(Plugin plugin, Model model) throws IOException
     {
+        List<ModelProperty> mps = mixPluginAndReturnConfigAsProperties(plugin, model);
+        return !mps.isEmpty() ?
+            new XmlPlexusConfiguration(ModelMarshaller.unmarshalModelPropertiesToXml(mps, ProjectUri.Build.Plugins.Plugin.xUri)) : null;
+    }
+
+   public Object mixPluginAndReturnConfigAsDom(Plugin plugin, Model model) throws IOException, XmlPullParserException
+   {
+       List<ModelProperty> mps = mixPluginAndReturnConfigAsProperties(plugin, model);
+       return  !mps.isEmpty() ? Xpp3DomBuilder.build(
+               new StringReader(ModelMarshaller.unmarshalModelPropertiesToXml(mps, ProjectUri.Build.Plugins.Plugin.xUri) ) ) : null;
+   }
+
+   public Object mixPluginAndReturnConfigAsDom(Plugin plugin, Model model, String xpathExpression) throws IOException,
+           XmlPullParserException
+   {
+       Object dom = mixPluginAndReturnConfigAsDom(plugin, model);
+       if(dom == null)
+       {
+           return null;
+       }
+       return JXPathContext.newContext( dom ).getValue(xpathExpression);
+   }
+
+   private List<ModelProperty> mixPluginAndReturnConfigAsProperties(Plugin plugin, Model model) throws IOException
+   {
         List<DomainModel> domainModels = new ArrayList<DomainModel>();
         domainModels.add( new PluginMixin(plugin) );
         domainModels.add( new PomClassicDomainModel(model) );
@@ -420,12 +600,12 @@
                         config.add(mp);
                     }
                 }
-                return new XmlPlexusConfiguration(ModelMarshaller.unmarshalModelPropertiesToXml(config, ProjectUri.Build.Plugins.Plugin.xUri));
+                return config;
 
             }
         }
-        return null;       
-    }
+        return new ArrayList<ModelProperty>();
+   }
 
     private static boolean matchesIdOfPlugin(ModelContainer mc, Plugin plugin)
     {   
@@ -446,4 +626,39 @@
         }
         return "";
     }
+
+    private static List<DomainModel> getParentsOfDomainModel( MavenDomainModel domainModel, MetadataReader mdReader )
+        throws IOException, MetadataReaderException, PomProcessorException
+    {
+        List<DomainModel> domainModels = new ArrayList<DomainModel>();
+        if ( domainModel.hasParent() )
+        {
+            byte[] b = mdReader.readMetadata( domainModel.getParentMetadata() );
+
+            if ( b == null || b.length < 1 )
+                throw new PomProcessorException( "cannot read metadata for " + domainModel.getParentMetadata() );
+
+            MavenDomainModel parentDomainModel =
+                new MavenDomainModel( b );
+            domainModels.add( parentDomainModel );
+            domainModels.addAll( getParentsOfDomainModel( parentDomainModel, mdReader ) );
+        }
+        return domainModels;
+    }
+
+    private static List<ModelProperty> transformProfiles( List<ModelProperty> modelProperties )
+    {
+        List<ModelProperty> properties = new ArrayList<ModelProperty>();
+        for ( ModelProperty mp : modelProperties )
+        {
+            if ( mp.getUri().startsWith( ProjectUri.Profiles.Profile.xUri )
+                && !mp.getUri().equals( ProjectUri.Profiles.Profile.id )
+                && !mp.getUri().startsWith( ProjectUri.Profiles.Profile.Activation.xUri ) )
+            {
+                properties.add( new ModelProperty( mp.getUri().replace( ProjectUri.Profiles.Profile.xUri,
+                                                                        ProjectUri.xUri ), mp.getResolvedValue() ) );
+            }
+        }
+        return properties;
+    }
 }

Propchange: maven/components/branches/MNG-3932/maven-project/src/main/mdo/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Sat Feb  7 01:50:20 2009
@@ -3,4 +3,4 @@
 /maven/components/branches/maven-2.0.x/maven-profile/src/main/mdo:679206
 /maven/components/branches/sisbell-plugin-manager/maven-project/src/main/mdo:738973-739966
 /maven/components/sisbell-plugin-manager/maven-project/src/main/mdo:738757-738972
-/maven/components/trunk/maven-project/src/main/mdo:739772-740199
+/maven/components/trunk/maven-project/src/main/mdo:739772-740199,740316-741812

Modified: maven/components/branches/MNG-3932/maven-project/src/test/java/org/apache/maven/project/builder/PomConstructionTest.java
URL: http://svn.apache.org/viewvc/maven/components/branches/MNG-3932/maven-project/src/test/java/org/apache/maven/project/builder/PomConstructionTest.java?rev=741813&r1=741812&r2=741813&view=diff
==============================================================================
--- maven/components/branches/MNG-3932/maven-project/src/test/java/org/apache/maven/project/builder/PomConstructionTest.java (original)
+++ maven/components/branches/MNG-3932/maven-project/src/test/java/org/apache/maven/project/builder/PomConstructionTest.java Sat Feb  7 01:50:20 2009
@@ -25,13 +25,23 @@
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.Arrays;
 
 import org.apache.maven.MavenTools;
+import org.apache.maven.profiles.DefaultProfileManager;
+import org.apache.maven.profiles.activation.DefaultProfileActivationContext;
+import org.apache.maven.profiles.activation.ProfileActivationContext;
+import org.apache.maven.shared.model.InterpolatorProperty;
 import org.apache.maven.model.Model;
 import org.apache.maven.model.Plugin;
 import org.apache.maven.model.io.xpp3.MavenXpp3Reader;
 import org.apache.maven.artifact.Artifact;
+import org.apache.maven.artifact.repository.DefaultArtifactRepository;
+import org.apache.maven.artifact.repository.layout.DefaultRepositoryLayout;
 import org.apache.maven.project.harness.PomTestWrapper;
+import org.apache.maven.project.MavenProjectBuilder;
+import org.apache.maven.project.ProjectBuilderConfiguration;
+import org.apache.maven.project.DefaultProjectBuilderConfiguration;
 import org.codehaus.plexus.PlexusTestCase;
 import org.codehaus.plexus.configuration.PlexusConfiguration;
 import org.codehaus.plexus.configuration.xml.XmlPlexusConfiguration;
@@ -49,6 +59,8 @@
 
     private ProjectBuilder projectBuilder;
 
+    private MavenProjectBuilder mavenProjectBuilder;
+
     private Mixer mixer;
 
     private MavenTools mavenTools;
@@ -64,6 +76,7 @@
     {
         testDirectory = new File( getBasedir(), BASE_POM_DIR );
         testMixinDirectory = new File( getBasedir(), BASE_MIXIN_DIR );
+        mavenProjectBuilder = lookup( MavenProjectBuilder.class );
         projectBuilder = lookup( ProjectBuilder.class );
         mixer = (Mixer) projectBuilder;
         mavenTools = lookup( MavenTools.class );
@@ -79,6 +92,22 @@
         };
     }
 
+    /*MNG-3995*/
+    public void testExecutionConfigurationJoin()
+       throws Exception
+    {
+        PomTestWrapper pom = buildPom( "execution-configuration-join" );
+        assertEquals( 2, ( (List<?>) pom.getValue( "build/plugins[1]/executions[1]/configuration[1]/fileset[1]" ) ).size() );
+    }
+
+    /*MNG-3803*/
+    public void testPluginConfigProperties()
+       throws Exception
+    {
+        PomTestWrapper pom = buildPom( "plugin-config-properties" );
+        assertEquals( "my.property", pom.getValue( "build/plugins[1]/configuration[1]/systemProperties[1]/property[1]/name" ) );
+    }
+
     public void testPluginMergeSimple()
         throws Exception
     {
@@ -128,6 +157,15 @@
 
     }
 
+    /*MNG- 4008*/
+    public void testMultipleFilters()
+        throws Exception
+    {
+        PomTestWrapper pom = buildPom( "multiple-filters" );
+        assertEquals( 4, ( (List<?>) pom.getValue( "build/filters" ) ).size() );
+
+    }
+
     /*MNG-4005 - not implemented
     public void testDependenciesDifferentVersions()
         throws Exception
@@ -136,6 +174,31 @@
 
     }
     */
+      /*MNG-3803*/
+    public void testDependenciesWithDifferentVersions()
+       throws Exception
+    {
+        PomTestWrapper pom = buildPom( "dependencies-with-different-versions" );
+        assertEquals( 1, ( (List<?>) pom.getValue( "dependencies" ) ).size() );
+    }
+
+    /* MNG-3567*/
+    public void testParentInterpolation()
+        throws Exception
+    {
+        PomTestWrapper pom = buildPomFromMavenProject( "parent-interpolation/sub" );
+        pom = new PomTestWrapper(pom.getMavenProject().getParent());
+        assertEquals( "1.3.0-SNAPSHOT", pom.getValue( "build/plugins[1]/version" ) );
+    }
+
+
+    /* MNG-3567*/
+    public void testPluginManagementInherited()
+        throws Exception
+    {
+        PomTestWrapper pom = buildPom( "pluginmanagement-inherited/sub" );
+        assertEquals( "1.0-alpha-21", pom.getValue( "build/plugins[1]/version" ) );
+    }
 
     public void testPluginOrder()
         throws Exception
@@ -722,11 +785,12 @@
         assertPathWithNormalizedFileSeparators( pom.getValue( "reporting/outputDirectory" ) );
     }
 
-    /* FIXME: cf. MNG-4008
+    /* MNG-4008 */
     public void testMergedFilterOrder()
         throws Exception
     {
         PomTestWrapper pom = buildPom( "merged-filter-order/sub" );
+
         System.out.println(pom.getValue( "build/filters" ));
         assertEquals( 7, ( (List<?>) pom.getValue( "build/filters" ) ).size() );
         assertTrue( pom.getValue( "build/filters[1]" ).toString().endsWith( "child-a.properties" ) );
@@ -737,7 +801,7 @@
         assertTrue( pom.getValue( "build/filters[6]" ).toString().endsWith( "parent-b.properties" ) );
         assertTrue( pom.getValue( "build/filters[7]" ).toString().endsWith( "parent-d.properties" ) );
     }
-    //*/
+
 
     private void assertPathWithNormalizedFileSeparators( Object value )
     {
@@ -760,6 +824,23 @@
         return new PomTestWrapper( pomFile, projectBuilder.buildModel( pomFile, null, pomArtifactResolver ) );
     }
 
+    private PomTestWrapper buildPomFromMavenProject( String pomPath )
+        throws IOException
+    {
+        File pomFile = new File( testDirectory , pomPath );
+        if ( pomFile.isDirectory() )
+        {
+            pomFile = new File( pomFile, "pom.xml" );
+        }
+        ProjectBuilderConfiguration config = new DefaultProjectBuilderConfiguration();
+        config.setLocalRepository(new DefaultArtifactRepository("default", "", new DefaultRepositoryLayout()));
+        ProfileActivationContext pCtx = new DefaultProfileActivationContext(null, true);
+        pCtx.setExplicitlyActiveProfileIds(Arrays.asList("release"));
+        config.setGlobalProfileManager(new DefaultProfileManager(this.getContainer(), pCtx));
+        return new PomTestWrapper( pomFile, projectBuilder.buildFromLocalPath( pomFile, null, null, pomArtifactResolver,
+                config, mavenProjectBuilder ) );
+    }
+
     private Model buildMixin( String mixinPath )
         throws IOException, XmlPullParserException
     {

Modified: maven/components/branches/MNG-3932/maven-project/src/test/java/org/apache/maven/project/harness/PomTestWrapper.java
URL: http://svn.apache.org/viewvc/maven/components/branches/MNG-3932/maven-project/src/test/java/org/apache/maven/project/harness/PomTestWrapper.java?rev=741813&r1=741812&r2=741813&view=diff
==============================================================================
--- maven/components/branches/MNG-3932/maven-project/src/test/java/org/apache/maven/project/harness/PomTestWrapper.java (original)
+++ maven/components/branches/MNG-3932/maven-project/src/test/java/org/apache/maven/project/harness/PomTestWrapper.java Sat Feb  7 01:50:20 2009
@@ -30,6 +30,7 @@
 import org.apache.commons.jxpath.ri.JXPathContextReferenceImpl;
 import org.apache.maven.model.Model;
 import org.apache.maven.project.builder.PomClassicDomainModel;
+import org.apache.maven.project.MavenProject;
 import org.apache.maven.shared.model.ModelProperty;
 
 public class PomTestWrapper
@@ -41,6 +42,8 @@
 
     private JXPathContext context;
 
+    private MavenProject mavenProject;
+
     static
     {
         JXPathContextReferenceImpl.addNodePointerFactory( new Xpp3DomPointerFactory() );
@@ -64,6 +67,29 @@
         context = JXPathContext.newContext( domainModel.getModel() );
     }
 
+    public PomTestWrapper( File pomFile, MavenProject mavenProject )
+        throws IOException
+    {
+        if ( mavenProject == null )
+        {
+            throw new IllegalArgumentException( "mavenProject: null" );
+        }
+        this.mavenProject = mavenProject;
+        this.pomFile = pomFile;
+        context = JXPathContext.newContext( mavenProject.getModel() );
+    }
+
+    public PomTestWrapper( MavenProject mavenProject )
+        throws IOException
+    {
+        if ( mavenProject == null )
+        {
+            throw new IllegalArgumentException( "mavenProject: null" );
+        }
+        this.mavenProject = mavenProject;
+        context = JXPathContext.newContext( mavenProject.getModel() );
+    }
+
     public PomTestWrapper( File file )
         throws IOException
     {
@@ -88,6 +114,11 @@
         context = JXPathContext.newContext( domainModel.getModel() );
     }
 
+    public MavenProject getMavenProject()
+    {
+        return mavenProject;
+    }
+
     public PomClassicDomainModel getDomainModel()
     {
         return this.domainModel;

Modified: maven/components/branches/MNG-3932/pom.xml
URL: http://svn.apache.org/viewvc/maven/components/branches/MNG-3932/pom.xml?rev=741813&r1=741812&r2=741813&view=diff
==============================================================================
--- maven/components/branches/MNG-3932/pom.xml (original)
+++ maven/components/branches/MNG-3932/pom.xml Sat Feb  7 01:50:20 2009
@@ -59,6 +59,7 @@
     <mercuryMp3Version>1.0-alpha-1</mercuryMp3Version>
     <woodstoxVersion>3.2.6</woodstoxVersion>
     <modelloVersion>1.0-alpha-22</modelloVersion>
+    <jxpathVersion>1.3</jxpathVersion>
   </properties>  
   <issueManagement>
     <system>jira</system>
@@ -250,6 +251,11 @@
       <!--start-->
       <dependency>
         <groupId>org.apache.maven</groupId>
+        <artifactId>maven-mercury</artifactId>
+        <version>${project.version}</version>
+      </dependency>
+      <dependency>
+        <groupId>org.apache.maven</groupId>
         <artifactId>maven-lifecycle</artifactId>
         <version>${project.version}</version>
       </dependency>
@@ -400,6 +406,11 @@
           </exclusion>
         </exclusions>
       </dependency>
+      <dependency>
+        <groupId>commons-jxpath</groupId>
+        <artifactId>commons-jxpath</artifactId>
+        <version>${jxpathVersion}</version>
+      </dependency>
 
       <!--  Mercury -->
       <dependency>
@@ -412,11 +423,11 @@
         <artifactId>mercury-external</artifactId>
         <version>${mercuryVersion}</version>
       </dependency>
-    <dependency>
-      <groupId>org.sonatype.mercury</groupId>
-      <artifactId>mercury-mp3-cli</artifactId>
+      <dependency>
+        <groupId>org.sonatype.mercury</groupId>
+        <artifactId>mercury-mp3-cli</artifactId>
         <version>${mercuryMp3Version}</version>
-    </dependency>
+      </dependency>
       
       <!--  Mercury test dependencies -->
       <dependency>