Upgraded to Java 5


git-svn-id: https://svn.apache.org/repos/asf/maven/shared/trunk@652331 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/pom.xml b/pom.xml
index 5238b08..cd29b50 100644
--- a/pom.xml
+++ b/pom.xml
@@ -39,8 +39,17 @@
   <build>
     <plugins>
       <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-compiler-plugin</artifactId>
+        <configuration>
+          <source>1.5</source>
+          <target>1.5</target>
+        </configuration>
+      </plugin>
+      <plugin>
         <groupId>org.codehaus.plexus</groupId>
         <artifactId>plexus-maven-plugin</artifactId>
+        <version>1.3.2</version>
         <executions>
           <execution>
             <goals>
diff --git a/src/main/java/org/apache/maven/shared/runtime/ClassUtils.java b/src/main/java/org/apache/maven/shared/runtime/ClassUtils.java
index 540d37a..5de4586 100644
--- a/src/main/java/org/apache/maven/shared/runtime/ClassUtils.java
+++ b/src/main/java/org/apache/maven/shared/runtime/ClassUtils.java
@@ -51,7 +51,7 @@
      * @throws MalformedURLException
      *             if the base URL cannot be determined
      */
-    public static URL getBaseURL( Class klass )
+    public static URL getBaseURL( Class<?> klass )
         throws MalformedURLException
     {
         URL url = getURL( klass );
@@ -71,7 +71,7 @@
      *            the class to obtain the URL for
      * @return a URL to the class, or <code>null</code> if it cannot be found
      */
-    public static URL getURL( Class klass )
+    public static URL getURL( Class<?> klass )
     {
         ClassLoader classLoader = klass.getClassLoader();
 
diff --git a/src/main/java/org/apache/maven/shared/runtime/DefaultMavenRuntime.java b/src/main/java/org/apache/maven/shared/runtime/DefaultMavenRuntime.java
index 022e14f..c1ac2f8 100644
--- a/src/main/java/org/apache/maven/shared/runtime/DefaultMavenRuntime.java
+++ b/src/main/java/org/apache/maven/shared/runtime/DefaultMavenRuntime.java
@@ -38,19 +38,19 @@
     /**
      * {@inheritDoc}
      */
-    public MavenProjectProperties getProjectProperties( Class klass ) throws MavenRuntimeException
+    public MavenProjectProperties getProjectProperties( Class<?> klass ) throws MavenRuntimeException
     {
         PropertiesMavenRuntimeVisitor visitor = new PropertiesMavenRuntimeVisitor();
 
         MavenRuntimeVisitorUtils.accept( klass, visitor );
 
-        return (MavenProjectProperties) first( visitor.getProjects() );
+        return first( visitor.getProjects() );
     }
 
     /**
      * {@inheritDoc}
      */
-    public List getProjectsProperties( ClassLoader classLoader ) throws MavenRuntimeException
+    public List<MavenProjectProperties> getProjectsProperties( ClassLoader classLoader ) throws MavenRuntimeException
     {
         PropertiesMavenRuntimeVisitor visitor = new PropertiesMavenRuntimeVisitor();
 
@@ -62,19 +62,19 @@
     /**
      * {@inheritDoc}
      */
-    public MavenProject getProject( Class klass ) throws MavenRuntimeException
+    public MavenProject getProject( Class<?> klass ) throws MavenRuntimeException
     {
         XMLMavenRuntimeVisitor visitor = new XMLMavenRuntimeVisitor();
 
         MavenRuntimeVisitorUtils.accept( klass, visitor );
 
-        return (MavenProject) first( visitor.getProjects() );
+        return first( visitor.getProjects() );
     }
 
     /**
      * {@inheritDoc}
      */
-    public List getProjects( ClassLoader classLoader ) throws MavenRuntimeException
+    public List<MavenProject> getProjects( ClassLoader classLoader ) throws MavenRuntimeException
     {
         XMLMavenRuntimeVisitor visitor = new XMLMavenRuntimeVisitor();
 
@@ -86,7 +86,7 @@
     /**
      * {@inheritDoc}
      */
-    public List getSortedProjects( ClassLoader classLoader ) throws MavenRuntimeException
+    public List<MavenProject> getSortedProjects( ClassLoader classLoader ) throws MavenRuntimeException
     {
         XMLMavenRuntimeVisitor visitor = new XMLMavenRuntimeVisitor();
 
@@ -100,11 +100,13 @@
     /**
      * Gets the first element in the specified list or <code>null</code> if it is empty.
      * 
+     * @param <T>
+     *            the type of the specified list
      * @param list
      *            the list to examine
      * @return the first item in the list, or <code>null</code> if it is empty
      */
-    private Object first( List list )
+    private static <T> T first( List<T> list )
     {
         return !list.isEmpty() ? list.get( 0 ) : null;
     }
diff --git a/src/main/java/org/apache/maven/shared/runtime/MavenProjectProperties.java b/src/main/java/org/apache/maven/shared/runtime/MavenProjectProperties.java
index c4dd57b..decf706 100644
--- a/src/main/java/org/apache/maven/shared/runtime/MavenProjectProperties.java
+++ b/src/main/java/org/apache/maven/shared/runtime/MavenProjectProperties.java
@@ -130,6 +130,7 @@
     /**
      * {@inheritDoc}
      */
+    @Override
     public int hashCode()
     {
         int hashCode = groupId.hashCode();
@@ -144,6 +145,7 @@
     /**
      * {@inheritDoc}
      */
+    @Override
     public boolean equals( Object object )
     {
         if ( !( object instanceof MavenProjectProperties ) )
@@ -161,6 +163,7 @@
     /**
      * {@inheritDoc}
      */
+    @Override
     public String toString()
     {
         StringBuffer buffer = new StringBuffer();
diff --git a/src/main/java/org/apache/maven/shared/runtime/MavenRuntime.java b/src/main/java/org/apache/maven/shared/runtime/MavenRuntime.java
index a615658..67ba3e2 100644
--- a/src/main/java/org/apache/maven/shared/runtime/MavenRuntime.java
+++ b/src/main/java/org/apache/maven/shared/runtime/MavenRuntime.java
@@ -49,7 +49,7 @@
      * @throws MavenRuntimeException
      *             if an error occurred introspecting the Maven runtime environment
      */
-    MavenProjectProperties getProjectProperties( Class klass ) throws MavenRuntimeException;
+    MavenProjectProperties getProjectProperties( Class<?> klass ) throws MavenRuntimeException;
 
     /**
      * Obtains a list of simple properties for each Maven project running within the specified class loader.
@@ -61,7 +61,7 @@
      * @throws MavenRuntimeException
      *             if an error occurred introspecting the Maven runtime environment
      */
-    List getProjectsProperties( ClassLoader classLoader ) throws MavenRuntimeException;
+    List<MavenProjectProperties> getProjectsProperties( ClassLoader classLoader ) throws MavenRuntimeException;
 
     /**
      * Gets the specified class's Maven project.
@@ -72,7 +72,7 @@
      * @throws MavenRuntimeException
      *             if an error occurred introspecting the Maven runtime environment
      */
-    MavenProject getProject( Class klass ) throws MavenRuntimeException;
+    MavenProject getProject( Class<?> klass ) throws MavenRuntimeException;
 
     /**
      * Obtains a list of Maven projects running within the specified class loader.
@@ -83,7 +83,7 @@
      * @throws MavenRuntimeException
      *             if an error occurred introspecting the Maven runtime environment
      */
-    List getProjects( ClassLoader classLoader ) throws MavenRuntimeException;
+    List<MavenProject> getProjects( ClassLoader classLoader ) throws MavenRuntimeException;
 
     /**
      * Obtains a list of Maven projects running within the specified class loader ordered by their dependencies.
@@ -95,5 +95,5 @@
      * @throws MavenRuntimeException
      *             if an error occurred introspecting the Maven runtime environment
      */
-    List getSortedProjects( ClassLoader classLoader ) throws MavenRuntimeException;
+    List<MavenProject> getSortedProjects( ClassLoader classLoader ) throws MavenRuntimeException;
 }
diff --git a/src/main/java/org/apache/maven/shared/runtime/MavenRuntimeVisitorUtils.java b/src/main/java/org/apache/maven/shared/runtime/MavenRuntimeVisitorUtils.java
index 5f10550..a4479da 100644
--- a/src/main/java/org/apache/maven/shared/runtime/MavenRuntimeVisitorUtils.java
+++ b/src/main/java/org/apache/maven/shared/runtime/MavenRuntimeVisitorUtils.java
@@ -93,7 +93,7 @@
     public static void accept( ClassLoader classLoader, MavenRuntimeVisitor visitor )
         throws MavenRuntimeException
     {
-        Enumeration urls;
+        Enumeration<URL> urls;
 
         try
         {
@@ -105,12 +105,12 @@
                                              exception );
         }
 
-        Set visitedProjectProperties = new HashSet();
-        Set visitedProjectXML = new HashSet();
+        Set<String> visitedProjectProperties = new HashSet<String>();
+        Set<String> visitedProjectXML = new HashSet<String>();
 
         while ( urls.hasMoreElements() )
         {
-            URL url = (URL) urls.nextElement();
+            URL url = urls.nextElement();
 
             acceptURL( url, visitor, visitedProjectProperties, visitedProjectXML );
         }
@@ -126,7 +126,7 @@
      * @throws MavenRuntimeException
      *             if an error occurs visiting the projects
      */
-    public static void accept( Class klass, MavenRuntimeVisitor visitor )
+    public static void accept( Class<?> klass, MavenRuntimeVisitor visitor )
         throws MavenRuntimeException
     {
         try
@@ -134,7 +134,7 @@
             URL baseURL = ClassUtils.getBaseURL( klass );
             URL url = new URL( baseURL, MAVEN_PATH );
 
-            acceptURL( url, visitor, new HashSet(), new HashSet() );
+            acceptURL( url, visitor, new HashSet<String>(), new HashSet<String>() );
         }
         catch ( MalformedURLException exception )
         {
@@ -158,8 +158,8 @@
      * @throws MavenRuntimeException
      *             if an error occurs visiting the projects
      */
-    private static void acceptURL( URL url, MavenRuntimeVisitor visitor, Set visitedProjectProperties,
-                                   Set visitedProjectXML ) throws MavenRuntimeException
+    private static void acceptURL( URL url, MavenRuntimeVisitor visitor, Set<String> visitedProjectProperties,
+                                   Set<String> visitedProjectXML ) throws MavenRuntimeException
     {
         if ( "jar".equals( url.getProtocol() ) )
         {
@@ -192,8 +192,8 @@
      * @throws MavenRuntimeException
      *             if an error occurs visiting the projects
      */
-    private static void acceptJar( URL url, MavenRuntimeVisitor visitor, Set visitedProjectProperties,
-                                   Set visitedProjectXML ) throws MavenRuntimeException
+    private static void acceptJar( URL url, MavenRuntimeVisitor visitor, Set<String> visitedProjectProperties,
+                                   Set<String> visitedProjectXML ) throws MavenRuntimeException
     {
         JarInputStream in = null;
 
@@ -239,7 +239,7 @@
      *             if an error occurs visiting the projects
      */
     private static void acceptJarEntry( URL jarURL, JarEntry entry, MavenRuntimeVisitor visitor,
-                                        Set visitedProjectProperties, Set visitedProjectXML )
+                                        Set<String> visitedProjectProperties, Set<String> visitedProjectXML )
         throws MavenRuntimeException
     {
         String name = entry.getName();
diff --git a/src/main/java/org/apache/maven/shared/runtime/PropertiesMavenRuntimeVisitor.java b/src/main/java/org/apache/maven/shared/runtime/PropertiesMavenRuntimeVisitor.java
index 8abe9e7..f8e4d98 100644
--- a/src/main/java/org/apache/maven/shared/runtime/PropertiesMavenRuntimeVisitor.java
+++ b/src/main/java/org/apache/maven/shared/runtime/PropertiesMavenRuntimeVisitor.java
@@ -60,7 +60,7 @@
     /**
      * A list of the collected <code>MavenProjectProperties</code>.
      */
-    private final List projects;
+    private final List<MavenProjectProperties> projects;
 
     // constructors -----------------------------------------------------------
 
@@ -69,7 +69,7 @@
      */
     public PropertiesMavenRuntimeVisitor()
     {
-        projects = new ArrayList();
+        projects = new ArrayList<MavenProjectProperties>();
     }
 
     // MavenRuntimeVisitor methods --------------------------------------------
@@ -99,7 +99,7 @@
      * 
      * @return a list of the collected <code>MavenProjectProperties</code>
      */
-    public List getProjects()
+    public List<MavenProjectProperties> getProjects()
     {
         return Collections.unmodifiableList( projects );
     }
diff --git a/src/main/java/org/apache/maven/shared/runtime/XMLMavenRuntimeVisitor.java b/src/main/java/org/apache/maven/shared/runtime/XMLMavenRuntimeVisitor.java
index 43e9811..f05cd65 100644
--- a/src/main/java/org/apache/maven/shared/runtime/XMLMavenRuntimeVisitor.java
+++ b/src/main/java/org/apache/maven/shared/runtime/XMLMavenRuntimeVisitor.java
@@ -50,7 +50,7 @@
     /**
      * A list of the collected <code>MavenProject</code>s.
      */
-    private final List projects;
+    private final List<MavenProject> projects;
 
     // constructors -----------------------------------------------------------
 
@@ -59,7 +59,7 @@
      */
     public XMLMavenRuntimeVisitor()
     {
-        projects = new ArrayList();
+        projects = new ArrayList<MavenProject>();
     }
 
     // MavenRuntimeVisitor methods --------------------------------------------
@@ -89,7 +89,7 @@
      * 
      * @return an unmodifiable list of the collected <code>MavenProject</code>s
      */
-    public List getProjects()
+    public List<MavenProject> getProjects()
     {
         return Collections.unmodifiableList( projects );
     }
@@ -101,13 +101,13 @@
      * @throws MavenRuntimeException
      *             if an error occurred ordering the projects
      */
-    public List getSortedProjects() throws MavenRuntimeException
+    public List<MavenProject> getSortedProjects() throws MavenRuntimeException
     {
         try
         {
             ProjectSorter projectSorter = new ProjectSorter( projects );
 
-            return projectSorter.getSortedProjects();
+            return genericList( projectSorter.getSortedProjects(), MavenProject.class );
         }
         catch ( CycleDetectedException exception )
         {
@@ -160,4 +160,27 @@
             IOUtil.close( in );
         }
     }
+    
+    /**
+     * Converts the specified raw list to a generic list of a specified type by explicitly casting each element.
+     * 
+     * @param <T>
+     *            the type of the required generic list
+     * @param list
+     *            the raw type
+     * @param type
+     *            the class that represents the type of the required generic list
+     * @return the generic list
+     */
+    private static <T> List<T> genericList(List<?> list, Class<T> type)
+    {
+        List<T> genericList = new ArrayList<T>();
+        
+        for (Object element : list)
+        {
+            genericList.add( type.cast( element ) );
+        }
+        
+        return genericList;
+    }
 }
diff --git a/src/test/java/org/apache/maven/shared/runtime/CompoundEnumeration.java b/src/test/java/org/apache/maven/shared/runtime/CompoundEnumeration.java
index 9692ccb..76b7e94 100644
--- a/src/test/java/org/apache/maven/shared/runtime/CompoundEnumeration.java
+++ b/src/test/java/org/apache/maven/shared/runtime/CompoundEnumeration.java
@@ -19,7 +19,7 @@
  * under the License.
  */
 
-import java.util.Arrays;
+import java.util.ArrayList;
 import java.util.Enumeration;
 import java.util.Iterator;
 import java.util.List;
@@ -30,28 +30,25 @@
  * 
  * @author <a href="mailto:markhobson@gmail.com">Mark Hobson</a>
  * @version $Id$
+ * @param <T>
+ *            the element type of this enumeration
  */
-public class CompoundEnumeration implements Enumeration
+public class CompoundEnumeration<T> implements Enumeration<T>
 {
     // fields -------------------------------------------------------------
 
-    private final Iterator enumerations;
+    private final Iterator<Enumeration<T>> enumerations;
 
-    private Enumeration enumeration;
+    private Enumeration<T> enumeration;
 
     // constructors -------------------------------------------------------
 
-    public CompoundEnumeration( Enumeration enumeration1, Enumeration enumeration2 )
+    public CompoundEnumeration( Enumeration<T> enumeration1, Enumeration<T> enumeration2 )
     {
-        this( new Enumeration[] { enumeration1, enumeration2 } );
+        this( toList( enumeration1, enumeration2 ) );
     }
 
-    public CompoundEnumeration( Enumeration[] enumerations )
-    {
-        this( Arrays.asList( enumerations ) );
-    }
-
-    public CompoundEnumeration( List enumerations )
+    public CompoundEnumeration( List<Enumeration<T>> enumerations )
     {
         this.enumerations = enumerations.iterator();
     }
@@ -69,9 +66,9 @@
     /**
      * {@inheritDoc}
      */
-    public Object nextElement()
+    public T nextElement()
     {
-        Object element;
+        T element;
 
         if ( enumeration != null && enumeration.hasMoreElements() )
         {
@@ -79,7 +76,7 @@
         }
         else if ( enumerations.hasNext() )
         {
-            enumeration = (Enumeration) enumerations.next();
+            enumeration = enumerations.next();
 
             element = enumeration.nextElement();
         }
@@ -90,4 +87,16 @@
 
         return element;
     }
+    
+    // private methods --------------------------------------------------------
+    
+    private static <T> List<T> toList( T element1, T element2 )
+    {
+        List<T> list = new ArrayList<T>();
+        
+        list.add( element1 );
+        list.add( element2 );
+        
+        return list;
+    }
 }
diff --git a/src/test/java/org/apache/maven/shared/runtime/DefaultMavenRuntimeTest.java b/src/test/java/org/apache/maven/shared/runtime/DefaultMavenRuntimeTest.java
index 2c8dd60..87ec86d 100644
--- a/src/test/java/org/apache/maven/shared/runtime/DefaultMavenRuntimeTest.java
+++ b/src/test/java/org/apache/maven/shared/runtime/DefaultMavenRuntimeTest.java
@@ -59,6 +59,7 @@
     /**
      * {@inheritDoc}
      */
+    @Override
     protected void setUp() throws Exception
     {
         super.setUp();
@@ -79,7 +80,7 @@
 
         URLClassLoader classLoader = newClassLoader( jar );
 
-        Class klass = classLoader.loadClass( "DefaultPackageClass" );
+        Class<?> klass = classLoader.loadClass( "DefaultPackageClass" );
 
         MavenProjectProperties properties = mavenRuntime.getProjectProperties( klass );
 
@@ -97,7 +98,7 @@
 
         URLClassLoader classLoader = newClassLoader( jar );
 
-        Class klass = classLoader.loadClass( "a.PackagedClass" );
+        Class<?> klass = classLoader.loadClass( "a.PackagedClass" );
 
         MavenProjectProperties properties = mavenRuntime.getProjectProperties( klass );
 
@@ -115,7 +116,7 @@
 
         URLClassLoader classLoader = newClassLoader( jar );
 
-        Class klass = classLoader.loadClass( "a.b.SubPackagedClass" );
+        Class<?> klass = classLoader.loadClass( "a.b.SubPackagedClass" );
 
         MavenProjectProperties properties = mavenRuntime.getProjectProperties( klass );
 
@@ -135,7 +136,7 @@
 
         URLClassLoader classLoader = newClassLoader( new File[] { jar1, jar2 } );
 
-        Class klass = classLoader.loadClass( "DefaultPackageClass" );
+        Class<?> klass = classLoader.loadClass( "DefaultPackageClass" );
 
         MavenProjectProperties properties = mavenRuntime.getProjectProperties( klass );
 
@@ -155,7 +156,7 @@
 
         URLClassLoader classLoader = newClassLoader( new File[] { jar2, jar1 } );
 
-        Class klass = classLoader.loadClass( "DefaultPackageClass" );
+        Class<?> klass = classLoader.loadClass( "DefaultPackageClass" );
 
         MavenProjectProperties properties = mavenRuntime.getProjectProperties( klass );
 
@@ -176,7 +177,7 @@
         URLClassLoader classLoader1 = newClassLoader( jar1 );
         URLClassLoader classLoader2 = newClassLoader( jar2, classLoader1 );
 
-        Class klass = classLoader2.loadClass( "DefaultPackageClass" );
+        Class<?> klass = classLoader2.loadClass( "DefaultPackageClass" );
 
         MavenProjectProperties properties = mavenRuntime.getProjectProperties( klass );
 
@@ -198,7 +199,7 @@
         URLClassLoader classLoader1 = newClassLoader( jar1 );
         URLClassLoader classLoader2 = newClassLoader( jar2, classLoader1, true );
 
-        Class klass = classLoader2.loadClass( "DefaultPackageClass" );
+        Class<?> klass = classLoader2.loadClass( "DefaultPackageClass" );
 
         MavenProjectProperties properties = mavenRuntime.getProjectProperties( klass );
 
@@ -219,7 +220,7 @@
 
         URLClassLoader classLoader = newClassLoader( jar );
 
-        List properties = mavenRuntime.getProjectsProperties( classLoader );
+        List<MavenProjectProperties> properties = mavenRuntime.getProjectsProperties( classLoader );
 
         close( classLoader );
 
@@ -239,7 +240,7 @@
 
         URLClassLoader classLoader = newClassLoader( new File[] { jar1, jar2, jar3 } );
 
-        List properties = mavenRuntime.getProjectsProperties( classLoader );
+        List<MavenProjectProperties> properties = mavenRuntime.getProjectsProperties( classLoader );
 
         close( classLoader );
 
@@ -261,7 +262,7 @@
 
         URLClassLoader classLoader = newClassLoader( new File[] { jar1, jar2 } );
 
-        List properties = mavenRuntime.getProjectsProperties( classLoader );
+        List<MavenProjectProperties> properties = mavenRuntime.getProjectsProperties( classLoader );
 
         close( classLoader );
 
@@ -279,7 +280,7 @@
 
         URLClassLoader classLoader = newClassLoader( new File[] { jar2, jar1 } );
 
-        List properties = mavenRuntime.getProjectsProperties( classLoader );
+        List<MavenProjectProperties> properties = mavenRuntime.getProjectsProperties( classLoader );
 
         close( classLoader );
 
@@ -298,7 +299,7 @@
         URLClassLoader classLoader1 = newClassLoader( jar1 );
         URLClassLoader classLoader2 = newClassLoader( jar2, classLoader1 );
 
-        List properties = mavenRuntime.getProjectsProperties( classLoader2 );
+        List<MavenProjectProperties> properties = mavenRuntime.getProjectsProperties( classLoader2 );
 
         close( classLoader1 );
         close( classLoader2 );
@@ -318,7 +319,7 @@
         URLClassLoader classLoader1 = newClassLoader( jar1 );
         URLClassLoader classLoader2 = newClassLoader( jar2, classLoader1, true );
 
-        List properties = mavenRuntime.getProjectsProperties( classLoader2 );
+        List<MavenProjectProperties> properties = mavenRuntime.getProjectsProperties( classLoader2 );
 
         close( classLoader1 );
         close( classLoader2 );
@@ -337,7 +338,7 @@
 
         URLClassLoader classLoader = newClassLoader( jar );
 
-        Class klass = classLoader.loadClass( "DefaultPackageClass" );
+        Class<?> klass = classLoader.loadClass( "DefaultPackageClass" );
 
         MavenProject project = mavenRuntime.getProject( klass );
 
@@ -355,7 +356,7 @@
 
         URLClassLoader classLoader = newClassLoader( jar );
 
-        Class klass = classLoader.loadClass( "a.PackagedClass" );
+        Class<?> klass = classLoader.loadClass( "a.PackagedClass" );
 
         MavenProject project = mavenRuntime.getProject( klass );
 
@@ -373,7 +374,7 @@
 
         URLClassLoader classLoader = newClassLoader( jar );
 
-        Class klass = classLoader.loadClass( "a.b.SubPackagedClass" );
+        Class<?> klass = classLoader.loadClass( "a.b.SubPackagedClass" );
 
         MavenProject project = mavenRuntime.getProject( klass );
 
@@ -393,7 +394,7 @@
 
         URLClassLoader classLoader = newClassLoader( new File[] { jar1, jar2 } );
 
-        Class klass = classLoader.loadClass( "DefaultPackageClass" );
+        Class<?> klass = classLoader.loadClass( "DefaultPackageClass" );
 
         MavenProject project = mavenRuntime.getProject( klass );
 
@@ -413,7 +414,7 @@
 
         URLClassLoader classLoader = newClassLoader( new File[] { jar2, jar1 } );
 
-        Class klass = classLoader.loadClass( "DefaultPackageClass" );
+        Class<?> klass = classLoader.loadClass( "DefaultPackageClass" );
 
         MavenProject project = mavenRuntime.getProject( klass );
 
@@ -434,7 +435,7 @@
         URLClassLoader classLoader1 = newClassLoader( jar1 );
         URLClassLoader classLoader2 = newClassLoader( jar2, classLoader1 );
 
-        Class klass = classLoader2.loadClass( "DefaultPackageClass" );
+        Class<?> klass = classLoader2.loadClass( "DefaultPackageClass" );
 
         MavenProject project = mavenRuntime.getProject( klass );
 
@@ -456,7 +457,7 @@
         URLClassLoader classLoader1 = newClassLoader( jar1 );
         URLClassLoader classLoader2 = newClassLoader( jar2, classLoader1, true );
 
-        Class klass = classLoader2.loadClass( "DefaultPackageClass" );
+        Class<?> klass = classLoader2.loadClass( "DefaultPackageClass" );
 
         MavenProject project = mavenRuntime.getProject( klass );
 
@@ -477,7 +478,7 @@
 
         URLClassLoader classLoader = newClassLoader( jar );
 
-        List projects = mavenRuntime.getProjects( classLoader );
+        List<MavenProject> projects = mavenRuntime.getProjects( classLoader );
 
         close( classLoader );
 
@@ -497,7 +498,7 @@
 
         URLClassLoader classLoader = newClassLoader( new File[] { jar1, jar2, jar3 } );
 
-        List projects = mavenRuntime.getProjects( classLoader );
+        List<MavenProject> projects = mavenRuntime.getProjects( classLoader );
 
         close( classLoader );
 
@@ -519,7 +520,7 @@
 
         URLClassLoader classLoader = newClassLoader( new File[] { jar1, jar2 } );
 
-        List projects = mavenRuntime.getProjects( classLoader );
+        List<MavenProject> projects = mavenRuntime.getProjects( classLoader );
 
         close( classLoader );
 
@@ -537,7 +538,7 @@
 
         URLClassLoader classLoader = newClassLoader( new File[] { jar2, jar1 } );
 
-        List projects = mavenRuntime.getProjects( classLoader );
+        List<MavenProject> projects = mavenRuntime.getProjects( classLoader );
 
         close( classLoader );
 
@@ -556,7 +557,7 @@
         URLClassLoader classLoader1 = newClassLoader( jar1 );
         URLClassLoader classLoader2 = newClassLoader( jar2, classLoader1 );
 
-        List projects = mavenRuntime.getProjects( classLoader2 );
+        List<MavenProject> projects = mavenRuntime.getProjects( classLoader2 );
 
         close( classLoader1 );
         close( classLoader2 );
@@ -576,7 +577,7 @@
         URLClassLoader classLoader1 = newClassLoader( jar1 );
         URLClassLoader classLoader2 = newClassLoader( jar2, classLoader1, true );
 
-        List projects = mavenRuntime.getProjects( classLoader2 );
+        List<MavenProject> projects = mavenRuntime.getProjects( classLoader2 );
 
         close( classLoader1 );
         close( classLoader2 );
@@ -595,7 +596,7 @@
 
         URLClassLoader classLoader = newClassLoader( jar );
 
-        List projects = mavenRuntime.getSortedProjects( classLoader );
+        List<MavenProject> projects = mavenRuntime.getSortedProjects( classLoader );
 
         close( classLoader );
 
@@ -615,7 +616,7 @@
 
         URLClassLoader classLoader = newClassLoader( new File[] { jar1, jar2, jar3 } );
 
-        List projects = mavenRuntime.getSortedProjects( classLoader );
+        List<MavenProject> projects = mavenRuntime.getSortedProjects( classLoader );
 
         close( classLoader );
 
@@ -637,7 +638,7 @@
 
         URLClassLoader classLoader = newClassLoader( new File[] { jar1, jar2, jar3 } );
 
-        List projects = mavenRuntime.getSortedProjects( classLoader );
+        List<MavenProject> projects = mavenRuntime.getSortedProjects( classLoader );
 
         close( classLoader );
 
@@ -659,7 +660,7 @@
 
         URLClassLoader classLoader = newClassLoader( new File[] { jar1, jar2 } );
 
-        List projects = mavenRuntime.getSortedProjects( classLoader );
+        List<MavenProject> projects = mavenRuntime.getSortedProjects( classLoader );
 
         close( classLoader );
 
@@ -677,7 +678,7 @@
 
         URLClassLoader classLoader = newClassLoader( new File[] { jar2, jar1 } );
 
-        List projects = mavenRuntime.getSortedProjects( classLoader );
+        List<MavenProject> projects = mavenRuntime.getSortedProjects( classLoader );
 
         close( classLoader );
 
@@ -696,7 +697,7 @@
         URLClassLoader classLoader1 = newClassLoader( jar1 );
         URLClassLoader classLoader2 = newClassLoader( jar2, classLoader1 );
 
-        List projects = mavenRuntime.getSortedProjects( classLoader2 );
+        List<MavenProject> projects = mavenRuntime.getSortedProjects( classLoader2 );
 
         close( classLoader1 );
         close( classLoader2 );
@@ -716,7 +717,7 @@
         URLClassLoader classLoader1 = newClassLoader( jar1 );
         URLClassLoader classLoader2 = newClassLoader( jar2, classLoader1, true );
 
-        List projects = mavenRuntime.getSortedProjects( classLoader2 );
+        List<MavenProject> projects = mavenRuntime.getSortedProjects( classLoader2 );
 
         close( classLoader1 );
         close( classLoader2 );
@@ -730,7 +731,7 @@
     {
         File pom = getTestFile( "target/test-classes/", pomPath );
         Properties properties = new Properties();
-        List goals = Arrays.asList( new String[] { "clean", "package" } );
+        List<String> goals = Arrays.asList( new String[] { "clean", "package" } );
         File log = new File( pom.getParentFile(), "build.log" );
 
         InvocationResult result = buildTool.executeMaven( pom, properties, goals, log );
@@ -793,7 +794,7 @@
 
     private void close( URLClassLoader classLoader ) throws IOException
     {
-        IOException[] exceptions = ClassLoaderUtil.releaseLoader( classLoader, new Vector() );
+        IOException[] exceptions = ClassLoaderUtil.releaseLoader( classLoader, new Vector<String>() );
 
         if ( exceptions.length > 0 )
         {
@@ -801,18 +802,18 @@
         }
     }
 
-    private void assertMavenProjectProperties( String id, List propertiesList )
+    private void assertMavenProjectProperties( String id, List<MavenProjectProperties> propertiesList )
     {
         assertMavenProjectProperties( new String[] { id }, propertiesList );
     }
 
-    private void assertMavenProjectProperties( String[] ids, List propertiesList )
+    private void assertMavenProjectProperties( String[] ids, List<MavenProjectProperties> propertiesList )
     {
         assertEquals( "Number of project properties", ids.length, propertiesList.size() );
 
         for ( int i = 0; i < ids.length; i++ )
         {
-            assertMavenProjectProperties( ids[i], (MavenProjectProperties) propertiesList.get( i ) );
+            assertMavenProjectProperties( ids[i], propertiesList.get( i ) );
         }
     }
 
@@ -833,18 +834,18 @@
         assertEquals( "Version", version, properties.getVersion() );
     }
 
-    private void assertMavenProjects( String id, List projects )
+    private void assertMavenProjects( String id, List<MavenProject> projects )
     {
         assertMavenProjects( new String[] { id }, projects );
     }
 
-    private void assertMavenProjects( String[] ids, List projects )
+    private void assertMavenProjects( String[] ids, List<MavenProject> projects )
     {
         assertEquals( "Number of projects", ids.length, projects.size() );
 
         for ( int i = 0; i < ids.length; i++ )
         {
-            assertMavenProject( ids[i], (MavenProject) projects.get( i ) );
+            assertMavenProject( ids[i], projects.get( i ) );
         }
     }
 
diff --git a/src/test/java/org/apache/maven/shared/runtime/DelegatingClassLoader.java b/src/test/java/org/apache/maven/shared/runtime/DelegatingClassLoader.java
index 75edc29..8f32bd4 100644
--- a/src/test/java/org/apache/maven/shared/runtime/DelegatingClassLoader.java
+++ b/src/test/java/org/apache/maven/shared/runtime/DelegatingClassLoader.java
@@ -62,9 +62,10 @@
     /**
      * {@inheritDoc}
      */
-    public Class loadClass( String name ) throws ClassNotFoundException
+    @Override
+    public Class<?> loadClass( String name ) throws ClassNotFoundException
     {
-        Class klass;
+        Class<?> klass;
 
         if ( childDelegating )
         {
@@ -96,6 +97,7 @@
     /**
      * {@inheritDoc}
      */
+    @Override
     public URL getResource( String name )
     {
         URL url;
@@ -120,9 +122,10 @@
     /**
      * {@inheritDoc}
      */
-    public Enumeration getResources( String name ) throws IOException
+    @Override
+    public Enumeration<URL> getResources( String name ) throws IOException
     {
-        Enumeration urls;
+        Enumeration<URL> urls;
 
         if ( childDelegating )
         {
@@ -130,9 +133,9 @@
 
             if ( getParent() != null )
             {
-                Enumeration parentURLs = getParent().getResources( name );
+                Enumeration<URL> parentURLs = getParent().getResources( name );
 
-                urls = new CompoundEnumeration( urls, parentURLs );
+                urls = new CompoundEnumeration<URL>( urls, parentURLs );
             }
         }
         else
diff --git a/src/test/java/org/apache/maven/shared/runtime/MavenRuntimeVisitorUtilsTest.java b/src/test/java/org/apache/maven/shared/runtime/MavenRuntimeVisitorUtilsTest.java
index f05ad73..11e5e63 100644
--- a/src/test/java/org/apache/maven/shared/runtime/MavenRuntimeVisitorUtilsTest.java
+++ b/src/test/java/org/apache/maven/shared/runtime/MavenRuntimeVisitorUtilsTest.java
@@ -49,10 +49,11 @@
     /**
      * {@inheritDoc}
      */
+    @Override
     protected void setUp() throws Exception
     {
         mockVisitorControl = EasyMock.createStrictControl();
-        mockVisitor = (MavenRuntimeVisitor) mockVisitorControl.createMock( MavenRuntimeVisitor.class );
+        mockVisitor = mockVisitorControl.createMock( MavenRuntimeVisitor.class );
 
         mockVisitorControl.replay();
     }
@@ -60,6 +61,7 @@
     /**
      * {@inheritDoc}
      */
+    @Override
     protected void tearDown() throws Exception
     {
         mockVisitorControl.verify();