[MSHARED-197] upgraded to Java 5

git-svn-id: https://svn.apache.org/repos/asf/maven/shared/trunk@1100703 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/pom.xml b/pom.xml
index 30c6b2e..3490ee8 100644
--- a/pom.xml
+++ b/pom.xml
@@ -37,28 +37,24 @@
   <scm>
     <connection>scm:svn:http://svn.apache.org/repos/asf/maven/shared/trunk/maven-dependency-tree/</connection>
     <developerConnection>scm:svn:https://svn.apache.org/repos/asf/maven/shared/trunk/maven-dependency-tree/</developerConnection>
-    <url>http://svn.apache.org/viewcvs.cgi/maven/shared/trunk/maven-dependency-tree/</url>
+    <url>http://svn.apache.org/viewvc/maven/shared/trunk/maven-dependency-tree/</url>
   </scm>
   <issueManagement>
     <system>jira</system>
     <url>http://jira.codehaus.org/browse/MSHARED/component/13264</url>
   </issueManagement>
 
-  <dependencyManagement>
-    <dependencies>
-      <dependency>
-        <groupId>org.apache.maven</groupId>
-        <artifactId>maven-artifact</artifactId>
-        <version>2.0.9</version>
-      </dependency>
-    </dependencies>
-  </dependencyManagement>
+  <properties>
+    <mavenVersion>2.2.0</mavenVersion>
+  </properties>
+
   <dependencies>
     <dependency>
       <groupId>org.apache.maven</groupId>
       <artifactId>maven-project</artifactId>
-      <version>2.0.8</version>
+      <version>${mavenVersion}</version>
     </dependency>
+
     <dependency>
       <groupId>jmock</groupId>
       <artifactId>jmock</artifactId>
@@ -74,6 +70,19 @@
   </dependencies>
 
   <build>
+    <pluginManagement>
+      <plugins>
+        <plugin>
+          <groupId>org.apache.maven.plugins</groupId>
+          <artifactId>maven-compiler-plugin</artifactId>
+          <configuration>
+            <source>1.5</source>
+            <target>1.5</target>
+          </configuration>
+        </plugin>
+      </plugins>
+    </pluginManagement>
+
     <plugins>
       <plugin>
         <groupId>org.codehaus.plexus</groupId>
@@ -88,4 +97,21 @@
       </plugin>
     </plugins>
   </build>
+
+  <profiles>
+    <profile>
+      <id>reporting</id>
+      <reporting>
+        <plugins>
+          <plugin>
+            <artifactId>maven-pmd-plugin</artifactId>
+            <version>2.5</version>
+            <configuration>
+              <targetJdk>1.5</targetJdk>
+            </configuration>
+           </plugin>
+        </plugins>
+      </reporting>
+    </profile>
+  </profiles>
 </project>
diff --git a/src/main/java/org/apache/maven/shared/dependency/tree/DefaultDependencyTreeBuilder.java b/src/main/java/org/apache/maven/shared/dependency/tree/DefaultDependencyTreeBuilder.java
index 8d106be..5d0a14f 100644
--- a/src/main/java/org/apache/maven/shared/dependency/tree/DefaultDependencyTreeBuilder.java
+++ b/src/main/java/org/apache/maven/shared/dependency/tree/DefaultDependencyTreeBuilder.java
@@ -23,6 +23,7 @@
 import java.util.Map;
 import java.util.Set;
 
+import org.apache.maven.artifact.Artifact;
 import org.apache.maven.artifact.factory.ArtifactFactory;
 import org.apache.maven.artifact.metadata.ArtifactMetadataSource;
 import org.apache.maven.artifact.repository.ArtifactRepository;
@@ -44,7 +45,9 @@
  * @plexus.component role="org.apache.maven.shared.dependency.tree.DependencyTreeBuilder"
  * @see DependencyTreeBuilder
  */
-public class DefaultDependencyTreeBuilder extends AbstractLogEnabled implements DependencyTreeBuilder
+public class DefaultDependencyTreeBuilder
+    extends AbstractLogEnabled
+    implements DependencyTreeBuilder
 {
     // fields -----------------------------------------------------------------
     
@@ -59,13 +62,14 @@
      */
     public DependencyTree buildDependencyTree( MavenProject project, ArtifactRepository repository,
                                                ArtifactFactory factory, ArtifactMetadataSource metadataSource,
-                                               ArtifactCollector collector ) throws DependencyTreeBuilderException
+                                               ArtifactCollector collector )
+        throws DependencyTreeBuilderException
     {
         DependencyNode rootNode = buildDependencyTree( project, repository, factory, metadataSource, null, collector );
-        
+
         CollectingDependencyNodeVisitor collectingVisitor = new CollectingDependencyNodeVisitor();
         rootNode.accept( collectingVisitor );
-        
+
         return new DependencyTree( rootNode, collectingVisitor.getNodes() );
     }
     
@@ -81,17 +85,17 @@
 
         try
         {
-            Map managedVersions = project.getManagedVersionMap();
+            Map<String, Artifact> managedVersions = project.getManagedVersionMap();
 
-            Set dependencyArtifacts = project.getDependencyArtifacts();
+            Set<Artifact> dependencyArtifacts = project.getDependencyArtifacts();
 
             if ( dependencyArtifacts == null )
             {
                 dependencyArtifacts = project.createArtifacts( factory, null, null );
             }
-            
+
             getLogger().debug( "Dependency tree resolution listener events:" );
-            
+
             // TODO: note that filter does not get applied due to MNG-3236
 
             result = collector.collect( dependencyArtifacts, project.getArtifact(), managedVersions, repository,
@@ -110,9 +114,9 @@
                 + project.getArtifact() );
         }
     }
-    
+
     // protected methods ------------------------------------------------------
-    
+
     protected ArtifactResolutionResult getArtifactResolutionResult()
     {
         return result;
diff --git a/src/main/java/org/apache/maven/shared/dependency/tree/DependencyNode.java b/src/main/java/org/apache/maven/shared/dependency/tree/DependencyNode.java
index 8444256..a73953f 100644
--- a/src/main/java/org/apache/maven/shared/dependency/tree/DependencyNode.java
+++ b/src/main/java/org/apache/maven/shared/dependency/tree/DependencyNode.java
@@ -26,6 +26,7 @@
 import java.util.List;
 
 import org.apache.maven.artifact.Artifact;
+import org.apache.maven.artifact.versioning.ArtifactVersion;
 import org.apache.maven.artifact.versioning.VersionRange;
 import org.apache.maven.shared.dependency.tree.traversal.DependencyNodeVisitor;
 import org.apache.maven.shared.dependency.tree.traversal.SerializingDependencyNodeVisitor;
@@ -142,7 +143,7 @@
     /**
      * The list of child dependency nodes of this dependency node.
      */
-    private final List children;
+    private final List<DependencyNode> children;
 
     /**
      * The parent dependency node of this dependency node.
@@ -193,7 +194,7 @@
 
     private VersionRange versionSelectedFromRange;
     
-    private List availableVersions;
+    private List<ArtifactVersion> availableVersions;
 
     // constructors -----------------------------------------------------------
 
@@ -276,7 +277,7 @@
         this.state = state;
         this.relatedArtifact = relatedArtifact;
 
-        children = new ArrayList();
+        children = new ArrayList<DependencyNode>();
     }
     
     /**
@@ -287,7 +288,7 @@
     DependencyNode()
     {
         artifact = null;
-        children = new ArrayList();
+        children = new ArrayList<DependencyNode>();
     }
 
     // public methods ---------------------------------------------------------
@@ -304,13 +305,12 @@
     {
         if ( visitor.visit( this ) )
         {
-            boolean visiting = true;
-
-            for ( Iterator iterator = getChildren().iterator(); visiting && iterator.hasNext(); )
+            for ( DependencyNode child : getChildren() )
             {
-                DependencyNode child = (DependencyNode) iterator.next();
-
-                visiting = child.accept( visitor );
+                if ( !child.accept( visitor ) )
+                {
+                    break;
+                }
             }
         }
 
@@ -369,7 +369,7 @@
      * @return the depth
      * @deprecated As of 1.1, depth is computed by node hierarchy. With the introduction of node
      *             visitors and filters this method can give misleading results. For example, consider
-     *             serialising a tree with a filter using a visitor: this method would return the
+     *             serializing a tree with a filter using a visitor: this method would return the
      *             unfiltered depth of a node, whereas the correct depth would be calculated by the
      *             visitor.
      */
@@ -394,7 +394,7 @@
      * 
      * @return the list of child dependency nodes
      */
-    public List getChildren()
+    public List<DependencyNode> getChildren()
     {
         return Collections.unmodifiableList( children );
     }
@@ -545,12 +545,12 @@
      *         <code>null</code> if the artifact had a explicit version.
      * @since 1.2
      */
-    public List getAvailableVersions()
+    public List<ArtifactVersion> getAvailableVersions()
     {
         return availableVersions;
     }
     
-    public void setAvailableVersions( List availableVersions )
+    public void setAvailableVersions( List<ArtifactVersion> availableVersions )
     {
         this.availableVersions = availableVersions;
     }
@@ -644,7 +644,7 @@
      * @return the preorder traversal iterator
      * @see #preorderIterator()
      */
-    public Iterator iterator()
+    public Iterator<DependencyNode> iterator()
     {
         return preorderIterator();
     }
@@ -655,7 +655,7 @@
      * @return the preorder traversal iterator
      * @see DependencyTreePreorderIterator
      */
-    public Iterator preorderIterator()
+    public Iterator<DependencyNode> preorderIterator()
     {
         return new DependencyTreePreorderIterator( this );
     }
@@ -666,7 +666,7 @@
      * @return the postorder traversal iterator
      * @see DependencyTreeInverseIterator
      */
-    public Iterator inverseIterator()
+    public Iterator<DependencyNode> inverseIterator()
     {
         return new DependencyTreeInverseIterator( this );
     }
@@ -795,9 +795,7 @@
         return hashCode;
     }
 
