Author: olamy Date: Wed Jul 30 15:20:47 2008 New Revision: 681225 URL: http://svn.apache.org/viewvc?rev=681225&view=rev Log: [MCHANGES-47] Add support for multiple <issue> and <due-to> tags in changes.xml
Modified: maven/plugins/trunk/maven-changes-plugin/src/it/report-changes-generation/src/changes/changes.xml maven/plugins/trunk/maven-changes-plugin/src/it/settings.xml maven/plugins/trunk/maven-changes-plugin/src/main/java/org/apache/maven/plugin/changes/ChangesReportGenerator.java Modified: maven/plugins/trunk/maven-changes-plugin/src/it/report-changes-generation/src/changes/changes.xml URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-changes-plugin/src/it/report-changes-generation/src/changes/changes.xml?rev=681225&r1=681224&r2=681225&view=diff ============================================================================== --- maven/plugins/trunk/maven-changes-plugin/src/it/report-changes-generation/src/changes/changes.xml (original) +++ maven/plugins/trunk/maven-changes-plugin/src/it/report-changes-generation/src/changes/changes.xml Wed Jul 30 15:20:47 2008 @@ -37,7 +37,7 @@ </release> <release version="1.0" date="2005-01-01" description="First release"> - <action dev="me" type="update"> + <action dev="me" type="update" issue="MCHANGES-47, MCHANGES-88" due-to="others,someone" due-to-email="[EMAIL PROTECTED]"> Uploaded documentation on how to use the plugin. </action> </release> Modified: maven/plugins/trunk/maven-changes-plugin/src/it/settings.xml URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-changes-plugin/src/it/settings.xml?rev=681225&r1=681224&r2=681225&view=diff ============================================================================== --- maven/plugins/trunk/maven-changes-plugin/src/it/settings.xml (original) +++ maven/plugins/trunk/maven-changes-plugin/src/it/settings.xml Wed Jul 30 15:20:47 2008 @@ -28,8 +28,8 @@ </activation> <repositories> <repository> - <id>local.central</id> - <url>file://@localRepository@</url> + <id>local</id> + <url>file:///@localRepository@</url> <releases> <enabled>true</enabled> </releases> @@ -40,8 +40,8 @@ </repositories> <pluginRepositories> <pluginRepository> - <id>local.central</id> - <url>file://@localRepository@</url> + <id>local</id> + <url>file:///@localRepository@</url> <releases> <enabled>true</enabled> </releases> Modified: maven/plugins/trunk/maven-changes-plugin/src/main/java/org/apache/maven/plugin/changes/ChangesReportGenerator.java URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-changes-plugin/src/main/java/org/apache/maven/plugin/changes/ChangesReportGenerator.java?rev=681225&r1=681224&r2=681225&view=diff ============================================================================== --- maven/plugins/trunk/maven-changes-plugin/src/main/java/org/apache/maven/plugin/changes/ChangesReportGenerator.java (original) +++ maven/plugins/trunk/maven-changes-plugin/src/main/java/org/apache/maven/plugin/changes/ChangesReportGenerator.java Wed Jul 30 15:20:47 2008 @@ -20,10 +20,12 @@ */ import java.io.File; +import java.util.Arrays; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.ResourceBundle; +import java.util.StringTokenizer; import org.apache.commons.lang.StringUtils; import org.apache.maven.doxia.sink.Sink; @@ -209,34 +211,17 @@ if ( !canGenerateIssueLinks( system ) ) { sink.text( action.getIssue() ); - } else { - sink.link( parseIssueLink( action.getIssue(), system ) ); - - sink.text( action.getIssue() ); - - sink.link_(); - + constructIssueLink( action.getIssue(), system, sink ); } sink.text( "." ); } if ( StringUtils.isNotEmpty( action.getDueTo() ) ) { - sink.text( " " + bundle.getString( "report.changes.text.thanx" ) + " " ); - - if ( StringUtils.isNotEmpty( action.getDueToEmail() ) ) - { - sinkLink( sink, action.getDueTo(), "mailto:" + action.getDueToEmail() ); - } - else - { - sink.text( action.getDueTo() ); - } - - sink.text( "." ); + constructDueTo( sink, action, bundle ); } sink.tableCell_(); @@ -392,15 +377,6 @@ sink.close(); } - private void sinkFigure( String image, Sink sink ) - { - sink.figure(); - - sink.figureGraphics( image ); - - sink.figure_(); - } - private void sinkFigure( String image, Sink sink, String altText ) { sink.figure(); @@ -489,5 +465,71 @@ sink.tableCell_(); } + + /** + * MCHANGES-47 issue can be comma separated + * @param issue the current String + */ + private void constructIssueLink( String issue, String system, Sink sink ) + { + // null check has been done before + StringTokenizer tokenizer = new StringTokenizer( issue, "," ); + + while ( tokenizer.hasMoreTokens() ) + { + String currentIssueId = tokenizer.nextToken(); + + sink.link( parseIssueLink( currentIssueId, system ) ); + + sink.text( currentIssueId ); + + sink.link_(); + + } + } + + /** + * MCHANGES-47 due-to can be comma separated (we will support due-to-email comma separated) + * + * @param sink + * @param action + * @param bundle + */ + private void constructDueTo( Sink sink, Action action, ResourceBundle bundle ) + { + // null check has been done before + StringTokenizer tokenizer = new StringTokenizer( action.getDueTo(), "," ); + + String[] emails = StringUtils.split( action.getDueToEmail(), ',' ); + if (emails == null) + { + // NPE free + emails = new String[]{""}; + } + sink.text( " " + bundle.getString( "report.changes.text.thanx" ) + " " ); + int i = 0; + while ( tokenizer.hasMoreTokens() ) + { + String currentDueTo = tokenizer.nextToken(); + String currentDueToEmail = emails.length > i ? emails[i] : null; + i++; + + if ( StringUtils.isNotEmpty( currentDueToEmail ) ) + { + sinkLink( sink, currentDueTo, "mailto:" + currentDueToEmail ); + } + else + { + sink.text( currentDueTo ); + } + + if ( i <= tokenizer.countTokens() ) + { + sink.text( "," ); + } + } + + sink.text( " ." ); + } }