added generics (without introducing a stupid bug and not checking before commit, this time :) )

git-svn-id: https://svn.apache.org/repos/asf/maven/plugins/trunk@1391718 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/src/main/java/org/apache/maven/plugin/changelog/ChangeLog.java b/src/main/java/org/apache/maven/plugin/changelog/ChangeLog.java
index c5c3e2b..7302973 100644
--- a/src/main/java/org/apache/maven/plugin/changelog/ChangeLog.java
+++ b/src/main/java/org/apache/maven/plugin/changelog/ChangeLog.java
@@ -29,6 +29,7 @@
 import javax.xml.parsers.SAXParser;
 import javax.xml.parsers.SAXParserFactory;
 
+import org.apache.maven.scm.command.changelog.ChangeLogSet;
 import org.xml.sax.InputSource;
 import org.xml.sax.SAXException;
 
@@ -56,24 +57,24 @@
      * @throws SAXException                 when an error occurred while parsing the xml document
      * @throws IOException                  when an error occurred while accessing the xml document
      */
-    public static List loadChangedSets( InputStream stream )
+    public static List<ChangeLogSet> loadChangedSets( InputStream stream )
         throws ParserConfigurationException, SAXException, IOException
     {
         SAXParser parser = SAXParserFactory.newInstance().newSAXParser();
 
-        List changeLogSets = new ArrayList();
+        List<ChangeLogSet> changeLogSets = new ArrayList<ChangeLogSet>();
 
         parser.parse( stream, new ChangeLogHandler( changeLogSets ) );
 
         return changeLogSets;
     }
 
