You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by hb...@apache.org on 2011/05/09 00:34:59 UTC

svn commit: r1100828 - in /maven/plugins/trunk/maven-project-info-reports-plugin/src: it/full-pom/ main/java/org/apache/maven/report/projectinfo/ main/java/org/apache/maven/report/projectinfo/dependencies/renderer/ test/java/org/apache/maven/report/pro...

Author: hboutemy
Date: Sun May  8 22:34:59 2011
New Revision: 1100828

URL: http://svn.apache.org/viewvc?rev=1100828&view=rev
Log:
[MPIR-216] resolve artifact version for dependency-management report when version range used

Modified:
    maven/plugins/trunk/maven-project-info-reports-plugin/src/it/full-pom/pom.xml
    maven/plugins/trunk/maven-project-info-reports-plugin/src/it/full-pom/verify.bsh
    maven/plugins/trunk/maven-project-info-reports-plugin/src/main/java/org/apache/maven/report/projectinfo/AbstractProjectInfoReport.java
    maven/plugins/trunk/maven-project-info-reports-plugin/src/main/java/org/apache/maven/report/projectinfo/DependenciesReport.java
    maven/plugins/trunk/maven-project-info-reports-plugin/src/main/java/org/apache/maven/report/projectinfo/DependencyManagementReport.java
    maven/plugins/trunk/maven-project-info-reports-plugin/src/main/java/org/apache/maven/report/projectinfo/dependencies/renderer/DependencyManagementRenderer.java
    maven/plugins/trunk/maven-project-info-reports-plugin/src/test/java/org/apache/maven/report/projectinfo/AbstractProjectInfoTestCase.java
    maven/plugins/trunk/maven-project-info-reports-plugin/src/test/resources/plugin-configs/dependencies-plugin-config.xml

Modified: maven/plugins/trunk/maven-project-info-reports-plugin/src/it/full-pom/pom.xml
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-project-info-reports-plugin/src/it/full-pom/pom.xml?rev=1100828&r1=1100827&r2=1100828&view=diff
==============================================================================
--- maven/plugins/trunk/maven-project-info-reports-plugin/src/it/full-pom/pom.xml (original)
+++ maven/plugins/trunk/maven-project-info-reports-plugin/src/it/full-pom/pom.xml Sun May  8 22:34:59 2011
@@ -131,9 +131,9 @@
   <dependencyManagement>
     <dependencies>
       <dependency>
-        <groupId>org.codehaus.plexus</groupId>
-        <artifactId>plexus-utils</artifactId>
-        <version>1.5.5</version>
+        <groupId>org.apache.maven.doxia</groupId>
+        <artifactId>doxia-sink-api</artifactId>
+        <version>[1.0,)</version>
       </dependency>
     </dependencies>
   </dependencyManagement>

Modified: maven/plugins/trunk/maven-project-info-reports-plugin/src/it/full-pom/verify.bsh
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-project-info-reports-plugin/src/it/full-pom/verify.bsh?rev=1100828&r1=1100827&r2=1100828&view=diff
==============================================================================
--- maven/plugins/trunk/maven-project-info-reports-plugin/src/it/full-pom/verify.bsh (original)
+++ maven/plugins/trunk/maven-project-info-reports-plugin/src/it/full-pom/verify.bsh Sun May  8 22:34:59 2011
@@ -95,6 +95,14 @@ try
         System.err.println( "dependencies.html doesn't contain doxia-core-1.2.jar" );
         return false;
     }
