Author: hboutemy
Date: Sat Oct 13 22:51:30 2012
New Revision: 1397965

URL: http://svn.apache.org/viewvc?rev=1397965&view=rev
Log:
[MPIR-255] check if version is a range before retrieving metadata from 
repository

Modified:
    
maven/plugins/trunk/maven-project-info-reports-plugin/src/it/full-pom/pom.xml
    
maven/plugins/trunk/maven-project-info-reports-plugin/src/main/java/org/apache/maven/report/projectinfo/dependencies/renderer/DependencyManagementRenderer.java

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=1397965&r1=1397964&r2=1397965&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 
Sat Oct 13 22:51:30 2012
@@ -140,13 +140,17 @@
         <artifactId>doxia-sink-api</artifactId>
         <version>[1.0,)</version>
       </dependency>
+      <dependency>
+        <groupId>org.apache.maven</groupId>
+        <artifactId>maven-artifact</artifactId>
+        <version>2.1.0</version>
+      </dependency>
     </dependencies>
   </dependencyManagement>
   <dependencies>
     <dependency>
       <groupId>org.apache.maven</groupId>
       <artifactId>maven-artifact</artifactId>
-      <version>2.1.0</version>
     </dependency>
     <dependency>
       <groupId>org.apache.maven.doxia</groupId>

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=1397965&r1=1397964&r2=1397965&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
 Sat Oct 13 22:51:30 2012
@@ -21,6 +21,7 @@ package org.apache.maven.report.projecti
 
 import java.util.Collections;
 import java.util.Comparator;
+import java.util.Iterator;
 import java.util.List;
 import java.util.Locale;
 import java.util.Map;
@@ -31,6 +32,8 @@ import org.apache.maven.artifact.metadat
 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.artifact.versioning.InvalidVersionSpecificationException;
+import org.apache.maven.artifact.versioning.VersionRange;
 import org.apache.maven.doxia.sink.Sink;
 import org.apache.maven.model.Dependency;
 import org.apache.maven.model.License;
@@ -220,14 +223,33 @@ public class DependencyManagementRendere
         String url = null;
         try
         {
-            List<ArtifactVersion> versions =
-                artifactMetadataSource.retrieveAvailableVersions( artifact, 
localRepository, remoteRepositories );
+            VersionRange range = VersionRange.createFromVersionSpec( 
dependency.getVersion() );
 
-            if ( versions.size() > 0 )
+            if ( range.getRecommendedVersion() == null )
             {
-                Collections.sort( versions );
-                
-                artifact.setVersion( versions.get( versions.size() - 1 
).toString() );
+                // MPIR-216: no direct version but version range: need to 
choose one precise version
+                log.debug( "Resolving range for DependencyManagement on " + 
artifact.getId() );
+
+                List<ArtifactVersion> versions =
+                    artifactMetadataSource.retrieveAvailableVersions( 
artifact, localRepository, remoteRepositories );
+    
+                // only use versions from range
+                for ( Iterator<ArtifactVersion> iter = versions.iterator(); 
iter.hasNext(); )
+                {
+                    if ( ! range.containsVersion( iter.next() ) )
+                    {
+                        iter.remove();
+                    }
+                }
+
+                // select latest, assuming pom information will be the most 
accurate
+                if ( versions.size() > 0 )
+                {
+                    Collections.sort( versions );
+                    
+                    artifact.setVersion( versions.get( versions.size() - 1 
).toString() );
+                    log.debug( "DependencyManagement resolved: " + 
artifact.getId() );
+                }
             }
 
             url =
@@ -247,6 +269,10 @@ public class DependencyManagementRendere
                 licensesBuffer.append( licenseCell );
             }
         }
+        catch ( InvalidVersionSpecificationException e )
+        {
+            log.warn( "Unable to parse version for " + artifact.getId(), e );
+        }
         catch ( ArtifactMetadataRetrievalException e )
         {
             log.warn( "Unable to retrieve versions for " + artifact.getId() + 
" from repository.", e );


Reply via email to