Author: sisbell
Date: Thu Feb 19 21:22:46 2009
New Revision: 746002

URL: http://svn.apache.org/viewvc?rev=746002&view=rev
Log:
Refactored out more uses of modello and moved classes from maven-project to 
maven-project-builder. Doing this so that maven-mercury will not have direct 
dependency on modello or maven model.

Added:
    
maven/components/trunk/maven-project-builder/src/main/java/org/apache/maven/project/builder/PomClassicDomainModel.java
   (contents, props changed)
      - copied, changed from r745903, 
maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/builder/PomClassicDomainModel.java
    
maven/components/trunk/maven-project-builder/src/main/java/org/apache/maven/project/builder/PomClassicDomainModelFactory.java
   (contents, props changed)
      - copied, changed from r745903, 
maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/builder/PomClassicDomainModelFactory.java
    
maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/DefaultPomArtifactResolver.java
   (contents, props changed)
      - copied, changed from r745903, 
maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/builder/DefaultPomArtifactResolver.java
    
maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/DefaultProjectBuilder.java
   (contents, props changed)
      - copied, changed from r745903, 
maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/builder/impl/DefaultProjectBuilder.java
    
maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/PomArtifactResolver.java
   (contents, props changed)
      - copied, changed from r745903, 
maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/builder/PomArtifactResolver.java
    
maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/ProjectBuilder.java
   (contents, props changed)
      - copied, changed from r745903, 
maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/builder/ProjectBuilder.java
    
maven/components/trunk/maven-project/src/test/resources-project-builder/parent-inheritance/
    
maven/components/trunk/maven-project/src/test/resources-project-builder/parent-inheritance/child3.xml
    
maven/components/trunk/maven-project/src/test/resources-project-builder/parent-inheritance/pom.xml
    
maven/components/trunk/maven-project/src/test/resources-project-builder/parent-inheritance/sub/
    
maven/components/trunk/maven-project/src/test/resources-project-builder/parent-inheritance/sub/pom.xml
Removed:
    
maven/components/trunk/maven-project-builder/src/main/java/org/apache/maven/project/builder/IPomClassicDomainModel.java
    
maven/components/trunk/maven-project-builder/src/main/java/org/apache/maven/project/builder/IProjectBuilder.java
    
maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/builder/
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/MavenEmbedder.java
    maven/components/trunk/maven-project-builder/pom.xml
    
maven/components/trunk/maven-project-builder/src/main/java/org/apache/maven/project/builder/PomTransformer.java
    
maven/components/trunk/maven-project-builder/src/test/java/org/apache/maven/project/builder/DefaultDomainModel.java
    
maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.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/harness/PomTestWrapper.java
    
maven/components/trunk/maven-project/src/test/resources/org/apache/maven/project/ProjectClasspathTest.xml
    
maven/components/trunk/maven-project/src/test/resources/org/apache/maven/project/canonical/CanonicalProjectBuilderTest.xml

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=746002&r1=746001&r2=746002&view=diff
==============================================================================
--- 
maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginManager.java
 (original)
+++ 
maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginManager.java
 Thu Feb 19 21:22:46 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,20 +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.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;
@@ -575,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 )
@@ -1685,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/trunk/maven-embedder/src/main/java/org/apache/maven/embedder/MavenEmbedder.java
URL: 
http://svn.apache.org/viewvc/maven/components/trunk/maven-embedder/src/main/java/org/apache/maven/embedder/MavenEmbedder.java?rev=746002&r1=746001&r2=746002&view=diff
==============================================================================
--- 
maven/components/trunk/maven-embedder/src/main/java/org/apache/maven/embedder/MavenEmbedder.java
 (original)
+++ 
maven/components/trunk/maven-embedder/src/main/java/org/apache/maven/embedder/MavenEmbedder.java
 Thu Feb 19 21:22:46 2009
@@ -62,7 +62,6 @@
 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.plugin.PluginRepository;
 import org.apache.maven.reactor.MavenExecutionException;
 import org.apache.maven.reactor.MissingModuleException;

Modified: maven/components/trunk/maven-project-builder/pom.xml
URL: 
http://svn.apache.org/viewvc/maven/components/trunk/maven-project-builder/pom.xml?rev=746002&r1=746001&r2=746002&view=diff
==============================================================================
--- maven/components/trunk/maven-project-builder/pom.xml (original)
+++ maven/components/trunk/maven-project-builder/pom.xml Thu Feb 19 21:22:46 
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>

Copied: 
maven/components/trunk/maven-project-builder/src/main/java/org/apache/maven/project/builder/PomClassicDomainModel.java
 (from r745903, 
maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/builder/PomClassicDomainModel.java)
URL: 
http://svn.apache.org/viewvc/maven/components/trunk/maven-project-builder/src/main/java/org/apache/maven/project/builder/PomClassicDomainModel.java?p2=maven/components/trunk/maven-project-builder/src/main/java/org/apache/maven/project/builder/PomClassicDomainModel.java&p1=maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/builder/PomClassicDomainModel.java&r1=745903&r2=746002&rev=746002&view=diff
==============================================================================
--- 
maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/builder/PomClassicDomainModel.java
 (original)
+++ 
maven/components/trunk/maven-project-builder/src/main/java/org/apache/maven/project/builder/PomClassicDomainModel.java
 Thu Feb 19 21:22:46 2009
@@ -19,25 +19,17 @@
  * under the License.
  */
 
