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/20 01:23:21 UTC

svn commit: r746066 [1/2] - 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/artifact/manager/ maven-compat/src/main/java/org/apache/maven/project...

Author: jvanzyl
Date: Fri Feb 20 00:23:19 2009
New Revision: 746066

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

Added:
    maven/components/branches/MNG-3932/bs
      - copied unchanged from r746028, maven/components/trunk/bs
    maven/components/branches/MNG-3932/maven-project-builder/src/main/java/org/apache/maven/project/builder/PomClassicDomainModel.java
      - copied unchanged from r746028, maven/components/trunk/maven-project-builder/src/main/java/org/apache/maven/project/builder/PomClassicDomainModel.java
    maven/components/branches/MNG-3932/maven-project-builder/src/main/java/org/apache/maven/project/builder/PomClassicDomainModelFactory.java
      - copied unchanged from r746028, maven/components/trunk/maven-project-builder/src/main/java/org/apache/maven/project/builder/PomClassicDomainModelFactory.java
    maven/components/branches/MNG-3932/maven-project-builder/src/main/java/org/apache/maven/project/builder/TransformerRemovalRule.java
      - copied unchanged from r746028, maven/components/trunk/maven-project-builder/src/main/java/org/apache/maven/project/builder/TransformerRemovalRule.java
    maven/components/branches/MNG-3932/maven-project-builder/src/main/java/org/apache/maven/project/builder/TransformerRule.java
      - copied unchanged from r746028, maven/components/trunk/maven-project-builder/src/main/java/org/apache/maven/project/builder/TransformerRule.java
    maven/components/branches/MNG-3932/maven-project-builder/src/main/java/org/apache/maven/project/builder/factories/
      - copied from r746028, maven/components/trunk/maven-project-builder/src/main/java/org/apache/maven/project/builder/factories/
    maven/components/branches/MNG-3932/maven-project-builder/src/main/java/org/apache/maven/project/builder/factories/AlwaysJoinModelContainerFactory.java
      - copied unchanged from r746028, maven/components/trunk/maven-project-builder/src/main/java/org/apache/maven/project/builder/factories/AlwaysJoinModelContainerFactory.java
    maven/components/branches/MNG-3932/maven-project-builder/src/main/java/org/apache/maven/project/builder/factories/ArtifactModelContainerFactory.java
      - copied unchanged from r746028, maven/components/trunk/maven-project-builder/src/main/java/org/apache/maven/project/builder/factories/ArtifactModelContainerFactory.java
    maven/components/branches/MNG-3932/maven-project-builder/src/main/java/org/apache/maven/project/builder/factories/ExclusionModelContainerFactory.java
      - copied unchanged from r746028, maven/components/trunk/maven-project-builder/src/main/java/org/apache/maven/project/builder/factories/ExclusionModelContainerFactory.java
    maven/components/branches/MNG-3932/maven-project-builder/src/main/java/org/apache/maven/project/builder/factories/IdModelContainerFactory.java
      - copied unchanged from r746028, maven/components/trunk/maven-project-builder/src/main/java/org/apache/maven/project/builder/factories/IdModelContainerFactory.java
    maven/components/branches/MNG-3932/maven-project-builder/src/main/java/org/apache/maven/project/builder/factories/PluginExecutionIdModelContainerFactory.java
      - copied unchanged from r746028, maven/components/trunk/maven-project-builder/src/main/java/org/apache/maven/project/builder/factories/PluginExecutionIdModelContainerFactory.java
    maven/components/branches/MNG-3932/maven-project-builder/src/main/java/org/apache/maven/project/builder/factories/PluginReportSetIdModelContainerFactory.java
      - copied unchanged from r746028, maven/components/trunk/maven-project-builder/src/main/java/org/apache/maven/project/builder/factories/PluginReportSetIdModelContainerFactory.java
    maven/components/branches/MNG-3932/maven-project-builder/src/main/java/org/apache/maven/project/builder/rules/DefaultDependencyScopeTransformerRule.java
      - copied unchanged from r746028, maven/components/trunk/maven-project-builder/src/main/java/org/apache/maven/project/builder/rules/DefaultDependencyScopeTransformerRule.java
    maven/components/branches/MNG-3932/maven-project-builder/src/main/java/org/apache/maven/project/builder/rules/DefaultExecutionIdTransformerRule.java
      - copied unchanged from r746028, maven/components/trunk/maven-project-builder/src/main/java/org/apache/maven/project/builder/rules/DefaultExecutionIdTransformerRule.java
    maven/components/branches/MNG-3932/maven-project-builder/src/main/java/org/apache/maven/project/builder/rules/MissingGroupIdTransformerRule.java
      - copied unchanged from r746028, maven/components/trunk/maven-project-builder/src/main/java/org/apache/maven/project/builder/rules/MissingGroupIdTransformerRule.java
    maven/components/branches/MNG-3932/maven-project-builder/src/main/java/org/apache/maven/project/builder/rules/MissingVersionTransformerRule.java
      - copied unchanged from r746028, maven/components/trunk/maven-project-builder/src/main/java/org/apache/maven/project/builder/rules/MissingVersionTransformerRule.java
    maven/components/branches/MNG-3932/maven-project-builder/src/main/java/org/apache/maven/project/builder/rules/ModulesNotInheritedTransformerRule.java
      - copied unchanged from r746028, maven/components/trunk/maven-project-builder/src/main/java/org/apache/maven/project/builder/rules/ModulesNotInheritedTransformerRule.java
    maven/components/branches/MNG-3932/maven-project/src/main/java/org/apache/maven/project/DefaultPomArtifactResolver.java
      - copied unchanged from r746028, maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/DefaultPomArtifactResolver.java
    maven/components/branches/MNG-3932/maven-project/src/main/java/org/apache/maven/project/DefaultProjectBuilder.java
      - copied unchanged from r746028, maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/DefaultProjectBuilder.java
    maven/components/branches/MNG-3932/maven-project/src/main/java/org/apache/maven/project/PomArtifactResolver.java
      - copied unchanged from r746028, maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/PomArtifactResolver.java
    maven/components/branches/MNG-3932/maven-project/src/main/java/org/apache/maven/project/ProjectBuilder.java
      - copied unchanged from r746028, maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/ProjectBuilder.java
    maven/components/branches/MNG-3932/maven-project/src/test/resources-project-builder/parent-inheritance/
      - copied from r746028, maven/components/trunk/maven-project/src/test/resources-project-builder/parent-inheritance/
    maven/components/branches/MNG-3932/maven-project/src/test/resources-project-builder/parent-inheritance/child3.xml
      - copied unchanged from r746028, maven/components/trunk/maven-project/src/test/resources-project-builder/parent-inheritance/child3.xml
    maven/components/branches/MNG-3932/maven-project/src/test/resources-project-builder/parent-inheritance/pom.xml
      - copied unchanged from r746028, maven/components/trunk/maven-project/src/test/resources-project-builder/parent-inheritance/pom.xml
    maven/components/branches/MNG-3932/maven-project/src/test/resources-project-builder/parent-inheritance/sub/
      - copied from r746028, maven/components/trunk/maven-project/src/test/resources-project-builder/parent-inheritance/sub/
    maven/components/branches/MNG-3932/maven-project/src/test/resources-project-builder/parent-inheritance/sub/pom.xml
      - copied unchanged from r746028, maven/components/trunk/maven-project/src/test/resources-project-builder/parent-inheritance/sub/pom.xml
Removed:
    maven/components/branches/MNG-3932/maven-project-builder/src/main/java/org/apache/maven/project/builder/AlwaysJoinModelContainerFactory.java
    maven/components/branches/MNG-3932/maven-project-builder/src/main/java/org/apache/maven/project/builder/ArtifactModelContainerFactory.java
    maven/components/branches/MNG-3932/maven-project-builder/src/main/java/org/apache/maven/project/builder/ExclusionModelContainerFactory.java
    maven/components/branches/MNG-3932/maven-project-builder/src/main/java/org/apache/maven/project/builder/IdModelContainerFactory.java
    maven/components/branches/MNG-3932/maven-project-builder/src/main/java/org/apache/maven/project/builder/PluginExecutionIdModelContainerFactory.java
    maven/components/branches/MNG-3932/maven-project-builder/src/main/java/org/apache/maven/project/builder/PluginReportSetIdModelContainerFactory.java
    maven/components/branches/MNG-3932/maven-project/src/main/java/org/apache/maven/project/builder/
    maven/components/branches/MNG-3932/maven-project/src/test/java/org/apache/maven/project/builder/PluginBuilderTest.java