+
+    File dependencyMgmt = new File( siteDir, "dependency-management.html");
+    content = FileUtils.fileRead( dependencyMgmt, "UTF-8" );
+    if ( !content.contains( "http://maven.apache.org/doxia/doxia/doxia-sink-api/" ) )
+    {
+        System.err.println( "dependency-management doesn't contain doxia-sink-api url http://maven.apache.org/doxia/doxia/doxia-sink-api/" );
+        return false;
+    }
 }
 catch( Throwable t )
 {

Modified: maven/plugins/trunk/maven-project-info-reports-plugin/src/main/java/org/apache/maven/report/projectinfo/AbstractProjectInfoReport.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-project-info-reports-plugin/src/main/java/org/apache/maven/report/projectinfo/AbstractProjectInfoReport.java?rev=1100828&r1=1100827&r2=1100828&view=diff
==============================================================================
--- maven/plugins/trunk/maven-project-info-reports-plugin/src/main/java/org/apache/maven/report/projectinfo/AbstractProjectInfoReport.java (original)
+++ maven/plugins/trunk/maven-project-info-reports-plugin/src/main/java/org/apache/maven/report/projectinfo/AbstractProjectInfoReport.java Sun May  8 22:34:59 2011
@@ -56,6 +56,7 @@ import java.net.URL;
 import java.net.URLClassLoader;
 import java.text.MessageFormat;
 import java.util.HashMap;
+import java.util.List;
 import java.util.Locale;
 import java.util.Map;
 import java.util.MissingResourceException;
@@ -144,6 +145,14 @@ public abstract class AbstractProjectInf
     protected ArtifactRepository localRepository;
 
     /**
+     * Remote repositories used for the project.
+     *
+     * @since 2.1
+     * @parameter expression="${project.remoteArtifactRepositories}"
+     */
+    protected List<ArtifactRepository> remoteRepositories;
+
+    /**
      * The current user system settings for use in Maven.
      *
      * @parameter expression="${settings}"

Modified: maven/plugins/trunk/maven-project-info-reports-plugin/src/main/java/org/apache/maven/report/projectinfo/DependenciesReport.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-project-info-reports-plugin/src/main/java/org/apache/maven/report/projectinfo/DependenciesReport.java?rev=1100828&r1=1100827&r2=1100828&view=diff
==============================================================================
--- maven/plugins/trunk/maven-project-info-reports-plugin/src/main/java/org/apache/maven/report/projectinfo/DependenciesReport.java (original)
+++ maven/plugins/trunk/maven-project-info-reports-plugin/src/main/java/org/apache/maven/report/projectinfo/DependenciesReport.java Sun May  8 22:34:59 2011
@@ -135,16 +135,6 @@ public class DependenciesReport
     // ----------------------------------------------------------------------
 
     /**
-     * Remote repositories used for the project.
-     *
-     * @since 2.1
-     * @parameter expression="${project.remoteArtifactRepositories}"
-     * @required
-     * @readonly
-     */
-    private List<ArtifactRepository> remoteRepositories;
-
-    /**
      * Display file details for each dependency, such as: file size, number of
      * classes, number of packages etc.
      *

Modified: maven/plugins/trunk/maven-project-info-reports-plugin/src/main/java/org/apache/maven/report/projectinfo/DependencyManagementReport.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-project-info-reports-plugin/src/main/java/org/apache/maven/report/projectinfo/DependencyManagementReport.java?rev=1100828&r1=1100827&r2=1100828&view=diff
==============================================================================
--- maven/plugins/trunk/maven-project-info-reports-plugin/src/main/java/org/apache/maven/report/projectinfo/DependencyManagementReport.java (original)
+++ maven/plugins/trunk/maven-project-info-reports-plugin/src/main/java/org/apache/maven/report/projectinfo/DependencyManagementReport.java Sun May  8 22:34:59 2011
@@ -24,6 +24,7 @@ import java.util.Locale;
 
 import org.apache.maven.artifact.factory.ArtifactFactory;
 import org.apache.maven.artifact.manager.WagonManager;
+import org.apache.maven.artifact.metadata.ArtifactMetadataSource;
 import org.apache.maven.artifact.repository.ArtifactRepository;
 import org.apache.maven.artifact.repository.metadata.RepositoryMetadataManager;
 import org.apache.maven.project.MavenProjectBuilder;
@@ -55,6 +56,14 @@ public class DependencyManagementReport
     private MavenProjectBuilder mavenProjectBuilder;
 
     /**
+     * Artifact metadata source component.
+     *
+     * @component
+     * @since 2.4
+     */
+    protected ArtifactMetadataSource artifactMetadataSource;
+
+    /**
      * Maven Artifact Factory component.
      *
      * @component
@@ -82,14 +91,6 @@ public class DependencyManagementReport
     // ----------------------------------------------------------------------
 
     /**
-     * Remote repositories used for the project.
-     *
-     * @since 2.1
-     * @parameter expression="${project.remoteArtifactRepositories}"
-     */
-    private List<ArtifactRepository> remoteRepositories;
-
-    /**
      * Lazy instantiation for management dependencies.
      */
     private ManagementDependencies managementDependencies;
@@ -110,7 +111,7 @@ public class DependencyManagementReport
 
         DependencyManagementRenderer r =
             new DependencyManagementRenderer( getSink(), locale, getI18N( locale ), getLog(), getManagementDependencies(),
-                                              artifactFactory, mavenProjectBuilder, remoteRepositories,
+                                              artifactMetadataSource, artifactFactory, mavenProjectBuilder, remoteRepositories,
                                               localRepository, repoUtils );
         r.render();
     }