-import org.apache.maven.model.Model;
-import org.apache.maven.model.Parent;
-import org.apache.maven.model.io.xpp3.MavenXpp3Reader;
-import org.apache.maven.model.io.xpp3.MavenXpp3Writer;
-import org.apache.maven.shared.model.InputStreamDomainModel;
 import org.apache.maven.shared.model.ModelProperty;
 import org.apache.maven.shared.model.ModelMarshaller;
+import org.apache.maven.shared.model.InputStreamDomainModel;
 import org.codehaus.plexus.util.IOUtil;
 import org.codehaus.plexus.util.ReaderFactory;
-import org.codehaus.plexus.util.WriterFactory;
-import org.codehaus.plexus.util.xml.pull.XmlPullParserException;
 
 import java.io.ByteArrayInputStream;
-import java.io.ByteArrayOutputStream;
 import java.io.File;
 import java.io.FileInputStream;
 import java.io.IOException;
 import java.io.InputStream;
-import java.io.Writer;
 import java.util.List;
 import java.util.ArrayList;
 import java.util.Set;
@@ -46,8 +38,7 @@
 /**
  * Provides a wrapper for the maven model.
  */
-public final class PomClassicDomainModel
-    implements IPomClassicDomainModel
+public class PomClassicDomainModel implements InputStreamDomainModel
 {
 
     /**
@@ -60,11 +51,6 @@
      */
     private String eventHistory;
 
-    /**
-     * Maven model
-     */
-    private Model model;
-
     private String id;
 
     private File file;
@@ -77,60 +63,104 @@
     
     private int lineageCount;
 
-    public PomClassicDomainModel( List<ModelProperty> modelProperties)
+    private String parentGroupId = null, parentArtifactId = null, 
parentVersion = null, parentId = null, parentRelativePath;
+
+    public PomClassicDomainModel( List<ModelProperty> modelProperties )
     {
         this.modelProperties = modelProperties;
+
         try {
             inputBytes = IOUtil.toByteArray( 
ModelMarshaller.unmarshalModelPropertiesToXml(modelProperties, 
ProjectUri.baseUri));
         } catch (IOException e) {
 
         }
+        initializeProperties( modelProperties );
     }
+
     /**
      * Constructor
      *
-     * @param model maven model
+     * @param inputStream input stream of the maven model
      * @throws IOException if there is a problem constructing the model
      */
-    public PomClassicDomainModel( Model model )
+    public PomClassicDomainModel( InputStream inputStream )
         throws IOException
     {
-        if ( model == null )
-        {
-            throw new IllegalArgumentException( "model: null" );
-        }
-        ByteArrayOutputStream baos = new ByteArrayOutputStream();
-        Writer out = null;
-        MavenXpp3Writer writer = new MavenXpp3Writer();
-        try
+        if ( inputStream == null )
         {
-            out = WriterFactory.newXmlWriter( baos );
-            writer.write( out, model );
+            throw new IllegalArgumentException( "inputStream: null" );
         }
-        finally
+        this.inputBytes = IOUtil.toByteArray( inputStream );
+        modelProperties = getModelProperties();
+        initializeProperties( modelProperties );
+    }
+
+    private void initializeProperties(List<ModelProperty> modelProperties)
+    {
+        String groupId = null, artifactId = null, version = null;
+        for(ModelProperty mp : modelProperties)
         {
-            if ( out != null )
+            if(mp.getUri().equals(ProjectUri.groupId))
+            {
+                groupId = mp.getResolvedValue();
+            }
+            else if(mp.getUri().equals(ProjectUri.artifactId))
+            {
+                artifactId = mp.getResolvedValue();
+            }
+            else if(mp.getUri().equals(ProjectUri.version))
+            {
+                version = mp.getResolvedValue();
+            }
+            else if(mp.getUri().equals(ProjectUri.Parent.artifactId))
             {
-                out.close();
+                parentArtifactId = mp.getResolvedValue();
+            }
+            else if(mp.getUri().equals(ProjectUri.Parent.groupId))
+            {
+                parentGroupId = mp.getResolvedValue();
+            }
+            else if(mp.getUri().equals(ProjectUri.Parent.version))
+            {
+                parentVersion = mp.getResolvedValue();
+            }
+            else if(mp.getUri().equals(ProjectUri.Parent.relativePath))
+            {
+                parentRelativePath = mp.getResolvedValue();
+            }
+
+
+
+            if(groupId != null && artifactId != null && version != null && 
parentGroupId != null &&
+                    parentArtifactId != null && parentVersion != null & 
parentRelativePath != null)
+            {
+                break;
             }
         }
-        inputBytes = baos.toByteArray();
-    }
+            if( groupId == null && parentGroupId != null)
+            {
+                groupId = parentGroupId;
+            }
+            if( artifactId == null && parentArtifactId != null)
+            {
+                artifactId = parentArtifactId;
+            }
+            if( version == null && parentVersion != null )
+            {
+                version = parentVersion;
+            }
 
-    /**
-     * Constructor
-     *
-     * @param inputStream input stream of the maven model
-     * @throws IOException if there is a problem constructing the model
-     */
-    public PomClassicDomainModel( InputStream inputStream )
-        throws IOException
-    {
-        if ( inputStream == null )
+        if(parentGroupId != null && parentArtifactId != null && parentVersion 
!= null)
         {
-            throw new IllegalArgumentException( "inputStream: null" );
+            parentId = parentGroupId + ":" + parentArtifactId + ":" + 
parentVersion;
         }
-        this.inputBytes = IOUtil.toByteArray( inputStream );
+        
+        if(parentRelativePath == null)
+        {
+            parentRelativePath = ".." + File.separator + "pom.xml";
+        }
+
+        id = groupId + ":" + artifactId + ":" + version;
     }
 
     public PomClassicDomainModel( File file )
@@ -149,7 +179,19 @@
     {
         this.parentFile = parentFile;
     }
-    
+
+    public String getParentGroupId() {
+        return parentGroupId;
+    }
+
+    public String getParentArtifactId() {
+        return parentArtifactId;
+    }
+
+    public String getParentVersion() {
+        return parentVersion;
+    }
+
     /**
      * This should only be set for projects that are in the build. Setting for 
poms in the repo may cause unstable behavior.
      * 
@@ -170,72 +212,30 @@
         return projectDirectory != null;
     }
 
-    /**
-     * Returns true if groupId.equals(a.groupId) && 
artifactId.equals(a.artifactId) && version.equals(a.version),
-     * otherwise returns false.
-     *
-     * @param a model to compare
-     * @return true if groupId.equals(a.groupId) && 
artifactId.equals(a.artifactId) && version.equals(a.version),
-     *         otherwise returns false.
-     */
-    public boolean matchesModel( Model a )
+    public String getParentId() throws IOException
     {
-        if ( a == null )
-        {
-            throw new IllegalArgumentException( "a: null" );
-        }
-        if ( model == null )
-        {
-            try
-            {
-                model = getModel();
-            }
-            catch ( IOException e )
-            {
-                return false;
-            }
-        }
-        return a.getId().equals( this.getId() );
+        return parentId;
     }
 
-    public String getId()
+    public String getRelativePathOfParent()
     {
-        if ( id == null )
-        {
-            if ( model == null )
-            {
-                try
-                {
-                    model = getModel();
-                }
-                catch ( IOException e )
-                {
-                    return "";
-                }
-            }
-            String groupId = ( model.getGroupId() == null && model.getParent() 
!= null )
-                ? model.getParent().getGroupId()
-                : model.getGroupId();
-            String artifactId = ( model.getArtifactId() == null && 
model.getParent() != null )
-                ? model.getParent().getArtifactId()
-                : model.getArtifactId();
-            String version = ( model.getVersion() == null && model.getParent() 
!= null )
-                ? model.getParent().getVersion()
-                : model.getVersion();
+        return parentRelativePath;
+    }
 
-            id = groupId + ":" + artifactId + ":" + version;
-        }
+    public String getId() throws IOException
+    {
         return id;
     }
 
 
-    public boolean matchesParent( Parent parent )
+    public boolean matchesParentOf( PomClassicDomainModel domainModel ) throws 
IOException
     {
-        if ( parent == null )
+        if ( domainModel == null )
         {
-            throw new IllegalArgumentException( "parent: null" );
+            throw new IllegalArgumentException( "domainModel: null" );
         }
-        return getId().equals( parent.getGroupId() + ":" + 
parent.getArtifactId() + ":" + parent.getVersion() );
+
+        return getId().equals(domainModel.getParentId());
     }
 
     /**
@@ -257,29 +257,6 @@
     }
 
     /**
-     * Returns maven model
-     *
-     * @return maven model
-     */
-    public Model getModel()
-        throws IOException
-    {
-        if ( model != null )
-        {
-            return model;
-        }
-        try
-        {
-            model = new MavenXpp3Reader().read( ReaderFactory.newXmlReader( 
new ByteArrayInputStream( inputBytes ) ) );
-            return model;
-        }
-        catch ( XmlPullParserException e )
-        {
-            throw new IOException( e.getMessage() );
-        }
-    }
-
-    /**
      * @see 
org.apache.maven.shared.model.InputStreamDomainModel#getInputStream()
      */
     public InputStream getInputStream()
@@ -370,7 +347,11 @@
      */
     public boolean equals( Object o )
     {
-        return o instanceof PomClassicDomainModel && getId().equals( ( 
(PomClassicDomainModel) o ).getId() );
+        try {
+            return o instanceof PomClassicDomainModel && getId().equals( ( 
(PomClassicDomainModel) o ).getId() );
+        } catch (IOException e) {
+            return false;
+        }
     }
 
 }

