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/08 18:01:55 UTC

svn commit: r554379 - /maven/plugins/trunk/maven-changes-plugin/src/main/java/org/apache/maven/plugin/announcement/JiraAnnouncementParser.java

Author: dennisl
Date: Sun Jul  8 09:01:55 2007
New Revision: 554379

URL: http://svn.apache.org/viewvc?view=rev&rev=554379
Log:
o Make getReleases(List) actually work.

Modified:
    maven/plugins/trunk/maven-changes-plugin/src/main/java/org/apache/maven/plugin/announcement/JiraAnnouncementParser.java

Modified: maven/plugins/trunk/maven-changes-plugin/src/main/java/org/apache/maven/plugin/announcement/JiraAnnouncementParser.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-changes-plugin/src/main/java/org/apache/maven/plugin/announcement/JiraAnnouncementParser.java?view=diff&rev=554379&r1=554378&r2=554379
==============================================================================
--- maven/plugins/trunk/maven-changes-plugin/src/main/java/org/apache/maven/plugin/announcement/JiraAnnouncementParser.java (original)
+++ maven/plugins/trunk/maven-changes-plugin/src/main/java/org/apache/maven/plugin/announcement/JiraAnnouncementParser.java Sun Jul  8 09:01:55 2007
@@ -19,19 +19,21 @@
  * under the License.
  */
 
-import java.io.File;
-import java.util.ArrayList;
-import java.util.List;
-
-import javax.xml.parsers.SAXParser;
-import javax.xml.parsers.SAXParserFactory;
-
 import org.apache.maven.plugin.changes.Action;
 import org.apache.maven.plugin.changes.Release;
 import org.xml.sax.Attributes;
 import org.xml.sax.SAXException;
 import org.xml.sax.helpers.DefaultHandler;
 
+import javax.xml.parsers.SAXParser;
+import javax.xml.parsers.SAXParserFactory;
+import java.io.File;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+
 /**
  * XML Parser for <code>JiraAnnouncement</code>s. This works on an XML file
  * downloaded from JIRA and creates a List of issues that is exposed to the
@@ -164,26 +166,40 @@
 
     public List getReleases( List issues )
     {
-        List releases = new ArrayList();
-
-        Release release = new Release();
-
+        // A Map of releases keyed by fixVersion
+        Map releasesMap = new HashMap();
 
+        // Loop through all issues looking for fixVersions
         for ( int i = 0; i < issues.size(); i++ )
         {
             JiraAnnouncement issue = (JiraAnnouncement) issues.get( i );
-
-            Action action = createAction( issue );
-            
-            release.addAction( action );
-
-            release.setDescription( issue.getSummary() );
-
-            release.setVersion( issue.getFixVersion() );
-
-            releases.add( release );
+            // Do NOT create a release for issues that lack a fixVersion
+            if ( issue.getFixVersion() != null )
+            {
+                // Try to get a matching Release from the map
+                Release release = (Release) releasesMap.get( issue.getFixVersion() );
+                if ( release == null )
+                {
+                    // Add a new Release to the Map if it wasn't there
+                    release = new Release();
+                    release.setVersion( issue.getFixVersion() );
+                    releasesMap.put( issue.getFixVersion(), release );
+                }
+
+                // Add this issue as an Action to this release
+                Action action = createAction( issue );
+                release.addAction( action );
+            }
+        }
+
+        // Extract the releases from the Map to a List
+        List releasesList = new ArrayList();
+        for ( Iterator iterator = releasesMap.entrySet().iterator(); iterator.hasNext(); )
+        {
+            Release o = (Release) ( (Map.Entry) iterator.next() ).getValue();
+            releasesList.add( o );
         }
-        return releases;
+        return releasesList;
     }
 
     /**