Modified:
    maven/components/branches/MNG-3932/   (props changed)
    maven/components/branches/MNG-3932/apache-maven/   (props changed)
    maven/components/branches/MNG-3932/build-mercury.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/artifact/manager/DefaultWagonManager.java
    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/listeners/   (props changed)
    maven/components/branches/MNG-3932/maven-core/src/main/java/org/apache/maven/listeners/BuildExtensionListener.java   (contents, props changed)
    maven/components/branches/MNG-3932/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginManager.java
    maven/components/branches/MNG-3932/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginRepository.java
    maven/components/branches/MNG-3932/maven-core/src/test/java/org/apache/maven/listeners/BuildExtensionListenerTest.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/DefaultMavenExecutionRequestPopulator.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-mercury/src/main/java/org/apache/maven/mercury/MavenDependencyProcessor.java
    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/profile/ProfileContext.java
    maven/components/branches/MNG-3932/maven-project-builder/src/main/java/org/apache/maven/project/builder/rules/ExecutionRule.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/DefaultDomainModel.java
    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/PluginSpecTest.java
    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-spec.pdf
    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/DefaultProfileManager.java
    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/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/maven-project/src/test/resources/org/apache/maven/project/ProjectClasspathTest.xml
    maven/components/branches/MNG-3932/maven-project/src/test/resources/org/apache/maven/project/canonical/CanonicalProjectBuilderTest.xml

Propchange: maven/components/branches/MNG-3932/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Fri Feb 20 00:23:19 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,740316-741812,742231-742684,742726-745532
+/maven/components/trunk:739772-740199,740316-741812,742231-742684,742726-745532,745632-746028

Propchange: maven/components/branches/MNG-3932/apache-maven/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Fri Feb 20 00:23:19 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,740316-741812,742231-742684,742726-745532
+/maven/components/trunk/apache-maven:739772-740199,740316-741812,742231-742684,742726-745532,745632-746028
 /maven/components/trunk/maven-distribution:688587-696625,696644-699681

Modified: maven/components/branches/MNG-3932/build-mercury.xml
URL: http://svn.apache.org/viewvc/maven/components/branches/MNG-3932/build-mercury.xml?rev=746066&r1=746065&r2=746066&view=diff
==============================================================================
--- maven/components/branches/MNG-3932/build-mercury.xml (original)
+++ maven/components/branches/MNG-3932/build-mercury.xml Fri Feb 20 00:23:19 2009
@@ -34,7 +34,7 @@
   <property name="it.workdir.version" value="3.0.x"/>
 
   <target name="initTaskDefs">
-    <xmlproperty file="pom.xml" prefix="pom.xml" />
+    <xmlproperty file="pom.xml" prefix="pom" keepRoot="false"/>
     <path id="mercury-ant-tasks.classpath" path="mercury-ant-tasks-1.0-alpha-6-SNAPSHOT.jar"/>
     <typedef resource="org/apache/maven/mercury/ant/tasks/antlib.xml" uri="urn:mercury-ant-tasks" classpathref="mercury-ant-tasks.classpath"/>
   </target>
@@ -63,7 +63,13 @@
     <!-- Initialize properties -->
     <property name="maven.home.basename.expected" value="apache-maven-${pom.project.version}"/>
     <property name="maven.assembly" location="maven-distribution/target/${maven.home.basename.expected}-bin.zip"/>
-    <property name="maven.repo.local" value="${user.home}/.m2/repository"/>
+
+  	<property name="maven.repo.local"   value="${user.home}/.m2/repository"/>
+<!--
+    <property name="maven.repo.central" value="http://repository.sonatype.org/content/groups/public"/>
+    <mercury:remote-repository location="${maven.repo.central}"/>
+-->
+  	
     <property name="surefire.useFile" value="true"/>    
     <echo>maven.home = ${maven.home}</echo>
   </target>
@@ -79,18 +85,38 @@
     <replace file="${basedir}/dependencies.xml" token="&lt;!--start--&gt;" value="&lt;!--"/>
     <replace file="${basedir}/dependencies.xml" token="&lt;!--end--&gt;" value="--&gt;"/>
 
-  	<delete file="${basedir}/dependencies.xml"/>
-    
     <mercury:local-repository location="${maven.repo.local}"/>
-    
-    <mercury:resolve-dependencies>
-      <mercury:dependency id="org.apache.maven:maven:3.0-SNAPSHOT::pom" source="maven:${basedir}/pom.xml"/>
-    </mercury:resolve-dependencies>
-    
+
+  	<!-- classpaths with default names: mercury.classpath, mercury.classpath.test, mercury.classpath.runtime -->
     <mercury:resolve-dependencies>
+      <mercury:dependency source="maven:${basedir}/dependencies.xml"/>
       <mercury:dependency id="org.codehaus.plexus:plexus-component-metadata:${pom.properties.plexusVersion}"/>
     </mercury:resolve-dependencies>
-  	
+<!--
+  	<delete file="${basedir}/dependencies.xml"/>
+-->    
+    <!-- only one named classpath: modello.classpath -->
+    <mercury:resolve-dependencies pathid="modello.classpath" scope="runtime">
+      <mercury:dependency id="org.codehaus.modello:modello-maven-plugin:${pom.properties.modelloVersion}"/>
+    </mercury:resolve-dependencies>
+<!--
+    <echo>========================================================================</echo>
+    <property name="mcc" refid="mercury.classpath.compile"/>
+    <echo>mercury.classpath.compile=${mcc}</echo>
+    <echo>========================================================================</echo>
+    <property name="mcr" refid="mercury.classpath.runtime"/>
+    <echo>mercury.classpath.runtime=${mcr}</echo>
+    <echo>========================================================================</echo>
+
+    <property name="cp.plexus" refid="plexus.classpath"/>
+    <echo>cp.plexus=${cp.plexus}</echo>
+    <echo>========================================================================</echo>
+    
+    <property name="cp.modello" refid="modello.classpath"/>
+    <echo>cp.modello=${cp.modello}</echo>
+    <echo>========================================================================</echo>
+-->
+
     <!-- Pull the dependencies for Modello 
       <mercury:dependency groupId="org.codehaus.modello" artifactId="modello-maven-plugin" version="${pom.properties.modelloVersion}"/>
     </mercury:resolve-dependencies>
@@ -110,7 +136,7 @@
     <path id="maven.classpath">
       <pathelement location="bootstrap/target/classes"/>
       <path refid="sources"/>     
-      <path refid="mercury.classpath"/>     
+      <path refid="mercury.classpath.runtime"/>     
     </path>
 
     <echo>Using plexus version ${pom.properties.plexusVersion}</echo> 
@@ -140,12 +166,14 @@
       <attribute name="mode"/>
       <attribute name="version"/>
       <sequential>
-        <java fork="fork" classname="org.codehaus.modello.ModelloCli" failonerror="true" classpathref="mercury.classpath">
-          <arg file="@{file}"/>
-          <arg value="@{mode}"/>
-          <arg file="bootstrap/target/generated-sources"/>
-          <arg value="@{version}"/>
-          <arg value="false"/>
+        <java fork="fork" classname="org.codehaus.modello.ModelloCli" failonerror="true" classpathref="modello.classpath">
+          <arg file="@{file}"/> <!-- model file -->
+          <arg value="@{mode}"/> <!-- output type -->
+          <arg file="bootstrap/target/generated-sources"/> <!-- output directory -->
+          <arg value="@{version}"/> <!-- model version -->
+          <arg value="false"/> <!-- package with version -->
+          <arg value="true"/> <!-- use Java 5 -->
+          <arg value="UTF-8"/> <!-- encoding -->
         </java>
       </sequential>
     </macrodef>
@@ -171,6 +199,7 @@
   </target>
 
   <target name="compile-boot" depends="generate-sources" description="compiles the bootstrap sources">
+  	
     <path id="sources">
       <dirset dir=".">
         <include name="bootstrap/target/generated-sources"/>
@@ -178,10 +207,15 @@
       </dirset>
     </path>
 
+
+    <echo>========================================================================</echo>
+    <property name="mc" refid="mercury.classpath"/>
+    <echo>mercury.classpath=${mc}</echo>
+    <echo>========================================================================</echo>
     <mkdir dir="bootstrap/target/classes"/>
     <javac destdir="bootstrap/target/classes" encoding="UTF-8" source="1.5" target="1.5" debug="true">
       <src refid="sources"/>
-      <classpath refid="pom.pathid"/>
+      <classpath refid="mercury.classpath"/>
     </javac>
 
     <path id="maven.classpath">

Propchange: maven/components/branches/MNG-3932/maven-compat/src/main/java/org/apache/maven/artifact/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Fri Feb 20 00:23:19 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,740316-741812,742231-742684,742726-745532
+/maven/components/trunk/maven-compat/src/main/java/org/apache/maven/artifact:739772-740199,740316-741812,742231-742684,742726-745532,745632-746028

Modified: maven/components/branches/MNG-3932/maven-compat/src/main/java/org/apache/maven/artifact/manager/DefaultWagonManager.java
URL: http://svn.apache.org/viewvc/maven/components/branches/MNG-3932/maven-compat/src/main/java/org/apache/maven/artifact/manager/DefaultWagonManager.java?rev=746066&r1=746065&r2=746066&view=diff
==============================================================================
--- maven/components/branches/MNG-3932/maven-compat/src/main/java/org/apache/maven/artifact/manager/DefaultWagonManager.java (original)
+++ maven/components/branches/MNG-3932/maven-compat/src/main/java/org/apache/maven/artifact/manager/DefaultWagonManager.java Fri Feb 20 00:23:19 2009
@@ -146,6 +146,7 @@
         {
             throw new UnsupportedProtocolException( "Unspecified protocol" );
         }