Modified: maven/plugins/trunk/maven-project-info-reports-plugin/src/main/java/org/apache/maven/report/projectinfo/dependencies/renderer/DependencyManagementRenderer.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-project-info-reports-plugin/src/main/java/org/apache/maven/report/projectinfo/dependencies/renderer/DependencyManagementRenderer.java?rev=1100828&r1=1100827&r2=1100828&view=diff
==============================================================================
--- maven/plugins/trunk/maven-project-info-reports-plugin/src/main/java/org/apache/maven/report/projectinfo/dependencies/renderer/DependencyManagementRenderer.java (original)
+++ maven/plugins/trunk/maven-project-info-reports-plugin/src/main/java/org/apache/maven/report/projectinfo/dependencies/renderer/DependencyManagementRenderer.java Sun May  8 22:34:59 2011
@@ -27,7 +27,10 @@ import java.util.Map;
 
 import org.apache.maven.artifact.Artifact;
 import org.apache.maven.artifact.factory.ArtifactFactory;
+import org.apache.maven.artifact.metadata.ArtifactMetadataRetrievalException;
+import org.apache.maven.artifact.metadata.ArtifactMetadataSource;
 import org.apache.maven.artifact.repository.ArtifactRepository;
+import org.apache.maven.artifact.versioning.ArtifactVersion;
 import org.apache.maven.doxia.sink.Sink;
 import org.apache.maven.model.Dependency;
 import org.apache.maven.model.License;
@@ -54,6 +57,8 @@ public class DependencyManagementRendere
 
     private final Log log;
 
+    private final ArtifactMetadataSource artifactMetadataSource;
+
     private final ArtifactFactory artifactFactory;
 
     private final MavenProjectBuilder mavenProjectBuilder;
@@ -79,8 +84,9 @@ public class DependencyManagementRendere
      * @param repoUtils
      */
     public DependencyManagementRenderer( Sink sink, Locale locale, I18N i18n, Log log,
-                                         ManagementDependencies dependencies, ArtifactFactory artifactFactory,
-                                         MavenProjectBuilder mavenProjectBuilder,
+                                         ManagementDependencies dependencies,
+                                         ArtifactMetadataSource artifactMetadataSource,
+                                         ArtifactFactory artifactFactory, MavenProjectBuilder mavenProjectBuilder,
                                          List<ArtifactRepository> remoteRepositories,
                                          ArtifactRepository localRepository, RepositoryUtils repoUtils )
     {
@@ -88,6 +94,7 @@ public class DependencyManagementRendere
 
         this.log = log;
         this.dependencies = dependencies;
+        this.artifactMetadataSource = artifactMetadataSource;
         this.artifactFactory = artifactFactory;
         this.mavenProjectBuilder = mavenProjectBuilder;
         this.remoteRepositories = remoteRepositories;
@@ -202,41 +209,63 @@ public class DependencyManagementRendere
         }
     }
 
+    @SuppressWarnings( "unchecked" )
     private String[] getDependencyRow( Dependency dependency, boolean hasClassifier )
     {
-        Artifact artifact = artifactFactory.createParentArtifact( dependency.getGroupId(), dependency.getArtifactId(),
-                                                                  dependency.getVersion() );
-        String url =
-            ProjectInfoReportUtils.getArtifactUrl( artifactFactory, artifact, mavenProjectBuilder, remoteRepositories,
-                                                   localRepository );
-        String artifactIdCell = ProjectInfoReportUtils.getArtifactIdCell( artifact.getArtifactId(), url );
+        Artifact artifact =
+            artifactFactory.createProjectArtifact( dependency.getGroupId(), dependency.getArtifactId(),
+                                                   dependency.getVersion() );
 
-        MavenProject artifactProject;
-        StringBuffer sb = new StringBuffer();
+        StringBuffer licensesBuffer = new StringBuffer();
+        String url = null;
         try
         {
-            artifactProject = repoUtils.getMavenProjectFromRepository( artifact );
-            @SuppressWarnings( "unchecked" )
+            List<ArtifactVersion> versions =
+                artifactMetadataSource.retrieveAvailableVersions( artifact, localRepository, remoteRepositories );
+
+            if ( versions.size() > 0 )
+            {
+                Collections.sort( versions );
+                
+                artifact.setVersion( versions.get( versions.size() - 1 ).toString() );
+            }
+
+            url =
+                ProjectInfoReportUtils.getArtifactUrl( artifactFactory, artifact, mavenProjectBuilder,
+                                                       remoteRepositories, localRepository );
+
+            MavenProject artifactProject = repoUtils.getMavenProjectFromRepository( artifact );
+
             List<License> licenses = artifactProject.getLicenses();
             for ( License license : licenses )
             {
-                String artifactIdCell2 = ProjectInfoReportUtils.getArtifactIdCell( license.getName(), license.getUrl() );
-                sb.append( artifactIdCell2 );
+                String licenseCell = ProjectInfoReportUtils.getArtifactIdCell( license.getName(), license.getUrl() );
+                if ( licensesBuffer.length() > 0 )
+                {
+                    licensesBuffer.append( ", " );
+                }
+                licensesBuffer.append( licenseCell );
             }
         }
+        catch ( ArtifactMetadataRetrievalException e )
+        {
+            log.warn( "Unable to retrieve versions for " + artifact.getId() + " from repository.", e );
+        }
         catch ( ProjectBuildingException e )
         {
-            log.warn( "Unable to create Maven project from repository.", e );
+            log.warn( "Unable to create Maven project for " + artifact.getId() + " from repository.", e );
         }
 
+        String artifactIdCell = ProjectInfoReportUtils.getArtifactIdCell( artifact.getArtifactId(), url );
+
         if ( hasClassifier )
         {
             return new String[] { dependency.getGroupId(), artifactIdCell, dependency.getVersion(),
-                dependency.getClassifier(), dependency.getType(), sb.toString() };
+                dependency.getClassifier(), dependency.getType(), licensesBuffer.toString() };
         }
 
         return new String[] { dependency.getGroupId(), artifactIdCell, dependency.getVersion(),
-            dependency.getType(), sb.toString() };
+            dependency.getType(), licensesBuffer.toString() };
     }
 
     private Comparator<Dependency> getDependencyComparator()

