Author: jdcasey
Date: Wed Sep 14 11:38:54 2005
New Revision: 280903

URL: http://svn.apache.org/viewcvs?rev=280903&view=rev
Log:
Fixing case where non-POM artifacts are passed to the project builder for 
parsing...doing defensive construction of POM artifacts inside the project 
builder, and fixed the call in the DependenciesReport.

Modified:
    
maven/components/trunk/maven-plugins/maven-project-info-reports-plugin/src/main/java/org/apache/maven/report/projectinfo/DependenciesReport.java
    
maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java

Modified: 
maven/components/trunk/maven-plugins/maven-project-info-reports-plugin/src/main/java/org/apache/maven/report/projectinfo/DependenciesReport.java
URL: 
http://svn.apache.org/viewcvs/maven/components/trunk/maven-plugins/maven-project-info-reports-plugin/src/main/java/org/apache/maven/report/projectinfo/DependenciesReport.java?rev=280903&r1=280902&r2=280903&view=diff
==============================================================================
--- 
maven/components/trunk/maven-plugins/maven-project-info-reports-plugin/src/main/java/org/apache/maven/report/projectinfo/DependenciesReport.java
 (original)
+++ 
maven/components/trunk/maven-plugins/maven-project-info-reports-plugin/src/main/java/org/apache/maven/report/projectinfo/DependenciesReport.java
 Wed Sep 14 11:38:54 2005
@@ -335,8 +335,15 @@
         private MavenProject getMavenProjectFromRepository( Artifact artifact, 
ArtifactRepository localRepository )
             throws ProjectBuildingException
         {
+            Artifact projectArtifact = artifact;
+            
+            if ( !"pom".equals( artifact.getType() ) )
+            {
+                projectArtifact = 
artifactFactory.createProjectArtifact(artifact.getGroupId(), 
artifact.getArtifactId(), artifact.getVersion(), artifact.getScope() );
+            }
+            
             // TODO: we should use the MavenMetadataSource instead
-            return mavenProjectBuilder.buildFromRepository( artifact, 
project.getRepositories(), localRepository );
+            return mavenProjectBuilder.buildFromRepository( projectArtifact, 
project.getRepositories(), localRepository );
         }
     }
 

Modified: 
maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java
URL: 
http://svn.apache.org/viewcvs/maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java?rev=280903&r1=280902&r2=280903&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
 Wed Sep 14 11:38:54 2005
@@ -321,17 +321,33 @@
                                            ArtifactRepository localRepository )
         throws ProjectBuildingException
     {
-        MavenProject project = getCachedProject( artifact.getGroupId(), 
artifact.getArtifactId(),
-                                                 artifact.getVersion() );
+        Artifact projectArtifact;
+        
+        if ( "pom".equals( artifact.getType() ) )
+        {
+            projectArtifact = artifact;
+        }
+        else
+        {
+            getLogger().warn(
+                              "Attempting to build MavenProject instance for 
Artifact of type: " + artifact.getType()
+                                  + "; constructing POM artifact instead." );
+            
+            projectArtifact = artifactFactory.createProjectArtifact( 
artifact.getGroupId(), artifact.getArtifactId(),
+                                                                     
artifact.getVersion(), artifact.getScope() );
+        }
+        
+        MavenProject project = getCachedProject( projectArtifact.getGroupId(), 
projectArtifact.getArtifactId(),
+                                                 projectArtifact.getVersion() 
);
         Model model;
         if ( project == null )
         {
             // TODO: can't assume artifact is a POM
             try
             {
-                artifactResolver.resolve( artifact, 
remoteArtifactRepositories, localRepository );
+                artifactResolver.resolve( projectArtifact, 
remoteArtifactRepositories, localRepository );
 
-                File file = artifact.getFile();
+                File file = projectArtifact.getFile();
                 model = readModel( file );
 
                 String downloadUrl = null;
@@ -346,7 +362,7 @@
                 }
 
                 // TODO: configurable actions dependant on status
-                if ( !artifact.isSnapshot() && status.compareTo( 
ArtifactStatus.DEPLOYED ) < 0 )
+                if ( !projectArtifact.isSnapshot() && status.compareTo( 
ArtifactStatus.DEPLOYED ) < 0 )
                 {
                     // use default policy (enabled, daily update, warn on bad 
checksum)
                     ArtifactRepositoryPolicy policy = new 
ArtifactRepositoryPolicy();
@@ -356,11 +372,11 @@
                     if ( policy.checkOutOfDate( new Date( file.lastModified() 
) ) )
                     {
                         getLogger().info(
-                            artifact.getArtifactId() + ": updating metadata 
due to status of '" + status + "'" );
+                            projectArtifact.getArtifactId() + ": updating 
metadata due to status of '" + status + "'" );
                         try
                         {
-                            artifact.setResolved( false );
-                            artifactResolver.resolveAlways( artifact, 
remoteArtifactRepositories, localRepository );
+                            projectArtifact.setResolved( false );
+                            artifactResolver.resolveAlways( projectArtifact, 
remoteArtifactRepositories, localRepository );
                         }
                         catch ( ArtifactResolutionException e )
                         {
@@ -374,11 +390,11 @@
                 // Can a maven-core implementation of the Artifact interface 
store it, and be used in the exceptions?
                 if ( downloadUrl != null )
                 {
-                    artifact.setDownloadUrl( downloadUrl );
+                    projectArtifact.setDownloadUrl( downloadUrl );
                 }
                 else
                 {
-                    artifact.setDownloadUrl( model.getUrl() );
+                    projectArtifact.setDownloadUrl( model.getUrl() );
                 }
 
             }
@@ -388,15 +404,15 @@
                 // only not found should have the below behaviour
 //                throw new ProjectBuildingException( "Unable to find the POM 
in the repository", e );
 
-                getLogger().warn( "\n  ***** Using defaults for missing POM " 
+ artifact.getId() + " *****\n" );
+                getLogger().warn( "\n  ***** Using defaults for missing POM " 
+ projectArtifact.getId() + " *****\n" );
 
                 model = new Model();
                 model.setModelVersion( "4.0.0" );
-                model.setArtifactId( artifact.getArtifactId() );
-                model.setGroupId( artifact.getGroupId() );
-                model.setVersion( artifact.getVersion() );
+                model.setArtifactId( projectArtifact.getArtifactId() );
+                model.setGroupId( projectArtifact.getGroupId() );
+                model.setVersion( projectArtifact.getVersion() );
                 // TODO: not correct in some instances
-                model.setPackaging( artifact.getType() );
+                model.setPackaging( projectArtifact.getType() );
 
                 model.setDistributionManagement( new DistributionManagement() 
);
                 model.getDistributionManagement().setStatus( 
ArtifactStatus.GENERATED.toString() );



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to