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 2009/11/26 15:38:57 UTC
svn commit: r884570 - in /maven/plugins/trunk/maven-changes-plugin/src:
main/java/org/apache/maven/plugin/announcement/AnnouncementMojo.java
test/java/org/apache/maven/plugin/announcement/AnnouncementMojoTest.java
Author: dennisl
Date: Thu Nov 26 14:38:57 2009
New Revision: 884570
URL: http://svn.apache.org/viewvc?rev=884570&view=rev
Log:
[MCHANGES-187] If jiraMerge=true then releases that are only in JIRA will not be included in the announcement
o Also make sure that the List parameters are not changed inside the mergeReleases() method. Instead a new List is created for the merged releases.
Modified:
maven/plugins/trunk/maven-changes-plugin/src/main/java/org/apache/maven/plugin/announcement/AnnouncementMojo.java
maven/plugins/trunk/maven-changes-plugin/src/test/java/org/apache/maven/plugin/announcement/AnnouncementMojoTest.java
Modified: maven/plugins/trunk/maven-changes-plugin/src/main/java/org/apache/maven/plugin/announcement/AnnouncementMojo.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-changes-plugin/src/main/java/org/apache/maven/plugin/announcement/AnnouncementMojo.java?rev=884570&r1=884569&r2=884570&view=diff
==============================================================================
--- maven/plugins/trunk/maven-changes-plugin/src/main/java/org/apache/maven/plugin/announcement/AnnouncementMojo.java (original)
+++ maven/plugins/trunk/maven-changes-plugin/src/main/java/org/apache/maven/plugin/announcement/AnnouncementMojo.java Thu Nov 26 14:38:57 2009
@@ -23,6 +23,7 @@
import java.io.FileOutputStream;
import java.io.OutputStreamWriter;
import java.io.Writer;
+import java.util.ArrayList;
import java.util.Collections;
import java.util.Iterator;
import java.util.List;
@@ -473,7 +474,13 @@
return release;
}
-
+ /**
+ * Get a release with the specified version from the list of releases.
+ *
+ * @param releases A list of releases
+ * @param version The version we want
+ * @return A Release, or null if no release with the specified version can be found
+ */
protected Release getRelease( List releases, String version )
{
Release release = null;
@@ -637,34 +644,60 @@
}
}
- protected List mergeReleases( List changesReleases, List jiraReleases )
+ /**
+ * Merge releases from one issue tracker with releases from another issue
+ * tracker. If a release is found in both issue trackers, i.e. they have
+ * the same version, their issues are merged into one release.
+ *
+ * @param firstReleases Releases from the first issue tracker
+ * @param secondReleases Releases from the second issue tracker
+ * @return A list containing the merged releases
+ */
+ protected List mergeReleases( final List firstReleases, final List secondReleases )
{
- if ( changesReleases == null && jiraReleases == null )
+ if ( firstReleases == null && secondReleases == null )
{
return Collections.EMPTY_LIST;
}
- if ( changesReleases == null )
+ if ( firstReleases == null )
{
- return jiraReleases;
+ return secondReleases;
}
- if ( jiraReleases == null )
+ if ( secondReleases == null )
{
- return changesReleases;
+ return firstReleases;
}
- for ( Iterator iterator = changesReleases.iterator(); iterator.hasNext(); )
+ List mergedReleases = new ArrayList();
+
+ // Loop through the releases from the first issue tracker, merging in
+ // actions from releases with the same version from the second issue
+ // tracker
+ for ( Iterator iterator = firstReleases.iterator(); iterator.hasNext(); )
{
- Release release = (Release) iterator.next();
- Release jiraRelease = getRelease( jiraReleases, release.getVersion() );
- if ( jiraRelease != null )
+ Release firstRelease = (Release) iterator.next();
+ Release secondRelease = getRelease( secondReleases, firstRelease.getVersion() );
+ if ( secondRelease != null )
{
- if ( jiraRelease.getActions() != null )
+ if ( secondRelease.getActions() != null )
{
- release.getActions().addAll( jiraRelease.getActions() );
+ firstRelease.getActions().addAll( secondRelease.getActions() );
}
}
+ mergedReleases.add(firstRelease);
+ }
+
+ // Handle releases that are only in the second issue tracker
+ for ( Iterator iterator = secondReleases.iterator(); iterator.hasNext(); )
+ {
+ Release secondRelease = (Release) iterator.next();
+ Release mergedRelease = getRelease( mergedReleases, secondRelease.getVersion() );
+ if ( mergedRelease == null )
+ {
+ mergedReleases.add(secondRelease);
+ }
}
- return changesReleases;
+ return mergedReleases;
}
/*
Modified: maven/plugins/trunk/maven-changes-plugin/src/test/java/org/apache/maven/plugin/announcement/AnnouncementMojoTest.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-changes-plugin/src/test/java/org/apache/maven/plugin/announcement/AnnouncementMojoTest.java?rev=884570&r1=884569&r2=884570&view=diff
==============================================================================
--- maven/plugins/trunk/maven-changes-plugin/src/test/java/org/apache/maven/plugin/announcement/AnnouncementMojoTest.java (original)
+++ maven/plugins/trunk/maven-changes-plugin/src/test/java/org/apache/maven/plugin/announcement/AnnouncementMojoTest.java Thu Nov 26 14:38:57 2009
@@ -2,8 +2,11 @@
import java.io.File;
import java.io.FileReader;
+import java.util.ArrayList;
+import java.util.List;
import org.apache.maven.plugin.testing.AbstractMojoTestCase;
+import org.apache.maven.plugins.changes.model.Release;
import org.codehaus.plexus.util.FileUtils;
import org.codehaus.plexus.util.IOUtil;
@@ -66,9 +69,9 @@
String result = IOUtil.toString( fileReader );
assertContains( "Nice library", result );
-
+
assertContains( "Changes in this version include:", result );
-
+
assertContains( "New features:", result );
assertContains( "o Added additional documentation on how to configure the plugin.", result );
@@ -94,4 +97,45 @@
{
assertTrue( announce.indexOf( content ) > 0 );
}
+
+ public void testmergeReleases() throws Exception
+ {
+ List firstReleases = new ArrayList();
+ List secondReleases = new ArrayList();
+ List mergedReleases;
+ AnnouncementMojo mojo = new AnnouncementMojo();
+
+ mergedReleases = mojo.mergeReleases(firstReleases, secondReleases);
+ assertEquals("Both empty", 0, mergedReleases.size());
+
+ Release release = new Release();
+ release.setVersion("1.0");
+ firstReleases.add(release);
+
+ mergedReleases = mojo.mergeReleases(firstReleases, secondReleases);
+ assertEquals("One release in first", 1, mergedReleases.size());
+
+ release = new Release();
+ release.setVersion("1.1");
+ secondReleases.add(release);
+
+ mergedReleases = mojo.mergeReleases(firstReleases, secondReleases);
+ assertEquals("One release each", 2, mergedReleases.size());
+
+ release = new Release();
+ release.setVersion("1.1");
+ firstReleases.add(release);
+
+ mergedReleases = mojo.mergeReleases(firstReleases, secondReleases);
+ assertEquals("Two releases in first, one release in second with one version being the same",
+ 2, mergedReleases.size());
+
+ release = new Release();
+ release.setVersion("1.2");
+ secondReleases.add(release);
+
+ mergedReleases = mojo.mergeReleases(firstReleases, secondReleases);
+ assertEquals("Two releases each with one version being the same",
+ 3, mergedReleases.size());
+ }
}