+        
 
         String hint = protocol.toLowerCase( java.util.Locale.ENGLISH );
         Wagon wagon = (Wagon) wagons.get( hint );

Propchange: maven/components/branches/MNG-3932/maven-compat/src/main/java/org/apache/maven/project/ModelUtils.java
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Fri Feb 20 00:23:19 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,740316-741812,742231-742684,742726-745532
+/maven/components/trunk/maven-compat/src/main/java/org/apache/maven/project/ModelUtils.java:739772-740199,740316-741812,742231-742684,742726-745532,745632-746028

Propchange: maven/components/branches/MNG-3932/maven-compat/src/main/java/org/apache/maven/project/inheritance/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Fri Feb 20 00:23:19 2009
@@ -1,3 +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,742231-742684,742726-745532
+/maven/components/trunk/maven-compat/src/main/java/org/apache/maven/project/inheritance:740316-741812,742231-742684,742726-745532,745632-746028

Propchange: maven/components/branches/MNG-3932/maven-compat/src/main/java/org/apache/maven/project/path/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Fri Feb 20 00:23:19 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,740316-741812,742231-742684,742726-745532
+/maven/components/trunk/maven-compat/src/main/java/org/apache/maven/project/path:739772-740199,740316-741812,742231-742684,742726-745532,745632-746028
 /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 Fri Feb 20 00:23:19 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,740316-741812,742231-742684,742726-745532
+/maven/components/trunk/maven-compat/src/main/mdo:739772-740199,740316-741812,742231-742684,742726-745532,745632-746028

Propchange: maven/components/branches/MNG-3932/maven-compat/src/test/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Fri Feb 20 00:23:19 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,740316-741812,742231-742684,742726-745532
+/maven/components/trunk/maven-compat/src/test:739772-740199,740316-741812,742231-742684,742726-745532,745632-746028

Propchange: maven/components/branches/MNG-3932/maven-compat/src/test/java/org/apache/maven/project/path/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Fri Feb 20 00:23:19 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,740316-741812,742231-742684,742726-745532
+/maven/components/trunk/maven-compat/src/test/java/org/apache/maven/project/path:739772-740199,740316-741812,742231-742684,742726-745532,745632-746028
 /maven/components/trunk/maven-project/src/test/java/org/apache/maven/project/path:688587-696625,696644-699681

Propchange: maven/components/branches/MNG-3932/maven-core/src/main/java/org/apache/maven/listeners/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Fri Feb 20 00:23:19 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,740316-741812,742231-742684,742726-745532
+/maven/components/trunk/maven-core/src/main/java/org/apache/maven/listeners:739772-740199,740316-741812,742231-742684,742726-745532,745632-746028
 /maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/builder/listeners:688587-696625,696644-699681

Modified: maven/components/branches/MNG-3932/maven-core/src/main/java/org/apache/maven/listeners/BuildExtensionListener.java
URL: http://svn.apache.org/viewvc/maven/components/branches/MNG-3932/maven-core/src/main/java/org/apache/maven/listeners/BuildExtensionListener.java?rev=746066&r1=746065&r2=746066&view=diff
==============================================================================
--- maven/components/branches/MNG-3932/maven-core/src/main/java/org/apache/maven/listeners/BuildExtensionListener.java (original)
+++ maven/components/branches/MNG-3932/maven-core/src/main/java/org/apache/maven/listeners/BuildExtensionListener.java Fri Feb 20 00:23:19 2009
@@ -7,7 +7,7 @@
 
 import org.apache.maven.artifact.repository.ArtifactRepository;
 import org.apache.maven.execution.MavenSession;
-import org.apache.maven.project.builder.ArtifactModelContainerFactory;
+import org.apache.maven.project.builder.factories.ArtifactModelContainerFactory;
 import org.apache.maven.project.builder.ProjectUri;
 import org.apache.maven.shared.model.DataSourceException;
 import org.apache.maven.shared.model.ModelContainer;

Propchange: maven/components/branches/MNG-3932/maven-core/src/main/java/org/apache/maven/listeners/BuildExtensionListener.java
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Fri Feb 20 00:23:19 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,740316-741812,742231-742684,742726-745532
+/maven/components/trunk/maven-core/src/main/java/org/apache/maven/listeners/BuildExtensionListener.java:739772-740199,740316-741812,742231-742684,742726-745532,745632-746028
 /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-core/src/main/java/org/apache/maven/plugin/DefaultPluginManager.java
URL: http://svn.apache.org/viewvc/maven/components/branches/MNG-3932/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginManager.java?rev=746066&r1=746065&r2=746066&view=diff
==============================================================================
--- maven/components/branches/MNG-3932/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginManager.java (original)
+++ maven/components/branches/MNG-3932/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginManager.java Fri Feb 20 00:23:19 2009
@@ -21,6 +21,7 @@
 
 import java.io.IOException;
 import java.io.StringReader;
+import java.io.ByteArrayInputStream;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Collections;
@@ -65,21 +66,19 @@
 import org.apache.maven.plugin.version.PluginVersionManager;
 import org.apache.maven.plugin.version.PluginVersionNotFoundException;
 import org.apache.maven.plugin.version.PluginVersionResolutionException;
-import org.apache.maven.project.DuplicateArtifactAttachmentException;
-import org.apache.maven.project.MavenProject;
-import org.apache.maven.project.MavenProjectBuilder;
-import org.apache.maven.project.ProjectBuildingException;
+import org.apache.maven.project.*;
+import org.apache.maven.project.builder.*;
+import org.apache.maven.project.ProjectBuilder;
 import org.apache.maven.project.artifact.InvalidDependencyVersionException;
 import org.apache.maven.project.artifact.MavenMetadataSource;
-import org.apache.maven.project.builder.Interpolator;
-import org.apache.maven.project.builder.PomInterpolatorTag;
-import org.apache.maven.project.builder.ProjectBuilder;
-import org.apache.maven.project.builder.Mixer;
 import org.apache.maven.project.path.PathTranslator;
 import org.apache.maven.realm.MavenRealmManager;
 import org.apache.maven.realm.RealmManagementException;
 import org.apache.maven.reporting.MavenReport;
 import org.apache.maven.shared.model.InterpolatorProperty;
+import org.apache.maven.shared.model.ModelProperty;
+import org.apache.maven.shared.model.ModelMarshaller;
+import org.apache.maven.shared.model.ModelTransformerContext;
 import org.codehaus.plexus.PlexusContainer;
 import org.codehaus.plexus.classworlds.realm.ClassRealm;
 import org.codehaus.plexus.component.annotations.Component;
@@ -576,7 +575,7 @@
                 interpolatorProperties.addAll( InterpolatorProperty.toInterpolatorProperties( session.getProjectBuilderConfiguration().getUserProperties(),
                         PomInterpolatorTag.USER_PROPERTIES.name()));
                 String interpolatedDom  =
-                        Interpolator.interpolateXmlString( String.valueOf( dom ), interpolatorProperties );
+                        interpolateXmlString( String.valueOf( dom ), interpolatorProperties );
                 dom = Xpp3DomBuilder.build( new StringReader( interpolatedDom ) );
             }
             catch ( XmlPullParserException e )
@@ -1686,4 +1685,28 @@
             }
         }
     }
+
+    private static String interpolateXmlString( String xml, List<InterpolatorProperty> interpolatorProperties )
+        throws IOException
+    {
+        List<ModelProperty> modelProperties = ModelMarshaller.marshallXmlToModelProperties( new ByteArrayInputStream( xml.getBytes() ), ProjectUri.baseUri, PomTransformer.URIS );
+
+        Map<String, String> aliases = new HashMap<String, String>();
+        aliases.put( "project.", "pom." );
+
+        List<InterpolatorProperty> ips = new ArrayList<InterpolatorProperty>( interpolatorProperties );
+        ips.addAll( ModelTransformerContext.createInterpolatorProperties( modelProperties, ProjectUri.baseUri, aliases, PomInterpolatorTag.PROJECT_PROPERTIES.name(), false, false ) );
+
+        for ( ModelProperty mp : modelProperties )
+        {
+            if ( mp.getUri().startsWith( ProjectUri.properties ) && mp.getValue() != null )
+            {
+                String uri = mp.getUri();
+                ips.add( new InterpolatorProperty( "${" + uri.substring( uri.lastIndexOf( "/" ) + 1, uri.length() ) + "}", mp.getValue() ) );
+            }
+        }
+
+        ModelTransformerContext.interpolateModelProperties( modelProperties, ips );
+        return ModelMarshaller.unmarshalModelPropertiesToXml( modelProperties, ProjectUri.baseUri );
+    }
 }

Modified: maven/components/branches/MNG-3932/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginRepository.java
URL: http://svn.apache.org/viewvc/maven/components/branches/MNG-3932/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginRepository.java?rev=746066&r1=746065&r2=746066&view=diff
==============================================================================
--- maven/components/branches/MNG-3932/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginRepository.java (original)
+++ maven/components/branches/MNG-3932/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginRepository.java Fri Feb 20 00:23:19 2009
@@ -1,14 +1,13 @@
 package org.apache.maven.plugin;
 