Modified: maven/plugins/trunk/maven-project-info-reports-plugin/src/test/java/org/apache/maven/report/projectinfo/AbstractProjectInfoTestCase.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-project-info-reports-plugin/src/test/java/org/apache/maven/report/projectinfo/AbstractProjectInfoTestCase.java?rev=1100828&r1=1100827&r2=1100828&view=diff
==============================================================================
--- maven/plugins/trunk/maven-project-info-reports-plugin/src/test/java/org/apache/maven/report/projectinfo/AbstractProjectInfoTestCase.java (original)
+++ maven/plugins/trunk/maven-project-info-reports-plugin/src/test/java/org/apache/maven/report/projectinfo/AbstractProjectInfoTestCase.java Sun May  8 22:34:59 2011
@@ -19,8 +19,6 @@ package org.apache.maven.report.projecti
  * under the License.
  */
 
-import org.apache.maven.artifact.repository.ArtifactRepository;
-import org.apache.maven.plugin.Mojo;
 import org.apache.maven.plugin.testing.AbstractMojoTestCase;
 import org.apache.maven.profiles.DefaultProfileManager;
 import org.apache.maven.profiles.ProfileManager;
@@ -159,18 +157,17 @@ public abstract class AbstractProjectInf
         throws Exception
     {
         File pluginXmlFile = new File( getBasedir(), "src/test/resources/plugin-configs/" + pluginXml );
-        Mojo mojo = lookupMojo( goal, pluginXmlFile );
+        AbstractProjectInfoReport mojo = (AbstractProjectInfoReport) lookupMojo( goal, pluginXmlFile );
         assertNotNull( "Mojo found.", mojo );
 
+        setVariableValueToObject( mojo, "remoteRepositories", mojo.project.getRemoteArtifactRepositories() );
+
         mojo.execute();
 
         MavenProjectBuilder builder = (MavenProjectBuilder) lookup( MavenProjectBuilder.ROLE );
         ProfileManager profileManager = new DefaultProfileManager( getContainer(), null, null );
 
-        ArtifactRepository localRepository = (ArtifactRepository) getVariableValueFromObject( mojo,
-                                                                                              "localRepository" );
-
-        testMavenProject = builder.buildWithDependencies( pluginXmlFile, localRepository, profileManager );
+        testMavenProject = builder.buildWithDependencies( pluginXmlFile, mojo.localRepository, profileManager );
 
         MavenReport reportMojo = (MavenReport) mojo;
         File outputDir = reportMojo.getReportOutputDirectory();

Modified: maven/plugins/trunk/maven-project-info-reports-plugin/src/test/resources/plugin-configs/dependencies-plugin-config.xml
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-project-info-reports-plugin/src/test/resources/plugin-configs/dependencies-plugin-config.xml?rev=1100828&r1=1100827&r2=1100828&view=diff
==============================================================================
--- maven/plugins/trunk/maven-project-info-reports-plugin/src/test/resources/plugin-configs/dependencies-plugin-config.xml (original)
+++ maven/plugins/trunk/maven-project-info-reports-plugin/src/test/resources/plugin-configs/dependencies-plugin-config.xml Sun May  8 22:34:59 2011
@@ -40,8 +40,8 @@ under the License.
         <configuration>
           <outputDirectory>target/test-harness/dependencies</outputDirectory>
           <localRepository>${localRepository}</localRepository>
-            <project implementation="org.apache.maven.report.projectinfo.stubs.DependenciesStub"/>
-            <settings implementation="org.apache.maven.report.projectinfo.stubs.SettingsStub"/>
+          <project implementation="org.apache.maven.report.projectinfo.stubs.DependenciesStub"/>
+          <settings implementation="org.apache.maven.report.projectinfo.stubs.SettingsStub"/>
         </configuration>
       </plugin>
     </plugins>