Author: bentmann
Date: Thu Oct 29 14:44:08 2009
New Revision: 830969

URL: http://svn.apache.org/viewvc?rev=830969&view=rev
Log:
o Fixed backward-compat

Modified:
    
maven/maven-3/trunk/maven-compat/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java

Modified: 
maven/maven-3/trunk/maven-compat/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java
URL: 
http://svn.apache.org/viewvc/maven/maven-3/trunk/maven-compat/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java?rev=830969&r1=830968&r2=830969&view=diff
==============================================================================
--- 
maven/maven-3/trunk/maven-compat/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java
 (original)
+++ 
maven/maven-3/trunk/maven-compat/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java
 Thu Oct 29 14:44:08 2009
@@ -23,8 +23,12 @@
 import org.apache.maven.artifact.Artifact;
 import org.apache.maven.artifact.InvalidRepositoryException;
 import org.apache.maven.artifact.repository.ArtifactRepository;
+import org.apache.maven.artifact.resolver.MultipleArtifactsNotFoundException;
 import org.apache.maven.execution.MavenSession;
+import org.apache.maven.model.DistributionManagement;
+import org.apache.maven.model.Model;
 import org.apache.maven.model.Repository;
+import org.apache.maven.model.building.ModelBuildingException;
 import org.apache.maven.model.building.ModelBuildingRequest;
 import org.apache.maven.plugin.LegacySupport;
 import org.apache.maven.profiles.ProfileManager;
@@ -125,18 +129,13 @@
         return build( project, configuration );
     }
 
-    public MavenProject buildFromRepository( Artifact artifact, 
List<ArtifactRepository> remoteRepositories, ArtifactRepository 
localRepository, boolean force )
+    public MavenProject buildFromRepository( Artifact artifact, 
List<ArtifactRepository> remoteRepositories,
+                                             ArtifactRepository 
localRepository, boolean allowStubModel )
         throws ProjectBuildingException
     {
-        return buildFromRepository( artifact, remoteRepositories, 
localRepository );        
-    }
-
-    public MavenProject buildFromRepository( Artifact artifact, 
List<ArtifactRepository> remoteRepositories, ArtifactRepository localRepository 
)
-        throws ProjectBuildingException
-    {
-        ProjectBuilderConfiguration configuration = new 
DefaultProjectBuilderConfiguration()
-            .setLocalRepository( localRepository )
-            .setRemoteRepositories( remoteRepositories );
+        ProjectBuilderConfiguration configuration = new 
DefaultProjectBuilderConfiguration();
+        configuration.setLocalRepository( localRepository );
+        configuration.setRemoteRepositories( remoteRepositories );
         configuration.setProcessPlugins( false );
         configuration.setValidationLevel( 
ModelBuildingRequest.VALIDATION_LEVEL_MINIMAL );
 
@@ -151,7 +150,57 @@
             configuration.setSystemProperties( System.getProperties() );
         }
 
-        return buildFromRepository( artifact, configuration );
+        try
+        {
+            return buildFromRepository( artifact, configuration );
+        }
+        catch ( ProjectBuildingException e )
+        {
+            if ( e.getCause() instanceof ModelBuildingException )
+            {
+                throw new InvalidProjectModelException( e.getProjectId(), 
e.getMessage(), e.getPomFile() );
+            }
+            else if ( e.getCause() instanceof 
MultipleArtifactsNotFoundException )
+            {
+                if ( allowStubModel )
+                {
+                    MavenProject stubProject = new MavenProject( 
createStubModel( artifact ) );
+                    stubProject.setParent( buildStandaloneSuperProject( 
configuration ) );
+                    return stubProject;
+                }
+            }
+
+            throw e;
+        }
+    }
+
+    private Model createStubModel( Artifact projectArtifact )
+    {
+        Model model = new Model();
+
+        model.setModelVersion( "4.0.0" );
+
+        model.setArtifactId( projectArtifact.getArtifactId() );
+
+        model.setGroupId( projectArtifact.getGroupId() );
+
+        model.setVersion( projectArtifact.getVersion() );
+
+        // TODO: not correct in some instances
+        model.setPackaging( projectArtifact.getType() );
+
+        model.setDistributionManagement( new DistributionManagement() );
+
+        model.getDistributionManagement().setStatus( "generated" );
+
+        return model;
+    }
+
+    public MavenProject buildFromRepository( Artifact artifact, 
List<ArtifactRepository> remoteRepositories,
+                                             ArtifactRepository 
localRepository )
+        throws ProjectBuildingException
+    {
+        return buildFromRepository( artifact, remoteRepositories, 
localRepository, true );
     }
 
     /**


Reply via email to