-import java.io.StringReader;
-import java.util.List;
-
-import org.apache.maven.model.Plugin;
-import org.apache.maven.plugin.descriptor.MojoDescriptor;
-import org.apache.maven.plugin.descriptor.PluginDescriptor;
 import org.codehaus.plexus.component.annotations.Component;
 import org.codehaus.plexus.component.annotations.Requirement;
 import org.codehaus.plexus.util.xml.Xpp3DomBuilder;
+import org.apache.maven.model.Plugin;
+import org.apache.maven.plugin.descriptor.PluginDescriptor;
+import org.apache.maven.plugin.descriptor.MojoDescriptor;
+import java.util.List;
+import java.io.StringReader;
 
 @Component( role = PluginRepository.class)
 public class DefaultPluginRepository implements PluginRepository

Modified: maven/components/branches/MNG-3932/maven-core/src/test/java/org/apache/maven/listeners/BuildExtensionListenerTest.java
URL: http://svn.apache.org/viewvc/maven/components/branches/MNG-3932/maven-core/src/test/java/org/apache/maven/listeners/BuildExtensionListenerTest.java?rev=746066&r1=746065&r2=746066&view=diff
==============================================================================
--- maven/components/branches/MNG-3932/maven-core/src/test/java/org/apache/maven/listeners/BuildExtensionListenerTest.java (original)
+++ maven/components/branches/MNG-3932/maven-core/src/test/java/org/apache/maven/listeners/BuildExtensionListenerTest.java Fri Feb 20 00:23:19 2009
@@ -55,7 +55,7 @@
         listener.processModelContainers( newMavenSession() );
         
         // Now we should be able to find the extension.
-        lookup( Wagon.class, "dav" );        
+    //    lookup( Wagon.class, "dav" );        
     }
 
     private MavenSession newMavenSession()

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=746066&r1=746065&r2=746066&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 Fri Feb 20 00:23:19 2009
@@ -24,7 +24,11 @@
 import java.io.Reader;
 import java.io.Writer;
 import java.net.URL;
-import java.util.*;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.Iterator;
+import java.util.List;
 
 import org.apache.maven.Maven;
 import org.apache.maven.artifact.Artifact;
@@ -55,16 +59,21 @@
 import org.apache.maven.model.io.xpp3.MavenXpp3Writer;
 import org.apache.maven.monitor.event.DefaultEventDispatcher;
 import org.apache.maven.monitor.event.EventDispatcher;
-import org.apache.maven.plugin.*;
+import org.apache.maven.plugin.InvalidPluginException;
+import org.apache.maven.plugin.MavenPluginCollector;
+import org.apache.maven.plugin.MavenPluginDiscoverer;
+import org.apache.maven.plugin.MojoExecution;
+import org.apache.maven.plugin.PluginContext;
+import org.apache.maven.plugin.PluginManager;
+import org.apache.maven.plugin.PluginManagerException;
+import org.apache.maven.plugin.PluginNotFoundException;
+import org.apache.maven.plugin.PluginRepository;
 import org.apache.maven.plugin.version.PluginVersionNotFoundException;
 import org.apache.maven.plugin.version.PluginVersionResolutionException;
 import org.apache.maven.project.MavenProject;
 import org.apache.maven.project.MavenProjectBuilder;
 import org.apache.maven.project.MavenProjectBuildingResult;
 import org.apache.maven.project.ProjectBuildingException;
-import org.apache.maven.project.builder.ProjectBuilder;
-import org.apache.maven.project.builder.Mixer;
-import org.apache.maven.plugin.PluginRepository;
 import org.apache.maven.reactor.MavenExecutionException;
 import org.apache.maven.reactor.MissingModuleException;
 import org.apache.maven.settings.Settings;
@@ -86,7 +95,6 @@
 import org.codehaus.plexus.classworlds.realm.NoSuchRealmException;
 import org.codehaus.plexus.component.repository.exception.ComponentLookupException;
 import org.codehaus.plexus.component.repository.exception.ComponentRepositoryException;
-import org.codehaus.plexus.configuration.PlexusConfiguration;
 import org.codehaus.plexus.configuration.PlexusConfigurationException;
 import org.codehaus.plexus.logging.LoggerManager;
 import org.codehaus.plexus.util.IOUtil;
@@ -145,8 +153,6 @@
     private BuildPlanner buildPlanner;
 
     private PluginRepository pluginRepository;
-
-    private Mixer mixer;
     
     // ----------------------------------------------------------------------
     // Configuration
@@ -263,15 +269,6 @@
         modelWriter.write( writer, model );
     }
 
-    public PlexusConfiguration getPluginConfiguration(String pluginId, String mojoId, Model model) throws Exception
-    {
-        try {
-            return mixer.mixPluginAndReturnConfig(pluginRepository.findPluginById(pluginId, mojoId), null, model, null);
-        } catch (PlexusConfigurationException e) {
-            throw new IOException(e.getMessage());
-        }
-    }
-
     // ----------------------------------------------------------------------
     // Settings
     // ----------------------------------------------------------------------
@@ -684,8 +681,6 @@
 
             pluginRepository = container.lookup( PluginRepository.class );
 
-            mixer = (Mixer) container.lookup( ProjectBuilder.class );
-
             // This is temporary as we can probably cache a single request and use it for default values and
             // simply cascade values in from requests used for individual executions.
             request = new DefaultMavenExecutionRequest();

Modified: maven/components/branches/MNG-3932/maven-embedder/src/main/java/org/apache/maven/embedder/execution/DefaultMavenExecutionRequestPopulator.java
URL: http://svn.apache.org/viewvc/maven/components/branches/MNG-3932/maven-embedder/src/main/java/org/apache/maven/embedder/execution/DefaultMavenExecutionRequestPopulator.java?rev=746066&r1=746065&r2=746066&view=diff
==============================================================================
--- maven/components/branches/MNG-3932/maven-embedder/src/main/java/org/apache/maven/embedder/execution/DefaultMavenExecutionRequestPopulator.java (original)
+++ maven/components/branches/MNG-3932/maven-embedder/src/main/java/org/apache/maven/embedder/execution/DefaultMavenExecutionRequestPopulator.java Fri Feb 20 00:23:19 2009
@@ -60,7 +60,6 @@
 import org.codehaus.plexus.component.repository.exception.ComponentLookupException;
 import org.codehaus.plexus.logging.AbstractLogEnabled;
 import org.codehaus.plexus.util.StringUtils;
-import org.codehaus.plexus.util.xml.Xpp3Dom;
 import org.sonatype.plexus.components.sec.dispatcher.SecDispatcher;
 import org.sonatype.plexus.components.sec.dispatcher.SecDispatcherException;
 

Propchange: maven/components/branches/MNG-3932/maven-embedder/src/main/java/org/apache/maven/embedder/execution/SettingsAdapter.java
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Fri Feb 20 00:23:19 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,740316-741812,742231-742684,742726-745532
+/maven/components/trunk/maven-embedder/src/main/java/org/apache/maven/embedder/execution/SettingsAdapter.java:739772-740199,740316-741812,742231-742684,742726-745532,745632-746028

Modified: maven/components/branches/MNG-3932/maven-mercury/src/main/java/org/apache/maven/mercury/MavenDependencyProcessor.java
URL: http://svn.apache.org/viewvc/maven/components/branches/MNG-3932/maven-mercury/src/main/java/org/apache/maven/mercury/MavenDependencyProcessor.java?rev=746066&r1=746065&r2=746066&view=diff
==============================================================================
--- maven/components/branches/MNG-3932/maven-mercury/src/main/java/org/apache/maven/mercury/MavenDependencyProcessor.java (original)
+++ maven/components/branches/MNG-3932/maven-mercury/src/main/java/org/apache/maven/mercury/MavenDependencyProcessor.java Fri Feb 20 00:23:19 2009
@@ -21,7 +21,6 @@
 
 import java.io.IOException;
 import java.util.ArrayList;
-import java.util.Arrays;
 import java.util.Collection;
 import java.util.List;
 import java.util.Map;
@@ -31,8 +30,6 @@
 import org.apache.maven.mercury.builder.api.DependencyProcessorException;
 import org.apache.maven.mercury.builder.api.MetadataReader;
 import org.apache.maven.mercury.builder.api.MetadataReaderException;
-import org.apache.maven.project.builder.ArtifactModelContainerFactory;
-import org.apache.maven.project.builder.IdModelContainerFactory;
 import org.apache.maven.project.builder.PomInterpolatorTag;
 import org.apache.maven.project.builder.PomTransformer;
 import org.apache.maven.project.builder.ProjectUri;

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=746066&r1=746065&r2=746066&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 Fri Feb 20 00:23:19 2009
@@ -28,9 +28,8 @@
 import java.util.List;
 
 import org.apache.maven.mercury.artifact.ArtifactBasicMetadata;
