You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by de...@apache.org on 2007/07/30 23:44:59 UTC

svn commit: r561140 - /maven/plugins/trunk/maven-project-info-reports-plugin/src/main/java/org/apache/maven/report/projectinfo/DependencyConvergenceReport.java

Author: dennisl
Date: Mon Jul 30 14:44:58 2007
New Revision: 561140

URL: http://svn.apache.org/viewvc?view=rev&rev=561140
Log:
[MPIR-28] improve convergence report

o Ignore counting snapshots for dependencies that are projects in the reactor.

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

Modified: maven/plugins/trunk/maven-project-info-reports-plugin/src/main/java/org/apache/maven/report/projectinfo/DependencyConvergenceReport.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-project-info-reports-plugin/src/main/java/org/apache/maven/report/projectinfo/DependencyConvergenceReport.java?view=diff&rev=561140&r1=561139&r2=561140
==============================================================================
--- maven/plugins/trunk/maven-project-info-reports-plugin/src/main/java/org/apache/maven/report/projectinfo/DependencyConvergenceReport.java (original)
+++ maven/plugins/trunk/maven-project-info-reports-plugin/src/main/java/org/apache/maven/report/projectinfo/DependencyConvergenceReport.java Mon Jul 30 14:44:58 2007
@@ -224,7 +224,7 @@
 
     private void generateVersionDetails( Sink sink, Map artifactMap, String version )
     {
-        sink.numberedList( 1 ); // parameter value is apparently irrelevant here.
+        sink.numberedList( 1 ); // Use lower alpha numbering
         List depList = (List) artifactMap.get( version );
         Collections.sort( depList, new ProjectComparator() );
         Iterator it = depList.iterator();
@@ -246,6 +246,25 @@
         sink.numberedList_();
     }
 
+    /**
+     * Produce a Map of relationships between dependencies (its version) and
+     * reactor projects.
+     * 
+     * This is the structure of the Map:
+     * <pre>
+     * +--------------------+----------------------------------+
+     * | key                | value                            |
+     * +--------------------+----------------------------------+
+     * | version of a       | A List of ReverseDependencyLinks |
+     * | dependency         | which each look like this:       |
+     * |                    | +------------+-----------------+ |
+     * |                    | | dependency | reactor project | |
+     * |                    | +------------+-----------------+ |
+     * +--------------------+----------------------------------+
+     * </pre>
+     *
+     * @return A Map of sorted unique artifacts
+     */
     private Map getSortedUniqueArtifactMap( List depList )
     {
         Map uniqueArtifactMap = new TreeMap();
@@ -451,7 +470,22 @@
         while ( it.hasNext() )
         {
             String version = (String) it.next();
-            if ( version.endsWith( "-SNAPSHOT" ) )
+            boolean isReactorProject = false;
+
+            Iterator iterator = ( (List) artifactMap.get( version ) ).iterator();
+            // It if enough to check just the first dependency here, because
+            // the dependency is the same in all the RDLs in the List. It's the
+            // reactorProjects that are different.
+            if ( iterator.hasNext() )
+            {
+                ReverseDependencyLink rdl = (ReverseDependencyLink) iterator.next();
+                if( isReactorProject(rdl.getDependency()) )
+                {
+                    isReactorProject = true;
+                }
+            }
+
+            if ( version.endsWith( "-SNAPSHOT" ) && !isReactorProject )
             {
                 count++;
             }
@@ -459,6 +493,31 @@
         return count;
     }
 
+    /**
+     * Check to see if the specified dependency is among the reactor projects.
+     *
+     * @param dependency The dependency to check
+     * @return true if and only if the dependency is a reactor project
+     */
+    private boolean isReactorProject( Dependency dependency )
+    {
+        Iterator iterator = reactorProjects.iterator();
+        while ( iterator.hasNext() )
+        {
+            MavenProject project = (MavenProject) iterator.next();
+            if ( project.getGroupId().equals( dependency.getGroupId() )
+                && project.getArtifactId().equals( dependency.getArtifactId() ) )
+            {
+                if ( getLog().isDebugEnabled() )
+                {
+                    getLog().debug( dependency + " is a reactor project" );
+                }
+                return true;
+            }
+        }
+        return false;
+    }
+
     private void iconSuccess( Sink sink )
     {
         sink.figure();
@@ -479,6 +538,25 @@
         sink.figure_();
     }
 
+    /**
+     * Produce a Map of relationships between dependencies
+     * (its groupId:artifactId) and reactor projects.
+     *
+     * This is the structure of the Map:
+     * <pre>
+     * +--------------------+----------------------------------+
+     * | key                | value                            |
+     * +--------------------+----------------------------------+
+     * | groupId:artifactId | A List of ReverseDependencyLinks |
+     * | of a dependency    | which each look like this:       |
+     * |                    | +------------+-----------------+ |
+     * |                    | | dependency | reactor project | |
+     * |                    | +------------+-----------------+ |
+     * +--------------------+----------------------------------+
+     * </pre>
+     *
+     * @return A Map of relationships between dependencies and reactor projects
+     */
     public Map getDependencyMap()
     {
         Iterator it = reactorProjects.iterator();