-    /**
-     * {@inheritDoc}
-     */
+    @Override
     public boolean equals( Object object )
     {
         // TODO: probably better using commons-lang EqualsBuilder
@@ -854,10 +852,8 @@
      */
     private void removeAllChildren()
     {
-        for ( Iterator iterator = children.iterator(); iterator.hasNext(); )
+        for ( DependencyNode child : children )
         {
-            DependencyNode child = (DependencyNode) iterator.next();
-
             child.parent = null;
         }
 
diff --git a/src/main/java/org/apache/maven/shared/dependency/tree/DependencyTree.java b/src/main/java/org/apache/maven/shared/dependency/tree/DependencyTree.java
index f61ab75..c8437b9 100644
--- a/src/main/java/org/apache/maven/shared/dependency/tree/DependencyTree.java
+++ b/src/main/java/org/apache/maven/shared/dependency/tree/DependencyTree.java
@@ -24,6 +24,8 @@
 import java.util.Iterator;
 import java.util.List;
 
+import org.apache.maven.artifact.Artifact;
+
 /**
  * Represents a Maven project's dependency tree.
  * 
@@ -37,7 +39,7 @@
 
     private final DependencyNode rootNode;
 
-    private final Collection nodes;
+    private final Collection<DependencyNode> nodes;
 
     // constructors -----------------------------------------------------------
 
@@ -47,7 +49,7 @@
      * @param rootNode
      * @param nodes
      */
-    public DependencyTree( DependencyNode rootNode, Collection nodes )
+    public DependencyTree( DependencyNode rootNode, Collection<DependencyNode> nodes )
     {
         this.rootNode = rootNode;
         this.nodes = nodes;
@@ -60,19 +62,17 @@
         return rootNode;
     }
 
-    public Collection getNodes()
+    public Collection<DependencyNode> getNodes()
     {
         return nodes;
     }
 
-    public List getArtifacts()
+    public List<Artifact> getArtifacts()
     {
-        List artifacts = new ArrayList();
+        List<Artifact> artifacts = new ArrayList<Artifact>();
 
-        Iterator it = getNodes().iterator();
-        while ( it.hasNext() )
+        for ( DependencyNode node : getNodes() )
         {
-            DependencyNode node = (DependencyNode) it.next();
             artifacts.add( node.getArtifact() );
         }
 
@@ -87,7 +87,7 @@
     /**
      * @see DependencyNode#iterator()
      */
-    public Iterator iterator()
+    public Iterator<DependencyNode> iterator()
     {
         return getRootNode().iterator();
     }
@@ -95,7 +95,7 @@
     /**
      * @see DependencyNode#preorderIterator()
      */
-    public Iterator preorderIterator()
+    public Iterator<DependencyNode> preorderIterator()
     {
         return getRootNode().preorderIterator();
     }
@@ -103,7 +103,7 @@
     /**
      * @see DependencyNode#inverseIterator()
      */
-    public Iterator inverseIterator()
+    public Iterator<DependencyNode> inverseIterator()
     {
         return getRootNode().inverseIterator();
     }
diff --git a/src/main/java/org/apache/maven/shared/dependency/tree/DependencyTreeInverseIterator.java b/src/main/java/org/apache/maven/shared/dependency/tree/DependencyTreeInverseIterator.java
index 0e1aad2..005387e 100644
--- a/src/main/java/org/apache/maven/shared/dependency/tree/DependencyTreeInverseIterator.java
+++ b/src/main/java/org/apache/maven/shared/dependency/tree/DependencyTreeInverseIterator.java
@@ -33,9 +33,9 @@
  * @version $Id$
  */
 public class DependencyTreeInverseIterator
-    implements Iterator
+    implements Iterator<DependencyNode>
 {
-    private Stack nodesToProcess = new Stack();
+    private Stack<DependencyNode> nodesToProcess = new Stack<DependencyNode>();
 
     public DependencyTreeInverseIterator( DependencyNode rootNode )
     {
@@ -51,7 +51,7 @@
         return !nodesToProcess.isEmpty();
     }
 
-    public Object next()
+    public DependencyNode next()
     {
         if ( !hasNext() )
         {
diff --git a/src/main/java/org/apache/maven/shared/dependency/tree/DependencyTreePreorderIterator.java b/src/main/java/org/apache/maven/shared/dependency/tree/DependencyTreePreorderIterator.java
index d11884d..958ce55 100644
--- a/src/main/java/org/apache/maven/shared/dependency/tree/DependencyTreePreorderIterator.java
+++ b/src/main/java/org/apache/maven/shared/dependency/tree/DependencyTreePreorderIterator.java
@@ -31,9 +31,9 @@
  * @version $Id$
  */
 public class DependencyTreePreorderIterator
-    implements Iterator
+    implements Iterator<DependencyNode>
 {
-    private Stack nodesToProcess = new Stack();
+    private Stack<DependencyNode> nodesToProcess = new Stack<DependencyNode>();
 
     public DependencyTreePreorderIterator( DependencyNode rootNode )
     {
@@ -45,14 +45,14 @@
         return !nodesToProcess.isEmpty();
     }
 
-    public Object next()
+    public DependencyNode next()
     {
         if ( !hasNext() )
         {
             throw new NoSuchElementException();
         }
-        DependencyNode currentNode = (DependencyNode) nodesToProcess.pop();
-        List children = currentNode.getChildren();
+        DependencyNode currentNode = nodesToProcess.pop();
+        List<DependencyNode> children = currentNode.getChildren();
         if ( children != null )
         {
             for ( int i = children.size() - 1; i >= 0; i-- )
diff --git a/src/main/java/org/apache/maven/shared/dependency/tree/DependencyTreeResolutionListener.java b/src/main/java/org/apache/maven/shared/dependency/tree/DependencyTreeResolutionListener.java
index 991e01b..f516c73 100644
--- a/src/main/java/org/apache/maven/shared/dependency/tree/DependencyTreeResolutionListener.java
+++ b/src/main/java/org/apache/maven/shared/dependency/tree/DependencyTreeResolutionListener.java
@@ -41,7 +41,8 @@
  * @author <a href="mailto:markhobson@gmail.com">Mark Hobson</a>
  * @version $Id$
  */
-public class DependencyTreeResolutionListener implements ResolutionListener, ResolutionListenerForDepMgmt
+public class DependencyTreeResolutionListener
+    implements ResolutionListener, ResolutionListenerForDepMgmt
 {
     // fields -----------------------------------------------------------------
     
@@ -53,12 +54,12 @@
     /**
      * The parent dependency nodes of the current dependency node.
      */
-    private final Stack parentNodes;
+    private final Stack<DependencyNode> parentNodes;
 
     /**
      * A map of dependency nodes by their attached artifact.
      */
-    private final Map nodesByArtifact;
+    private final Map<Artifact, DependencyNode> nodesByArtifact;
 
     /**
      * The root dependency node of the computed dependency tree.
@@ -73,12 +74,12 @@
     /**
      * Map &lt; String replacementId, String premanaged version >
      */
-    private Map managedVersions = new HashMap();
+    private Map<String, String> managedVersions = new HashMap<String, String>();
 
     /**
      * Map &lt; String replacementId, String premanaged scope >
      */
-    private Map managedScopes = new HashMap();
+    private Map<String, String> managedScopes = new HashMap<String, String>();
 
     // constructors -----------------------------------------------------------
 
@@ -92,8 +93,8 @@
     {
         this.logger = logger;
         
-        parentNodes = new Stack();
-        nodesByArtifact = new IdentityHashMap();
+        parentNodes = new Stack<DependencyNode>();
+        nodesByArtifact = new IdentityHashMap<Artifact, DependencyNode>();
         rootNode = null;
         currentNode = null;
     }
@@ -129,7 +130,7 @@
      */
     public void endProcessChildren( Artifact artifact )
     {
-        DependencyNode node = (DependencyNode) parentNodes.pop();
+        DependencyNode node = parentNodes.pop();
 
         log( "endProcessChildren: artifact=" + artifact );
         
@@ -371,7 +372,7 @@
      * @return a list of dependency nodes
      * @deprecated As of 1.1, use a {@link CollectingDependencyNodeVisitor} on the root dependency node
      */
-    public Collection getNodes()
+    public Collection<DependencyNode> getNodes()
     {
         return Collections.unmodifiableCollection( nodesByArtifact.values() );
     }
@@ -423,7 +424,7 @@
 
         if ( !parentNodes.isEmpty() )
         {
-            DependencyNode parent = (DependencyNode) parentNodes.peek();
+            DependencyNode parent = parentNodes.peek();
 
             parent.addChild( node );
         }
@@ -444,7 +445,7 @@
     {
         DependencyNode node = createNode( artifact );
 
-        DependencyNode previousNode = (DependencyNode) nodesByArtifact.put( node.getArtifact(), node );
+        DependencyNode previousNode = nodesByArtifact.put( node.getArtifact(), node );
         
         if ( previousNode != null )
         {
@@ -471,7 +472,7 @@
      */
     private DependencyNode getNode( Artifact artifact )
     {
-        return (DependencyNode) nodesByArtifact.get( artifact );
+        return nodesByArtifact.get( artifact );
     }
 
     /**
@@ -482,7 +483,7 @@
      */
     private void removeNode( Artifact artifact )
     {
-        DependencyNode node = (DependencyNode) nodesByArtifact.remove( artifact );
+        DependencyNode node = nodesByArtifact.remove( artifact );
 
         if ( !artifact.equals( node.getArtifact() ) )
         {
@@ -500,19 +501,15 @@
      */
     private boolean isCurrentNodeIncluded()
     {
-        boolean included = true;
-
-        for ( Iterator iterator = parentNodes.iterator(); included && iterator.hasNext(); )
+        for ( DependencyNode node : parentNodes )
         {
-            DependencyNode node = (DependencyNode) iterator.next();
-
             if ( node.getState() != DependencyNode.INCLUDED )
             {
-                included = false;
+                return false;
             }
         }
 
-        return included;
+        return true;
     }
 
     /**
diff --git a/src/main/java/org/apache/maven/shared/dependency/tree/filter/AncestorOrSelfDependencyNodeFilter.java b/src/main/java/org/apache/maven/shared/dependency/tree/filter/AncestorOrSelfDependencyNodeFilter.java
index d9693f3..decd78f 100644
--- a/src/main/java/org/apache/maven/shared/dependency/tree/filter/AncestorOrSelfDependencyNodeFilter.java
+++ b/src/main/java/org/apache/maven/shared/dependency/tree/filter/AncestorOrSelfDependencyNodeFilter.java
@@ -20,7 +20,6 @@
  */
 
 import java.util.Collections;
-import java.util.Iterator;
 import java.util.List;
 
 import org.apache.maven.shared.dependency.tree.DependencyNode;
@@ -32,14 +31,15 @@
  * @version $Id$
  * @since 1.1
  */
-public class AncestorOrSelfDependencyNodeFilter implements DependencyNodeFilter
+public class AncestorOrSelfDependencyNodeFilter
+    implements DependencyNodeFilter
 {
     // fields -----------------------------------------------------------------
 
     /**
      * The list of nodes that this filter accepts ancestors-or-self of.
      */
-    private final List descendantNodes;
+    private final List<DependencyNode> descendantNodes;
 
     // constructors -----------------------------------------------------------
 
@@ -55,7 +55,7 @@
      * @param descendantNodes
      *            the list of nodes to accept ancestors-or-self of
      */
-    public AncestorOrSelfDependencyNodeFilter( List descendantNodes )
+    public AncestorOrSelfDependencyNodeFilter( List<DependencyNode> descendantNodes )
     {
         this.descendantNodes = descendantNodes;
     }
@@ -67,19 +67,15 @@
      */
     public boolean accept( DependencyNode node )
     {
-        boolean accept = false;
-
-        for ( Iterator iterator = descendantNodes.iterator(); !accept && iterator.hasNext(); )
+        for ( DependencyNode descendantNode : descendantNodes )
         {
-            DependencyNode descendantNode = (DependencyNode) iterator.next();
-
             if ( isAncestorOrSelf( node, descendantNode ) )
             {
-                accept = true;
+                return true;
             }
         }
 
-        return accept;
+        return false;
     }
 
     // private methods --------------------------------------------------------
diff --git a/src/main/java/org/apache/maven/shared/dependency/tree/filter/AndDependencyNodeFilter.java b/src/main/java/org/apache/maven/shared/dependency/tree/filter/AndDependencyNodeFilter.java
index 0b8c9ac..d1dfad9 100644
--- a/src/main/java/org/apache/maven/shared/dependency/tree/filter/AndDependencyNodeFilter.java
+++ b/src/main/java/org/apache/maven/shared/dependency/tree/filter/AndDependencyNodeFilter.java
@@ -21,7 +21,6 @@
 
 import java.util.Arrays;
 import java.util.Collections;
-import java.util.Iterator;
 import java.util.List;
 
 import org.apache.maven.shared.dependency.tree.DependencyNode;
@@ -33,14 +32,15 @@
  * @version $Id$
  * @since 1.1
  */
-public class AndDependencyNodeFilter implements DependencyNodeFilter
+public class AndDependencyNodeFilter
+    implements DependencyNodeFilter
 {
     // fields -----------------------------------------------------------------
 
     /**
      * The dependency node filters that this filter ANDs together.
      */
-    private final List filters;
+    private final List<DependencyNodeFilter> filters;
 
     // constructors -----------------------------------------------------------
 
@@ -63,7 +63,7 @@
      * @param filters
      *            the list of dependency node filters to logically AND together
      */
-    public AndDependencyNodeFilter( List filters )
+    public AndDependencyNodeFilter( List<DependencyNodeFilter> filters )
     {
         this.filters = Collections.unmodifiableList( filters );
     }
@@ -75,16 +75,15 @@
      */
     public boolean accept( DependencyNode node )
     {
-        boolean accept = true;
-
-        for ( Iterator iterator = filters.iterator(); accept && iterator.hasNext(); )
+        for ( DependencyNodeFilter filter : filters )
         {
-            DependencyNodeFilter filter = (DependencyNodeFilter) iterator.next();
-
-            accept = filter.accept( node );
+            if ( !filter.accept( node ) )
+            {
+                return false;
+            }
         }
 
-        return accept;
+        return true;
     }
 
     // public methods ---------------------------------------------------------
@@ -94,7 +93,7 @@
      * 
      * @return the dependency node filters that this filter ANDs together
      */
-    public List getDependencyNodeFilters()
+    public List<DependencyNodeFilter> getDependencyNodeFilters()
     {
         return filters;
     }
diff --git a/src/main/java/org/apache/maven/shared/dependency/tree/filter/ArtifactDependencyNodeFilter.java b/src/main/java/org/apache/maven/shared/dependency/tree/filter/ArtifactDependencyNodeFilter.java
index 64c7035..231f6ee 100644
--- a/src/main/java/org/apache/maven/shared/dependency/tree/filter/ArtifactDependencyNodeFilter.java
+++ b/src/main/java/org/apache/maven/shared/dependency/tree/filter/ArtifactDependencyNodeFilter.java
@@ -30,7 +30,8 @@
  * @version $Id$
  * @since 1.1
  */
-public class ArtifactDependencyNodeFilter implements DependencyNodeFilter
+public class ArtifactDependencyNodeFilter
+    implements DependencyNodeFilter
 {
     // fields -----------------------------------------------------------------
 
diff --git a/src/main/java/org/apache/maven/shared/dependency/tree/filter/StateDependencyNodeFilter.java b/src/main/java/org/apache/maven/shared/dependency/tree/filter/StateDependencyNodeFilter.java
index 468132e..ad611d4 100644
--- a/src/main/java/org/apache/maven/shared/dependency/tree/filter/StateDependencyNodeFilter.java
+++ b/src/main/java/org/apache/maven/shared/dependency/tree/filter/StateDependencyNodeFilter.java
@@ -28,7 +28,8 @@
  * @version $Id$
  * @since 1.1
  */
-public class StateDependencyNodeFilter implements DependencyNodeFilter
+public class StateDependencyNodeFilter
+    implements DependencyNodeFilter
 {
     // constants --------------------------------------------------------------
 
diff --git a/src/main/java/org/apache/maven/shared/dependency/tree/traversal/BuildingDependencyNodeVisitor.java b/src/main/java/org/apache/maven/shared/dependency/tree/traversal/BuildingDependencyNodeVisitor.java
index 971d0b4..bad8f0b 100644
--- a/src/main/java/org/apache/maven/shared/dependency/tree/traversal/BuildingDependencyNodeVisitor.java
+++ b/src/main/java/org/apache/maven/shared/dependency/tree/traversal/BuildingDependencyNodeVisitor.java
@@ -31,7 +31,8 @@
  * @version $Id$
  * @since 1.1
  */
-public class BuildingDependencyNodeVisitor implements DependencyNodeVisitor
+public class BuildingDependencyNodeVisitor
+    implements DependencyNodeVisitor
 {
     // fields -----------------------------------------------------------------
 
@@ -43,7 +44,7 @@
     /**
      * The resultant tree parent nodes for the currently visited node.
      */
-    private final Stack parentNodes;
+    private final Stack<DependencyNode> parentNodes;
 
     /**
      * The root node of the resultant tree.
@@ -71,7 +72,7 @@
     {
         this.visitor = visitor;
 
-        parentNodes = new Stack();
+        parentNodes = new Stack<DependencyNode>();
     }
 
     // DependencyNodeVisitor methods ------------------------------------------
@@ -94,7 +95,7 @@
         }
         else
         {
-            DependencyNode parentNode = (DependencyNode) parentNodes.peek();
+            DependencyNode parentNode = parentNodes.peek();
             parentNode.addChild( newNode );
         }
 
diff --git a/src/main/java/org/apache/maven/shared/dependency/tree/traversal/CollectingDependencyNodeVisitor.java b/src/main/java/org/apache/maven/shared/dependency/tree/traversal/CollectingDependencyNodeVisitor.java
index 8f04226..396c1e5 100644
--- a/src/main/java/org/apache/maven/shared/dependency/tree/traversal/CollectingDependencyNodeVisitor.java
+++ b/src/main/java/org/apache/maven/shared/dependency/tree/traversal/CollectingDependencyNodeVisitor.java
@@ -32,14 +32,15 @@
  * @version $Id$
  * @since 1.1
  */
-public class CollectingDependencyNodeVisitor implements DependencyNodeVisitor
+public class CollectingDependencyNodeVisitor
+    implements DependencyNodeVisitor
 {
     // fields -----------------------------------------------------------------
 
     /**
      * The collected list of nodes.
      */
-    private final List nodes;
+    private final List<DependencyNode> nodes;
 
     // constructors -----------------------------------------------------------
 
@@ -48,7 +49,7 @@
      */
     public CollectingDependencyNodeVisitor()
     {
-        nodes = new ArrayList();
+        nodes = new ArrayList<DependencyNode>();
     }
 
     // DependencyNodeVisitor methods ------------------------------------------
@@ -79,7 +80,7 @@
      * 
      * @return the list of collected dependency nodes
      */
-    public List getNodes()
+    public List<DependencyNode> getNodes()
     {
         return Collections.unmodifiableList( nodes );
     }
diff --git a/src/main/java/org/apache/maven/shared/dependency/tree/traversal/FilteringDependencyNodeVisitor.java b/src/main/java/org/apache/maven/shared/dependency/tree/traversal/FilteringDependencyNodeVisitor.java
index c374c7c..bbde004 100644
--- a/src/main/java/org/apache/maven/shared/dependency/tree/traversal/FilteringDependencyNodeVisitor.java
+++ b/src/main/java/org/apache/maven/shared/dependency/tree/traversal/FilteringDependencyNodeVisitor.java
@@ -29,7 +29,8 @@
  * @version $Id$
  * @since 1.1
  */
-public class FilteringDependencyNodeVisitor implements DependencyNodeVisitor
+public class FilteringDependencyNodeVisitor
+    implements DependencyNodeVisitor
 {
     // fields -----------------------------------------------------------------
 
diff --git a/src/main/java/org/apache/maven/shared/dependency/tree/traversal/SerializingDependencyNodeVisitor.java b/src/main/java/org/apache/maven/shared/dependency/tree/traversal/SerializingDependencyNodeVisitor.java
index 8c28000..dde3c40 100644
--- a/src/main/java/org/apache/maven/shared/dependency/tree/traversal/SerializingDependencyNodeVisitor.java
+++ b/src/main/java/org/apache/maven/shared/dependency/tree/traversal/SerializingDependencyNodeVisitor.java
@@ -32,7 +32,8 @@
  * @version $Id$
  * @since 1.1
  */
-public class SerializingDependencyNodeVisitor implements DependencyNodeVisitor
+public class SerializingDependencyNodeVisitor
+    implements DependencyNodeVisitor
 {
     // classes ----------------------------------------------------------------
 
@@ -209,7 +210,7 @@
         }
         else
         {
-            List siblings = parent.getChildren();
+            List<DependencyNode> siblings = parent.getChildren();
 
             last = ( siblings.indexOf( node ) == siblings.size() - 1 );
         }
diff --git a/src/test/java/org/apache/maven/shared/dependency/tree/AbstractDependencyNodeTest.java b/src/test/java/org/apache/maven/shared/dependency/tree/AbstractDependencyNodeTest.java
index d2dea0d..19283db 100644
--- a/src/test/java/org/apache/maven/shared/dependency/tree/AbstractDependencyNodeTest.java
+++ b/src/test/java/org/apache/maven/shared/dependency/tree/AbstractDependencyNodeTest.java
@@ -29,7 +29,8 @@
  * @author <a href="mailto:markhobson@gmail.com">Mark Hobson</a>
  * @version $Id$
  */
-public abstract class AbstractDependencyNodeTest extends MockObjectTestCase
+public abstract class AbstractDependencyNodeTest
+    extends MockObjectTestCase
 {
     // protected methods ------------------------------------------------------
 
diff --git a/src/test/java/org/apache/maven/shared/dependency/tree/ArtifactMetadataSourceStub.java b/src/test/java/org/apache/maven/shared/dependency/tree/ArtifactMetadataSourceStub.java
index afcc978..8a0ff3b 100644
--- a/src/test/java/org/apache/maven/shared/dependency/tree/ArtifactMetadataSourceStub.java
+++ b/src/test/java/org/apache/maven/shared/dependency/tree/ArtifactMetadataSourceStub.java
@@ -30,6 +30,7 @@
 import org.apache.maven.artifact.metadata.ArtifactMetadataSource;
 import org.apache.maven.artifact.metadata.ResolutionGroup;
 import org.apache.maven.artifact.repository.ArtifactRepository;
+import org.apache.maven.artifact.versioning.ArtifactVersion;
 
 /**
  * Provides a stub to simulate an artifact metadata source.
@@ -37,7 +38,8 @@
  * @author <a href="mailto:markhobson@gmail.com">Mark Hobson</a>
  * @version $Id$
  */
-public class ArtifactMetadataSourceStub implements ArtifactMetadataSource
+public class ArtifactMetadataSourceStub
+    implements ArtifactMetadataSource
 {
     // TODO: move to maven-plugin-testing-harness?
     
@@ -46,12 +48,12 @@
     /**
      * Map of resolution groups by artifact.
      */
-    private final Map resolutionGroupsByArtifact;
+    private final Map<Artifact, ResolutionGroup> resolutionGroupsByArtifact;
 
     /**
      * Map of available versions by artifact.
      */
-    private final Map availableVersionsByArtifact;
+    private final Map<Artifact, List<ArtifactVersion>> availableVersionsByArtifact;
 
     // constructors -----------------------------------------------------------
     
@@ -60,8 +62,8 @@
      */
     public ArtifactMetadataSourceStub()
     {
-        resolutionGroupsByArtifact = new HashMap();
-        availableVersionsByArtifact = new HashMap();
+        resolutionGroupsByArtifact = new HashMap<Artifact, ResolutionGroup>();
+        availableVersionsByArtifact = new HashMap<Artifact, List<ArtifactVersion>>();
     }
 
     // ArtifactMetadataSource methods -----------------------------------------
@@ -72,7 +74,7 @@
     public ResolutionGroup retrieve( Artifact artifact, ArtifactRepository localRepository, List remoteRepositories )
         throws ArtifactMetadataRetrievalException
     {
-        ResolutionGroup resolution = (ResolutionGroup) resolutionGroupsByArtifact.get( artifact );
+        ResolutionGroup resolution = resolutionGroupsByArtifact.get( artifact );
         
         // if we return null then the artifact gets excluded in DefaultArtifactCollector
         if ( resolution == null )
@@ -87,9 +89,10 @@
      * {@inheritDoc}
      */
     public List retrieveAvailableVersions( Artifact artifact, ArtifactRepository localRepository,
-                                           List remoteRepositories ) throws ArtifactMetadataRetrievalException
+                                           List remoteRepositories )
+        throws ArtifactMetadataRetrievalException
     {
-        List availableVersions = (List) availableVersionsByArtifact.get( artifact );
+        List<ArtifactVersion> availableVersions = availableVersionsByArtifact.get( artifact );
 
         return availableVersions != null ? availableVersions : Collections.EMPTY_LIST;
     }
@@ -104,7 +107,7 @@
      * @param dependencyArtifacts
      *            the set of artifacts to register as dependencies of the specified artifact
      */
-    public void addArtifactMetadata( Artifact artifact, Set dependencyArtifacts )
+    public void addArtifactMetadata( Artifact artifact, Set<Artifact> dependencyArtifacts )
     {
         ResolutionGroup resolution = new ResolutionGroup( artifact, dependencyArtifacts, Collections.EMPTY_LIST );
 
@@ -119,8 +122,15 @@
      * @param versions
      *            the list of versions to register as available for the specified artifact
      */
-    public void addAvailableVersions( Artifact artifact, List versions )
+    public void addAvailableVersions( Artifact artifact, List<ArtifactVersion> versions )
     {
         availableVersionsByArtifact.put( artifact, versions );
     }
+
+    public Artifact retrieveRelocatedArtifact( Artifact artifact, ArtifactRepository localRepository,
+                                               List remoteRepositories )
+        throws ArtifactMetadataRetrievalException
+    {
+        return artifact;
+    }
 }
diff --git a/src/test/java/org/apache/maven/shared/dependency/tree/DefaultDependencyTreeBuilderTest.java b/src/test/java/org/apache/maven/shared/dependency/tree/DefaultDependencyTreeBuilderTest.java
index 28b0fd4..acdd467 100644
--- a/src/test/java/org/apache/maven/shared/dependency/tree/DefaultDependencyTreeBuilderTest.java
+++ b/src/test/java/org/apache/maven/shared/dependency/tree/DefaultDependencyTreeBuilderTest.java
@@ -56,7 +56,8 @@
  * @version $Id$
  * @see DefaultDependencyTreeBuilder
  */
-public class DefaultDependencyTreeBuilderTest extends PlexusTestCase
+public class DefaultDependencyTreeBuilderTest
+    extends PlexusTestCase
 {
     // fields -----------------------------------------------------------------
 
@@ -75,7 +76,8 @@
     /**
      * {@inheritDoc}
      */
-    protected void setUp() throws Exception
+    protected void setUp()
+        throws Exception
     {
         super.setUp();
 
@@ -92,7 +94,8 @@
     /**
      * {@inheritDoc}
      */
-    protected void tearDown() throws Exception
+    protected void tearDown()
+        throws Exception
     {
         super.tearDown();
 
@@ -111,7 +114,8 @@
      * 
      * @throws DependencyTreeBuilderException 
      */
-    public void testProjectWithDependency() throws DependencyTreeBuilderException
+    public void testProjectWithDependency()
+        throws DependencyTreeBuilderException
     {
         Artifact projectArtifact = createArtifact( "g:p:t:1" );
         Artifact childArtifact = createArtifact( "g:a:t:1" );
@@ -135,7 +139,8 @@
      *
      * @throws DependencyTreeBuilderException
      */
-    public void testProjectWithTransitiveDependency() throws DependencyTreeBuilderException
+    public void testProjectWithTransitiveDependency()
+        throws DependencyTreeBuilderException
     {
         Artifact projectArtifact = createArtifact( "g:p:t:1" );
         Artifact childArtifact = createArtifact( "g:a:t:1" );
@@ -165,7 +170,8 @@
      *
      * @throws DependencyTreeBuilderException
      */
-    public void testProjectWithDuplicateDependency() throws DependencyTreeBuilderException
+    public void testProjectWithDuplicateDependency()
+        throws DependencyTreeBuilderException
     {
         Artifact projectArtifact = createArtifact( "g:p:t:1" );
         Artifact child1Artifact = createArtifact( "g:a:t:1" );
@@ -202,7 +208,8 @@
      *
      * @throws DependencyTreeBuilderException
      */
-    public void testProjectWithConflictDependencyVersionFirstWins() throws DependencyTreeBuilderException
+    public void testProjectWithConflictDependencyVersionFirstWins()
+        throws DependencyTreeBuilderException
     {
         Artifact projectArtifact = createArtifact( "g:p:t:1" );
         Artifact nearestArtifact = createArtifact( "g:a:t:1" );
@@ -235,7 +242,8 @@
      *
      * @throws DependencyTreeBuilderException
      */
-    public void testProjectWithConflictDependencyVersionLastWins() throws DependencyTreeBuilderException
+    public void testProjectWithConflictDependencyVersionLastWins()
+        throws DependencyTreeBuilderException
     {
         Artifact projectArtifact = createArtifact( "g:p:t:1" );
         Artifact childArtifact = createArtifact( "g:a:t:1" );
@@ -268,7 +276,8 @@
      *
      * @throws DependencyTreeBuilderException
      */
-    public void testProjectWithConflictDependencyScopeCurrentPom() throws DependencyTreeBuilderException
+    public void testProjectWithConflictDependencyScopeCurrentPom()
+        throws DependencyTreeBuilderException
     {
         Artifact projectArtifact = createArtifact( "g:p:t:1" );
         Artifact nearestArtifact = createArtifact( "g:b:t:1:test" );
@@ -303,7 +312,8 @@
      *
      * @throws DependencyTreeBuilderException
      */
-    public void testProjectWithConflictDependencyScopeFirstWins() throws DependencyTreeBuilderException
+    public void testProjectWithConflictDependencyScopeFirstWins()
+        throws DependencyTreeBuilderException
     {
         Artifact projectArtifact = createArtifact( "g:p:t:1" );
         Artifact childArtifact = createArtifact( "g:a:t:1" );
@@ -369,7 +379,8 @@
      *
      * @throws DependencyTreeBuilderException
      */
-    public void testProjectWithConflictDependencyScopeLastWins() throws DependencyTreeBuilderException
+    public void testProjectWithConflictDependencyScopeLastWins()
+        throws DependencyTreeBuilderException
     {
         Artifact projectArtifact = createArtifact( "g:p:t:1" );
         Artifact childArtifact = createArtifact( "g:a:t:1" );
@@ -432,7 +443,8 @@
      * 
      * @throws DependencyTreeBuilderException
      */
-    public void testProjectWithManagedTransitiveDependencyVersion() throws DependencyTreeBuilderException
+    public void testProjectWithManagedTransitiveDependencyVersion()
+        throws DependencyTreeBuilderException
     {
         Artifact projectArtifact = createArtifact( "g:p:t:1" );
         Artifact childArtifact = createArtifact( "g:a:t:1" );
@@ -511,7 +523,8 @@
      *
      * @throws DependencyTreeBuilderException
      */
-    public void testProjectWithManagedTransitiveDependencyScope() throws DependencyTreeBuilderException
+    public void testProjectWithManagedTransitiveDependencyScope()
+        throws DependencyTreeBuilderException
     {
         Artifact projectArtifact = createArtifact( "g:p:t:1" );
         Artifact childArtifact = createArtifact( "g:a:t:1" );
@@ -544,7 +557,8 @@
      * 
      * @throws DependencyTreeBuilderException
      */
-    public void testProjectWithManagedTransitiveDependencyVersionAndScope() throws DependencyTreeBuilderException
+    public void testProjectWithManagedTransitiveDependencyVersionAndScope()
+        throws DependencyTreeBuilderException
     {
         Artifact projectArtifact = createArtifact( "g:p:t:1" );
         Artifact childArtifact = createArtifact( "g:a:t:1" );
@@ -579,7 +593,8 @@
      * 
      * @throws DependencyTreeBuilderException
      */
-    public void testProjectWithManagedTransitiveDependencyVersionAndConflictDependencyVersion() throws DependencyTreeBuilderException
+    public void testProjectWithManagedTransitiveDependencyVersionAndConflictDependencyVersion()
+        throws DependencyTreeBuilderException
     {
         Artifact projectArtifact = createArtifact( "g:p:t:1" );
         Artifact nearestArtifact = createArtifact( "g:a:t:1" );
@@ -615,7 +630,8 @@
      * @throws InvalidVersionSpecificationException 
      * @throws DependencyTreeBuilderException 
      */
-    public void testProjectWithVersionRange() throws InvalidVersionSpecificationException, DependencyTreeBuilderException
+    public void testProjectWithVersionRange()
+        throws InvalidVersionSpecificationException, DependencyTreeBuilderException
     {
         String range = "[1,2)";
         Artifact projectArtifact = createArtifact( "g:p:t:1" );
@@ -624,7 +640,7 @@
         MavenProject project = createProject( projectArtifact, new Artifact[] { childArtifact } );
 
         ArtifactVersion version = new DefaultArtifactVersion( "1.0" );
-        List availableVersions = new ArrayList();
+        List<ArtifactVersion> availableVersions = new ArrayList<ArtifactVersion>();
         availableVersions.add( version );
 
         DependencyNode expectedRootNode = createNode( "g:p:t:1" );
@@ -696,8 +712,8 @@
         MavenProject project = new MavenProject();
         project.setArtifact( projectArtifact );
         // LinkedHashSet since order is significant when omitting conflicts
-        project.setDependencyArtifacts( new LinkedHashSet( Arrays.asList( dependencyArtifacts ) ) );
-        project.setManagedVersionMap( new HashMap() );
+        project.setDependencyArtifacts( new LinkedHashSet<Artifact>( Arrays.asList( dependencyArtifacts ) ) );
+        project.setManagedVersionMap( new HashMap<String, Artifact>() );
         project.setRemoteArtifactRepositories( Collections.EMPTY_LIST );
         return project;
     }
@@ -709,21 +725,20 @@
     
     private void addArtifactMetadata( Artifact artifact, Artifact[] dependencyArtifacts )
     {
-        addArtifactMetadata( artifact, new LinkedHashSet( Arrays.asList( dependencyArtifacts ) ) );
+        addArtifactMetadata( artifact, new LinkedHashSet<Artifact>( Arrays.asList( dependencyArtifacts ) ) );
     }
     
-    private void addArtifactMetadata( Artifact artifact, Set dependencyArtifacts )
+    private void addArtifactMetadata( Artifact artifact, Set<Artifact> dependencyArtifacts )
     {
         artifactMetadataSource.addArtifactMetadata( artifact, dependencyArtifacts );
     }
     
-    private void setManagedVersionMap( MavenProject project, Set managedArtifacts )
+    private void setManagedVersionMap( MavenProject project, Set<Artifact> managedArtifacts )
     {
-        Map managedVersionMap = new HashMap();
+        Map<String, Artifact> managedVersionMap = new HashMap<String, Artifact>();
         
-        for ( Iterator iterator = managedArtifacts.iterator(); iterator.hasNext(); )
+        for ( Artifact artifact : managedArtifacts )
         {
-            Artifact artifact = (Artifact) iterator.next();
             String managementKey = getManagementKey( artifact );
             
             managedVersionMap.put( managementKey, artifact );
@@ -734,66 +749,73 @@
     
     private String getManagementKey( Artifact artifact )
     {
-        return artifact.getGroupId() + ":" + artifact.getArtifactId() + ":" + artifact.getType() + (artifact.getClassifier() != null ? ":" + artifact.getClassifier() : "");
+        return artifact.getGroupId() + ":" + artifact.getArtifactId() + ":" + artifact.getType()
+            + ( artifact.getClassifier() != null ? ":" + artifact.getClassifier() : "" );
     }
     
-    private void assertDependencyTree( DependencyNode expectedRootNode, MavenProject project ) throws DependencyTreeBuilderException
+    private void assertDependencyTree( DependencyNode expectedRootNode, MavenProject project )
+        throws DependencyTreeBuilderException
     {
         assertDependencyTree( expectedRootNode, project, null );
     }
     
-    private void assertDependencyTree( DependencyNode expectedRootNode, MavenProject project, ArtifactFilter artifactFilter ) throws DependencyTreeBuilderException
+    private void assertDependencyTree( DependencyNode expectedRootNode, MavenProject project,
+                                       ArtifactFilter artifactFilter )
+        throws DependencyTreeBuilderException
     {
         // assert built dependency tree is as expected
-        
+
         DependencyNode actualRootNode =
             builder.buildDependencyTree( project, artifactRepository, artifactFactory, artifactMetadataSource,
                                          artifactFilter, artifactCollector );
-        
+
         assertEquals( "Dependency tree", expectedRootNode, actualRootNode );
-        
+
         // assert resolution tree is as expected
-        
+
         ArtifactResolutionResult result = builder.getArtifactResolutionResult();
-        
+
         assertTreeEquals( expectedRootNode, project, result );
     }
     
-    private void assertTreeEquals( DependencyNode dependencyNode, MavenProject project, ArtifactResolutionResult resolutionResult )
+    private void assertTreeEquals( DependencyNode dependencyNode, MavenProject project,
+                                   ArtifactResolutionResult resolutionResult )
     {
-        List rootChildrenResolutionNodes = ResolutionNodeUtils.getRootChildrenResolutionNodes( project, resolutionResult );
-        
+        List<ResolutionNode> rootChildrenResolutionNodes =
+            ResolutionNodeUtils.getRootChildrenResolutionNodes( project, resolutionResult );
+
         try
         {
             assertEquals( "Root node artifact", dependencyNode.getArtifact(), project.getArtifact() );
-        
+
             assertNodesEquals( dependencyNode.getChildren(), rootChildrenResolutionNodes );
         }
         catch ( AssertionFailedError error )
         {
             StringBuffer buffer = new StringBuffer();
-            
+
             buffer.append( error.getMessage() ).append( "; " );
             buffer.append( "expected dependency tree <" ).append( dependencyNode ).append( "> " );
             buffer.append( "actual resolution tree <" );
             ResolutionNodeUtils.append( buffer, project, resolutionResult );
             buffer.append( ">" );
-            
+
             throw new AssertionFailedError( buffer.toString() );
         }
     }
     
-    private void assertNodesEquals( List dependencyNodes, List resolutionNodes )
+    private void assertNodesEquals( List<DependencyNode> dependencyNodes, List<ResolutionNode> resolutionNodes )
     {
         assertNodesEquals( dependencyNodes.iterator(), resolutionNodes.iterator() );
     }
 
-    private void assertNodesEquals( Iterator dependencyNodesIterator, Iterator resolutionNodesIterator )
+    private void assertNodesEquals( Iterator<DependencyNode> dependencyNodesIterator,
+                                    Iterator<ResolutionNode> resolutionNodesIterator )
     {
         while ( dependencyNodesIterator.hasNext() && resolutionNodesIterator.hasNext() )
         {
-            DependencyNode dependencyNode = (DependencyNode) dependencyNodesIterator.next();
-            ResolutionNode resolutionNode = (ResolutionNode) resolutionNodesIterator.next();
+            DependencyNode dependencyNode = dependencyNodesIterator.next();
+            ResolutionNode resolutionNode = resolutionNodesIterator.next();
             
             assertNodeEquals( dependencyNode, resolutionNode );
         }
diff --git a/src/test/java/org/apache/maven/shared/dependency/tree/DependencyNodeTest.java b/src/test/java/org/apache/maven/shared/dependency/tree/DependencyNodeTest.java
index f885fb8..f3719f3 100644
--- a/src/test/java/org/apache/maven/shared/dependency/tree/DependencyNodeTest.java
+++ b/src/test/java/org/apache/maven/shared/dependency/tree/DependencyNodeTest.java
@@ -62,7 +62,7 @@
         rootNode = node1;
     }
 
-    private void assertNode( Iterator it, DependencyNode node )
+    private void assertNode( Iterator<DependencyNode> it, DependencyNode node )
     {
         assertTrue( it.hasNext() );
         assertSame( node, it.next() );
@@ -70,7 +70,7 @@
 
     public void testPreorderIterator()
     {
-        Iterator it = rootNode.iterator();
+        Iterator<DependencyNode> it = rootNode.iterator();
 
         assertNode( it, node1 );
         assertNode( it, node2 );
@@ -84,7 +84,7 @@
 
     public void testInverseIterator()
     {
-        Iterator it = rootNode.inverseIterator();
+        Iterator<DependencyNode> it = rootNode.inverseIterator();
 
         assertNode( it, node7 );
         assertNode( it, node3 );
diff --git a/src/test/java/org/apache/maven/shared/dependency/tree/DependencyTreeResolutionListenerTest.java b/src/test/java/org/apache/maven/shared/dependency/tree/DependencyTreeResolutionListenerTest.java
index e3e690c..41d6086 100644
--- a/src/test/java/org/apache/maven/shared/dependency/tree/DependencyTreeResolutionListenerTest.java
+++ b/src/test/java/org/apache/maven/shared/dependency/tree/DependencyTreeResolutionListenerTest.java
@@ -33,7 +33,8 @@
  * @version $Id$
  * @see DependencyTreeResolutionListener
  */
-public class DependencyTreeResolutionListenerTest extends AbstractDependencyNodeTest
+public class DependencyTreeResolutionListenerTest
+    extends AbstractDependencyNodeTest
 {
     // fields -----------------------------------------------------------------
 
diff --git a/src/test/java/org/apache/maven/shared/dependency/tree/ResolutionNodeUtils.java b/src/test/java/org/apache/maven/shared/dependency/tree/ResolutionNodeUtils.java
index f67ca52..7b51293 100644
--- a/src/test/java/org/apache/maven/shared/dependency/tree/ResolutionNodeUtils.java
+++ b/src/test/java/org/apache/maven/shared/dependency/tree/ResolutionNodeUtils.java
@@ -50,18 +50,17 @@
 
     // public methods ---------------------------------------------------------
     
-    public static List getRootChildrenResolutionNodes( MavenProject project, ArtifactResolutionResult resolutionResult )
+    public static List<ResolutionNode> getRootChildrenResolutionNodes( MavenProject project,
+                                                                       ArtifactResolutionResult resolutionResult )
     {
-        Set resolutionNodes = resolutionResult.getArtifactResolutionNodes();
+        Set<ResolutionNode> resolutionNodes = resolutionResult.getArtifactResolutionNodes();
 
         // obtain root children nodes
         
-        Map rootChildrenResolutionNodesByArtifact = new HashMap();
+        Map<Artifact, ResolutionNode> rootChildrenResolutionNodesByArtifact = new HashMap<Artifact, ResolutionNode>();
         
-        for ( Iterator iterator = resolutionNodes.iterator(); iterator.hasNext(); )
+        for ( ResolutionNode resolutionNode : resolutionNodes )
         {
-            ResolutionNode resolutionNode = (ResolutionNode) iterator.next();
-            
             if ( resolutionNode.isChildOfRootNode() )
             {
                 rootChildrenResolutionNodesByArtifact.put( resolutionNode.getArtifact(), resolutionNode );
@@ -70,12 +69,12 @@
         
         // order root children by project dependencies
         
-        List rootChildrenResolutionNodes = new ArrayList();
+        List<ResolutionNode> rootChildrenResolutionNodes = new ArrayList<ResolutionNode>();
         
-        for ( Iterator iterator = project.getDependencyArtifacts().iterator(); iterator.hasNext(); )
+        for ( Iterator<Artifact> iterator = project.getDependencyArtifacts().iterator(); iterator.hasNext(); )
         {
-            Artifact artifact = (Artifact) iterator.next();
-            ResolutionNode resolutionNode = (ResolutionNode) rootChildrenResolutionNodesByArtifact.get( artifact );
+            Artifact artifact = iterator.next();
+            ResolutionNode resolutionNode = rootChildrenResolutionNodesByArtifact.get( artifact );
             
             rootChildrenResolutionNodes.add( resolutionNode );
         }
@@ -97,7 +96,7 @@
         ResolutionNode rootNode = new ResolutionNode( project.getArtifact(), Collections.EMPTY_LIST );
         append( buffer, rootNode, 0 );
 
-        List rootChildrenNodes = getRootChildrenResolutionNodes( project, result );
+        List<ResolutionNode> rootChildrenNodes = getRootChildrenResolutionNodes( project, result );
         append( buffer, rootChildrenNodes.iterator(), 1 );
         
         return buffer;
@@ -105,11 +104,11 @@
     
     // private methods --------------------------------------------------------
     
-    private static StringBuffer append( StringBuffer buffer, Iterator nodesIterator, int depth )
+    private static StringBuffer append( StringBuffer buffer, Iterator<ResolutionNode> nodesIterator, int depth )
     {
         while ( nodesIterator.hasNext() )
         {
-            ResolutionNode node = (ResolutionNode) nodesIterator.next();
+            ResolutionNode node = nodesIterator.next();
             
             append( buffer, node, depth );
         }
diff --git a/src/test/java/org/apache/maven/shared/dependency/tree/filter/AbstractDependencyNodeFilterTest.java b/src/test/java/org/apache/maven/shared/dependency/tree/filter/AbstractDependencyNodeFilterTest.java
index f24a705..dead78d 100644
--- a/src/test/java/org/apache/maven/shared/dependency/tree/filter/AbstractDependencyNodeFilterTest.java
+++ b/src/test/java/org/apache/maven/shared/dependency/tree/filter/AbstractDependencyNodeFilterTest.java
@@ -29,7 +29,8 @@
  * @author <a href="mailto:markhobson@gmail.com">Mark Hobson</a>
  * @version $Id$
  */
-public abstract class AbstractDependencyNodeFilterTest extends MockObjectTestCase
+public abstract class AbstractDependencyNodeFilterTest
+    extends MockObjectTestCase
 {
     // protected methods ---------------------------------------------------------
 
diff --git a/src/test/java/org/apache/maven/shared/dependency/tree/filter/AncestorOrSelfDependencyNodeFilterTest.java b/src/test/java/org/apache/maven/shared/dependency/tree/filter/AncestorOrSelfDependencyNodeFilterTest.java
index bcfb011..34770c8 100644
--- a/src/test/java/org/apache/maven/shared/dependency/tree/filter/AncestorOrSelfDependencyNodeFilterTest.java
+++ b/src/test/java/org/apache/maven/shared/dependency/tree/filter/AncestorOrSelfDependencyNodeFilterTest.java
@@ -29,7 +29,8 @@
  * @version $Id$
  * @see AncestorOrSelfDependencyNodeFilter
  */
-public class AncestorOrSelfDependencyNodeFilterTest extends AbstractDependencyNodeTest
+public class AncestorOrSelfDependencyNodeFilterTest
+    extends AbstractDependencyNodeTest
 {
     // constants --------------------------------------------------------------
 
@@ -48,7 +49,8 @@
     /**
      * {@inheritDoc}
      */
-    protected void setUp() throws Exception
+    protected void setUp()
+        throws Exception
     {
         /*
          * p -> a -> c
diff --git a/src/test/java/org/apache/maven/shared/dependency/tree/filter/AndDependencyNodeFilterTest.java b/src/test/java/org/apache/maven/shared/dependency/tree/filter/AndDependencyNodeFilterTest.java
index 61f7375..34cafe7 100644
--- a/src/test/java/org/apache/maven/shared/dependency/tree/filter/AndDependencyNodeFilterTest.java
+++ b/src/test/java/org/apache/maven/shared/dependency/tree/filter/AndDependencyNodeFilterTest.java
@@ -30,7 +30,8 @@
  * @version $Id$
  * @see AndDependencyNodeFilter
  */
-public class AndDependencyNodeFilterTest extends AbstractDependencyNodeFilterTest
+public class AndDependencyNodeFilterTest
+    extends AbstractDependencyNodeFilterTest
 {
     // fields -----------------------------------------------------------------
 
@@ -49,7 +50,8 @@
     /**
      * {@inheritDoc}
      */
-    protected void setUp() throws Exception
+    protected void setUp()
+        throws Exception
     {
         artifact = new ArtifactStub();
         node = new DependencyNode( artifact );
diff --git a/src/test/java/org/apache/maven/shared/dependency/tree/filter/ArtifactDependencyNodeFilterTest.java b/src/test/java/org/apache/maven/shared/dependency/tree/filter/ArtifactDependencyNodeFilterTest.java
index 958b61c..dad9055 100644
--- a/src/test/java/org/apache/maven/shared/dependency/tree/filter/ArtifactDependencyNodeFilterTest.java
+++ b/src/test/java/org/apache/maven/shared/dependency/tree/filter/ArtifactDependencyNodeFilterTest.java
@@ -33,7 +33,8 @@
  * @version $Id$
  * @see ArtifactDependencyNodeFilter
  */
-public class ArtifactDependencyNodeFilterTest extends MockObjectTestCase
+public class ArtifactDependencyNodeFilterTest
+    extends MockObjectTestCase
 {
     // fields -----------------------------------------------------------------
 
@@ -50,7 +51,8 @@
     /**
      * {@inheritDoc}
      */
-    protected void setUp() throws Exception
+    protected void setUp()
+        throws Exception
     {
         artifact = new ArtifactStub();
         node = new DependencyNode( artifact );
diff --git a/src/test/java/org/apache/maven/shared/dependency/tree/filter/StateDependencyNodeFilterTest.java b/src/test/java/org/apache/maven/shared/dependency/tree/filter/StateDependencyNodeFilterTest.java
index 0225dd3..9b2f34a 100644
--- a/src/test/java/org/apache/maven/shared/dependency/tree/filter/StateDependencyNodeFilterTest.java
+++ b/src/test/java/org/apache/maven/shared/dependency/tree/filter/StateDependencyNodeFilterTest.java
@@ -32,7 +32,8 @@
  * @version $Id$
  * @see StateDependencyNodeFilter
  */
-public class StateDependencyNodeFilterTest extends TestCase
+public class StateDependencyNodeFilterTest
+    extends TestCase
 {
     // fields -----------------------------------------------------------------
 
@@ -51,7 +52,8 @@
     /**
      * {@inheritDoc}
      */
-    protected void setUp() throws Exception
+    protected void setUp()
+        throws Exception
     {
         Artifact artifact = new ArtifactStub();
         Artifact relatedArtifact = new ArtifactStub();
diff --git a/src/test/java/org/apache/maven/shared/dependency/tree/traversal/BuildingDependencyNodeVisitorTest.java b/src/test/java/org/apache/maven/shared/dependency/tree/traversal/BuildingDependencyNodeVisitorTest.java
index 58d8ccc..8bad217 100644
--- a/src/test/java/org/apache/maven/shared/dependency/tree/traversal/BuildingDependencyNodeVisitorTest.java
+++ b/src/test/java/org/apache/maven/shared/dependency/tree/traversal/BuildingDependencyNodeVisitorTest.java
@@ -30,7 +30,8 @@
  * @version $Id$
  * @see BuildingDependencyNodeVisitor
  */
-public class BuildingDependencyNodeVisitorTest extends AbstractDependencyNodeTest
+public class BuildingDependencyNodeVisitorTest
+    extends AbstractDependencyNodeTest
 {
     // fields -----------------------------------------------------------------
 
diff --git a/src/test/java/org/apache/maven/shared/dependency/tree/traversal/CollectingDependencyNodeVisitorTest.java b/src/test/java/org/apache/maven/shared/dependency/tree/traversal/CollectingDependencyNodeVisitorTest.java
index cff6f0b..447766b 100644
--- a/src/test/java/org/apache/maven/shared/dependency/tree/traversal/CollectingDependencyNodeVisitorTest.java
+++ b/src/test/java/org/apache/maven/shared/dependency/tree/traversal/CollectingDependencyNodeVisitorTest.java
@@ -33,7 +33,8 @@
  * @version $Id$
  * @see CollectingDependencyNodeVisitor
  */
-public class CollectingDependencyNodeVisitorTest extends AbstractDependencyNodeTest
+public class CollectingDependencyNodeVisitorTest
+    extends AbstractDependencyNodeTest
 {
     // fields -----------------------------------------------------------------
     
@@ -50,7 +51,8 @@
     /**
      * {@inheritDoc}
      */
-    protected void setUp() throws Exception
+    protected void setUp()
+        throws Exception
     {
         visitor = new CollectingDependencyNodeVisitor();
         node1 = createNode( "g:a:t:1" );
@@ -73,7 +75,7 @@
         assertTrue( visitor.visit( node1 ) );
         assertTrue( visitor.visit( node2 ) );
         assertTrue( visitor.visit( node3 ) );
-        assertNodes( Arrays.asList( new Object[] { node1, node2, node3 } ) );
+        assertNodes( Arrays.asList( new DependencyNode[] { node1, node2, node3 } ) );
     }
 
     public void testEndVisit()
@@ -87,7 +89,7 @@
     
     private void assertEmptyNodes()
     {
-        assertNodes( Collections.EMPTY_LIST );
+        assertNodes( Collections.<DependencyNode>emptyList() );
     }
     
     private void assertNodes( DependencyNode node )
@@ -95,7 +97,7 @@
         assertNodes( Collections.singletonList( node ) );
     }
     
-    private void assertNodes( List expectedNodes )
+    private void assertNodes( List<DependencyNode> expectedNodes )
     {
         assertEquals( "Collected nodes", expectedNodes, visitor.getNodes() );
     }
diff --git a/src/test/java/org/apache/maven/shared/dependency/tree/traversal/FilteringDependencyNodeVisitorTest.java b/src/test/java/org/apache/maven/shared/dependency/tree/traversal/FilteringDependencyNodeVisitorTest.java
index ed31a15..f7898e9 100644
--- a/src/test/java/org/apache/maven/shared/dependency/tree/traversal/FilteringDependencyNodeVisitorTest.java
+++ b/src/test/java/org/apache/maven/shared/dependency/tree/traversal/FilteringDependencyNodeVisitorTest.java
@@ -32,7 +32,8 @@
  * @version $Id$
  * @see FilteringDependencyNodeVisitor
  */
-public class FilteringDependencyNodeVisitorTest extends AbstractDependencyNodeFilterTest
+public class FilteringDependencyNodeVisitorTest
+    extends AbstractDependencyNodeFilterTest
 {
     // fields -----------------------------------------------------------------
 
@@ -49,7 +50,8 @@
     /**
      * {@inheritDoc}
      */
-    protected void setUp() throws Exception
+    protected void setUp()
+        throws Exception
     {
         node = new DependencyNode( new ArtifactStub() );
 
diff --git a/src/test/java/org/apache/maven/shared/dependency/tree/traversal/SerializingDependencyNodeVisitorTest.java b/src/test/java/org/apache/maven/shared/dependency/tree/traversal/SerializingDependencyNodeVisitorTest.java
index 1ba7094..ade6228 100644
--- a/src/test/java/org/apache/maven/shared/dependency/tree/traversal/SerializingDependencyNodeVisitorTest.java
+++ b/src/test/java/org/apache/maven/shared/dependency/tree/traversal/SerializingDependencyNodeVisitorTest.java
@@ -31,7 +31,8 @@
  * @version $Id$
  * @see SerializingDependencyNodeVisitor
  */
-public class SerializingDependencyNodeVisitorTest extends AbstractDependencyNodeTest
+public class SerializingDependencyNodeVisitorTest
+    extends AbstractDependencyNodeTest
 {
     // constants --------------------------------------------------------------
 
@@ -48,7 +49,8 @@
     /**
      * {@inheritDoc}
      */
-    protected void setUp() throws Exception
+    protected void setUp()
+        throws Exception
     {
         writer = new StringWriter();