You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by si...@apache.org on 2009/02/27 18:28:55 UTC

svn commit: r748609 - in /maven/components/trunk: maven-core/src/main/java/org/apache/maven/plugin/ maven-embedder/src/main/java/org/apache/maven/embedder/execution/ maven-project/src/main/java/org/apache/maven/profiles/ maven-project/src/main/java/org...

Author: sisbell
Date: Fri Feb 27 17:28:54 2009
New Revision: 748609

URL: http://svn.apache.org/viewvc?rev=748609&view=rev
Log:
Replaced the old profile injector code with new profile code. Merged project builders.

Added:
    maven/components/trunk/maven-project/src/main/java/org/apache/maven/profiles/activation/ProfileActivationContext.java   (contents, props changed)
      - copied, changed from r748339, maven/components/trunk/maven-project/src/main/java/org/apache/maven/profiles/activation/DefaultProfileActivationContext.java
Removed:
    maven/components/trunk/maven-project/src/main/java/org/apache/maven/profiles/activation/DefaultProfileActivationContext.java
    maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/DefaultProjectBuilder.java
    maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/ProjectBuilder.java
    maven/components/trunk/maven-project/src/main/java/org/apache/maven/repository/
Modified:
    maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginManager.java
    maven/components/trunk/maven-embedder/src/main/java/org/apache/maven/embedder/execution/DefaultMavenExecutionRequestPopulator.java
    maven/components/trunk/maven-project/src/main/java/org/apache/maven/profiles/DefaultProfileManager.java
    maven/components/trunk/maven-project/src/main/java/org/apache/maven/profiles/injection/DefaultProfileInjector.java
    maven/components/trunk/maven-project/src/main/java/org/apache/maven/profiles/injection/ProfileInjector.java
    maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java
    maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/MavenProjectBuilder.java
    maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/artifact/MavenMetadataSource.java
    maven/components/trunk/maven-project/src/test/java/org/apache/maven/profiles/injection/DefaultProfileInjectorTest.java
    maven/components/trunk/maven-project/src/test/java/org/apache/maven/profiles/manager/DefaultProfileManagerTest.java
    maven/components/trunk/maven-project/src/test/java/org/apache/maven/project/AbstractMavenProjectTestCase.java
    maven/components/trunk/maven-project/src/test/java/org/apache/maven/project/SuperPomProjectBuilderTest.java
    maven/components/trunk/maven-project/src/test/java/org/apache/maven/project/builder/PomConstructionTest.java
    maven/components/trunk/maven-project/src/test/java/org/apache/maven/project/injection/TestProfileInjector.java

Modified: maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginManager.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginManager.java?rev=748609&r1=748608&r2=748609&view=diff
==============================================================================
--- maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginManager.java (original)
+++ maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginManager.java Fri Feb 27 17:28:54 2009
@@ -68,7 +68,6 @@
 import org.apache.maven.project.DuplicateArtifactAttachmentException;
 import org.apache.maven.project.MavenProject;
 import org.apache.maven.project.MavenProjectBuilder;
-import org.apache.maven.project.ProjectBuilder;
 import org.apache.maven.project.ProjectBuildingException;
 import org.apache.maven.project.artifact.InvalidDependencyVersionException;
 import org.apache.maven.project.builder.PomInterpolatorTag;
@@ -156,9 +155,6 @@
     @Requirement
     private PluginRepository pluginRepository;
 