Propchange: 
maven/components/trunk/maven-project-builder/src/main/java/org/apache/maven/project/builder/PomClassicDomainModel.java
------------------------------------------------------------------------------
    svn:eol-style = native

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

Copied: 
maven/components/trunk/maven-project-builder/src/main/java/org/apache/maven/project/builder/PomClassicDomainModelFactory.java
 (from r745903, 
maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/builder/PomClassicDomainModelFactory.java)
URL: 
http://svn.apache.org/viewvc/maven/components/trunk/maven-project-builder/src/main/java/org/apache/maven/project/builder/PomClassicDomainModelFactory.java?p2=maven/components/trunk/maven-project-builder/src/main/java/org/apache/maven/project/builder/PomClassicDomainModelFactory.java&p1=maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/builder/PomClassicDomainModelFactory.java&r1=745903&r2=746002&rev=746002&view=diff
==============================================================================
--- 
maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/builder/PomClassicDomainModelFactory.java
 (original)
+++ 
maven/components/trunk/maven-project-builder/src/main/java/org/apache/maven/project/builder/PomClassicDomainModelFactory.java
 Thu Feb 19 21:22:46 2009
@@ -3,13 +3,9 @@
 import org.apache.maven.shared.model.DomainModelFactory;
 import org.apache.maven.shared.model.DomainModel;
 import org.apache.maven.shared.model.ModelProperty;