-    public static List loadChangedSets( Reader reader )
+    public static List<ChangeLogSet> loadChangedSets( Reader reader )
         throws ParserConfigurationException, SAXException, IOException
     {
         SAXParser parser = SAXParserFactory.newInstance().newSAXParser();
 
-        List changeLogSets = new ArrayList();
+        List<ChangeLogSet> changeLogSets = new ArrayList<ChangeLogSet>();
 
         parser.parse( new InputSource( reader ), new ChangeLogHandler( changeLogSets ) );
 
diff --git a/src/main/java/org/apache/maven/plugin/changelog/ChangeLogHandler.java b/src/main/java/org/apache/maven/plugin/changelog/ChangeLogHandler.java
index aaadb01..5106be9 100644
--- a/src/main/java/org/apache/maven/plugin/changelog/ChangeLogHandler.java
+++ b/src/main/java/org/apache/maven/plugin/changelog/ChangeLogHandler.java
@@ -32,6 +32,7 @@
 import java.util.Collection;
 import java.util.Date;
 import java.util.LinkedList;
+import java.util.List;
 import java.util.TimeZone;
 
 /**
@@ -43,7 +44,7 @@
 public class ChangeLogHandler
     extends DefaultHandler
 {
-    private Collection changeSets;
+    private Collection<ChangeLogSet> changeSets;
 
     private String bufData = "";
 
@@ -51,7 +52,7 @@
 
     private ChangeSet bufEntry;
 
-    private LinkedList bufEntries;
+    private List<ChangeSet> bufEntries;
 
     private ChangeLogSet bufSet;
 
@@ -62,7 +63,7 @@
      *
      * @param changeSets collection object to store all change sets found within the xml document
      */
-    public ChangeLogHandler( Collection changeSets )
+    public ChangeLogHandler( Collection<ChangeLogSet> changeSets )
     {
         this.changeSets = changeSets;
     }
@@ -176,7 +177,7 @@
         }
         else if ( "changeset".equals( qName ) )
         {
-            bufEntries = new LinkedList();
+            bufEntries = new LinkedList<ChangeSet>();
 
             currentPattern = attributes.getValue( "datePattern" );
             if ( currentPattern == null )
diff --git a/src/main/java/org/apache/maven/plugin/changelog/ChangeLogReport.java b/src/main/java/org/apache/maven/plugin/changelog/ChangeLogReport.java
index 36e0ee5..aead601 100644
--- a/src/main/java/org/apache/maven/plugin/changelog/ChangeLogReport.java
+++ b/src/main/java/org/apache/maven/plugin/changelog/ChangeLogReport.java
@@ -138,13 +138,13 @@
      * Used to specify the absolute date (or list of dates) to start log entries from.
      */
     @Parameter
-    private List dates;
+    private List<String> dates;
 
     /**
      * Used to specify the tag (or list of tags) to start log entries from.
      */
     @Parameter
-    private List tags;
+    private List<String> tags;
 
     /**
      * Used to specify the date format of the log entries that are retrieved from your SCM system.
@@ -368,13 +368,13 @@
      * @since 2.2
      */
     @Parameter( property = "project.developers" )
-    protected List developers;
+    protected List<Developer> developers;
 
     /**
      * List of provider implementations.
      */
     @Parameter
-    private Map providerImplementations;
+    private Map<String, String> providerImplementations;
 
     // temporary field holder while generating the report
     private String rptRepository, rptOneRepoParam, rptMultiRepoParam;
@@ -383,10 +383,10 @@
     private String connection;
 
     // field used to hold a map of the developers by Id
-    private HashMap developersById;
+    private HashMap<String, Developer> developersById;
 
     // field used to hold a map of the developers by Name
-    private HashMap developersByName;
+    private HashMap<String, Developer> developersByName;
 
     /**
      * The system properties to use (needed by the perforce scm provider).
@@ -408,12 +408,12 @@
 
         if ( providerImplementations != null )
         {
-            for ( Iterator i = providerImplementations.keySet().iterator(); i.hasNext(); )
+            for ( Map.Entry<String, String> entry : providerImplementations.entrySet() )
             {
-                String providerType = (String) i.next();
-                String providerImplementation = (String) providerImplementations.get( providerType );
+                String providerType = entry.getKey();
+                String providerImplementation = entry.getValue();
                 getLog().info( "Change the default '" + providerType + "' provider implementation to '"
-                    + providerImplementation + "'." );
+                                   + providerImplementation + "'." );
                 manager.setScmProviderImplementation( providerType, providerImplementation );
             }
         }
@@ -427,7 +427,7 @@
         if ( systemProperties != null )
         {
             // Add all system properties configured by the user
-            Iterator iter = systemProperties.keySet().iterator();
+            Iterator<?> iter = systemProperties.keySet().iterator();
 
             while ( iter.hasNext() )
             {
@@ -462,15 +462,13 @@
      */
     private void initializeDeveloperMaps()
     {
-        developersById = new HashMap();
-        developersByName = new HashMap();
+        developersById = new HashMap<String, Developer>();
+        developersByName = new HashMap<String, Developer>();
 
         if ( developers != null )
         {
-            for ( Iterator i = developers.iterator(); i.hasNext(); )
+            for ( Developer developer : developers )
             {
-                Developer developer = (Developer) i.next();
-
                 developersById.put( developer.getId(), developer );
                 developersByName.put( developer.getName(), developer );
             }
@@ -483,10 +481,10 @@
      *
      * @throws MavenReportException
      */
-    protected List getChangedSets()
+    protected List<ChangeLogSet> getChangedSets()
         throws MavenReportException
     {
-        List changelogList = null;
+        List<ChangeLogSet> changelogList = null;
 
         if ( !outputXML.isAbsolute() )
         {
@@ -551,7 +549,7 @@
         return changelogList;
     }
 
-    private void writeChangelogXml( List changelogList )
+    private void writeChangelogXml( List<ChangeLogSet> changelogList )
         throws FileNotFoundException, UnsupportedEncodingException, IOException
     {
         StringBuilder changelogXml = new StringBuilder();
@@ -559,11 +557,10 @@
         changelogXml.append( "<?xml version=\"1.0\" encoding=\"" ).append( getOutputEncoding() ).append( "\"?>\n" );
         changelogXml.append( "<changelog>" );
 
-        for ( Iterator sets = changelogList.iterator(); sets.hasNext(); )
+        for ( ChangeLogSet changelogSet : changelogList )
         {
             changelogXml.append( "\n  " );
 
-            ChangeLogSet changelogSet = (ChangeLogSet) sets.next();
             String changeset = changelogSet.toXML( getOutputEncoding() );
 
             //remove xml header
@@ -597,12 +594,12 @@
      * @return changedlogsets generated from the SCM
      * @throws MavenReportException
      */
-    protected List generateChangeSetsFromSCM()
+    protected List<ChangeLogSet> generateChangeSetsFromSCM()
         throws MavenReportException
     {
         try
         {
-            List changeSets = new ArrayList();
+            List<ChangeLogSet> changeSets = new ArrayList<ChangeLogSet>();
 
             ScmRepository repository = getScmRepository();
 
@@ -626,16 +623,16 @@
                     throw new MavenReportException( "The type '" + type + "' isn't supported for svn." );
                 }
 
-                Iterator tagsIter = tags.iterator();
+                Iterator<String> tagsIter = tags.iterator();
 
-                String startTag = (String) tagsIter.next();
+                String startTag = tagsIter.next();
                 String endTag = null;
 
                 if ( tagsIter.hasNext() )
                 {
                     while ( tagsIter.hasNext() )
                     {
-                        endTag = (String) tagsIter.next();
+                        endTag = tagsIter.next();
 
                         result = provider.changeLog( repository, new ScmFileSet( basedir ), new ScmRevision( startTag ),
                                                      new ScmRevision( endTag ) );
@@ -659,16 +656,16 @@
             }
             else if ( "date".equals( type ) )
             {
-                Iterator dateIter = dates.iterator();
+                Iterator<String> dateIter = dates.iterator();
 
-                String startDate = (String) dateIter.next();
+                String startDate = dateIter.next();
                 String endDate = null;
 
                 if ( dateIter.hasNext() )
                 {
                     while ( dateIter.hasNext() )
                     {
-                        endDate = (String) dateIter.next();
+                        endDate = dateIter.next();
 
                         result = provider.changeLog( repository, new ScmFileSet( basedir ), parseDate( startDate ),
                                                      parseDate( endDate ), 0, (ScmBranch) null );
@@ -973,7 +970,7 @@
      * @param bundle        the resource bundle to retrieve report phrases from
      * @param sink          the report formatting tool
      */
-    protected void doGenerateReport( List changeLogSets, ResourceBundle bundle, Sink sink )
+    protected void doGenerateReport( List<ChangeLogSet> changeLogSets, ResourceBundle bundle, Sink sink )
     {
         sink.head();
         sink.title();
@@ -991,10 +988,8 @@
         // Summary section
         doSummarySection( changeLogSets, bundle, sink );
 
-        for ( Iterator sets = changeLogSets.iterator(); sets.hasNext(); )
+        for ( ChangeLogSet changeLogSet : changeLogSets )
         {
-            ChangeLogSet changeLogSet = (ChangeLogSet) sets.next();
-
             doChangedSet( changeLogSet, bundle, sink );
         }
 
@@ -1012,7 +1007,7 @@
      * @param bundle        the resource bundle to retrieve report phrases from
      * @param sink          the report formatting tool
      */
-    private void doSummarySection( List changeLogSets, ResourceBundle bundle, Sink sink )
+    private void doSummarySection( List<ChangeLogSet> changeLogSets, ResourceBundle bundle, Sink sink )
     {
         sink.paragraph();
 
@@ -1120,7 +1115,7 @@
      * @param entries a collection of SCM changes
      * @return number of files changed for the changedsets
      */
-    protected long countFilesChanged( Collection entries )
+    protected long countFilesChanged( Collection<ChangeSet> entries )
     {
         if ( entries == null )
         {
@@ -1132,29 +1127,22 @@
             return 0;
         }
 
-        HashMap fileList = new HashMap();
+        HashMap<String, List<ChangeFile>> fileList = new HashMap<String, List<ChangeFile>>();
 
-        for ( Iterator i = entries.iterator(); i.hasNext(); )
+        for ( ChangeSet entry : entries )
         {
-            ChangeSet entry = (ChangeSet) i.next();
-
-            List files = entry.getFiles();
-
-            for ( Iterator fileIterator = files.iterator(); fileIterator.hasNext(); )
+            for ( ChangeFile file : entry.getFiles() )
             {
-                ChangeFile file = (ChangeFile) fileIterator.next();
-
                 String name = file.getName();
+                List<ChangeFile> list = fileList.get( name );
 
-                if ( fileList.containsKey( name ) )
+                if ( list != null )
                 {
-                    LinkedList list = (LinkedList) fileList.get( name );
-
                     list.add( file );
                 }
                 else
                 {
-                    LinkedList list = new LinkedList();
+                    list = new LinkedList<ChangeFile>();
 
                     list.add( file );
 
@@ -1173,7 +1161,7 @@
      * @param bundle  the resource bundle to retrieve report phrases from
      * @param sink    the report formatting tool
      */
-    private void doChangedSetTable( Collection entries, ResourceBundle bundle, Sink sink )
+    private void doChangedSetTable( Collection<ChangeSet> entries, ResourceBundle bundle, Sink sink )
     {
         sink.table();
 
@@ -1191,21 +1179,17 @@
 
         initReportUrls();
 
-        List sortedEntries = new ArrayList( entries );
-        Collections.sort( sortedEntries, new Comparator()
+        List<ChangeSet> sortedEntries = new ArrayList<ChangeSet>( entries );
+        Collections.sort( sortedEntries, new Comparator<ChangeSet>()
         {
-            public int compare( Object arg0, Object arg1 )
+            public int compare( ChangeSet changeSet0, ChangeSet changeSet1 )
             {
-                ChangeSet changeSet0 = (ChangeSet) arg0;
-                ChangeSet changeSet1 = (ChangeSet) arg1;
                 return changeSet1.getDate().compareTo( changeSet0.getDate() );
             }
         } );
 
-        for ( Iterator i = sortedEntries.iterator(); i.hasNext(); )
+        for ( ChangeSet entry : sortedEntries )
         {
-            ChangeSet entry = (ChangeSet) i.next();
-
             doChangedSetDetail( entry, bundle, sink );
         }
 
@@ -1418,11 +1402,10 @@
      * @param files list of files to generate the reports from
      * @param sink  the report formatting tool
      */
-    private void doChangedFiles( List files, Sink sink )
+    private void doChangedFiles( List<ChangeFile> files, Sink sink )
     {
-        for ( Iterator i = files.iterator(); i.hasNext(); )
+        for ( ChangeFile file : files )
         {
-            ChangeFile file = (ChangeFile) i.next();
             sinkLogFile( sink, file.getName(), file.getRevision() );
         }
     }
diff --git a/src/main/java/org/apache/maven/plugin/changelog/DeveloperActivityReport.java b/src/main/java/org/apache/maven/plugin/changelog/DeveloperActivityReport.java
index 34e1a66..a22a591 100644
--- a/src/main/java/org/apache/maven/plugin/changelog/DeveloperActivityReport.java
+++ b/src/main/java/org/apache/maven/plugin/changelog/DeveloperActivityReport.java
@@ -27,10 +27,10 @@
 
 import java.util.Collection;
 import java.util.HashMap;
-import java.util.Iterator;
 import java.util.LinkedList;
 import java.util.List;
 import java.util.Locale;
+import java.util.Map;
 import java.util.ResourceBundle;
 
 /**
@@ -45,9 +45,9 @@
     /**
      * Used to hold data while creating the report
      */
-    private HashMap commits;
+    private Map<String, List<ChangeSet>> commits;
 
-    private HashMap files;
+    private Map<String, Map<String, ChangeFile>> files;
 
     /** {@inheritDoc} */
     public String getDescription( Locale locale )
@@ -95,7 +95,7 @@
     }
 
     /** {@inheritDoc} */
-    protected void doGenerateReport( List changeLogSets, ResourceBundle bundle, Sink sink )
+    protected void doGenerateReport( List<ChangeLogSet> changeLogSets, ResourceBundle bundle, Sink sink )
     {
         sink.head();
         sink.title();
@@ -117,9 +117,8 @@
         }
         else
         {
-            for ( Iterator sets = changeLogSets.iterator(); sets.hasNext(); )
+            for ( ChangeLogSet set : changeLogSets )
             {
-                ChangeLogSet set = (ChangeLogSet) sets.next();
                 doChangedSets( set, bundle, sink );
             }
         }
@@ -176,12 +175,12 @@
     {
         initDeveloperDetails( set );
 
-        for( Iterator i = commits.keySet().iterator(); i.hasNext(); )
+        for( Map.Entry<String, List<ChangeSet>> commit : commits.entrySet() )
         {
-            String author = (String) i.next();
+            String author = commit.getKey();
 
-            LinkedList devCommits = (LinkedList) commits.get( author );
-            HashMap devFiles = (HashMap) files.get( author );
+            List<ChangeSet> devCommits = commit.getValue();
+            Map<String, ChangeFile> devFiles = files.get( author );
 
             sink.tableRow();
             sink.tableCell();
@@ -191,11 +190,11 @@
             sink.tableCell_();
 
             sink.tableCell();
-            sink.text( "" + devCommits.size() );
+            sink.text( String.valueOf( devCommits.size() ) );
             sink.tableCell_();
 
             sink.tableCell();
-            sink.text( "" + devFiles.size() );
+            sink.text( String.valueOf( devFiles.size() ) );
             sink.tableCell_();
 
             sink.tableRow_();
@@ -209,9 +208,9 @@
      */
     private void initDeveloperDetails( ChangeLogSet set )
     {
-        commits = new HashMap();
+        commits = new HashMap<String, List<ChangeSet>>();
 
-        files = new HashMap();
+        files = new HashMap<String, Map<String, ChangeFile>>();
 
         countDevCommits( set.getChangeSets() );
 
@@ -223,28 +222,21 @@
      *
      * @param entries the change log entries used to search and count developer commits
      */
-    private void countDevCommits( Collection entries )
+    private void countDevCommits( Collection<ChangeSet> entries )
     {
-        for ( Iterator i = entries.iterator(); i.hasNext(); )
+        for ( ChangeSet entry : entries )
         {
-            ChangeSet entry = (ChangeSet) i.next();
-
             String developer = entry.getAuthor();
 
-            LinkedList list;
+            List<ChangeSet> list = commits.get( developer );
 
-            if ( commits.containsKey( developer ) )
+            if ( list == null )
             {
-                list = (LinkedList) commits.get( developer );
-            }
-            else
-            {
-                list = new LinkedList();
+                list = new LinkedList<ChangeSet>();
+                commits.put( developer, list );
             }
 
             list.add( entry );
-
-            commits.put( developer, list );
         }
     }
 
@@ -253,33 +245,24 @@
      *
      * @param entries the change log entries used to search and count file changes
      */
-    private void countDevFiles( Collection entries )
+    private void countDevFiles( Collection<ChangeSet> entries )
     {
-        for ( Iterator i2 = entries.iterator(); i2.hasNext(); )
+        for ( ChangeSet entry : entries )
         {
-            ChangeSet entry = (ChangeSet) i2.next();
-
             String developer = entry.getAuthor();
 
-            HashMap filesMap;
+            Map<String, ChangeFile> filesMap = files.get( developer );
 
-            if ( files.containsKey( developer ) )
+            if ( filesMap == null )
             {
-                filesMap = (HashMap) files.get( developer );
-            }
-            else
-            {
-                filesMap = new HashMap();
+                filesMap = new HashMap<String, ChangeFile>();
+                files.put( developer, filesMap );
             }
 
-            for ( Iterator i3 = entry.getFiles().iterator(); i3.hasNext(); )
+            for ( ChangeFile file : entry.getFiles() )
             {
-                ChangeFile file = (ChangeFile) i3.next();
-
                 filesMap.put( file.getName(), file );
             }
-
-            files.put( developer, filesMap );
         }
     }
 }
diff --git a/src/main/java/org/apache/maven/plugin/changelog/FileActivityComparator.java b/src/main/java/org/apache/maven/plugin/changelog/FileActivityComparator.java
index c27342c..b1b930b 100644
--- a/src/main/java/org/apache/maven/plugin/changelog/FileActivityComparator.java
+++ b/src/main/java/org/apache/maven/plugin/changelog/FileActivityComparator.java
@@ -23,31 +23,23 @@
 import org.apache.maven.scm.ChangeFile;
 
 import java.util.Comparator;
-import java.util.Iterator;
 import java.util.List;
 
-
 /**
  * Object used to sort the file-activity report into descending order.
  *
  * @version $Id$
  */
 public class FileActivityComparator
-    implements Comparator
+    implements Comparator<List<ChangeFile>>
 {
     /**
      * {@inheritDoc}
      */
-    public int compare( Object o1, Object o2 )
+    public int compare( List<ChangeFile> list1, List<ChangeFile> list2 )
         throws ClassCastException
     {
-        int returnValue;
-
-        List list1 = (List) o1;
-
-        List list2 = (List) o2;
-
-        returnValue = sortByCommits( list1, list2 );
+        int returnValue = sortByCommits( list1, list2 );
 
         if ( returnValue != 0 )
         {
@@ -61,9 +53,7 @@
             return returnValue;
         }
 
-        returnValue = sortByName( list1, list2 );
-
-        return returnValue;
+        return sortByName( list1, list2 );
     }
 
     /**
@@ -73,7 +63,7 @@
      * @param list2 the object to compare list1 against
      * @return an integer describing the order comparison of list1 and list2
      */
-    private int sortByCommits( List list1, List list2 )
+    private int sortByCommits( List<ChangeFile> list1, List<ChangeFile> list2 )
     {
         if ( list1.size() > list2.size() )
         {
@@ -95,7 +85,7 @@
      * @param list2 the object to compare list1 against
      * @return an integer describing the order comparison of list1 and list2
      */
-    private int sortByRevision( List list1, List list2 )
+    private int sortByRevision( List<ChangeFile> list1, List<ChangeFile> list2 )
     {
         String revision1 = getLatestRevision( list1 );
 
@@ -120,14 +110,12 @@
      * @param list The list of revisions from the file
      * @return the latest revision code
      */
-    private String getLatestRevision( List list )
+    private String getLatestRevision( List<ChangeFile> list )
     {
         String latest = "";
 
-        for ( Iterator i = list.iterator(); i.hasNext(); )
+        for ( ChangeFile file : list )
         {
-            ChangeFile file = (ChangeFile) i.next();
-
             if ( StringUtils.isNotBlank( latest) )
             {
                 latest = file.getRevision();
@@ -149,11 +137,11 @@
      * @param list2 the object to compare list1 against
      * @return an integer describing the order comparison of list1 and list2
      */
-    private int sortByName( List list1, List list2 )
+    private int sortByName( List<ChangeFile> list1, List<ChangeFile> list2 )
     {
-        ChangeFile file1 = (ChangeFile) list1.get( 0 );
+        ChangeFile file1 = list1.get( 0 );
 
-        ChangeFile file2 = (ChangeFile) list2.get( 0 );
+        ChangeFile file2 = list2.get( 0 );
 
         return file1.getName().compareTo( file2.getName() );
     }
diff --git a/src/main/java/org/apache/maven/plugin/changelog/FileActivityReport.java b/src/main/java/org/apache/maven/plugin/changelog/FileActivityReport.java
index 09e24f5..8949d96 100644
--- a/src/main/java/org/apache/maven/plugin/changelog/FileActivityReport.java
+++ b/src/main/java/org/apache/maven/plugin/changelog/FileActivityReport.java
@@ -28,7 +28,6 @@
 import java.util.Collection;
 import java.util.Collections;
 import java.util.HashMap;
-import java.util.Iterator;
 import java.util.LinkedList;
 import java.util.List;
 import java.util.Locale;
@@ -90,7 +89,7 @@
     }
 
     /** {@inheritDoc} */
-    protected void doGenerateReport( List changeLogSets, ResourceBundle bundle, Sink sink )
+    protected void doGenerateReport( List<ChangeLogSet> changeLogSets, ResourceBundle bundle, Sink sink )
     {
         sink.head();
         sink.title();
@@ -104,9 +103,8 @@
         sink.text( bundle.getString( "report.file-activity.mainTitle" ) );
         sink.sectionTitle1_();
 
-        for ( Iterator sets = changeLogSets.iterator(); sets.hasNext(); )
+        for ( ChangeLogSet set : changeLogSets )
         {
-            ChangeLogSet set = (ChangeLogSet) sets.next();
             doChangedSets( set, bundle, sink );
         }
 
@@ -158,14 +156,13 @@
      */
     private void doRows( ChangeLogSet set, Sink sink )
     {
-        List list = getOrderedFileList( set.getChangeSets() );
+        List<List<ChangeFile>> list = getOrderedFileList( set.getChangeSets() );
 
         initReportUrls();
 
-        for ( Iterator i = list.iterator(); i.hasNext(); )
+        for ( List<ChangeFile> revision : list )
         {
-            List revision = (List) i.next();
-            ChangeFile file = (ChangeFile) revision.get( 0 );
+            ChangeFile file = revision.get( 0 );
 
             sink.tableRow();
             sink.tableCell();
@@ -204,34 +201,25 @@
      * @param entries the changelog entries to generate the report
      * @return list of changed files within the SCM with the number of times changed in descending order
      */
-    private List getOrderedFileList( Collection entries )
+    private List<List<ChangeFile>> getOrderedFileList( Collection<ChangeSet> entries )
     {
-        List list = new LinkedList();
+        List<List<ChangeFile>> list = new LinkedList<List<ChangeFile>>();
 
-        Map map = new HashMap();
+        Map<String, List<ChangeFile>> map = new HashMap<String, List<ChangeFile>>();
 
-        for ( Iterator i = entries.iterator(); i.hasNext(); )
+        for ( ChangeSet entry : entries )
         {
-            ChangeSet entry = (ChangeSet) i.next();
-
-            for ( Iterator j = entry.getFiles().iterator(); j.hasNext(); )
+            for ( ChangeFile file : entry.getFiles() )
             {
-                ChangeFile file = (ChangeFile) j.next();
+                List<ChangeFile> revisions = map.get( file.getName() );
 
-                List revisions;
-
-                if ( map.containsKey( file.getName() ) )
+                if ( revisions == null )
                 {
-                    revisions = (List) map.get( file.getName() );
-                }
-                else
-                {
-                    revisions = new LinkedList();
+                    revisions = new LinkedList<ChangeFile>();
+                    map.put( file.getName(), revisions );
                 }
 
                 revisions.add( file );
-
-                map.put( file.getName(), revisions );
             }
         }
 
diff --git a/src/test/java/org/apache/maven/plugin/changelog/ChangeLogTest.java b/src/test/java/org/apache/maven/plugin/changelog/ChangeLogTest.java
index 3fb9411..92c97fb 100644
--- a/src/test/java/org/apache/maven/plugin/changelog/ChangeLogTest.java
+++ b/src/test/java/org/apache/maven/plugin/changelog/ChangeLogTest.java
@@ -40,17 +40,17 @@
     public void testReadFile()
         throws Exception
     {
-        List changedLogs = readChangeLogXml( "min-changelog.xml" );
+        List<ChangeLogSet> changedLogs = readChangeLogXml( "min-changelog.xml" );
 
         assertNotNull( "Test changedSets were parsed", changedLogs );
 
         assertEquals( "Test number of changelog entries", 2, changedLogs.size() );
 
-        ChangeLogSet changelogSets = (ChangeLogSet) changedLogs.get( 0 );
+        ChangeLogSet changelogSets = changedLogs.get( 0 );
 
         assertEquals( "Test number of revisions on changelog 1", 2, changelogSets.getChangeSets().size() );
 
-        ChangeSet changeSet = (ChangeSet) changelogSets.getChangeSets().get( 0 );
+        ChangeSet changeSet = changelogSets.getChangeSets().get( 0 );
 
 
         Calendar cal = Calendar.getInstance(); // new cal with default TZ
@@ -68,14 +68,14 @@
 
         assertEquals( "Test changelog 1 set 1 files", 1, changeSet.getFiles().size() );
 
-        ChangeFile changeFile = (ChangeFile) changeSet.getFiles().get( 0 );
+        ChangeFile changeFile = changeSet.getFiles().get( 0 );
 
         assertEquals( "Test changelog 1 set 1 file 1 filename", "/path/to/file.extension", changeFile.getName() );
 
         assertEquals( "Test changelog 1 set 1 file 1 revision", "1", changeFile.getRevision() );
 
 
-        changeSet = (ChangeSet) changelogSets.getChangeSets().get( 1 );
+        changeSet = changelogSets.getChangeSets().get( 1 );
 
         cal.set( 2005, 1, 24, 21, 30, 0 );
 
@@ -87,13 +87,13 @@
 
         assertEquals( "Test changelog 1 set 2 files", 2, changeSet.getFiles().size() );
 
-        changeFile = (ChangeFile) changeSet.getFiles().get( 0 );
+        changeFile = changeSet.getFiles().get( 0 );
 
         assertEquals( "Test changelog 1 set 2 file 1 filename", "/path/to/file.extension", changeFile.getName() );
 
         assertEquals( "Test changelog 1 set 2 file 1 revision", "2", changeFile.getRevision() );
 
-        changeFile = (ChangeFile) changeSet.getFiles().get( 1 );
+        changeFile = changeSet.getFiles().get( 1 );
 
         assertEquals( "Test changelog 1 set 2 file 2 filename", "/path/to/file2.extension", changeFile.getName() );
 
@@ -101,11 +101,11 @@
 
 
 
-        changelogSets = (ChangeLogSet) changedLogs.get( 1 );
+        changelogSets = changedLogs.get( 1 );
 
         assertEquals( "Test number of revisions on changelog 2", 2, changelogSets.getChangeSets().size() );
 
-        changeSet = (ChangeSet) changelogSets.getChangeSets().get( 0 );
+        changeSet = changelogSets.getChangeSets().get( 0 );
 
         cal.set( 2005, 1, 25, 22, 45, 0 );
 
@@ -117,14 +117,14 @@
 
         assertEquals( "Test changelog 2 set 1 files", 1, changeSet.getFiles().size() );
 
-        changeFile = (ChangeFile) changeSet.getFiles().get( 0 );
+        changeFile = changeSet.getFiles().get( 0 );
 
         assertEquals( "Test changelog 2 set 1 file 1 filename", "/path/to/file.extension", changeFile.getName() );
 
         assertEquals( "Test changelog 2 set 1 file 1 revision", "3", changeFile.getRevision() );
 
 
-        changeSet = (ChangeSet) changelogSets.getChangeSets().get( 1 );
+        changeSet = changelogSets.getChangeSets().get( 1 );
 
         cal.set( 2100, 1, 25, 5, 30, 0 );
 
@@ -136,20 +136,20 @@
 
         assertEquals( "Test changelog 2 set 2 files", 2, changeSet.getFiles().size() );
 
-        changeFile = (ChangeFile) changeSet.getFiles().get( 0 );
+        changeFile = changeSet.getFiles().get( 0 );
 
         assertEquals( "Test changelog 2 set 2 file 1 filename", "/path/to/file.extension", changeFile.getName() );
 
         assertEquals( "Test changelog 2 set 2 file 1 revision", "4", changeFile.getRevision() );
 
-        changeFile = (ChangeFile) changeSet.getFiles().get( 1 );
+        changeFile = changeSet.getFiles().get( 1 );
 
         assertEquals( "Test changelog 2 set 2 file 2 filename", "/path/to/file2.extension", changeFile.getName() );
 
         assertEquals( "Test changelog 2 set 2 file 2 revision", "4", changeFile.getRevision() );
     }
 
-    private List readChangeLogXml( String filename )
+    private List<ChangeLogSet> readChangeLogXml( String filename )
         throws Exception
     {
         File inputFile = new File( getBasedir(), "src/test/changelog-xml/" + filename );
diff --git a/src/test/java/org/apache/maven/plugin/changelog/FileActivityComparatorTest.java b/src/test/java/org/apache/maven/plugin/changelog/FileActivityComparatorTest.java
index 90f420d..95b1b6c 100644
--- a/src/test/java/org/apache/maven/plugin/changelog/FileActivityComparatorTest.java
+++ b/src/test/java/org/apache/maven/plugin/changelog/FileActivityComparatorTest.java
@@ -43,17 +43,17 @@
 
     public void testCompareByNumberOfCommits()
     {
-        List list1 = new ArrayList();
+        List<ChangeFile> list1 = new ArrayList<ChangeFile>();
         list1.add( new ChangeFile( "anything" ) );
 
-        List list2 = new ArrayList();
+        List<ChangeFile> list2 = new ArrayList<ChangeFile>();
 
         assertTrue( "Test compare by commits, less than", comparator.compare( list1, list2 ) < 0 );
 
-        list1 = new ArrayList();
+        list1 = new ArrayList<ChangeFile>();
         list1.add( new ChangeFile( "anything" ) );
 
-        list2 = new ArrayList();
+        list2 = new ArrayList<ChangeFile>();
         list2.add( new ChangeFile( "one thing" ) );
         list2.add( new ChangeFile( "something") );
 
@@ -62,21 +62,21 @@
 
     public void testCompareByRevision()
     {
-        List list1 = new ArrayList();
+        List<ChangeFile> list1 = new ArrayList<ChangeFile>();
         list1.add( new ChangeFile( "changefile-1", "123" ) );
         list1.add( new ChangeFile( "changefile-1", "234" ) );
 
-        List list2 = new ArrayList();
+        List<ChangeFile> list2 = new ArrayList<ChangeFile>();
         list2.add( new ChangeFile( "changefile-2", "246" ) );
         list2.add( new ChangeFile( "changefile-2", "468" ) );
 
         assertTrue( "Test compare by revision, less than", comparator.compare( list1, list2 ) < 0 );
 
-        list1 = new ArrayList();
+        list1 = new ArrayList<ChangeFile>();
         list1.add( new ChangeFile( "changefile-1", "246" ) );
         list1.add( new ChangeFile( "changefile-1", "468" ) );
 
-        list2 = new ArrayList();
+        list2 = new ArrayList<ChangeFile>();
         list2.add( new ChangeFile( "changefile-2", "123" ) );
         list2.add( new ChangeFile( "changefile-2", "234" ) );
 
@@ -85,21 +85,21 @@
 
     public void testCompareByName()
     {
-        List list1 = new ArrayList();
+        List<ChangeFile> list1 = new ArrayList<ChangeFile>();
         list1.add( new ChangeFile( "changefile-1", "123" ) );
         list1.add( new ChangeFile( "changefile-1", "468" ) );
 
-        List list2 = new ArrayList();
+        List<ChangeFile> list2 = new ArrayList<ChangeFile>();
         list2.add( new ChangeFile( "changefile-2", "246" ) );
         list2.add( new ChangeFile( "changefile-2", "468" ) );
 
         assertTrue( "Test compare by name, less than", comparator.compare( list1, list2 ) < 0 );
 
-        list1 = new ArrayList();
+        list1 = new ArrayList<ChangeFile>();
         list1.add( new ChangeFile( "changefile-1", "246" ) );
         list1.add( new ChangeFile( "changefile-1", "468" ) );
 
-        list2 = new ArrayList();
+        list2 = new ArrayList<ChangeFile>();
         list2.add( new ChangeFile( "changefile-2", "123" ) );
         list2.add( new ChangeFile( "changefile-2", "234" ) );
 
diff --git a/src/test/java/org/apache/maven/plugin/changelog/stubs/ChangeLogScmResultStub.java b/src/test/java/org/apache/maven/plugin/changelog/stubs/ChangeLogScmResultStub.java
index ab345d5..bd4fb8e 100644
--- a/src/test/java/org/apache/maven/plugin/changelog/stubs/ChangeLogScmResultStub.java
+++ b/src/test/java/org/apache/maven/plugin/changelog/stubs/ChangeLogScmResultStub.java
@@ -19,6 +19,7 @@
  * under the License.
  */
 
+import org.apache.maven.scm.ChangeSet;
 import org.apache.maven.scm.command.changelog.ChangeLogSet;
 
 import java.util.Collections;
@@ -44,6 +45,6 @@
     /** {@inheritDoc} */
     public ChangeLogSet getChangeLog()
     {
-        return new ChangeLogSet( Collections.EMPTY_LIST, new Date( 360 ), new Date( 720 ) );
+        return new ChangeLogSet( Collections.<ChangeSet> emptyList(), new Date( 360 ), new Date( 720 ) );
     }
 }
diff --git a/src/test/java/org/apache/maven/plugin/changelog/stubs/DevelopersStub.java b/src/test/java/org/apache/maven/plugin/changelog/stubs/DevelopersStub.java
index 84f5898..f47dc9e 100644
--- a/src/test/java/org/apache/maven/plugin/changelog/stubs/DevelopersStub.java
+++ b/src/test/java/org/apache/maven/plugin/changelog/stubs/DevelopersStub.java
@@ -29,13 +29,13 @@
  * @version $Id$
  */
 public class DevelopersStub
-    extends ArrayList
+    extends ArrayList<Developer>
 {
     public DevelopersStub()
     {
         super();
 
-        List developers = new ArrayList();
+        List<Developer> developers = new ArrayList<Developer>();
 
         Developer developer = new Developer();
         developer.setName( "Edwin Punzalan" );
diff --git a/src/test/java/org/apache/maven/plugin/changelog/stubs/ScmManagerStub.java b/src/test/java/org/apache/maven/plugin/changelog/stubs/ScmManagerStub.java
index 5a2b2bd..3b2f35f 100644
--- a/src/test/java/org/apache/maven/plugin/changelog/stubs/ScmManagerStub.java
+++ b/src/test/java/org/apache/maven/plugin/changelog/stubs/ScmManagerStub.java
@@ -90,7 +90,7 @@
     }
 
     /** {@inheritDoc} */
-    public List validateScmRepository( String string )
+    public List<String> validateScmRepository( String string )
     {
         return null;
     }
diff --git a/src/test/java/org/apache/maven/plugin/changelog/stubs/ScmProviderStub.java b/src/test/java/org/apache/maven/plugin/changelog/stubs/ScmProviderStub.java
index 78df222..e17b325 100644
--- a/src/test/java/org/apache/maven/plugin/changelog/stubs/ScmProviderStub.java
+++ b/src/test/java/org/apache/maven/plugin/changelog/stubs/ScmProviderStub.java
@@ -461,7 +461,7 @@
     }
 
     /** {@inheritDoc} */
-    public List validateScmUrl( String string, char c )
+    public List<String> validateScmUrl( String string, char c )
     {
         return null;
     }