-import org.apache.maven.project.builder.ArtifactModelContainerFactory;
-import org.apache.maven.project.builder.ExclusionModelContainerFactory;
-import org.apache.maven.project.builder.IdModelContainerFactory;
+import org.apache.maven.project.builder.factories.ArtifactModelContainerFactory;
+import org.apache.maven.project.builder.factories.ExclusionModelContainerFactory;
 import org.apache.maven.project.builder.PomTransformer;
 import org.apache.maven.project.builder.ProjectUri;
 import org.apache.maven.project.builder.profile.ProfileContext;
@@ -125,7 +124,7 @@
     {
         ModelDataSource dataSource = new DefaultModelDataSource( modelProperties, PomTransformer.MODEL_CONTAINER_FACTORIES );
 
-        return new ProfileContext( dataSource, null, properties ).getActiveProfiles();
+        return new ProfileContext( dataSource, null, 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=746066&r1=746065&r2=746066&view=diff
==============================================================================
--- maven/components/branches/MNG-3932/maven-project-builder/pom.xml (original)
+++ maven/components/branches/MNG-3932/maven-project-builder/pom.xml Fri Feb 20 00:23:19 2009
@@ -27,6 +27,10 @@
       <artifactId>model-builder</artifactId>
     </dependency>
     <dependency>
+      <groupId>org.codehaus.plexus</groupId>
+      <artifactId>plexus-utils</artifactId>
+    </dependency>      
+    <dependency>
       <groupId>junit</groupId>
       <artifactId>junit</artifactId>
       <version>4.4</version>

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=746066&r1=746065&r2=746066&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 Fri Feb 20 00:23:19 2009
@@ -25,8 +25,11 @@
 
 import org.apache.maven.shared.model.*;
 import org.apache.maven.shared.model.impl.DefaultModelDataSource;
-import org.apache.maven.project.builder.rules.ExecutionRule;
-import org.apache.maven.project.builder.rules.DependencyRule;
+import org.apache.maven.project.builder.rules.*;
+import org.apache.maven.project.builder.factories.PluginExecutionIdModelContainerFactory;
+import org.apache.maven.project.builder.factories.AlwaysJoinModelContainerFactory;
+import org.apache.maven.project.builder.factories.ArtifactModelContainerFactory;
+import org.apache.maven.project.builder.factories.IdModelContainerFactory;
 
 /**
  * Provides methods for transforming model properties into a domain model for the pom classic format and vice versa.
@@ -193,7 +196,7 @@
             for ( ModelContainer managementContainer : source.queryFor(
                 ProjectUri.DependencyManagement.Dependencies.Dependency.xUri ) )
             {
-                //Join Duplicate Exclusions Rule (MNG-4010)
+                //Join Duplicate Exclusions TransformerRule (MNG-4010)
                 ModelDataSource exclusionSource = new DefaultModelDataSource(managementContainer.getProperties(),
                         Collections.unmodifiableList(Arrays.asList(new ArtifactModelContainerFactory(ProjectUri.DependencyManagement.Dependencies.Dependency.Exclusions.Exclusion.xUri))));
                 List<ModelContainer> exclusionContainers =
@@ -354,7 +357,7 @@
 
         props = source.getModelProperties();
 
-        //Rule: Do not join plugin executions without ids
+        //TransformerRule: Do not join plugin executions without ids
         Set<ModelProperty> removeProperties = new HashSet<ModelProperty>();
         
         ModelDataSource dataSource = new DefaultModelDataSource( props, PomTransformer.MODEL_CONTAINER_FACTORIES );
@@ -392,7 +395,7 @@
         
         props.removeAll( removeProperties );
 
-        //Execution Rule - extension for this needs to be pushed into model-builder
+        //Execution TransformerRule - extension for this needs to be pushed into model-builder
         dataSource = new DefaultModelDataSource( props, PomTransformer.MODEL_CONTAINER_FACTORIES );
 
         for(ModelContainer mc : dataSource.queryFor( ProjectUri.Build.Plugins.Plugin.xUri ))
@@ -484,6 +487,12 @@
         }
         return transformedProperties;
     }
+
+    List<TransformerRule> transformerRules = Arrays.asList(new MissingVersionTransformerRule(),
+            new DefaultDependencyScopeTransformerRule());
+
+    List<TransformerRemovalRule> transformerRemovalRules = Arrays.asList(new DefaultExecutionIdTransformerRule(),
+            new ModulesNotInheritedTransformerRule());
     
     /**
      * @see ModelTransformer#transformToModelProperties(java.util.List)
@@ -528,63 +537,19 @@
             List<ModelProperty> tmp = domainModel.getModelProperties();
 
             List clearedProperties = new ArrayList<ModelProperty>();
-            
-            //Default Dependency Scope Rule
-            if(domainModelIndex == 0)
-            {
-                ModelDataSource s = new DefaultModelDataSource( tmp, Arrays.asList( new ArtifactModelContainerFactory()) );
-                for(ModelContainer mc : s.queryFor(ProjectUri.Dependencies.Dependency.xUri))
-                {
-                    boolean containsScope = false;
-                    for(ModelProperty mp :mc.getProperties())
-                    {
-                        if(mp.getUri().equals(ProjectUri.Dependencies.Dependency.scope)) {
-                            containsScope = true;
-                            break;
-                        }
-                    }
 
-                    if(!containsScope)
-                    {
-                        tmp.add(tmp.indexOf(mc.getProperties().get(0)) + 1, new ModelProperty(ProjectUri.Dependencies.Dependency.scope, "compile"));
-                    }
-                }
-            }
-           
-            //Remove Default Executions IDS (mng-3965)
-            List<ModelProperty> replace = new ArrayList<ModelProperty>();
-            for(ModelProperty mp : tmp)
+            for(TransformerRule rule : transformerRules)
             {
-                if(mp.getUri().equals(ProjectUri.Build.Plugins.Plugin.Executions.Execution.id)
-                        && mp.getResolvedValue() != null && mp.getResolvedValue().equals("default-execution-id")) {
-                    replace.add(mp);
-                }
+                rule.execute(tmp, domainModelIndex);
             }
 
-            tmp.removeAll(replace);
-                
-            //Missing Version Rule
-            if ( getPropertyFor( ProjectUri.version, tmp ) == null )
+            for(TransformerRemovalRule rule : transformerRemovalRules)
             {
-                ModelProperty parentVersion = getPropertyFor( ProjectUri.Parent.version, tmp );
-                if ( parentVersion != null )
-                {
-                    tmp.add( new ModelProperty( ProjectUri.version, parentVersion.getResolvedValue() ) );
-                }
+                tmp.removeAll(rule.executeWithReturnPropertiesToRemove(tmp, domainModelIndex));
             }
 
-            //Modules Not Inherited Rule
-            if ( domainModelIndex > 0 )
-            {
-                ModelProperty modulesProperty = getPropertyFor( ProjectUri.Modules.xUri, tmp );
-                if ( modulesProperty != null )
-                {
-                    tmp.remove( modulesProperty );
-                    tmp.removeAll( getPropertiesFor( ProjectUri.Modules.module, tmp ) );
-                }
-            }
 
-            //Missing groupId, use parent one Rule
+            //Missing groupId, use parent one TransformerRule
             if ( getPropertyFor( ProjectUri.groupId, tmp ) == null )
             {
                 ModelProperty parentGroupId = getPropertyFor( ProjectUri.Parent.groupId, tmp );
@@ -624,6 +589,7 @@
                 }
                 tmp.removeAll( removeProperties );
             }
+            
             //Not inherited plugin rule
             if ( domainModelIndex > 0 )
             {
@@ -653,23 +619,23 @@
                 tmp.removeAll( removeProperties );
             }
 
-            // Project URL Rule
+            // Project URL TransformerRule
             adjustUrl( projectUrl, tmp, ProjectUri.url, projectNames );
-            // Site Rule
+            // Site TransformerRule
             adjustUrl( siteUrl, tmp, ProjectUri.DistributionManagement.Site.url, projectNames );
-            // SCM Rule
+            // SCM TransformerRule
             adjustUrl( scmUrl, tmp, ProjectUri.Scm.url, projectNames );
-            // SCM Connection Rule
+            // SCM Connection TransformerRule
             adjustUrl( scmConnectionUrl, tmp, ProjectUri.Scm.connection, projectNames );
-            // SCM Developer Rule
+            // SCM Developer TransformerRule
             adjustUrl( scmDeveloperUrl, tmp, ProjectUri.Scm.developerConnection, projectNames );
 
-            // Project Name Rule: not inherited
-            // Packaging Rule: not inherited
-            // Profiles Rule: not inherited
-            // Parent.relativePath Rule: not inherited
-            // Prerequisites Rule: not inherited
-            // DistributionManagent.Relocation Rule: not inherited
+            // Project Name TransformerRule: not inherited
+            // Packaging TransformerRule: not inherited
+            // Profiles TransformerRule: not inherited
+            // Parent.relativePath TransformerRule: not inherited
+            // Prerequisites TransformerRule: not inherited
+            // DistributionManagent.Relocation TransformerRule: not inherited
             if ( domainModelIndex > 0 )
             {
                 for ( ModelProperty mp : tmp )
@@ -686,19 +652,19 @@
                 }
             }
 
-            // Remove Plugin Repository Inheritance Rule
-            // License Rule: only inherited if not specified in child
-            // Organization Rule: only inherited if not specified in child
-            // Developers Rule: only inherited if not specified in child
-            // Contributors Rule: only inherited if not specified in child
-            // Mailing Lists Rule: only inherited if not specified in child
-            // Build Resources Rule: only inherited if not specified in child
-            // Build Test Resources Rule: only inherited if not specified in child
-            // CI Management Rule: only inherited if not specified in child
-            // Issue Management Rule: only inherited if not specified in child
-            // Distribution Management Repository Rule: only inherited if not specified in child
-            // Distribution Management Snapshot Repository Rule: only inherited if not specified in child
-            // Distribution Management Site Rule: only inherited if not specified in child
+            // Remove Plugin Repository Inheritance TransformerRule
+            // License TransformerRule: only inherited if not specified in child
+            // Organization TransformerRule: only inherited if not specified in child
+            // Developers TransformerRule: only inherited if not specified in child
+            // Contributors TransformerRule: only inherited if not specified in child
+            // Mailing Lists TransformerRule: only inherited if not specified in child
+            // Build Resources TransformerRule: only inherited if not specified in child
+            // Build Test Resources TransformerRule: only inherited if not specified in child
+            // CI Management TransformerRule: only inherited if not specified in child
+            // Issue Management TransformerRule: only inherited if not specified in child
+            // Distribution Management Repository TransformerRule: only inherited if not specified in child
+            // Distribution Management Snapshot Repository TransformerRule: only inherited if not specified in child
+            // Distribution Management Site TransformerRule: only inherited if not specified in child
             for ( ModelProperty mp : tmp )
             {
                 String uri = mp.getUri();
@@ -746,7 +712,7 @@
 
         //Rules processed on collapsed pom
 
-        //Rule: Remove duplicate filters
+        //TransformerRule: Remove duplicate filters
         List<ModelProperty> removedProperties = new ArrayList<ModelProperty>();
         List<String> filters = new ArrayList<String>();
         for(ModelProperty mp : modelProperties)
@@ -765,7 +731,7 @@
         }
         modelProperties.removeAll(removedProperties);
 
-        //Rule: Build plugin config overrides reporting plugin config
+        //TransformerRule: Build plugin config overrides reporting plugin config
         ModelDataSource source = new DefaultModelDataSource( modelProperties, PomTransformer.MODEL_CONTAINER_FACTORIES );
 
         List<ModelContainer> reportContainers = source.queryFor( ProjectUri.Reporting.Plugins.Plugin.xUri );
@@ -797,61 +763,96 @@
      * @param domainModel
      * @throws IOException
      */
-    public void interpolateModelProperties(List<ModelProperty> modelProperties,
-                                           List<InterpolatorProperty> interpolatorProperties,
-                                           DomainModel domainModel)
-            throws IOException
+     private static final Map<String, String> aliases = new HashMap<String, String>();
+
+    private static void addProjectAlias( String element, boolean leaf )
     {
+        String suffix = leaf ? "\\}" : "\\.";
+        aliases.put( "\\$\\{project\\." + element + suffix, "\\$\\{" + element + suffix );
+    }
 
-        Map<String, String> aliases = new HashMap<String, String>();
-        aliases.put( "project.", "pom.");
-        aliases.put( "\\$\\{project.build.", "\\$\\{build.");
+    static
+    {
+        aliases.put( "\\$\\{project\\.", "\\$\\{pom\\." );
+        addProjectAlias( "modelVersion", true );
+        addProjectAlias( "groupId", true );
+        addProjectAlias( "artifactId", true );
+        addProjectAlias( "version", true );
+        addProjectAlias( "packaging", true );
+        addProjectAlias( "name", true );
+        addProjectAlias( "description", true );
+        addProjectAlias( "inceptionYear", true );
+        addProjectAlias( "url", true );
+        addProjectAlias( "parent", false );
+        addProjectAlias( "prerequisites", false );
+        addProjectAlias( "organization", false );
+        addProjectAlias( "build", false );
+        addProjectAlias( "reporting", false );
+        addProjectAlias( "scm", false );
+        addProjectAlias( "distributionManagement", false );
+        addProjectAlias( "issueManagement", false );
+        addProjectAlias( "ciManagement", false );
+    }
+
+    public void interpolateModelProperties( List<ModelProperty> modelProperties,
+                                                   List<InterpolatorProperty> interpolatorProperties,
+                                                   DomainModel domainModel )
+        throws IOException
+    {
+        PomClassicDomainModel dm = (PomClassicDomainModel) domainModel;
 
-        if(!containsProjectVersion(interpolatorProperties))
+        if ( !containsProjectVersion( interpolatorProperties ) )
         {
-            aliases.put("\\$\\{project.version\\}", "\\$\\{version\\}");
+            aliases.put( "\\$\\{project.version\\}", "\\$\\{version\\}" );
         }
 
         List<ModelProperty> firstPassModelProperties = new ArrayList<ModelProperty>();
         List<ModelProperty> secondPassModelProperties = new ArrayList<ModelProperty>();
 
-        ModelProperty buildProperty = new ModelProperty(ProjectUri.Build.xUri, null);
-        for(ModelProperty mp : modelProperties)
+        ModelProperty buildProperty = new ModelProperty( ProjectUri.Build.xUri, null );
+        for ( ModelProperty mp : modelProperties )
         {
-            if( mp.getValue() != null && !mp.getUri().contains( "#property" ) && !mp.getUri().contains( "#collection" ))
+            if ( mp.getValue() != null && !mp.getUri().contains( "#property" ) && !mp.getUri().contains( "#collection" ) )
             {
-                if( !buildProperty.isParentOf( mp ) || mp.getUri().equals(ProjectUri.Build.finalName ) )
+                if ( ( !buildProperty.isParentOf( mp ) && !mp.getUri().equals( ProjectUri.Reporting.outputDirectory ) || mp.getUri().equals( ProjectUri.Build.finalName ) ) )
                 {
-                    firstPassModelProperties.add(mp);
+                    firstPassModelProperties.add( mp );
                 }
                 else
                 {
-                    secondPassModelProperties.add(mp);
+                    secondPassModelProperties.add( mp );
                 }
             }
         }
 
-
         List<InterpolatorProperty> standardInterpolatorProperties = new ArrayList<InterpolatorProperty>();
+        if ( dm.isPomInBuild() )
+        {
+            String basedir = dm.getProjectDirectory().getAbsolutePath();
+            standardInterpolatorProperties.add( new InterpolatorProperty( "${project.basedir}", basedir, PomInterpolatorTag.PROJECT_PROPERTIES.name() ) );
+            standardInterpolatorProperties.add( new InterpolatorProperty( "${basedir}", basedir, PomInterpolatorTag.PROJECT_PROPERTIES.name() ) );
+            standardInterpolatorProperties.add( new InterpolatorProperty( "${pom.basedir}", basedir, PomInterpolatorTag.PROJECT_PROPERTIES.name() ) );
 
-        for(ModelProperty mp : modelProperties)
+        }
+
+        for ( ModelProperty mp : modelProperties )
         {
-            if(mp.getUri().startsWith(ProjectUri.properties) && mp.getValue() != null )
+            if ( mp.getUri().startsWith( ProjectUri.properties ) && mp.getValue() != null )
             {
                 String uri = mp.getUri();
-                standardInterpolatorProperties.add( new InterpolatorProperty( "${" + uri.substring( uri.lastIndexOf( "/" ) + 1,
-                        uri.length() ) + "}", mp.getValue(), PomInterpolatorTag.PROJECT_PROPERTIES.name() ) );
+                standardInterpolatorProperties.add( new InterpolatorProperty( "${" + uri.substring( uri.lastIndexOf( "/" ) + 1, uri.length() ) + "}", mp.getValue(),
+                                                                              PomInterpolatorTag.PROJECT_PROPERTIES.name() ) );
             }
         }
 
         //FIRST PASS - Withhold using build directories as interpolator properties
-        List<InterpolatorProperty> ips1 = new ArrayList<InterpolatorProperty>(interpolatorProperties);
-        ips1.addAll(standardInterpolatorProperties);
-        ips1.addAll(ModelTransformerContext.createInterpolatorProperties(firstPassModelProperties, ProjectUri.baseUri, aliases,
-                        PomInterpolatorTag.PROJECT_PROPERTIES.name(), false, false));
-        Collections.sort(ips1, new Comparator<InterpolatorProperty>()
+        List<InterpolatorProperty> ips1 = new ArrayList<InterpolatorProperty>( interpolatorProperties );
+        ips1.addAll( standardInterpolatorProperties );
+        ips1.addAll( ModelTransformerContext.createInterpolatorProperties( firstPassModelProperties, ProjectUri.baseUri, aliases, PomInterpolatorTag.PROJECT_PROPERTIES.name(), false, false ) );
+        Collections.sort( ips1, new Comparator<InterpolatorProperty>()
         {
-            public int compare(InterpolatorProperty o, InterpolatorProperty o1) {
+            public int compare( InterpolatorProperty o, InterpolatorProperty o1 )
+            {
                 if(o.getTag() == null || o1.getTag() == null)
                 {
                     return 0;
@@ -861,8 +862,52 @@
         });
 
         ModelTransformerContext.interpolateModelProperties( modelProperties, ips1 );
-    }
 
+        //SECOND PASS - Set absolute paths on build directories
+        if ( dm.isPomInBuild() )
+        {
+            String basedir = dm.getProjectDirectory().getAbsolutePath();
+            Map<ModelProperty, ModelProperty> buildDirectories = new HashMap<ModelProperty, ModelProperty>();
+            for ( ModelProperty mp : secondPassModelProperties )
+            {
+                if ( mp.getUri().startsWith( ProjectUri.Build.xUri ) || mp.getUri().equals( ProjectUri.Reporting.outputDirectory ) )
+                {
+                    File file = new File(mp.getResolvedValue());
+                    if( !file.isAbsolute() && !mp.getResolvedValue().startsWith("${project.build.")
+                            && !mp.getResolvedValue().equals("${project.basedir}"))
+                    {
+                        buildDirectories.put( mp, new ModelProperty( mp.getUri(), new File( basedir, file.getPath() ).getAbsolutePath() ) );
+                    }
+                }
+            }
+
+            for ( Map.Entry<ModelProperty, ModelProperty> e : buildDirectories.entrySet() )
+            {
+                secondPassModelProperties.remove( e.getKey() );
+                secondPassModelProperties.add( e.getValue() );
+            }
+        }
+
+        //THIRD PASS - Use build directories as interpolator properties
+        List<InterpolatorProperty> ips2 = new ArrayList<InterpolatorProperty>( interpolatorProperties );
+        ips2.addAll( standardInterpolatorProperties );
+        ips2.addAll( ModelTransformerContext.createInterpolatorProperties( secondPassModelProperties, ProjectUri.baseUri, aliases, PomInterpolatorTag.PROJECT_PROPERTIES.name(), false, false ) );
+        ips2.addAll( interpolatorProperties );
+        Collections.sort( ips2, new Comparator<InterpolatorProperty>()
+        {
+            public int compare( InterpolatorProperty o, InterpolatorProperty o1 )
+            {
+                if(o.getTag() == null || o1.getTag() == null)
+                {
+                    return 0;
+                }
+
+                return PomInterpolatorTag.valueOf( o.getTag() ).compareTo( PomInterpolatorTag.valueOf( o1.getTag() ) );
+            }
+        } );
+
+        ModelTransformerContext.interpolateModelProperties( modelProperties, ips2 );
+    }
     /**
      * Override this method for different preprocessing of model properties.
      *
@@ -960,7 +1005,7 @@
      * @param properties the model properties list to search
      * @return all model properties containing the specified uri from the specified properties list
      */
-    private static List<ModelProperty> getPropertiesFor( String uri, List<ModelProperty> properties )
+    public static List<ModelProperty> getPropertiesFor( String uri, List<ModelProperty> properties )
     {
         List<ModelProperty> modelProperties = new ArrayList<ModelProperty>();
         for ( ModelProperty mp : properties )
@@ -981,7 +1026,7 @@
      * @param properties the model properties list to search
      * @return the first model property containing the specified uri from the specified properties list.
      */
-    private static ModelProperty getPropertyFor( String uri, List<ModelProperty> properties )
+    public static ModelProperty getPropertyFor( String uri, List<ModelProperty> properties )
     {
         for ( ModelProperty mp : properties )
         {

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=746066&r1=746065&r2=746066&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 Fri Feb 20 00:23:19 2009
@@ -14,37 +14,64 @@
 
     private Collection<String> activeProfileIds;
 
-    List<ActiveProfileMatcher> matchers  = Collections.unmodifiableList( Arrays.asList(new ByDefaultMatcher(),
+    private Collection<String> inactiveProfileIds;
+
+    private ActiveProfileMatcher defaultMatcher = new ByDefaultMatcher();
+
+    private List<ActiveProfileMatcher> matchers  = Collections.unmodifiableList( Arrays.asList(
             new FileMatcher(), new JdkMatcher(), new OperatingSystemMatcher(), new PropertyMatcher()
          ) );
 
-    public ProfileContext(ModelDataSource modelDataSource, Collection<String> activeProfileIds,
-                          List<InterpolatorProperty> properties) {
+    public ProfileContext( ModelDataSource modelDataSource, Collection<String> activeProfileIds,
+                           Collection<String> inactiveProfileIds, List<InterpolatorProperty> properties )
+    {
         this.modelDataSource = modelDataSource;
-        this.properties = new ArrayList<InterpolatorProperty>(properties);
-        this.activeProfileIds = (activeProfileIds != null) ? activeProfileIds : new ArrayList<String>();
+        this.properties = new ArrayList<InterpolatorProperty>( properties );
+        this.activeProfileIds = ( activeProfileIds != null ) ? activeProfileIds : new ArrayList<String>();
+        this.inactiveProfileIds = ( inactiveProfileIds != null ) ? inactiveProfileIds : new ArrayList<String>();
     }
 
-    public Collection<ModelContainer> getActiveProfiles() throws DataSourceException {
+    public Collection<ModelContainer> getActiveProfiles()
+        throws DataSourceException
+    {
         List<ModelContainer> matchedContainers = new ArrayList<ModelContainer>();
+        List<ModelContainer> defaultContainers = new ArrayList<ModelContainer>();
 
-        List<ModelContainer> modelContainers  = modelDataSource.queryFor(ProjectUri.Profiles.Profile.xUri);
-        for(ModelContainer mc : modelContainers) {
-            for(ActiveProfileMatcher matcher : matchers) {
-                if(matcher.isMatch(mc, properties)) {
-                    matchedContainers.add(mc);
-                    continue;
-                }
-            }
+        List<ModelContainer> modelContainers = modelDataSource.queryFor( ProjectUri.Profiles.Profile.xUri );
+        for ( ModelContainer mc : modelContainers )
+        {
+            String profileId = getProfileId( mc.getProperties() );
 
-            String profileId = getProfileId(mc.getProperties());
-            if(profileId != null && activeProfileIds.contains(profileId))
+            if ( !inactiveProfileIds.contains( profileId ) )
             {
-                matchedContainers.add(mc);
+                if ( activeProfileIds.contains( profileId ) )
+                {
+                    matchedContainers.add( mc );
+                }
+                else if ( defaultMatcher.isMatch( mc, properties ) )
+                {
+                    defaultContainers.add( mc );
+                }
+                else
+                {
+                    for ( ActiveProfileMatcher matcher : matchers )
+                    {
+                        if ( matcher.isMatch( mc, properties ) )
+                        {
+                            matchedContainers.add( mc );
+                            break;
+                        }
+                    }
+                }
             }
         }
 
-        return matchedContainers;       
+        if ( matchedContainers.isEmpty() )
+        {
+            matchedContainers = defaultContainers;
+        }
+
+        return matchedContainers;
     }
 
     private String getProfileId(List<ModelProperty> modelProperties)

Modified: maven/components/branches/MNG-3932/maven-project-builder/src/main/java/org/apache/maven/project/builder/rules/ExecutionRule.java
URL: http://svn.apache.org/viewvc/maven/components/branches/MNG-3932/maven-project-builder/src/main/java/org/apache/maven/project/builder/rules/ExecutionRule.java?rev=746066&r1=746065&r2=746066&view=diff
==============================================================================
--- maven/components/branches/MNG-3932/maven-project-builder/src/main/java/org/apache/maven/project/builder/rules/ExecutionRule.java (original)
+++ maven/components/branches/MNG-3932/maven-project-builder/src/main/java/org/apache/maven/project/builder/rules/ExecutionRule.java Fri Feb 20 00:23:19 2009
@@ -1,14 +1,11 @@
 package org.apache.maven.project.builder.rules;
 
 import org.apache.maven.shared.model.*;
-import org.apache.maven.shared.model.impl.DefaultModelDataSource;
 import org.apache.maven.project.builder.ProjectUri;
-import org.apache.maven.project.builder.AlwaysJoinModelContainerFactory;
 
 import java.util.List;
 import java.util.ArrayList;
 import java.util.Collections;
-import java.util.Arrays;
 
 public class ExecutionRule implements ModelContainerRule {
 

Propchange: maven/components/branches/MNG-3932/maven-project-builder/src/main/resources/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Fri Feb 20 00:23:19 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,740316-741812,742231-742684,742726-745532
+/maven/components/trunk/maven-project-builder/src/main/resources:739772-740199,740316-741812,742231-742684,742726-745532,745632-746028

Modified: maven/components/branches/MNG-3932/maven-project-builder/src/test/java/org/apache/maven/project/builder/DefaultDomainModel.java
URL: http://svn.apache.org/viewvc/maven/components/branches/MNG-3932/maven-project-builder/src/test/java/org/apache/maven/project/builder/DefaultDomainModel.java?rev=746066&r1=746065&r2=746066&view=diff
==============================================================================
--- maven/components/branches/MNG-3932/maven-project-builder/src/test/java/org/apache/maven/project/builder/DefaultDomainModel.java (original)
+++ maven/components/branches/MNG-3932/maven-project-builder/src/test/java/org/apache/maven/project/builder/DefaultDomainModel.java Fri Feb 20 00:23:19 2009
@@ -2,15 +2,19 @@
 
 import org.apache.maven.shared.model.DomainModel;
 import org.apache.maven.shared.model.ModelProperty;
+import org.apache.maven.shared.model.InputStreamDomainModel;
 
 import java.util.List;
 import java.io.IOException;
+import java.io.File;
+import java.io.InputStream;
 
-public class DefaultDomainModel implements DomainModel {
+public class DefaultDomainModel extends PomClassicDomainModel {
 
     private List<ModelProperty> modelProperties;
 
     public DefaultDomainModel(List<ModelProperty> modelProperties) {
+        super( modelProperties);
         this.modelProperties = modelProperties;
     }
 
@@ -25,4 +29,16 @@
     public void setEventHistory(String s) {
 
     }
+
+    public boolean isPomInBuild() {
+        return false;
+    }
+
+    public File getProjectDirectory() {
+        return null;
+    }
+
+    public InputStream getInputStream() {
+        return null;
+    }
 }

Propchange: maven/components/branches/MNG-3932/maven-project-builder/src/test/java/org/apache/maven/project/builder/EnforcerPomTest.java
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Fri Feb 20 00:23:19 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,740316-741812,742231-742684,742726-745532
+/maven/components/trunk/maven-project-builder/src/test/java/org/apache/maven/project/builder/EnforcerPomTest.java:739772-740199,740316-741812,742231-742684,742726-745532,745632-746028

Modified: maven/components/branches/MNG-3932/maven-project-builder/src/test/java/org/apache/maven/project/builder/PluginSpecTest.java
URL: http://svn.apache.org/viewvc/maven/components/branches/MNG-3932/maven-project-builder/src/test/java/org/apache/maven/project/builder/PluginSpecTest.java?rev=746066&r1=746065&r2=746066&view=diff
==============================================================================
--- maven/components/branches/MNG-3932/maven-project-builder/src/test/java/org/apache/maven/project/builder/PluginSpecTest.java (original)
+++ maven/components/branches/MNG-3932/maven-project-builder/src/test/java/org/apache/maven/project/builder/PluginSpecTest.java Fri Feb 20 00:23:19 2009
@@ -3,6 +3,7 @@
 import static org.junit.Assert.*;
 import org.apache.maven.shared.model.*;
 import org.apache.maven.shared.model.impl.DefaultModelDataSource;
+import org.apache.maven.project.builder.factories.PluginExecutionIdModelContainerFactory;
 
 import java.util.List;
 import java.util.ArrayList;

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=746066&r1=746065&r2=746066&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 Fri Feb 20 00:23:19 2009
@@ -3,14 +3,14 @@
 import org.apache.maven.project.builder.profile.ProfileContext;
 import org.apache.maven.project.builder.PomTransformer;
 import org.apache.maven.project.builder.ProjectUri;
-import org.apache.maven.project.builder.ArtifactModelContainerFactory;
-import org.apache.maven.project.builder.IdModelContainerFactory;
 import org.apache.maven.shared.model.DataSourceException;
 import org.apache.maven.shared.model.InterpolatorProperty;
 import org.apache.maven.shared.model.ModelContainer;
 import org.apache.maven.shared.model.ModelProperty;
 import org.apache.maven.shared.model.impl.DefaultModelDataSource;
-import static org.junit.Assert.assertTrue;
+import org.junit.Test;
+
+import static org.junit.Assert.*;
 
 import java.util.ArrayList;
 import java.util.Arrays;
@@ -19,7 +19,7 @@
 
 public class ProfileContextTest {
 
-    @org.junit.Test
+    @Test
     public void getActiveProfiles() throws DataSourceException {
         List<ModelProperty> modelProperties = new ArrayList<ModelProperty>();
         modelProperties.add(new ModelProperty(ProjectUri.xUri, null));
@@ -35,7 +35,7 @@
         List<InterpolatorProperty> interpolatorProperties = new ArrayList<InterpolatorProperty>();
         interpolatorProperties.add(new InterpolatorProperty( "${foo}", "bar"));
 
-        ProfileContext ctx = new ProfileContext(dataSource, null, interpolatorProperties);
+        ProfileContext ctx = new ProfileContext(dataSource, null, null, interpolatorProperties);
 
         Collection<ModelContainer> profiles = ctx.getActiveProfiles();
 
@@ -43,7 +43,7 @@
 
     }
 
-    @org.junit.Test
+    @Test
     public void getActiveProfilesById() throws DataSourceException {
         List<ModelProperty> modelProperties = new ArrayList<ModelProperty>();
         modelProperties.add(new ModelProperty(ProjectUri.xUri, null));
@@ -55,11 +55,75 @@
 
         List<InterpolatorProperty> interpolatorProperties = new ArrayList<InterpolatorProperty>();
 
-        ProfileContext ctx = new ProfileContext(dataSource, Arrays.asList("test"), interpolatorProperties);
+        ProfileContext ctx = new ProfileContext(dataSource, Arrays.asList("test"), null, interpolatorProperties);
 
         Collection<ModelContainer> profiles = ctx.getActiveProfiles();
 
         assertTrue(profiles.size() == 1);
 
     }
+
+    @Test
+    public void getActiveByDefaultProfilesOnlyActivatedIfNoOtherPomProfilesAreActive()
+        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, "default" ) );
+        modelProperties.add( new ModelProperty( ProjectUri.Profiles.Profile.Activation.xUri, null ) );
+        modelProperties.add( new ModelProperty( ProjectUri.Profiles.Profile.Activation.activeByDefault, "true" ) );
+        modelProperties.add( new ModelProperty( ProjectUri.Profiles.Profile.xUri, null ) );
+        modelProperties.add( new ModelProperty( ProjectUri.Profiles.Profile.id, "explicit" ) );
+
+        DefaultModelDataSource dataSource =
+            new DefaultModelDataSource( modelProperties, PomTransformer.MODEL_CONTAINER_FACTORIES );
+
+        List<InterpolatorProperty> interpolatorProperties = new ArrayList<InterpolatorProperty>();
+
+        ProfileContext ctx = new ProfileContext( dataSource, Arrays.asList( "explicit" ), null, interpolatorProperties );
+
+        Collection<ModelContainer> profiles = ctx.getActiveProfiles();
+
+        assertEquals( 1, profiles.size() );
+        assertProperty( profiles.iterator().next().getProperties(), ProjectUri.Profiles.Profile.id, "explicit" );
+    }
+
+    @Test
+    public void getDeactivateProfiles()
+        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, "default" ) );
+        modelProperties.add( new ModelProperty( ProjectUri.Profiles.Profile.Activation.xUri, null ) );
+        modelProperties.add( new ModelProperty( ProjectUri.Profiles.Profile.Activation.activeByDefault, "true" ) );
+
+        DefaultModelDataSource dataSource =
+            new DefaultModelDataSource( modelProperties, PomTransformer.MODEL_CONTAINER_FACTORIES );
+
+        List<InterpolatorProperty> interpolatorProperties = new ArrayList<InterpolatorProperty>();
+
+        ProfileContext ctx = new ProfileContext( dataSource, null, Arrays.asList( "default" ), interpolatorProperties );
+
+        Collection<ModelContainer> profiles = ctx.getActiveProfiles();
+
+        assertEquals( 0, profiles.size() );
+    }
+
+    private void assertProperty( Collection<ModelProperty> properties, String uri, String value )
+    {
+        for ( ModelProperty property : properties )
+        {
+            if ( uri.equals( property.getUri() ) && value.equals( property.getValue() ) )
+            {
+                return;
+            }
+        }
+        fail( "missing model property " + uri + " = " + value );
+    }
+
 }

Modified: maven/components/branches/MNG-3932/maven-project-spec.pdf
URL: http://svn.apache.org/viewvc/maven/components/branches/MNG-3932/maven-project-spec.pdf?rev=746066&r1=746065&r2=746066&view=diff
==============================================================================
Binary files - no diff available.

Propchange: maven/components/branches/MNG-3932/maven-project/src/main/java/org/apache/maven/profiles/AlwaysOnActivation.java
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Fri Feb 20 00:23:19 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,740316-741812,742231-742684,742726-745532
+/maven/components/trunk/maven-project/src/main/java/org/apache/maven/profiles/AlwaysOnActivation.java:739772-740199,740316-741812,742231-742684,742726-745532,745632-746028

Propchange: maven/components/branches/MNG-3932/maven-project/src/main/java/org/apache/maven/profiles/DefaultMavenProfilesBuilder.java
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Fri Feb 20 00:23:19 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,740316-741812,742231-742684,742726-745532
+/maven/components/trunk/maven-project/src/main/java/org/apache/maven/profiles/DefaultMavenProfilesBuilder.java:739772-740199,740316-741812,742231-742684,742726-745532,745632-746028