-import org.apache.maven.shared.model.ModelMarshaller;
-import org.apache.maven.model.io.xpp3.MavenXpp3Reader;
-import org.codehaus.plexus.util.xml.pull.XmlPullParserException;
 
 import java.util.List;
 import java.io.IOException;
-import java.io.StringReader;
 
 public class PomClassicDomainModelFactory implements DomainModelFactory
 {

Propchange: 
maven/components/trunk/maven-project-builder/src/main/java/org/apache/maven/project/builder/PomClassicDomainModelFactory.java
------------------------------------------------------------------------------
    svn:eol-style = native

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

Modified: 
maven/components/trunk/maven-project-builder/src/main/java/org/apache/maven/project/builder/PomTransformer.java
URL: 
http://svn.apache.org/viewvc/maven/components/trunk/maven-project-builder/src/main/java/org/apache/maven/project/builder/PomTransformer.java?rev=746002&r1=746001&r2=746002&view=diff
==============================================================================
--- 
maven/components/trunk/maven-project-builder/src/main/java/org/apache/maven/project/builder/PomTransformer.java
 (original)
+++ 
maven/components/trunk/maven-project-builder/src/main/java/org/apache/maven/project/builder/PomTransformer.java
 Thu Feb 19 21:22:46 2009
@@ -799,7 +799,7 @@
                                                    DomainModel domainModel )
         throws IOException
     {
-        IPomClassicDomainModel dm = (IPomClassicDomainModel) domainModel;
+        PomClassicDomainModel dm = (PomClassicDomainModel) domainModel;
 
         if ( !containsProjectVersion( interpolatorProperties ) )
         {

Modified: 
maven/components/trunk/maven-project-builder/src/test/java/org/apache/maven/project/builder/DefaultDomainModel.java
URL: 
http://svn.apache.org/viewvc/maven/components/trunk/maven-project-builder/src/test/java/org/apache/maven/project/builder/DefaultDomainModel.java?rev=746002&r1=746001&r2=746002&view=diff
==============================================================================
--- 
maven/components/trunk/maven-project-builder/src/test/java/org/apache/maven/project/builder/DefaultDomainModel.java
 (original)
+++ 
maven/components/trunk/maven-project-builder/src/test/java/org/apache/maven/project/builder/DefaultDomainModel.java
 Thu Feb 19 21:22:46 2009
@@ -2,17 +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 IPomClassicDomainModel {
+public class DefaultDomainModel extends PomClassicDomainModel {
 
     private List<ModelProperty> modelProperties;
 
     public DefaultDomainModel(List<ModelProperty> modelProperties) {
+        super( modelProperties);
         this.modelProperties = modelProperties;
     }
 

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=746002&r1=746001&r2=746002&view=diff
==============================================================================
--- 
maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java
 (original)
+++ 
maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java
 Thu Feb 19 21:22:46 2009
@@ -19,8 +19,7 @@
  * 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;
@@ -40,6 +39,7 @@
 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.profiles.MavenProfilesBuilder;
 import org.apache.maven.profiles.ProfileManager;
 import org.apache.maven.profiles.activation.DefaultProfileActivationContext;
@@ -47,10 +47,7 @@
 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.DefaultPomArtifactResolver;
-import org.apache.maven.project.builder.PomArtifactResolver;
-import org.apache.maven.project.builder.PomInterpolatorTag;
-import org.apache.maven.project.builder.ProjectBuilder;
+import org.apache.maven.project.builder.*;
 import org.apache.maven.project.validation.ModelValidationResult;
 import org.apache.maven.project.validation.ModelValidator;
 import org.apache.maven.shared.model.InterpolatorProperty;
@@ -59,6 +56,7 @@
 import org.codehaus.plexus.logging.LogEnabled;
 import org.codehaus.plexus.logging.Logger;
 import org.codehaus.plexus.util.StringUtils;
+import org.codehaus.plexus.util.WriterFactory;
 
 
 /**

Copied: 
maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/DefaultPomArtifactResolver.java
 (from r745903, 
maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/builder/DefaultPomArtifactResolver.java)
URL: 
http://svn.apache.org/viewvc/maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/DefaultPomArtifactResolver.java?p2=maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/DefaultPomArtifactResolver.java&p1=maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/builder/DefaultPomArtifactResolver.java&r1=745903&r2=746002&rev=746002&view=diff
==============================================================================
--- 
maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/builder/DefaultPomArtifactResolver.java
 (original)
+++ 
maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/DefaultPomArtifactResolver.java
 Thu Feb 19 21:22:46 2009
@@ -1,4 +1,4 @@
-package org.apache.maven.project.builder;
+package org.apache.maven.project;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
@@ -24,6 +24,7 @@
 import org.apache.maven.artifact.resolver.ArtifactNotFoundException;
 import org.apache.maven.artifact.resolver.ArtifactResolutionException;
 import org.apache.maven.artifact.resolver.ArtifactResolver;
+import org.apache.maven.project.PomArtifactResolver;
 
 import java.io.File;
 import java.io.IOException;

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

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

Propchange: 
maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/DefaultPomArtifactResolver.java
------------------------------------------------------------------------------
--- svn:mergeinfo (added)
+++ svn:mergeinfo Thu Feb 19 21:22:46 2009
@@ -0,0 +1,5 @@
+/maven/components/branches/maven-2.0.10-RC/maven-project/src/main/java/org/apache/maven/project/builder/PomArtifactResolver.java:680477
+/maven/components/branches/maven-2.0.x/maven-project/src/main/java/org/apache/maven/project/builder/PomArtifactResolver.java:679206,720042
+/maven/components/branches/sisbell-plugin-manager/maven-project/src/main/java/org/apache/maven/project/builder/DefaultPomArtifactResolver.java:738973-739966
+/maven/components/sisbell-plugin-manager/maven-project/src/main/java/org/apache/maven/project/builder/DefaultPomArtifactResolver.java:738757-738972
+/maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/builder/PomArtifactResolver.java:688587-696625,696644-699681

Copied: 
maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/DefaultProjectBuilder.java
 (from r745903, 
maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/builder/impl/DefaultProjectBuilder.java)
URL: 
http://svn.apache.org/viewvc/maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/DefaultProjectBuilder.java?p2=maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/DefaultProjectBuilder.java&p1=maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/builder/impl/DefaultProjectBuilder.java&r1=745903&r2=746002&rev=746002&view=diff
==============================================================================
--- 
maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/builder/impl/DefaultProjectBuilder.java
 (original)
+++ 
maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/DefaultProjectBuilder.java
 Thu Feb 19 21:22:46 2009
@@ -1,4 +1,4 @@
-package org.apache.maven.project.builder.impl;
+package org.apache.maven.project;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
@@ -19,9 +19,7 @@
  * under the License.
  */
 
-import java.io.File;
-import java.io.IOException;
-import java.io.Reader;
+import java.io.*;
 import java.util.*;
 
 import org.apache.maven.MavenTools;
@@ -36,11 +34,9 @@
 import org.apache.maven.artifact.InvalidRepositoryException;
 import org.apache.maven.artifact.factory.ArtifactFactory;
 import org.apache.maven.model.Model;
-import org.apache.maven.model.Parent;
 import org.apache.maven.model.io.xpp3.MavenXpp3Reader;
-import org.apache.maven.project.MavenProject;
-import org.apache.maven.project.ProjectBuilderConfiguration;
-import org.apache.maven.project.MavenProjectBuilder;
+import org.apache.maven.model.io.xpp3.MavenXpp3Writer;
+import org.apache.maven.project.*;
 import org.apache.maven.project.builder.*;
 import org.apache.maven.project.builder.ProjectUri;
 import org.apache.maven.project.builder.profile.ProfileContext;
@@ -52,6 +48,8 @@
 import org.codehaus.plexus.logging.Logger;
 import org.codehaus.plexus.util.IOUtil;
 import org.codehaus.plexus.util.ReaderFactory;
+import org.codehaus.plexus.util.WriterFactory;
+import org.codehaus.plexus.util.xml.pull.XmlPullParserException;
 
 /**
  * Default implementation of the project builder.
@@ -233,10 +231,10 @@
 
         File parentFile = null;
         int lineageCount = 0;
-        if ( domainModel.getModel().getParent() != null )
+        if ( domainModel.getParentId() != null )
         {
             List<DomainModel> mavenParents;
-            if ( isParentLocal( domainModel.getModel().getParent(), 
pom.getParentFile() ) )
+            if ( isParentLocal( domainModel.getRelativePathOfParent(), 
pom.getParentFile() ) )
             {
                 mavenParents =
                     getDomainModelParentsFromLocalPath( domainModel, resolver, 
pom.getParentFile(), properties,
@@ -262,7 +260,7 @@
 
         for ( Model model : mixins )
         {
-            domainModels.add( new PomClassicDomainModel( model ) );
+            domainModels.add( convertToDomainModel( model ) );
         }
         
         PomTransformer transformer = new PomTransformer( new 
PomClassicDomainModelFactory() );
@@ -281,6 +279,30 @@
         
         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, 
                                             List<Model> mixins,
@@ -309,7 +331,7 @@
         
         try
         {
-            MavenProject mavenProject = new MavenProject( 
domainModel.getModel(), 
+            MavenProject mavenProject = new MavenProject( 
convertFromInputStreamToModel(domainModel.getInputStream()),
                                                           artifactFactory, 
                                                           mavenTools, 
                                                           mavenProjectBuilder, 
@@ -325,18 +347,32 @@
         }
     }
 
+    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 parent           the parent model info
+     * @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( Parent parent, File projectDirectory )
+    private boolean isParentLocal( String relativePath, File projectDirectory )
     {
         try
         {
-            File f = new File( projectDirectory, parent.getRelativePath() 
).getCanonicalFile();
+            File f = new File( projectDirectory, relativePath 
).getCanonicalFile();
             
             if ( f.isDirectory() )
             {
@@ -360,23 +396,24 @@
     {
         List<DomainModel> domainModels = new ArrayList<DomainModel>();
 
-        Parent parent = domainModel.getModel().getParent();
+        String parentId = domainModel.getParentId();
 
-        if ( parent == null )
+        if ( parentId == null )
         {
             return domainModels;
         }
 
-        Artifact artifactParent = artifactFactory.createParentArtifact( 
parent.getGroupId(), parent.getArtifactId(), parent.getVersion() );
+        Artifact artifactParent = artifactFactory.createParentArtifact( 
domainModel.getParentGroupId(),
+                domainModel.getParentArtifactId(), 
domainModel.getParentVersion() );
         
         artifactResolver.resolve( artifactParent );
 
         PomClassicDomainModel parentDomainModel = new PomClassicDomainModel( 
artifactParent.getFile() );
 
-        if ( !parentDomainModel.matchesParent( 
domainModel.getModel().getParent() ) )
+        if ( !parentDomainModel.matchesParentOf( domainModel ) )
         {
             logger.debug( "Parent pom ids do not match: Parent File = " + 
artifactParent.getFile().getAbsolutePath() +
-                ": Child ID = " + domainModel.getModel().getId() );
+                ": Child ID = " + domainModel.getId() );
             return domainModels;
         }
 
@@ -428,16 +465,16 @@
     {
         List<DomainModel> domainModels = new ArrayList<DomainModel>();
 
-        Parent parent = domainModel.getModel().getParent();
+        String parentId = domainModel.getParentId();
 
-        if ( parent == null )
+        if ( parentId == null )
         {
             return domainModels;
         }
 
-        Model model = domainModel.getModel();
+       // Model model = domainModel.getModel();
 
-        File parentFile = new File( projectDirectory, 
model.getParent().getRelativePath() ).getCanonicalFile();
+        File parentFile = new File( projectDirectory, 
domainModel.getRelativePathOfParent() ).getCanonicalFile();
         if ( parentFile.isDirectory() )
         {
             parentFile = new File( parentFile.getAbsolutePath(), "pom.xml" );
@@ -472,11 +509,11 @@
             domainModels.add(new PomClassicDomainModel(transformed));
         }
 
-        if ( !parentDomainModel.matchesParent( 
domainModel.getModel().getParent() ) )
+        if ( !parentDomainModel.matchesParentOf( domainModel ) )
         {
-            logger.debug( "Parent pom ids do not match: Parent File = " + 
parentFile.getAbsolutePath() + ", Parent ID = "
+            logger.info( "Parent pom ids do not match: Parent File = " + 
parentFile.getAbsolutePath() + ", Parent ID = "
                     + parentDomainModel.getId() + ", Child ID = " + 
domainModel.getId() + ", Expected Parent ID = "
-                    + domainModel.getModel().getParent().getId() );
+                    + domainModel.getParentId() );
             
             List<DomainModel> parentDomainModels =
                 getDomainModelParentsFromRepository( domainModel, 
artifactResolver, properties, activeProfileIds,
@@ -485,7 +522,7 @@
             if(parentDomainModels.size() == 0)
             {
                 throw new IOException("Unable to find parent pom on local path 
or repo: "
-                        + domainModel.getModel().getParent().getId());
+                        + domainModel.getParentId());
             }
             
             domainModels.addAll( parentDomainModels );
@@ -493,9 +530,9 @@
         }
 
         domainModels.add( parentDomainModel );
-        if ( parentDomainModel.getModel().getParent() != null )
+        if ( domainModel.getParentId() != null )
         {
-            if ( isParentLocal( parentDomainModel.getModel().getParent(), 
parentFile.getParentFile() ) )
+            if ( isParentLocal(parentDomainModel.getRelativePathOfParent(), 
parentFile.getParentFile() ) )
             {
                 domainModels.addAll( getDomainModelParentsFromLocalPath( 
parentDomainModel, artifactResolver,
                                                                          
parentFile.getParentFile(), properties,

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

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

Copied: 
maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/PomArtifactResolver.java
 (from r745903, 
maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/builder/PomArtifactResolver.java)
URL: 
http://svn.apache.org/viewvc/maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/PomArtifactResolver.java?p2=maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/PomArtifactResolver.java&p1=maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/builder/PomArtifactResolver.java&r1=745903&r2=746002&rev=746002&view=diff
==============================================================================
--- 
maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/builder/PomArtifactResolver.java
 (original)
+++ 
maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/PomArtifactResolver.java
 Thu Feb 19 21:22:46 2009
@@ -1,4 +1,4 @@
-package org.apache.maven.project.builder;
+package org.apache.maven.project;
 
 import java.io.IOException;
 

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

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

Copied: 
maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/ProjectBuilder.java
 (from r745903, 
maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/builder/ProjectBuilder.java)
URL: 
http://svn.apache.org/viewvc/maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/ProjectBuilder.java?p2=maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/ProjectBuilder.java&p1=maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/builder/ProjectBuilder.java&r1=745903&r2=746002&rev=746002&view=diff
==============================================================================
--- 
maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/builder/ProjectBuilder.java
 (original)
+++ 
maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/ProjectBuilder.java
 Thu Feb 19 21:22:46 2009
@@ -1,4 +1,4 @@
-package org.apache.maven.project.builder;
+package org.apache.maven.project;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
@@ -25,17 +25,15 @@
 import java.util.List;
 
 import org.apache.maven.model.Model;
-import org.apache.maven.project.MavenProject;
-import org.apache.maven.project.ProjectBuilderConfiguration;
-import org.apache.maven.project.MavenProjectBuilder;
 import org.apache.maven.shared.model.InterpolatorProperty;
+import org.apache.maven.project.builder.PomClassicDomainModel;
 
 /**
  * Provides services for building maven projects from models.
  */
 public interface ProjectBuilder
 {
-    public IPomClassicDomainModel buildModel( File pom,
+    public PomClassicDomainModel buildModel( File pom,
                                              Collection<InterpolatorProperty> 
interpolatorProperties,
                                              PomArtifactResolver resolver )
         throws IOException;

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

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

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=746002&r1=746001&r2=746002&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
 Thu Feb 19 21:22:46 2009
@@ -29,15 +29,12 @@
 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.Plugin;
 import org.apache.maven.model.io.xpp3.MavenXpp3Reader;
 import org.apache.maven.artifact.Artifact;
 import org.apache.maven.artifact.repository.DefaultArtifactRepository;
 import org.apache.maven.artifact.repository.layout.DefaultRepositoryLayout;
 import org.apache.maven.project.harness.PomTestWrapper;
-import org.apache.maven.project.MavenProjectBuilder;
-import org.apache.maven.project.ProjectBuilderConfiguration;
-import org.apache.maven.project.DefaultProjectBuilderConfiguration;
+import org.apache.maven.project.*;
 import org.codehaus.plexus.PlexusTestCase;
 import org.codehaus.plexus.util.xml.pull.XmlPullParserException;
 
@@ -83,6 +80,17 @@
         };
     }
 
+    /**
+     * Will throw exception if doesn't find parent(s) in build
+     *
+     * @throws Exception
+     */
+    public void testParentInheritance()
+        throws Exception
+    {
+        buildPom( "parent-inheritance/sub" );
+    }
+
     /*MNG-3995*/
     public void testExecutionConfigurationJoin()
        throws Exception
@@ -112,7 +120,7 @@
     {
         File pom = new File( testDirectory, 
"micromailer/micromailer-1.0.3.pom" );
         PomArtifactResolver resolver = artifactResolver( "micromailer" );
-        IPomClassicDomainModel model = projectBuilder.buildModel( pom, null, 
resolver );
+        PomClassicDomainModel model = projectBuilder.buildModel( pom, null, 
resolver );
         // This should be 2
         //assertEquals( 2, model.getLineageCount() );
         PomTestWrapper tester = new PomTestWrapper( (PomClassicDomainModel) 
model );

Modified: 
maven/components/trunk/maven-project/src/test/java/org/apache/maven/project/harness/PomTestWrapper.java
URL: 
http://svn.apache.org/viewvc/maven/components/trunk/maven-project/src/test/java/org/apache/maven/project/harness/PomTestWrapper.java?rev=746002&r1=746001&r2=746002&view=diff
==============================================================================
--- 
maven/components/trunk/maven-project/src/test/java/org/apache/maven/project/harness/PomTestWrapper.java
 (original)
+++ 
maven/components/trunk/maven-project/src/test/java/org/apache/maven/project/harness/PomTestWrapper.java
 Thu Feb 19 21:22:46 2009
@@ -19,8 +19,7 @@
  * under the License.
  */
 
-import java.io.File;
-import java.io.IOException;
+import java.io.*;
 import java.util.HashMap;
 import java.util.Iterator;
 import java.util.List;
@@ -29,10 +28,13 @@
 import org.apache.commons.jxpath.JXPathContext;
 import org.apache.commons.jxpath.ri.JXPathContextReferenceImpl;
 import org.apache.maven.model.Model;
+import org.apache.maven.model.io.xpp3.MavenXpp3Writer;
+import org.apache.maven.model.io.xpp3.MavenXpp3Reader;
 import org.apache.maven.project.builder.PomClassicDomainModel;
-import org.apache.maven.project.builder.IPomClassicDomainModel;
 import org.apache.maven.project.MavenProject;
 import org.apache.maven.shared.model.ModelProperty;
+import org.codehaus.plexus.util.WriterFactory;
+import org.codehaus.plexus.util.xml.pull.XmlPullParserException;
 
 public class PomTestWrapper
 {
@@ -65,7 +67,11 @@
         }
         this.domainModel = domainModel;
         this.pomFile = pomFile;
-        context = JXPathContext.newContext( domainModel.getModel() );
+        try {
+            context = JXPathContext.newContext( new 
MavenXpp3Reader().read(domainModel.getInputStream()));
+        } catch (XmlPullParserException e) {
+            throw new IOException(e.getMessage());
+        }
     }
 
     public PomTestWrapper( File pomFile, MavenProject mavenProject )
@@ -100,19 +106,11 @@
         }
 
         this.domainModel = new PomClassicDomainModel( file );
-        context = JXPathContext.newContext( domainModel.getModel() );
-    }
-
-    public PomTestWrapper( Model model )
-        throws IOException
-    {
-        if ( model == null )
-        {
-            throw new IllegalArgumentException( "model: null" );
+        try {
+            context = JXPathContext.newContext( new 
MavenXpp3Reader().read(domainModel.getInputStream()));
+        } catch (XmlPullParserException e) {
+            throw new IOException(e.getMessage());
         }
-
-        this.domainModel = new PomClassicDomainModel( model );
-        context = JXPathContext.newContext( domainModel.getModel() );
     }
 
     public MavenProject getMavenProject()
@@ -125,7 +123,7 @@
         if(domainModel == null && mavenProject != null)
         {
             try {
-                return new PomClassicDomainModel(mavenProject.getModel());
+                return convertToDomainModel(mavenProject.getModel());
             } catch (IOException e) {
 
             }
@@ -134,6 +132,30 @@
         return this.domainModel;
     }
 
+    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 File getBasedir()
     {
         return ( pomFile != null ) ? pomFile.getParentFile() : null;

Added: 
maven/components/trunk/maven-project/src/test/resources-project-builder/parent-inheritance/child3.xml
URL: 
http://svn.apache.org/viewvc/maven/components/trunk/maven-project/src/test/resources-project-builder/parent-inheritance/child3.xml?rev=746002&view=auto
==============================================================================
--- 
maven/components/trunk/maven-project/src/test/resources-project-builder/parent-inheritance/child3.xml
 (added)
+++ 
maven/components/trunk/maven-project/src/test/resources-project-builder/parent-inheritance/child3.xml
 Thu Feb 19 21:22:46 2009
@@ -0,0 +1,6 @@
+<project>
+    <groupId>gid</groupId>
+    <artifactId>child-3</artifactId>
+    <version>1.0</version>
+    <modelVersion>4.0.0</modelVersion>
+</project>
\ No newline at end of file

Added: 
maven/components/trunk/maven-project/src/test/resources-project-builder/parent-inheritance/pom.xml
URL: 
http://svn.apache.org/viewvc/maven/components/trunk/maven-project/src/test/resources-project-builder/parent-inheritance/pom.xml?rev=746002&view=auto
==============================================================================
--- 
maven/components/trunk/maven-project/src/test/resources-project-builder/parent-inheritance/pom.xml
 (added)
+++ 
maven/components/trunk/maven-project/src/test/resources-project-builder/parent-inheritance/pom.xml
 Thu Feb 19 21:22:46 2009
@@ -0,0 +1,10 @@
+<project>
+  <parent>
+    <groupId>gid</groupId>
+    <artifactId>child-3</artifactId>
+    <version>1.0</version>
+    <relativePath>child3.xml</relativePath>
+  </parent>
+  <modelVersion>4.0.0</modelVersion>
+  <artifactId>child-2</artifactId>
+</project>
\ No newline at end of file

Added: 
maven/components/trunk/maven-project/src/test/resources-project-builder/parent-inheritance/sub/pom.xml
URL: 
http://svn.apache.org/viewvc/maven/components/trunk/maven-project/src/test/resources-project-builder/parent-inheritance/sub/pom.xml?rev=746002&view=auto
==============================================================================
--- 
maven/components/trunk/maven-project/src/test/resources-project-builder/parent-inheritance/sub/pom.xml
 (added)
+++ 
maven/components/trunk/maven-project/src/test/resources-project-builder/parent-inheritance/sub/pom.xml
 Thu Feb 19 21:22:46 2009
@@ -0,0 +1,9 @@
+<project>
+  <parent>
+    <groupId>gid</groupId>
+    <artifactId>child-2</artifactId>
+    <version>1.0</version>
+  </parent>
+  <modelVersion>4.0.0</modelVersion>
+  <artifactId>child-1</artifactId>
+</project>
\ No newline at end of file

Modified: 
maven/components/trunk/maven-project/src/test/resources/org/apache/maven/project/ProjectClasspathTest.xml
URL: 
http://svn.apache.org/viewvc/maven/components/trunk/maven-project/src/test/resources/org/apache/maven/project/ProjectClasspathTest.xml?rev=746002&r1=746001&r2=746002&view=diff
==============================================================================
--- 
maven/components/trunk/maven-project/src/test/resources/org/apache/maven/project/ProjectClasspathTest.xml
 (original)
+++ 
maven/components/trunk/maven-project/src/test/resources/org/apache/maven/project/ProjectClasspathTest.xml
 Thu Feb 19 21:22:46 2009
@@ -57,9 +57,9 @@
       </requirements>
     </component>
     <component>
-        <role>org.apache.maven.project.builder.ProjectBuilder</role>
+        <role>org.apache.maven.project.ProjectBuilder</role>
         <role-hint>default</role-hint>
-        
<implementation>org.apache.maven.project.builder.impl.DefaultProjectBuilder</implementation>
+        
<implementation>org.apache.maven.project.DefaultProjectBuilder</implementation>
         <requirements>
             <requirement>
                 <role>org.apache.maven.artifact.factory.ArtifactFactory</role>
@@ -75,7 +75,7 @@
       
<implementation>org.apache.maven.project.TestProjectBuilder</implementation>
       <requirements>
         <requirement>
-             <role>org.apache.maven.project.builder.ProjectBuilder</role>
+             <role>org.apache.maven.project.ProjectBuilder</role>
         </requirement>
         <requirement>
           <role>org.apache.maven.profiles.build.ProfileAdvisor</role>

Modified: 
maven/components/trunk/maven-project/src/test/resources/org/apache/maven/project/canonical/CanonicalProjectBuilderTest.xml
URL: 
http://svn.apache.org/viewvc/maven/components/trunk/maven-project/src/test/resources/org/apache/maven/project/canonical/CanonicalProjectBuilderTest.xml?rev=746002&r1=746001&r2=746002&view=diff
==============================================================================
--- 
maven/components/trunk/maven-project/src/test/resources/org/apache/maven/project/canonical/CanonicalProjectBuilderTest.xml
 (original)
+++ 
maven/components/trunk/maven-project/src/test/resources/org/apache/maven/project/canonical/CanonicalProjectBuilderTest.xml
 Thu Feb 19 21:22:46 2009
@@ -60,9 +60,9 @@
       </requirements>
     </component>
     <component>
-        <role>org.apache.maven.project.builder.ProjectBuilder</role>
+        <role>org.apache.maven.project.ProjectBuilder</role>
         <role-hint>default</role-hint>
-        
<implementation>org.apache.maven.project.builder.impl.DefaultProjectBuilder</implementation>
+        
<implementation>org.apache.maven.project.DefaultProjectBuilder</implementation>
         <requirements>
             <requirement>
                 <role>org.apache.maven.artifact.factory.ArtifactFactory</role>
@@ -78,7 +78,7 @@
       
<implementation>org.apache.maven.project.TestProjectBuilder</implementation>
       <requirements>
         <requirement>
-             <role>org.apache.maven.project.builder.ProjectBuilder</role>
+             <role>org.apache.maven.project.ProjectBuilder</role>
         </requirement>
         <requirement>
           <role>org.apache.maven.profiles.build.ProfileAdvisor</role>


Reply via email to