[MANTTASKS-91] adding back code removed by error

git-svn-id: https://svn.apache.org/repos/asf/maven/ant-tasks/branches/maven-ant-tasks-2.0.x@600399 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/src/main/java/org/apache/maven/artifact/ant/Pom.java b/src/main/java/org/apache/maven/artifact/ant/Pom.java
index 53e6888..86889fd 100644
--- a/src/main/java/org/apache/maven/artifact/ant/Pom.java
+++ b/src/main/java/org/apache/maven/artifact/ant/Pom.java
@@ -20,25 +20,39 @@
  */
 
 import org.apache.maven.artifact.Artifact;
+import org.apache.maven.artifact.factory.ArtifactFactory;
+import org.apache.maven.artifact.metadata.ArtifactMetadataSource;
 import org.apache.maven.artifact.repository.ArtifactRepository;
+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.model.Build;
 import org.apache.maven.model.CiManagement;
 import org.apache.maven.model.DependencyManagement;
 import org.apache.maven.model.DistributionManagement;
 import org.apache.maven.model.IssueManagement;
+import org.apache.maven.model.Model;
 import org.apache.maven.model.Organization;
+import org.apache.maven.model.Parent;
 import org.apache.maven.model.Reporting;
 import org.apache.maven.model.Scm;
+import org.apache.maven.model.io.xpp3.MavenXpp3Reader;
 import org.apache.maven.project.MavenProject;
 import org.apache.maven.project.MavenProjectBuilder;
 import org.apache.maven.project.MavenProjectHelper;
 import org.apache.maven.project.ProjectBuildingException;
+import org.apache.maven.project.artifact.MavenMetadataSource;
 import org.apache.tools.ant.BuildException;
 import org.apache.tools.ant.Project;
 import org.apache.tools.ant.PropertyHelper;
+import org.codehaus.plexus.util.ReaderFactory;
 import org.codehaus.plexus.util.introspection.ReflectionValueExtractor;
+import org.codehaus.plexus.util.xml.pull.XmlPullParserException;
 
 import java.io.File;
+import java.io.IOException;
+import java.io.Reader;
+import java.util.Collections;
 import java.util.List;
 
 /**
@@ -148,6 +162,8 @@
         // TODO: should this be in execute() too? Would that work when it is used as a type?
         if ( file != null )
         {
+            checkParentPom();
+
             try
             {
                 mavenProject = builder.build( file, localRepository, getProfileManager() );
@@ -163,6 +179,56 @@
         }
     }
 
+    private void checkParentPom()
+    {
+        Model model = null;
+        try
+        {
+            Reader reader = ReaderFactory.newXmlReader( file );
+            model = new MavenXpp3Reader().read( reader );
+        }
+        catch ( IOException e )
+        {
+            throw new BuildException( "IO error while reading pom: " + e.getMessage(), e );
+        }
+        catch ( XmlPullParserException e )
+        {
+            throw new BuildException( "Error parsing pom: " + e.getMessage(), e );
+        }
+
+        if ( model.getParent() != null && model.getParent().getRelativePath() != null )
+        {
+            // resolve parent pom
+            Parent parent = model.getParent();
+            String groupId = parent.getGroupId();
+            String artifactId = parent.getArtifactId();
+            String version = parent.getVersion();
+
+            ArtifactFactory factory = (ArtifactFactory) lookup( ArtifactFactory.ROLE );
+            Artifact parentArtifact = factory.createParentArtifact( groupId, artifactId, version );
+
+            try
+            {
+                MavenMetadataSource metadataSource = (MavenMetadataSource) lookup( ArtifactMetadataSource.ROLE );
+                ArtifactResolver resolver = (ArtifactResolver) lookup( ArtifactResolver.ROLE );
+                List remoteRepositories = createRemoteArtifactRepositories();
+
+                resolver.resolveTransitively( Collections.singleton( parentArtifact ),
+                                              createDummyArtifact(), createLocalArtifactRepository(),
+                                              remoteRepositories, metadataSource, null );
+            }
+            catch ( ArtifactResolutionException e )
+            {
+                // MANTTASKS-87: don't fail if parent pom is not resolved immediately
+                log( "Error downloading parent pom " + parent.getId() + ": " + e.getMessage(), Project.MSG_WARN );
+            }
+            catch ( ArtifactNotFoundException e )
+            {
+                throw new BuildException( "Unable to download parent pom " + parent.getId() + " in remote repository: " + e.getMessage(), e );
+            }
+        }
+    }
+
     protected MavenProject getMavenProject()
     {
         return getInstance().mavenProject;