-    @Requirement
-    private ProjectBuilder projectBuilder;
-
     public DefaultPluginManager()
     {
         pluginDescriptorBuilder = new PluginDescriptorBuilder();

Modified: maven/components/trunk/maven-embedder/src/main/java/org/apache/maven/embedder/execution/DefaultMavenExecutionRequestPopulator.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-embedder/src/main/java/org/apache/maven/embedder/execution/DefaultMavenExecutionRequestPopulator.java?rev=748609&r1=748608&r2=748609&view=diff
==============================================================================
--- maven/components/trunk/maven-embedder/src/main/java/org/apache/maven/embedder/execution/DefaultMavenExecutionRequestPopulator.java (original)
+++ maven/components/trunk/maven-embedder/src/main/java/org/apache/maven/embedder/execution/DefaultMavenExecutionRequestPopulator.java Fri Feb 27 17:28:54 2009
@@ -40,7 +40,6 @@
 import org.apache.maven.monitor.event.EventMonitor;
 import org.apache.maven.profiles.DefaultProfileManager;
 import org.apache.maven.profiles.ProfileManager;
-import org.apache.maven.profiles.activation.DefaultProfileActivationContext;
 import org.apache.maven.profiles.activation.ProfileActivationContext;
 import org.apache.maven.realm.DefaultMavenRealmManager;
 import org.apache.maven.repository.MavenRepositorySystem;
@@ -568,7 +567,7 @@
         ProfileActivationContext activationContext = request.getProfileActivationContext();
         if ( activationContext == null )
         {
-            activationContext = new DefaultProfileActivationContext( request.getProperties(), false );
+            activationContext = new ProfileActivationContext( request.getProperties(), false );
         }
 
         activationContext.setExplicitlyActiveProfileIds( request.getActiveProfiles() );

Modified: maven/components/trunk/maven-project/src/main/java/org/apache/maven/profiles/DefaultProfileManager.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-project/src/main/java/org/apache/maven/profiles/DefaultProfileManager.java?rev=748609&r1=748608&r2=748609&view=diff
==============================================================================
--- maven/components/trunk/maven-project/src/main/java/org/apache/maven/profiles/DefaultProfileManager.java (original)
+++ maven/components/trunk/maven-project/src/main/java/org/apache/maven/profiles/DefaultProfileManager.java Fri Feb 27 17:28:54 2009
@@ -24,7 +24,6 @@
 import org.apache.maven.model.Profile;
 import org.apache.maven.model.Parent;
 import org.apache.maven.model.io.xpp3.MavenXpp3Writer;
-import org.apache.maven.profiles.activation.DefaultProfileActivationContext;
 import org.apache.maven.profiles.activation.ProfileActivationContext;
 import org.apache.maven.profiles.activation.ProfileActivationException;
 import org.apache.maven.shared.model.ModelContainer;
@@ -87,7 +86,7 @@
     private ProfileActivationContext createDefaultActivationContext()
     {
 
-        return new DefaultProfileActivationContext(System.getProperties(), false );
+        return new ProfileActivationContext(System.getProperties(), false );
     }
 
     public ProfileActivationContext getProfileActivationContext()

Copied: maven/components/trunk/maven-project/src/main/java/org/apache/maven/profiles/activation/ProfileActivationContext.java (from r748339, maven/components/trunk/maven-project/src/main/java/org/apache/maven/profiles/activation/DefaultProfileActivationContext.java)
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-project/src/main/java/org/apache/maven/profiles/activation/ProfileActivationContext.java?p2=maven/components/trunk/maven-project/src/main/java/org/apache/maven/profiles/activation/ProfileActivationContext.java&p1=maven/components/trunk/maven-project/src/main/java/org/apache/maven/profiles/activation/DefaultProfileActivationContext.java&r1=748339&r2=748609&rev=748609&view=diff
==============================================================================
--- maven/components/trunk/maven-project/src/main/java/org/apache/maven/profiles/activation/DefaultProfileActivationContext.java (original)
+++ maven/components/trunk/maven-project/src/main/java/org/apache/maven/profiles/activation/ProfileActivationContext.java Fri Feb 27 17:28:54 2009
@@ -25,8 +25,7 @@
 import java.util.List;
 import java.util.Properties;
 
-public class DefaultProfileActivationContext
-    implements ProfileActivationContext
+public class ProfileActivationContext
 {
 
     private boolean isCustomActivatorFailureSuppressed;
@@ -39,7 +38,7 @@
 
     private List activeByDefault;
 
-    public DefaultProfileActivationContext( Properties executionProperties, boolean isCustomActivatorFailureSuppressed )
+    public ProfileActivationContext( Properties executionProperties, boolean isCustomActivatorFailureSuppressed )
     {
         this.executionProperties = executionProperties;
         this.isCustomActivatorFailureSuppressed = isCustomActivatorFailureSuppressed;

Propchange: maven/components/trunk/maven-project/src/main/java/org/apache/maven/profiles/activation/ProfileActivationContext.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/components/trunk/maven-project/src/main/java/org/apache/maven/profiles/activation/ProfileActivationContext.java
------------------------------------------------------------------------------
    svn:keywords = Author Date Id Revision

Propchange: maven/components/trunk/maven-project/src/main/java/org/apache/maven/profiles/activation/ProfileActivationContext.java
------------------------------------------------------------------------------
--- svn:mergeinfo (added)
+++ svn:mergeinfo Fri Feb 27 17:28:54 2009
@@ -0,0 +1,7 @@
+/maven/components/branches/MNG-3932-1/maven-project/src/main/java/org/apache/maven/profiles/activation/DefaultProfileActivationContext.java:746145-746157
+/maven/components/branches/maven-2.0.10-RC/maven-project/src/main/java/org/apache/maven/profiles/activation/DefaultProfileActivationContext.java:680477
+/maven/components/branches/maven-2.0.x/maven-project/src/main/java/org/apache/maven/profiles/activation/DefaultProfileActivationContext.java:679206,708871,720042,726541,727548,727998,728264,728940,729060,729738,729785,730631
+/maven/components/branches/maven-2.1.x/maven-project/src/main/java/org/apache/maven/profiles/activation/DefaultProfileActivationContext.java:739385,741841,747468
+/maven/components/branches/sisbell-plugin-manager/maven-project/src/main/java/org/apache/maven/profiles/activation/DefaultProfileActivationContext.java:738973-739966
+/maven/components/sisbell-plugin-manager/maven-project/src/main/java/org/apache/maven/profiles/activation/DefaultProfileActivationContext.java:738757-738972
+/maven/components/trunk/maven-project/src/main/java/org/apache/maven/profiles/activation/DefaultProfileActivationContext.java:688587-696625,696644-699681

Modified: maven/components/trunk/maven-project/src/main/java/org/apache/maven/profiles/injection/DefaultProfileInjector.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-project/src/main/java/org/apache/maven/profiles/injection/DefaultProfileInjector.java?rev=748609&r1=748608&r2=748609&view=diff
==============================================================================
--- maven/components/trunk/maven-project/src/main/java/org/apache/maven/profiles/injection/DefaultProfileInjector.java (original)
+++ maven/components/trunk/maven-project/src/main/java/org/apache/maven/profiles/injection/DefaultProfileInjector.java Fri Feb 27 17:28:54 2009
@@ -20,599 +20,150 @@
  */
 
 import org.apache.maven.model.*;
-import org.apache.maven.project.ModelUtils;
+import org.apache.maven.model.io.xpp3.MavenXpp3Writer;
+import org.apache.maven.model.io.xpp3.MavenXpp3Reader;
+import org.apache.maven.project.builder.*;
+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.component.annotations.Component;
-import org.codehaus.plexus.util.StringUtils;
-import org.codehaus.plexus.util.xml.Xpp3Dom;
-
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.LinkedHashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Properties;
+import org.codehaus.plexus.util.xml.pull.XmlSerializer;
+import org.codehaus.plexus.util.xml.pull.MXSerializer;
+import org.codehaus.plexus.util.xml.pull.XmlPullParserException;
+import org.codehaus.plexus.util.WriterFactory;
+import org.codehaus.plexus.util.ReaderFactory;
+
+import java.util.*;
+import java.io.*;
+import java.lang.reflect.Method;
 
 /**
  * Inject profile data into a Model, using the profile as the dominant data source, and
  * persisting results of the injection in the Model.
- * <p/>
- * This will look similar to the ModelUtils/DefaultModelInheritanceAssembler code, but
- * they are distinct. In model inheritance, the child provides data dominance AND persists
- * the results of the merge...sort of a 'merge-out' system.
- * <p/>
- * In this system, the profile is dominant, but the model receives the merge result...sort
- * of a 'merge-in' system. The two pieces of code look like they could be combined with a
- * set of flags to determine which direction to merge 'to', but there are enough differences
- * in the code to justify the extra code involved with separating them, in order to simplify
- * the logic.
  */
 @Component(role = ProfileInjector.class)
 public class DefaultProfileInjector
     implements ProfileInjector
 {
-    public void inject( Profile profile, Model model )
-    {
-
-        model.setDependencies( injectDependencies( profile.getDependencies(), model.getDependencies() ) );
-
-        injectModules( profile, model );
-
-        model.setRepositories( ModelUtils.mergeRepositoryLists( profile.getRepositories(), model.getRepositories() ) );
-        model.setPluginRepositories( ModelUtils.mergeRepositoryLists( profile.getPluginRepositories(), model.getPluginRepositories() ) );
-
-        injectReporting( profile, model );
-
-        injectDependencyManagement( profile, model );
-
-        injectDistributionManagement( profile, model );
-
-        injectBuild( profile, model );
-
-        Properties props = new Properties();
-        props.putAll( model.getProperties() );
-        props.putAll( profile.getProperties() );
-
-        model.setProperties( props );
-    }
-
-    private void injectBuild( Profile profile, Model model )
-    {
-        BuildBase profileBuild = profile.getBuild();
-        Build modelBuild = model.getBuild();
-
-        // if the parent build is null, obviously we cannot inherit from it...
-        if ( profileBuild != null )
-        {
-            if ( modelBuild == null )
-            {
-                modelBuild = new Build();
-                model.setBuild( modelBuild );
-            }
-
-            if ( profileBuild.getDirectory() != null )
-            {
-                modelBuild.setDirectory( profileBuild.getDirectory() );
-            }
-
-            if ( profileBuild.getDefaultGoal() != null )
-            {
-                modelBuild.setDefaultGoal( profileBuild.getDefaultGoal() );
-            }
-
-            if ( profileBuild.getFinalName() != null )
-            {
-                modelBuild.setFinalName( profileBuild.getFinalName() );
-            }
-
-            ModelUtils.mergeFilterLists( modelBuild.getFilters(), profileBuild.getFilters() );
-            mergeResourceLists( modelBuild.getResources(), profileBuild.getResources() );
-            mergeResourceLists( modelBuild.getTestResources(), profileBuild.getTestResources() );
-
-            injectPlugins( profileBuild, modelBuild );
-
-            // Plugin management :: aggregate
-            PluginManagement profilePM = profileBuild.getPluginManagement();
-            PluginManagement modelPM = modelBuild.getPluginManagement();
-
-            if ( modelPM == null )
-            {
-                modelBuild.setPluginManagement( profilePM );
-            }
-            else
-            {
-                injectPlugins( profilePM, modelPM );
-            }
-        }
-    }
-
-    /**
-     * This should be the resulting ordering of plugins after injection:
-     * <p/>
-     * Given:
-     * <p/>
-     * model: X -> A -> B -> D -> E
-     * profile: Y -> A -> C -> D -> F
-     * <p/>
-     * Result:
-     * <p/>
-     * X -> Y -> A -> B -> C -> D -> E -> F
-     */
-    protected void injectPlugins( PluginContainer profileContainer, PluginContainer modelContainer )
+    public Model inject( Profile profile, Model model )
     {
-        if ( ( profileContainer == null ) || ( modelContainer == null ) )
+        //TODO: Using reflection now. Need to replace with custom mapper
+        StringWriter writer = new StringWriter();
+        XmlSerializer serializer = new MXSerializer();
+        serializer.setProperty( "http://xmlpull.org/v1/doc/properties.html#serializer-indentation", "  " );
+        serializer.setProperty( "http://xmlpull.org/v1/doc/properties.html#serializer-line-separator", "\n" );
+        try
         {
-            // nothing to do...
-            return;
-        }
+            serializer.setOutput( writer );
+            serializer.startDocument("UTF-8", null );
+        } catch (IOException e) {
 
-        List modelPlugins = modelContainer.getPlugins();
-
-        if ( modelPlugins == null )
-        {
-            modelContainer.setPlugins( profileContainer.getPlugins() );
         }
-        else if ( profileContainer.getPlugins() != null )
-        {
-            List mergedPlugins = new ArrayList();
 
-            Map profilePlugins = profileContainer.getPluginsAsMap();
+        try {
+            MavenXpp3Writer w = new MavenXpp3Writer();
+            Class c = Class.forName("org.apache.maven.model.io.xpp3.MavenXpp3Writer");
 
-            for ( Iterator it = modelPlugins.iterator(); it.hasNext(); )
-            {
-                Plugin modelPlugin = (Plugin) it.next();
+            Class partypes[] = new Class[3];
+            partypes[0] = Profile.class;
+            partypes[1] = String.class;
+            partypes[2] = XmlSerializer.class;
 
-                Plugin profilePlugin = (Plugin) profilePlugins.get( modelPlugin.getKey() );
+            Method meth = c.getDeclaredMethod(
+                         "writeProfile", partypes);
+            meth.setAccessible(true);
 
-                if ( ( profilePlugin != null ) && !mergedPlugins.contains( profilePlugin ) )
-                {
-                    Plugin mergedPlugin = modelPlugin;
-
-                    injectPluginDefinition( profilePlugin, modelPlugin );
+            Object arglist[] = new Object[3];
+            arglist[0] = profile;
+            arglist[1] = "profile";
+            arglist[2] = serializer;
 
-                    mergedPlugins.add( mergedPlugin );
-                }
-            }
-
-            List results = ModelUtils.orderAfterMerge( mergedPlugins, modelPlugins, profileContainer.getPlugins() );
-
-            modelContainer.setPlugins( results );
-
-            modelContainer.flushPluginMap();
+            meth.invoke(w, arglist);
+            serializer.endDocument();
         }
-    }
-
-    private void injectPluginDefinition( Plugin profilePlugin, Plugin modelPlugin )
-    {
-        if ( ( profilePlugin == null ) || ( modelPlugin == null ) )
-        {
-            // nothing to do.
-            return;
-        }
-
-        if ( profilePlugin.isExtensions() )
+        catch (Exception e)
         {
-            modelPlugin.setExtensions( true );
+            return null;
         }
+        Set<String> uris = new HashSet(PomTransformer.URIS);
+        uris.add(ProjectUri.Profiles.Profile.Build.Plugins.Plugin.configuration);
 
-        if ( profilePlugin.getVersion() != null )
+        List<ModelProperty> p;
+        try
         {
-            modelPlugin.setVersion( profilePlugin.getVersion() );
+            p = ModelMarshaller.marshallXmlToModelProperties(new ByteArrayInputStream(writer.getBuffer().toString().getBytes()),
+                    ProjectUri.Profiles.xUri, uris);
+        } catch (IOException e) {
+            return null;
         }
 
-        modelPlugin.setDependencies(
-            injectDependencies( profilePlugin.getDependencies(), modelPlugin.getDependencies() ) );
-
-        // merge the lists of goals that are not attached to an <execution/>
-        injectConfigurationContainer( profilePlugin, modelPlugin );
-
-        // from here to the end of the method is dealing with merging of the <executions/> section.
-        List modelExecutions = modelPlugin.getExecutions();
-
-        if ( ( modelExecutions == null ) || modelExecutions.isEmpty() )
-        {
-            modelPlugin.setExecutions( profilePlugin.getExecutions() );
-        }
-        else
-        {
-            Map executions = new LinkedHashMap();
-
-            Map profileExecutions = profilePlugin.getExecutionsAsMap();
-
-            for ( Iterator it = modelExecutions.iterator(); it.hasNext(); )
-            {
-                PluginExecution modelExecution = (PluginExecution) it.next();
-
-                PluginExecution profileExecution = (PluginExecution) profileExecutions.get( modelExecution.getId() );
-
-                if ( profileExecution != null )
-                {
-                    injectConfigurationContainer( profileExecution, modelExecution );
-
-                    if ( profileExecution.getPhase() != null )
-                    {
-                        modelExecution.setPhase( profileExecution.getPhase() );
-                    }
-
-                    List profileGoals = profileExecution.getGoals();
-                    List modelGoals = modelExecution.getGoals();
-
-                    List goals = new ArrayList();
-
-                    if ( ( modelGoals != null ) && !modelGoals.isEmpty() )
-                    {
-                        goals.addAll( modelGoals );
-                    }
-
-                    if ( profileGoals != null )
-                    {
-                        for ( Iterator goalIterator = profileGoals.iterator(); goalIterator.hasNext(); )
-                        {
-                            String goal = (String) goalIterator.next();
-
-                            if ( !goals.contains( goal ) )
-                            {
-                                goals.add( goal );
-                            }
-                        }
-                    }
-
-                    modelExecution.setGoals( goals );
-                }
-
-                executions.put( modelExecution.getId(), modelExecution );
-            }
-
-            for ( Iterator it = profileExecutions.entrySet().iterator(); it.hasNext(); )
+            List<ModelProperty> transformed = new ArrayList<ModelProperty>();
+            for(ModelProperty mp : p)
             {
-                Map.Entry entry = (Map.Entry) it.next();
-
-                String id = (String) entry.getKey();
-
-                if ( !executions.containsKey( id ) )
-                {
-                    executions.put( id, entry.getValue() );
-                }
-            }
-
-            modelPlugin.setExecutions( new ArrayList( executions.values() ) );
-
-            modelPlugin.flushExecutionMap();
-        }
-
-    }
-
-    /**
-     * Merge two DOMs. Copy the dominant DOM so the original one is left unchanged.
-     * <p/>
-     * Use this method instead of a direct call to {@link Xpp3Dom#mergeXpp3Dom(Xpp3Dom, Xpp3Dom)}.
-     * Profiles are dominant, thus they are merge targets, but they may be merged in several times
-     * (e.g. if they are inherited). So with the second merge, you don't get the profile's original
-     * DOM, but an already merged one.
-     *
-     * @param dominant  Dominant DOM
-     * @param recessive Recessive DOM
-     * @return Merged DOM
-     */
-    private Xpp3Dom merge( Xpp3Dom dominant, Xpp3Dom recessive )
-    {
-        Xpp3Dom dominantCopy = ( dominant == null ) ? null : new Xpp3Dom( dominant );
-        return Xpp3Dom.mergeXpp3Dom( dominantCopy, recessive );
-    }
-
-    private void injectConfigurationContainer( ConfigurationContainer profileContainer,
-                                               ConfigurationContainer modelContainer )
-    {
-        Xpp3Dom configuration = (Xpp3Dom) profileContainer.getConfiguration();
-        Xpp3Dom parentConfiguration = (Xpp3Dom) modelContainer.getConfiguration();
-
-        configuration = merge( configuration, parentConfiguration );
-
-        modelContainer.setConfiguration( configuration );
-    }
-
-    /**
-     * Append modules specified in the profile to the end of the list supplied by the model, if
-     * they don't already exist.
-     */
-    private void injectModules( Profile profile, Model model )
-    {
-        List modules = new ArrayList();
-
-        List modelModules = model.getModules();
-
-        if ( ( modelModules != null ) && !modelModules.isEmpty() )
-        {
-            modules.addAll( modelModules );
-        }
-
-        List profileModules = profile.getModules();
-
-        if ( profileModules != null )
-        {
-            for ( Iterator it = profileModules.iterator(); it.hasNext(); )
-            {
-                String module = (String) it.next();
-
-                if ( !modules.contains( module ) )
+                if(mp.getUri().startsWith(ProjectUri.Profiles.Profile.xUri) && !mp.getUri().equals(ProjectUri.Profiles.Profile.id)
+                        && !mp.getUri().startsWith(ProjectUri.Profiles.Profile.Activation.xUri) )
                 {
-                    modules.add( module );
+                    transformed.add(new ModelProperty(mp.getUri().replace(ProjectUri.Profiles.Profile.xUri, ProjectUri.xUri),
+                            mp.getResolvedValue()));
                 }
             }
-        }
-
-        model.setModules( modules );
-    }
 
-    private void injectDistributionManagement( Profile profile, Model model )
-    {
-        DistributionManagement pDistMgmt = profile.getDistributionManagement();
-        DistributionManagement mDistMgmt = model.getDistributionManagement();
+        PomTransformer transformer = new PomTransformer( new PomClassicDomainModelFactory() );
+        ModelTransformerContext ctx = new ModelTransformerContext(PomTransformer.MODEL_CONTAINER_INFOS );
 
-        if ( mDistMgmt == null )
-        {
-            model.setDistributionManagement( pDistMgmt );
+        PomClassicDomainModel transformedDomainModel;
+        try {
+            transformedDomainModel = ( (PomClassicDomainModel) ctx.transform( Arrays.asList(  new PomClassicDomainModel(transformed), convertToDomainModel(model)), 
+                                                                                                    transformer,
+                                                                                                    transformer,
+                                                                                                    Collections.EMPTY_LIST,
+                                                                                                    null,
+                                                                                                    null ) );
+            return convertFromInputStreamToModel(transformedDomainModel.getInputStream());
+        } catch (IOException e) {
+            e.printStackTrace();
+            return null;
         }
-        else if ( pDistMgmt != null )
-        {
-            if ( pDistMgmt.getRepository() != null )
-            {
-                mDistMgmt.setRepository( pDistMgmt.getRepository() );
-            }
-
-            if ( pDistMgmt.getSnapshotRepository() != null )
-            {
-                mDistMgmt.setSnapshotRepository( pDistMgmt.getSnapshotRepository() );
-            }
-
-            if ( StringUtils.isNotEmpty( pDistMgmt.getDownloadUrl() ) )
-            {
-                mDistMgmt.setDownloadUrl( pDistMgmt.getDownloadUrl() );
-            }
 
-            if ( pDistMgmt.getRelocation() != null )
-            {
-                mDistMgmt.setRelocation( pDistMgmt.getRelocation() );
-            }
 
-            if ( pDistMgmt.getSite() != null )
-            {
-                mDistMgmt.setSite( pDistMgmt.getSite() );
-            }
-
-            // NOTE: We SHOULD NOT be inheriting status, since this is an assessment of the POM quality.
-        }
     }
 
-    private void injectDependencyManagement( Profile profile, Model model )
+    private PomClassicDomainModel convertToDomainModel(Model model) throws IOException
     {
-        DependencyManagement modelDepMgmt = model.getDependencyManagement();
-
-        DependencyManagement profileDepMgmt = profile.getDependencyManagement();
-
-        if ( profileDepMgmt != null )
+        if ( model == null )
         {
-            if ( modelDepMgmt == null )
-            {
-                model.setDependencyManagement( profileDepMgmt );
-            }
-            else
-            {
-                Map depsMap = new LinkedHashMap();
-
-                List deps = modelDepMgmt.getDependencies();
-
-                if ( deps != null )
-                {
-                    for ( Iterator it = deps.iterator(); it.hasNext(); )
-                    {
-                        Dependency dependency = (Dependency) it.next();
-                        depsMap.put( dependency.getManagementKey(), dependency );
-                    }
-                }
-
-                deps = profileDepMgmt.getDependencies();
-
-                if ( deps != null )
-                {
-                    for ( Iterator it = deps.iterator(); it.hasNext(); )
-                    {
-                        Dependency dependency = (Dependency) it.next();
-                        depsMap.put( dependency.getManagementKey(), dependency );
-                    }
-                }
-
-                modelDepMgmt.setDependencies( new ArrayList( depsMap.values() ) );
-            }
+            throw new IllegalArgumentException( "model: null" );
         }
-    }
-
-    private void injectReporting( Profile profile, Model model )
-    {
-        // Reports :: aggregate
-        Reporting profileReporting = profile.getReporting();
-        Reporting modelReporting = model.getReporting();
-
-        if ( profileReporting != null )
+        ByteArrayOutputStream baos = new ByteArrayOutputStream();
+        Writer out = null;
+        MavenXpp3Writer writer = new MavenXpp3Writer();
+        try
         {
-            if ( modelReporting == null )
-            {
-                model.setReporting( profileReporting );
-            }
-            else
-            {
-                if ( StringUtils.isEmpty( modelReporting.getOutputDirectory() ) )
-                {
-                    modelReporting.setOutputDirectory( profileReporting.getOutputDirectory() );
-                }
-
-                Map mergedReportPlugins = new LinkedHashMap();
-
-                Map profileReportersByKey = profileReporting.getReportPluginsAsMap();
-
-                List modelReportPlugins = modelReporting.getPlugins();
-
-                if ( modelReportPlugins != null )
-                {
-                    for ( Iterator it = modelReportPlugins.iterator(); it.hasNext(); )
-                    {
-                        ReportPlugin modelReportPlugin = (ReportPlugin) it.next();
-
-                        String inherited = modelReportPlugin.getInherited();
-
-                        if ( StringUtils.isEmpty( inherited ) || Boolean.valueOf( inherited ).booleanValue() )
-                        {
-                            ReportPlugin profileReportPlugin = (ReportPlugin) profileReportersByKey
-                                .get( modelReportPlugin.getKey() );
-
-                            ReportPlugin mergedReportPlugin = modelReportPlugin;
-
-                            if ( profileReportPlugin != null )
-                            {
-                                mergedReportPlugin = profileReportPlugin;
-
-                                mergeReportPlugins( profileReportPlugin, modelReportPlugin );
-                            }
-                            else if ( StringUtils.isEmpty( inherited ) )
-                            {
-                                mergedReportPlugin.unsetInheritanceApplied();
-                            }
-
-                            mergedReportPlugins.put( mergedReportPlugin.getKey(), mergedReportPlugin );
-                        }
-                    }
-                }
-
-                for ( Iterator it = profileReportersByKey.entrySet().iterator(); it.hasNext(); )
-                {
-                    Map.Entry entry = (Map.Entry) it.next();
-
-                    String key = (String) entry.getKey();
-
-                    if ( !mergedReportPlugins.containsKey( key ) )
-                    {
-                        mergedReportPlugins.put( key, entry.getValue() );
-                    }
-                }
-
-                modelReporting.setPlugins( new ArrayList( mergedReportPlugins.values() ) );
-
-                modelReporting.flushReportPluginMap();
-            }
+            out = WriterFactory.newXmlWriter( baos );
+            writer.write( out, model );
         }
-    }
-
-    private void mergeReportPlugins( ReportPlugin dominant, ReportPlugin recessive )
-    {
-        if ( StringUtils.isEmpty( recessive.getVersion() ) )
-        {
-            recessive.setVersion( dominant.getVersion() );
-        }
-
-        Xpp3Dom dominantConfig = (Xpp3Dom) dominant.getConfiguration();
-        Xpp3Dom recessiveConfig = (Xpp3Dom) recessive.getConfiguration();
-
-        recessive.setConfiguration( merge( dominantConfig, recessiveConfig ) );
-
-        Map mergedReportSets = new LinkedHashMap();
-
-        Map dominantReportSetsById = dominant.getReportSetsAsMap();
-
-        for ( Iterator it = recessive.getReportSets().iterator(); it.hasNext(); )
+        finally
         {
-            ReportSet recessiveReportSet = (ReportSet) it.next();
-
-            ReportSet dominantReportSet = (ReportSet) dominantReportSetsById.get( recessiveReportSet.getId() );
-
-            ReportSet merged = recessiveReportSet;
-
-            if ( dominantReportSet != null )
+            if ( out != null )
             {
-                merged = recessiveReportSet;
-
-                Xpp3Dom dominantRSConfig = (Xpp3Dom) dominantReportSet.getConfiguration();
-                Xpp3Dom mergedRSConfig = (Xpp3Dom) merged.getConfiguration();
-
-                merged.setConfiguration( merge( dominantRSConfig, mergedRSConfig ) );
-
-                List mergedReports = merged.getReports();
-
-                if ( mergedReports == null )
-                {
-                    mergedReports = new ArrayList();
-
-                    merged.setReports( mergedReports );
-                }
-
-                List dominantRSReports = dominantReportSet.getReports();
-
-                if ( dominantRSReports != null )
-                {
-                    for ( Iterator reportIterator = dominantRSReports.iterator(); reportIterator.hasNext(); )
-                    {
-                        String report = (String) reportIterator.next();
-
-                        if ( !mergedReports.contains( report ) )
-                        {
-                            mergedReports.add( report );
-                        }
-                    }
-                }
-
-                mergedReportSets.put( merged.getId(), merged );
+                out.close();
             }
         }
-
-        for ( Iterator rsIterator = dominantReportSetsById.entrySet().iterator(); rsIterator.hasNext(); )
-        {
-            Map.Entry entry = (Map.Entry) rsIterator.next();
-
-            String key = (String) entry.getKey();
-
-            if ( !mergedReportSets.containsKey( key ) )
-            {
-                mergedReportSets.put( key, entry.getValue() );
-            }
-        }
-
-        recessive.setReportSets( new ArrayList( mergedReportSets.values() ) );
-
-        recessive.flushReportSetMap();
+        return new PomClassicDomainModel(new ByteArrayInputStream(baos.toByteArray()));
     }
 
-    private List injectDependencies( List profileDeps, List modelDeps )
+    private static Model convertFromInputStreamToModel(InputStream inputStream) throws IOException
     {
-        Map depsMap = new LinkedHashMap();
 
-        if ( modelDeps != null )
+        try
         {
-            for ( Iterator it = modelDeps.iterator(); it.hasNext(); )
-            {
-                Dependency dependency = (Dependency) it.next();
-                depsMap.put( dependency.getManagementKey(), dependency );
-            }
+            return new MavenXpp3Reader().read( ReaderFactory.newXmlReader( inputStream ) );
         }
-
-        if ( profileDeps != null )
+        catch ( XmlPullParserException e )
         {
-            for ( Iterator it = profileDeps.iterator(); it.hasNext(); )
-            {
-                Dependency dependency = (Dependency) it.next();
-                depsMap.put( dependency.getManagementKey(), dependency );
-            }
+            throw new IOException( e.getMessage() );
         }
 
-        return new ArrayList( depsMap.values() );
     }
 
-    private static void mergeResourceLists( List childResources, List parentResources )
-    {
-        for ( Iterator i = parentResources.iterator(); i.hasNext(); )
-        {
-            Resource r = (Resource) i.next();
-            if ( !childResources.contains( r ) )
-            {
-                childResources.add( r );
-            }
-        }
-    }
 }

Modified: maven/components/trunk/maven-project/src/main/java/org/apache/maven/profiles/injection/ProfileInjector.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-project/src/main/java/org/apache/maven/profiles/injection/ProfileInjector.java?rev=748609&r1=748608&r2=748609&view=diff
==============================================================================
--- maven/components/trunk/maven-project/src/main/java/org/apache/maven/profiles/injection/ProfileInjector.java (original)
+++ maven/components/trunk/maven-project/src/main/java/org/apache/maven/profiles/injection/ProfileInjector.java Fri Feb 27 17:28:54 2009
@@ -26,6 +26,6 @@
 {
     String ROLE = ProfileInjector.class.getName();
 
-    void inject( Profile profile, Model model );
+    Model inject( Profile profile, Model model );
 
 }

Modified: maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java?rev=748609&r1=748608&r2=748609&view=diff
==============================================================================
--- maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java (original)
+++ maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java Fri Feb 27 17:28:54 2009
@@ -19,13 +19,9 @@
  * under the License.
  */
 
-import java.io.File;
-import java.io.IOException;
+import java.io.*;
 import java.text.SimpleDateFormat;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 
 import org.apache.maven.artifact.Artifact;
 import org.apache.maven.artifact.ArtifactUtils;
@@ -38,23 +34,30 @@
 import org.apache.maven.model.Build;
 import org.apache.maven.model.Model;
 import org.apache.maven.model.Profile;
+import org.apache.maven.model.io.xpp3.MavenXpp3Writer;
+import org.apache.maven.model.io.xpp3.MavenXpp3Reader;
 import org.apache.maven.profiles.ProfileManager;
-import org.apache.maven.profiles.activation.DefaultProfileActivationContext;
 import org.apache.maven.profiles.activation.ProfileActivationContext;
 import org.apache.maven.profiles.activation.ProfileActivationException;
 import org.apache.maven.profiles.build.ProfileAdvisor;
 import org.apache.maven.project.artifact.InvalidDependencyVersionException;
-import org.apache.maven.project.builder.PomInterpolatorTag;
+import org.apache.maven.project.builder.*;
+import org.apache.maven.project.builder.profile.ProfileContext;
 import org.apache.maven.project.validation.ModelValidationResult;
 import org.apache.maven.project.validation.ModelValidator;
 import org.apache.maven.repository.MavenRepositorySystem;
 import org.apache.maven.repository.VersionNotFoundException;
-import org.apache.maven.shared.model.InterpolatorProperty;
+import org.apache.maven.shared.model.*;
+import org.apache.maven.shared.model.impl.DefaultModelDataSource;
 import org.codehaus.plexus.component.annotations.Component;
 import org.codehaus.plexus.component.annotations.Requirement;
 import org.codehaus.plexus.logging.LogEnabled;
 import org.codehaus.plexus.logging.Logger;
 import org.codehaus.plexus.util.StringUtils;
+import org.codehaus.plexus.util.WriterFactory;
+import org.codehaus.plexus.util.ReaderFactory;
+import org.codehaus.plexus.util.IOUtil;
+import org.codehaus.plexus.util.xml.pull.XmlPullParserException;
 
 
 /**
@@ -74,7 +77,7 @@
     private MavenRepositorySystem repositorySystem;
 
     @Requirement
-    private ProjectBuilder projectBuilder;
+    List<ModelEventListener> listeners;
     
     private Logger logger;
     
@@ -117,7 +120,7 @@
         List<ArtifactRepository> artifactRepositories = new ArrayList<ArtifactRepository>();
         try
         {
-            artifactRepositories.addAll( repositorySystem.buildArtifactRepositories( projectBuilder.getSuperModel().getRepositories() ) );
+            artifactRepositories.addAll( repositorySystem.buildArtifactRepositories( getSuperModel().getRepositories() ) );
         }
         catch ( InvalidRepositoryException e )
         {
@@ -185,7 +188,7 @@
         List<ArtifactRepository> artifactRepositories = new ArrayList<ArtifactRepository>( remoteArtifactRepositories );
         try
         {
-            artifactRepositories.addAll( repositorySystem.buildArtifactRepositories( projectBuilder.getSuperModel().getRepositories() ) );
+            artifactRepositories.addAll( repositorySystem.buildArtifactRepositories( getSuperModel().getRepositories() ) );
         }
         catch ( InvalidRepositoryException e )
         {
@@ -231,7 +234,7 @@
     public MavenProject buildStandaloneSuperProject( ProjectBuilderConfiguration config )
         throws ProjectBuildingException
     {
-        Model superModel = projectBuilder.getSuperModel();
+        Model superModel = getSuperModel();
                        
         MavenProject project = null;
         
@@ -322,7 +325,7 @@
         }
         else
         {
-            profileActivationContext = new DefaultProfileActivationContext( config.getExecutionProperties(), false );
+            profileActivationContext = new ProfileActivationContext( config.getExecutionProperties(), false );
         }
 
         List<Profile> projectProfiles = new ArrayList<Profile>();
@@ -382,7 +385,7 @@
         
         try
         {
-            mavenProject = projectBuilder.buildFromLocalPath( projectDescriptor, interpolatorProperties, resolver, config, this );
+            mavenProject = buildFromLocalPath( projectDescriptor, interpolatorProperties, resolver, config, this );
         }
         catch ( IOException e )
         {
@@ -439,4 +442,424 @@
             setBuildOutputDirectoryOnParent( parent );
         }
     }
+
+    public PomClassicDomainModel buildModel( File pom,
+                                             Collection<InterpolatorProperty> interpolatorProperties,
+                                             PomArtifactResolver resolver )
+        throws IOException
+    {
+        return buildModel( pom, interpolatorProperties, null, null, resolver );
+    }
+
+    private PomClassicDomainModel buildModel(File pom,
+                                             Collection<InterpolatorProperty> interpolatorProperties,
+                                             Collection<String> activeProfileIds, Collection<String> inactiveProfileIds,
+                                             PomArtifactResolver resolver)
+        throws IOException
+    {
+        if ( pom == null )
+        {
+            throw new IllegalArgumentException( "pom: null" );
+        }
+
+        if ( resolver == null )
+        {
+            throw new IllegalArgumentException( "resolver: null" );
+        }
+
+        if(activeProfileIds == null)
+        {
+            activeProfileIds = new ArrayList<String>();
+        }
+        if ( inactiveProfileIds == null )
+        {
+            inactiveProfileIds = new ArrayList<String>();
+        }
+
+        List<InterpolatorProperty> properties;
+        if ( interpolatorProperties == null )
+        {
+            properties = new ArrayList<InterpolatorProperty>();
+        }
+        else
+        {
+            properties = new ArrayList<InterpolatorProperty>( interpolatorProperties );
+        }
+
+        PomClassicDomainModel domainModel = new PomClassicDomainModel( pom );
+        domainModel.setProjectDirectory( pom.getParentFile() );
+        List<DomainModel> domainModels = new ArrayList<DomainModel>();
+        domainModels.add( domainModel );
+
+        //Process Profile on most specialized child model
+        ProfileContext profileContext = new ProfileContext(new DefaultModelDataSource(domainModel.getModelProperties(),
+                PomTransformer.MODEL_CONTAINER_FACTORIES), activeProfileIds, inactiveProfileIds, 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));
+        }
+
+        File parentFile = null;
+        int lineageCount = 0;
+        if ( domainModel.getParentId() != null )
+        {
+            List<DomainModel> mavenParents;
+            if ( isParentLocal( domainModel.getRelativePathOfParent(), pom.getParentFile() ) )
+            {
+                mavenParents =
+                    getDomainModelParentsFromLocalPath( domainModel, resolver, pom.getParentFile(), properties,
+                                                        activeProfileIds, inactiveProfileIds );
+            }
+            else
+            {
+                mavenParents =
+                    getDomainModelParentsFromRepository( domainModel, resolver, properties, activeProfileIds,
+                                                         inactiveProfileIds );
+            }
+
+            if ( mavenParents.size() > 0 )
+            {
+                PomClassicDomainModel dm = (PomClassicDomainModel) mavenParents.get( 0 );
+                parentFile = dm.getFile();
+                domainModel.setParentFile( parentFile );
+                lineageCount = mavenParents.size();
+            }
+
+            domainModels.addAll( mavenParents );
+        }
+
+        domainModels.add( convertToDomainModel( getSuperModel() ) );
+
+        PomTransformer transformer = new PomTransformer( new PomClassicDomainModelFactory() );
+
+        ModelTransformerContext ctx = new ModelTransformerContext(PomTransformer.MODEL_CONTAINER_INFOS );
+
+        PomClassicDomainModel transformedDomainModel = ( (PomClassicDomainModel) ctx.transform( domainModels,
+                                                                                                transformer,
+                                                                                                transformer,
+                                                                                                Collections.EMPTY_LIST,
+                                                                                                properties,
+                                                                                                listeners ) );
+        // Lineage count is inclusive to add the POM read in itself.
+        transformedDomainModel.setLineageCount( lineageCount + 1 );
+        transformedDomainModel.setParentFile( parentFile );
+
+        return transformedDomainModel;
+    }
+
+    private PomClassicDomainModel convertToDomainModel(Model model) throws IOException
+    {
+        if ( model == null )
+        {
+            throw new IllegalArgumentException( "model: null" );
+        }
+        ByteArrayOutputStream baos = new ByteArrayOutputStream();
+        Writer out = null;
+        MavenXpp3Writer writer = new MavenXpp3Writer();
+        try
+        {
+            out = WriterFactory.newXmlWriter( baos );
+            writer.write( out, model );
+        }
+        finally
+        {
+            if ( out != null )
+            {
+                out.close();
+            }
+        }
+        return new PomClassicDomainModel(new ByteArrayInputStream(baos.toByteArray()));
+    }
+
+    public MavenProject buildFromLocalPath(File pom,
+                                           Collection<InterpolatorProperty> interpolatorProperties,
+                                           PomArtifactResolver resolver,
+                                           ProjectBuilderConfiguration projectBuilderConfiguration,
+                                           MavenProjectBuilder mavenProjectBuilder)
+        throws IOException
+    {
+
+       List<String> activeProfileIds = (projectBuilderConfiguration != null &&
+                projectBuilderConfiguration.getGlobalProfileManager() != null &&
+                projectBuilderConfiguration.getGlobalProfileManager().getProfileActivationContext() != null) ?
+               projectBuilderConfiguration.getGlobalProfileManager().getProfileActivationContext().getExplicitlyActiveProfileIds() : new ArrayList<String>();
+
+       List<String> inactiveProfileIds =
+           ( projectBuilderConfiguration != null && projectBuilderConfiguration.getGlobalProfileManager() != null &&
+                           projectBuilderConfiguration.getGlobalProfileManager().getProfileActivationContext() != null ) ?
+                           projectBuilderConfiguration.getGlobalProfileManager().getProfileActivationContext().getExplicitlyInactiveProfileIds() : new ArrayList<String>();
+
+        PomClassicDomainModel domainModel = buildModel( pom,
+                interpolatorProperties,
+                                                        activeProfileIds, inactiveProfileIds,
+                                                        resolver );
+
+        try
+        {
+            MavenProject mavenProject = new MavenProject( convertFromInputStreamToModel(domainModel.getInputStream()),
+                                                          repositorySystem,
+                                                          mavenProjectBuilder,
+                                                          projectBuilderConfiguration );
+
+            mavenProject.setParentFile( domainModel.getParentFile() );
+
+            return mavenProject;
+        }
+        catch ( InvalidRepositoryException e )
+        {
+            throw new IOException( e.getMessage() );
+        }
+    }
+
+    private static Model convertFromInputStreamToModel(InputStream inputStream) throws IOException
+    {
+
+        try
+        {
+            return new MavenXpp3Reader().read( ReaderFactory.newXmlReader( inputStream ) );
+        }
+        catch ( XmlPullParserException e )
+        {
+            throw new IOException( e.getMessage() );
+        }
+
+    }
+
+    /**
+     * Returns true if the relative path of the specified parent references a pom, otherwise returns false.
+     *
+     * @param relativePath         the parent model info
+     * @param projectDirectory the project directory of the child pom
+     * @return true if the relative path of the specified parent references a pom, otherwise returns fals
+     */
+    private boolean isParentLocal( String relativePath, File projectDirectory )
+    {
+        try
+        {
+            File f = new File( projectDirectory, relativePath ).getCanonicalFile();
+
+            if ( f.isDirectory() )
+            {
+                f = new File( f, "pom.xml" );
+            }
+
+            return f.isFile();
+        }
+        catch ( IOException e )
+        {
+            return false;
+        }
+    }
+
+    private List<DomainModel> getDomainModelParentsFromRepository( PomClassicDomainModel domainModel,
+                                                                   PomArtifactResolver artifactResolver,
+                                                                   List<InterpolatorProperty> properties,
+                                                                   Collection<String> activeProfileIds,
+                                                                   Collection<String> inactiveProfileIds )
+        throws IOException
+    {
+        List<DomainModel> domainModels = new ArrayList<DomainModel>();
+
+        String parentId = domainModel.getParentId();
+
+        if ( parentId == null )
+        {
+            return domainModels;
+        }
+
+        Artifact artifactParent = repositorySystem.createParentArtifact( domainModel.getParentGroupId(),
+                domainModel.getParentArtifactId(), domainModel.getParentVersion() );
+
+        artifactResolver.resolve( artifactParent );
+
+        PomClassicDomainModel parentDomainModel = new PomClassicDomainModel( artifactParent.getFile() );
+
+        if ( !parentDomainModel.matchesParentOf( domainModel ) )
+        {
+            logger.debug( "Parent pom ids do not match: Parent File = " + artifactParent.getFile().getAbsolutePath() +
+                ": Child ID = " + domainModel.getId() );
+            return domainModels;
+        }
+
+        domainModels.add( parentDomainModel );
+
+        //Process Profiles
+        ProfileContext profileContext = new ProfileContext(new DefaultModelDataSource(parentDomainModel.getModelProperties(),
+                PomTransformer.MODEL_CONTAINER_FACTORIES), activeProfileIds, inactiveProfileIds, 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, inactiveProfileIds ) );
+        return domainModels;
+    }
+
+    /**
+     * Returns list of domain model parents of the specified domain model. The parent domain models are part
+     *
+     * @param domainModel
+     * @param artifactResolver
+     * @param projectDirectory
+     * @return
+     * @throws IOException
+     */
+    private List<DomainModel> getDomainModelParentsFromLocalPath( PomClassicDomainModel domainModel,
+                                                                  PomArtifactResolver artifactResolver,
+                                                                  File projectDirectory,
+                                                                  List<InterpolatorProperty> properties,
+                                                                  Collection<String> activeProfileIds,
+                                                                  Collection<String> inactiveProfileIds )
+        throws IOException
+    {
+        List<DomainModel> domainModels = new ArrayList<DomainModel>();
+
+        String parentId = domainModel.getParentId();
+
+        if ( parentId == null )
+        {
+            return domainModels;
+        }
+
+        File parentFile = new File( projectDirectory, domainModel.getRelativePathOfParent() ).getCanonicalFile();
+        if ( parentFile.isDirectory() )
+        {
+            parentFile = new File( parentFile.getAbsolutePath(), "pom.xml" );
+        }
+
+        if ( !parentFile.isFile() )
+        {
+            throw new IOException( "File does not exist: File = " + parentFile.getAbsolutePath() );
+        }
+
+        PomClassicDomainModel parentDomainModel = new PomClassicDomainModel( parentFile );
+        parentDomainModel.setProjectDirectory( parentFile.getParentFile() );
+
+        //Process Profiles
+        ProfileContext profileContext = new ProfileContext(new DefaultModelDataSource(parentDomainModel.getModelProperties(),
+                PomTransformer.MODEL_CONTAINER_FACTORIES), activeProfileIds, inactiveProfileIds, 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.matchesParentOf( domainModel ) )
+        {
+            logger.info( "Parent pom ids do not match: Parent File = " + parentFile.getAbsolutePath() + ", Parent ID = "
+                    + parentDomainModel.getId() + ", Child ID = " + domainModel.getId() + ", Expected Parent ID = "
+                    + domainModel.getParentId() );
+
+            List<DomainModel> parentDomainModels =
+                getDomainModelParentsFromRepository( domainModel, artifactResolver, properties, activeProfileIds,
+                                                     inactiveProfileIds );
+
+            if(parentDomainModels.size() == 0)
+            {
+                throw new IOException("Unable to find parent pom on local path or repo: "
+                        + domainModel.getParentId());
+            }
+
+            domainModels.addAll( parentDomainModels );
+            return domainModels;
+        }
+
+        domainModels.add( parentDomainModel );
+        if ( domainModel.getParentId() != null )
+        {
+            if ( isParentLocal(parentDomainModel.getRelativePathOfParent(), parentFile.getParentFile() ) )
+            {
+                domainModels.addAll( getDomainModelParentsFromLocalPath( parentDomainModel, artifactResolver,
+                                                                         parentFile.getParentFile(), properties,
+                                                                         activeProfileIds, inactiveProfileIds ) );
+            }
+            else
+            {
+                domainModels.addAll( getDomainModelParentsFromRepository( parentDomainModel, artifactResolver,
+                                                                          properties, activeProfileIds,
+                                                                          inactiveProfileIds ) );
+            }
+        }
+
+        return domainModels;
+    }
+
+    private DomainModel superDomainModel;
+
+    // Super Model Handling
+
+    private static final String MAVEN_MODEL_VERSION = "4.0.0";
+
+    private MavenXpp3Reader modelReader = new MavenXpp3Reader();
+
+    private Model superModel;
+
+    public Model getSuperModel()
+    {
+        if ( superModel != null )
+        {
+            return superModel;
+        }
+
+        Reader reader = null;
+
+        try
+        {
+            reader = ReaderFactory.newXmlReader( getClass().getClassLoader().getResource( "org/apache/maven/project/pom-" + MAVEN_MODEL_VERSION + ".xml" ) );
+
+            superModel = modelReader.read( reader, true );
+        }
+        catch ( Exception e )
+        {
+            // Not going to happen we're reading the super pom embedded in the JAR
+        }
+        finally
+        {
+            IOUtil.close( reader );
+        }
+
+        return superModel;
+    }
+
 }
\ No newline at end of file

Modified: maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/MavenProjectBuilder.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/MavenProjectBuilder.java?rev=748609&r1=748608&r2=748609&view=diff
==============================================================================
--- maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/MavenProjectBuilder.java (original)
+++ maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/MavenProjectBuilder.java Fri Feb 27 17:28:54 2009
@@ -18,9 +18,14 @@
 import org.apache.maven.artifact.Artifact;
 import org.apache.maven.artifact.repository.ArtifactRepository;
 import org.apache.maven.profiles.ProfileManager;
+import org.apache.maven.project.builder.PomClassicDomainModel;
+import org.apache.maven.shared.model.InterpolatorProperty;
+import org.apache.maven.model.Model;
 
 import java.io.File;
+import java.io.IOException;
 import java.util.List;
+import java.util.Collection;
 
 public interface MavenProjectBuilder
 {
@@ -47,4 +52,28 @@
 
     MavenProject buildStandaloneSuperProject( ProjectBuilderConfiguration configuration )
         throws ProjectBuildingException;
+
+    PomClassicDomainModel buildModel( File pom,
+                                             Collection<InterpolatorProperty> interpolatorProperties,
+                                             PomArtifactResolver resolver )
+        throws IOException;
+
+    /**
+     * Returns a maven project for the specified input stream.
+     *
+     * @param pom                         input stream of the model
+     * @param interpolatorProperties      properties used for interpolation of properties within the model
+     * @param resolver                    artifact resolver used in resolving artifacts
+     * @param projectBuilderConfiguration
+     * @return a maven project for the specified input stream
+     * @throws IOException if there is a problem in the construction of the maven project
+     */
+    MavenProject buildFromLocalPath(File pom,
+                                    Collection<InterpolatorProperty> interpolatorProperties,
+                                    PomArtifactResolver resolver,
+                                    ProjectBuilderConfiguration projectBuilderConfiguration,
+                                    MavenProjectBuilder mavenProjectBuilder)
+        throws IOException;
+
+    Model getSuperModel();
 }

Modified: maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/artifact/MavenMetadataSource.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/artifact/MavenMetadataSource.java?rev=748609&r1=748608&r2=748609&view=diff
==============================================================================
--- maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/artifact/MavenMetadataSource.java (original)
+++ maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/artifact/MavenMetadataSource.java Fri Feb 27 17:28:54 2009
@@ -19,11 +19,9 @@
  * under the License.
  */
 
-import java.io.File;
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.Iterator;
-import java.util.LinkedHashSet;
 import java.util.List;
 import java.util.Set;
 
@@ -38,16 +36,10 @@
 import org.apache.maven.artifact.repository.metadata.RepositoryMetadata;
 import org.apache.maven.artifact.repository.metadata.RepositoryMetadataManager;
 import org.apache.maven.artifact.repository.metadata.RepositoryMetadataResolutionException;
-import org.apache.maven.artifact.resolver.filter.AndArtifactFilter;
-import org.apache.maven.artifact.resolver.filter.ArtifactFilter;
-import org.apache.maven.artifact.resolver.filter.ExcludesArtifactFilter;
 import org.apache.maven.artifact.versioning.ArtifactVersion;
 import org.apache.maven.artifact.versioning.DefaultArtifactVersion;
-import org.apache.maven.artifact.versioning.InvalidVersionSpecificationException;
 import org.apache.maven.artifact.versioning.VersionRange;
-import org.apache.maven.model.Dependency;
 import org.apache.maven.model.DistributionManagement;
-import org.apache.maven.model.Exclusion;
 import org.apache.maven.model.Relocation;
 import org.apache.maven.project.DefaultProjectBuilderConfiguration;
 import org.apache.maven.project.InvalidProjectModelException;
@@ -55,13 +47,11 @@
 import org.apache.maven.project.MavenProjectBuilder;
 import org.apache.maven.project.ProjectBuildingException;
 import org.apache.maven.project.validation.ModelValidationResult;
-import org.apache.maven.repository.MavenRepositoryWrapper;
 import org.codehaus.plexus.PlexusContainer;
 import org.codehaus.plexus.component.annotations.Component;
 import org.codehaus.plexus.component.annotations.Requirement;
 import org.codehaus.plexus.component.repository.exception.ComponentLookupException;
 import org.codehaus.plexus.logging.AbstractLogEnabled;
-import org.codehaus.plexus.util.StringUtils;
 
 /**
  * @author Jason van Zyl

Modified: maven/components/trunk/maven-project/src/test/java/org/apache/maven/profiles/injection/DefaultProfileInjectorTest.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-project/src/test/java/org/apache/maven/profiles/injection/DefaultProfileInjectorTest.java?rev=748609&r1=748608&r2=748609&view=diff
==============================================================================
--- maven/components/trunk/maven-project/src/test/java/org/apache/maven/profiles/injection/DefaultProfileInjectorTest.java (original)
+++ maven/components/trunk/maven-project/src/test/java/org/apache/maven/profiles/injection/DefaultProfileInjectorTest.java Fri Feb 27 17:28:54 2009
@@ -41,117 +41,6 @@
     extends TestCase
 {
 
-    public void testShouldUseMainPluginDependencyVersionOverManagedDepVersion()
-    {
-        PluginContainer profile = new PluginContainer();
-        Plugin profilePlugin = createPlugin( "group", "artifact", "1", Collections.EMPTY_MAP );
-        Dependency profileDep = createDependency( "g", "a", "2" );
-        profilePlugin.addDependency( profileDep );
-        profile.addPlugin( profilePlugin );
-
-        PluginContainer model = new PluginContainer();
-        Plugin plugin = createPlugin( "group", "artifact", "1", Collections.EMPTY_MAP );
-        Dependency dep = createDependency( "g", "a", "1" );
-        plugin.addDependency( dep );
-        model.addPlugin( plugin );
-
-        new DefaultProfileInjector().injectPlugins( profile, model );
-
-        assertEquals( profileDep.getVersion(), ((Dependency) plugin.getDependencies().get( 0 ) ).getVersion() );
-    }
-
-    private Dependency createDependency( String gid,
-                                         String aid,
-                                         String ver )
-    {
-        Dependency dep = new Dependency();
-        dep.setGroupId( gid );
-        dep.setArtifactId( aid );
-        dep.setVersion( ver );
-
-        return dep;
-    }
-
-    /**
-     * Test that this is the resulting ordering of plugins after merging:
-     *
-     * Given:
-     *
-     *   model: X -> A -> B -> D -> E
-     *   profile: Y -> A -> C -> D -> F
-     *
-     * Result:
-     *
-     *   X -> Y -> A -> B -> C -> D -> E -> F
-     */
-    public void testShouldPreserveOrderingOfPluginsAfterProfileMerge()
-    {
-        PluginContainer profile = new PluginContainer();
-
-        profile.addPlugin( createPlugin( "group", "artifact", "1.0", Collections.EMPTY_MAP ) );
-        profile.addPlugin( createPlugin( "group2", "artifact2", "1.0", Collections.singletonMap( "key", "value" ) ) );
-
-        PluginContainer model = new PluginContainer();
-
-        model.addPlugin( createPlugin( "group3", "artifact3", "1.0", Collections.EMPTY_MAP ) );
-        model.addPlugin( createPlugin( "group2", "artifact2", "1.0", Collections.singletonMap( "key2", "value2" ) ) );
-
-        new DefaultProfileInjector().injectPlugins( profile, model );
-
-        List results = model.getPlugins();
-
-        assertEquals( 3, results.size() );
-
-        Plugin result1 = (Plugin) results.get( 0 );
-
-        assertEquals( "group3", result1.getGroupId() );
-        assertEquals( "artifact3", result1.getArtifactId() );
-
-        Plugin result2 = (Plugin) results.get( 1 );
-
-        assertEquals( "group", result2.getGroupId() );
-        assertEquals( "artifact", result2.getArtifactId() );
-
-        Plugin result3 = (Plugin) results.get( 2 );
-
-        assertEquals( "group2", result3.getGroupId() );
-        assertEquals( "artifact2", result3.getArtifactId() );
-
-        Xpp3Dom result3Config = (Xpp3Dom) result3.getConfiguration();
-
-        assertNotNull( result3Config );
-
-        assertEquals( "value", result3Config.getChild( "key" ).getValue() );
-        assertEquals( "value2", result3Config.getChild( "key2" ).getValue() );
-    }
-
-    private Plugin createPlugin( String groupId, String artifactId, String version, Map configuration )
-    {
-        Plugin plugin = new Plugin();
-        plugin.setGroupId( groupId );
-        plugin.setArtifactId( artifactId );
-        plugin.setVersion( version );
-
-        Xpp3Dom config = new Xpp3Dom( "configuration" );
-
-        if( configuration != null )
-        {
-            for ( Iterator it = configuration.entrySet().iterator(); it.hasNext(); )
-            {
-                Map.Entry entry = (Map.Entry) it.next();
-
-                Xpp3Dom param = new Xpp3Dom( String.valueOf( entry.getKey() ) );
-                param.setValue( String.valueOf( entry.getValue() ) );
-
-                config.addChild( param );
-            }
-        }
-
-        plugin.setConfiguration( config );
-
-        return plugin;
-    }
-
     public void testProfilePluginConfigurationShouldOverrideCollidingModelPluginConfiguration()
     {
         Plugin mPlugin = new Plugin();
@@ -198,7 +87,7 @@
 
         profile.setBuild( pBuild );
 
-        new DefaultProfileInjector().inject( profile, model );
+        model = new DefaultProfileInjector().inject( profile, model );
 
         Build rBuild = model.getBuild();
         Plugin rPlugin = (Plugin) rBuild.getPlugins().get( 0 );
@@ -264,7 +153,7 @@
 
         profile.setBuild( pBuild );
 
-        new DefaultProfileInjector().inject( profile, model );
+        model = new DefaultProfileInjector().inject( profile, model );
 
         Build rBuild = model.getBuild();
         Plugin rPlugin = (Plugin) rBuild.getPlugins().get( 0 );
@@ -308,13 +197,14 @@
 
         profile.addRepository( pRepository );
 
-        new DefaultProfileInjector().inject( profile, model );
+        model = new DefaultProfileInjector().inject( profile, model );
 
-        Repository rRepository = (Repository) model.getRepositories().get( 0 );
+        Repository rRepository = model.getRepositories().get( 0 );
 
         assertEquals( "http://www.yahoo.com", rRepository.getUrl() );
     }
 
+    /*
     public void testShouldPreserveModelModulesWhenProfileHasNone()
     {
         Model model = new Model();
@@ -324,7 +214,7 @@
         Profile profile = new Profile();
         profile.setId( "testId" );
 
-        new DefaultProfileInjector().inject( profile, model );
+        model = new DefaultProfileInjector().inject( profile, model );
 
         List rModules = model.getModules();
 
@@ -332,10 +222,6 @@
         assertEquals( "module1", rModules.get( 0 ) );
     }
 
-    // NOTE: The execution-id's are important, because they are NOT in
-    // alphabetical order. The trunk version of Maven currently injects
-    // profiles into a TreeMap, then calls map.values(), which puts the
-    // executions in alphabetical order...the WRONG order.
     public void testShouldPreserveOrderingOfProfileInjectedPluginExecutions()
     {
         Plugin profilePlugin = new Plugin();
@@ -376,7 +262,7 @@
         Model model = new Model();
         model.setBuild( build );
 
-        new DefaultProfileInjector().inject( profile, model );
+        model = new DefaultProfileInjector().inject( profile, model );
 
         List plugins = model.getBuild().getPlugins();
         assertNotNull( plugins );
@@ -403,4 +289,5 @@
         assertEquals( "y", e.getId() );
 
     }
+    */
 }

Modified: maven/components/trunk/maven-project/src/test/java/org/apache/maven/profiles/manager/DefaultProfileManagerTest.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-project/src/test/java/org/apache/maven/profiles/manager/DefaultProfileManagerTest.java?rev=748609&r1=748608&r2=748609&view=diff
==============================================================================
--- maven/components/trunk/maven-project/src/test/java/org/apache/maven/profiles/manager/DefaultProfileManagerTest.java (original)
+++ maven/components/trunk/maven-project/src/test/java/org/apache/maven/profiles/manager/DefaultProfileManagerTest.java Fri Feb 27 17:28:54 2009
@@ -25,7 +25,6 @@
 import org.apache.maven.model.Profile;
 import org.apache.maven.profiles.DefaultProfileManager;
 import org.apache.maven.profiles.ProfileManager;
-import org.apache.maven.profiles.activation.DefaultProfileActivationContext;
 import org.apache.maven.profiles.activation.ProfileActivationContext;
 import org.codehaus.plexus.PlexusTestCase;
 
@@ -64,7 +63,7 @@
         defaultActivated.setActivation( defaultActivation );
 
         Properties props = new Properties();
-        ProfileActivationContext ctx = new DefaultProfileActivationContext( props, false );
+        ProfileActivationContext ctx = new ProfileActivationContext( props, false );
 
         ProfileManager profileManager = new DefaultProfileManager( getContainer(), ctx );
 
@@ -103,7 +102,7 @@
         defaultActivated.setActivation( defaultActivation );
 
         Properties props = System.getProperties();
-        ProfileActivationContext ctx = new DefaultProfileActivationContext( props, false );
+        ProfileActivationContext ctx = new ProfileActivationContext( props, false );
 
         ProfileManager profileManager = new DefaultProfileManager( getContainer(), ctx );
 
@@ -133,7 +132,7 @@
         syspropActivated.setActivation( syspropActivation );
 
         Properties props = System.getProperties();
-        ProfileActivationContext ctx = new DefaultProfileActivationContext( props, false );
+        ProfileActivationContext ctx = new ProfileActivationContext( props, false );
 
         ProfileManager profileManager = new DefaultProfileManager( getContainer(), ctx );
 
@@ -161,7 +160,7 @@
         syspropActivated.setActivation( syspropActivation );
 
         Properties props = System.getProperties();
-        ProfileActivationContext ctx = new DefaultProfileActivationContext( props, false );
+        ProfileActivationContext ctx = new ProfileActivationContext( props, false );
 
         ProfileManager profileManager = new DefaultProfileManager( getContainer(), ctx );
 
@@ -192,7 +191,7 @@
         syspropActivated.setActivation( syspropActivation );
 
         Properties props = System.getProperties();
-        ProfileActivationContext ctx = new DefaultProfileActivationContext( props, false );
+        ProfileActivationContext ctx = new ProfileActivationContext( props, false );
 
         ProfileManager profileManager = new DefaultProfileManager( getContainer(), ctx );
 
@@ -223,7 +222,7 @@
         osActivated.setActivation( osActivation );
 
         Properties props = System.getProperties();
-        ProfileActivationContext ctx = new DefaultProfileActivationContext( props, false );
+        ProfileActivationContext ctx = new ProfileActivationContext( props, false );
 
         ProfileManager profileManager = new DefaultProfileManager( getContainer(), ctx );
 

Modified: maven/components/trunk/maven-project/src/test/java/org/apache/maven/project/AbstractMavenProjectTestCase.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-project/src/test/java/org/apache/maven/project/AbstractMavenProjectTestCase.java?rev=748609&r1=748608&r2=748609&view=diff
==============================================================================
--- maven/components/trunk/maven-project/src/test/java/org/apache/maven/project/AbstractMavenProjectTestCase.java (original)
+++ maven/components/trunk/maven-project/src/test/java/org/apache/maven/project/AbstractMavenProjectTestCase.java Fri Feb 27 17:28:54 2009
@@ -23,7 +23,6 @@
 import org.apache.maven.artifact.repository.DefaultArtifactRepository;
 import org.apache.maven.artifact.repository.layout.ArtifactRepositoryLayout;
 import org.apache.maven.profiles.DefaultProfileManager;
-import org.apache.maven.profiles.activation.DefaultProfileActivationContext;
 import org.apache.maven.profiles.activation.ProfileActivationContext;
 import org.apache.maven.project.validation.ModelValidationResult;
 import org.codehaus.plexus.PlexusTestCase;
@@ -136,7 +135,7 @@
         throws Exception
     {
         Properties props = System.getProperties();
-        ProfileActivationContext ctx = new DefaultProfileActivationContext( props, false );
+        ProfileActivationContext ctx = new ProfileActivationContext( props, false );
 
         ProjectBuilderConfiguration pbc = new DefaultProjectBuilderConfiguration();
         pbc.setLocalRepository( getLocalRepository() );

Modified: maven/components/trunk/maven-project/src/test/java/org/apache/maven/project/SuperPomProjectBuilderTest.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-project/src/test/java/org/apache/maven/project/SuperPomProjectBuilderTest.java?rev=748609&r1=748608&r2=748609&view=diff
==============================================================================
--- maven/components/trunk/maven-project/src/test/java/org/apache/maven/project/SuperPomProjectBuilderTest.java (original)
+++ maven/components/trunk/maven-project/src/test/java/org/apache/maven/project/SuperPomProjectBuilderTest.java Fri Feb 27 17:28:54 2009
@@ -1,15 +1,10 @@
 package org.apache.maven.project;
 
 import org.apache.maven.artifact.repository.ArtifactRepository;
-import org.apache.maven.model.Profile;
 import org.apache.maven.model.Repository;
-import org.apache.maven.profiles.DefaultProfileManager;
-import org.apache.maven.profiles.ProfileManager;
-import org.apache.maven.profiles.activation.DefaultProfileActivationContext;
 
 import java.util.Iterator;
 import java.util.List;
-import java.util.Properties;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one

Modified: maven/components/trunk/maven-project/src/test/java/org/apache/maven/project/builder/PomConstructionTest.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-project/src/test/java/org/apache/maven/project/builder/PomConstructionTest.java?rev=748609&r1=748608&r2=748609&view=diff
==============================================================================
--- maven/components/trunk/maven-project/src/test/java/org/apache/maven/project/builder/PomConstructionTest.java (original)
+++ maven/components/trunk/maven-project/src/test/java/org/apache/maven/project/builder/PomConstructionTest.java Fri Feb 27 17:28:54 2009
@@ -25,7 +25,6 @@
 import java.util.*;
 
 import org.apache.maven.profiles.DefaultProfileManager;
-import org.apache.maven.profiles.activation.DefaultProfileActivationContext;
 import org.apache.maven.profiles.activation.ProfileActivationContext;
 import org.apache.maven.model.Model;
 import org.apache.maven.model.io.xpp3.MavenXpp3Reader;
@@ -48,8 +47,6 @@
 
     private static String BASE_MIXIN_DIR = BASE_DIR + "/resources-mixins";
 
-    private ProjectBuilder projectBuilder;
-
     private MavenProjectBuilder mavenProjectBuilder;
 
     private MavenRepositorySystem mavenTools;
@@ -66,7 +63,6 @@
         testDirectory = new File( getBasedir(), BASE_POM_DIR );
         testMixinDirectory = new File( getBasedir(), BASE_MIXIN_DIR );
         mavenProjectBuilder = lookup( MavenProjectBuilder.class );
-        projectBuilder = lookup( ProjectBuilder.class );
         mavenTools = lookup( MavenRepositorySystem.class );
         pomArtifactResolver = new PomArtifactResolver()
         {
@@ -133,10 +129,10 @@
     {
         File pom = new File( testDirectory, "micromailer/micromailer-1.0.3.pom" );
         PomArtifactResolver resolver = artifactResolver( "micromailer" );
-        PomClassicDomainModel model = projectBuilder.buildModel( pom, null, resolver );
+        PomClassicDomainModel model = mavenProjectBuilder.buildModel( pom, null, resolver );
         // This should be 2
         //assertEquals( 2, model.getLineageCount() );
-        PomTestWrapper tester = new PomTestWrapper( (PomClassicDomainModel) model );
+        PomTestWrapper tester = new PomTestWrapper( model );
         assertModelEquals( tester, "child-descriptor", "build/plugins[1]/executions[1]/goals[1]" );
     }
 
@@ -915,7 +911,7 @@
         {
             pomFile = new File( pomFile, "pom.xml" );
         }
-        return new PomTestWrapper( pomFile, (PomClassicDomainModel) projectBuilder.buildModel( pomFile, null, pomArtifactResolver ) );
+        return new PomTestWrapper( pomFile, mavenProjectBuilder.buildModel( pomFile, null, pomArtifactResolver ) );
     }
 
     private PomTestWrapper buildPomFromMavenProject( String pomPath, String profileId )
@@ -928,14 +924,14 @@
         }
         ProjectBuilderConfiguration config = new DefaultProjectBuilderConfiguration();
         config.setLocalRepository(new DefaultArtifactRepository("default", "", new DefaultRepositoryLayout()));
-        ProfileActivationContext pCtx = new DefaultProfileActivationContext(null, true);
+        ProfileActivationContext pCtx = new ProfileActivationContext(null, true);
         if(profileId != null)
         {
             pCtx.setExplicitlyActiveProfileIds(Arrays.asList(profileId));
         }
 
         config.setGlobalProfileManager(new DefaultProfileManager(this.getContainer(), pCtx));
-        return new PomTestWrapper( pomFile, projectBuilder.buildFromLocalPath( pomFile, null, pomArtifactResolver,
+        return new PomTestWrapper( pomFile, mavenProjectBuilder.buildFromLocalPath( pomFile, null, pomArtifactResolver,
                 config, mavenProjectBuilder ) );
     }
 

Modified: maven/components/trunk/maven-project/src/test/java/org/apache/maven/project/injection/TestProfileInjector.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-project/src/test/java/org/apache/maven/project/injection/TestProfileInjector.java?rev=748609&r1=748608&r2=748609&view=diff
==============================================================================
--- maven/components/trunk/maven-project/src/test/java/org/apache/maven/project/injection/TestProfileInjector.java (original)
+++ maven/components/trunk/maven-project/src/test/java/org/apache/maven/project/injection/TestProfileInjector.java Fri Feb 27 17:28:54 2009
@@ -29,9 +29,9 @@
     implements ProfileInjector
 {
 
-    public void inject( Profile profile, Model model )
+    public Model inject( Profile profile, Model model )
     {
-        // do nothing.
+        return null;
     }
 
 }