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( " ." );
+    }
 
 }


Reply via email to