You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by kh...@apache.org on 2020/03/21 18:55:04 UTC

[maven-artifact-transfer] branch MSHARED-864 updated: Continued refactoring -> Generics ?

This is an automated email from the ASF dual-hosted git repository.

khmarbaise pushed a commit to branch MSHARED-864
in repository https://gitbox.apache.org/repos/asf/maven-artifact-transfer.git


The following commit(s) were added to refs/heads/MSHARED-864 by this push:
     new bb4dd33  Continued refactoring -> Generics ?
bb4dd33 is described below

commit bb4dd337308be081c8a9cadfa7958227cbbad549
Author: Karl Heinz Marbaise <kh...@apache.org>
AuthorDate: Sun Mar 15 21:47:25 2020 +0100

    Continued refactoring -> Generics ?
---
 pom.xml                                            | 11 ++++
 .../deploy/internal/DefaultArtifactDeployer.java   |  6 +-
 .../transfer/artifact/deploy/internal/Invoker.java | 34 ++---------
 .../deploy/internal/Maven30ArtifactDeployer.java   |  7 +--
 .../deploy/internal/Maven31ArtifactDeployer.java   |  7 +--
 .../install/internal/DefaultArtifactInstaller.java |  6 +-
 .../artifact/install/internal/Invoker.java         | 34 ++---------
 .../install/internal/Maven30ArtifactInstaller.java |  5 +-
 .../install/internal/Maven31ArtifactInstaller.java |  5 +-
 .../resolve/internal/DefaultArtifactResolver.java  | 26 ++++----
 .../artifact/resolve/internal/Invoker.java         | 30 ++--------
 .../internal/DefaultDependencyCollector.java       | 22 +++----
 .../transfer/collection/internal/Invoker.java      | 69 ++++------------------
 .../internal/Maven30DependencyCollector.java       | 16 +++--
 .../internal/Maven30DependencyNodeAdapter.java     |  2 +-
 .../internal/Maven31DependencyCollector.java       | 16 +++--
 .../internal/Maven31DependencyNodeAdapter.java     |  2 +-
 .../internal/DefaultDependencyCollector.java       | 22 +++----
 .../dependencies/collect/internal/Invoker.java     | 12 ++--
 .../internal/DefaultDependencyResolver.java        | 14 ++---
 .../dependencies/resolve/internal/Invoker.java     |  4 +-
 21 files changed, 108 insertions(+), 242 deletions(-)

diff --git a/pom.xml b/pom.xml
index 1bcca0b..371c954 100644
--- a/pom.xml
+++ b/pom.xml
@@ -61,6 +61,17 @@
   <build>
     <plugins>
       <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-compiler-plugin</artifactId>
+				<configuration>
+<!--            <showDeprecation>true</showDeprecation>-->
+            <compilerArgs>
+<!--              <arg>-Xlint:deprecation</arg>-->
+              <arg>-Xlint:unchecked</arg>
+            </compilerArgs>
+          </configuration>
+			</plugin>
+      <plugin>
         <groupId>org.codehaus.plexus</groupId>
         <artifactId>plexus-component-metadata</artifactId>
         <executions>
diff --git a/src/main/java/org/apache/maven/shared/transfer/artifact/deploy/internal/DefaultArtifactDeployer.java b/src/main/java/org/apache/maven/shared/transfer/artifact/deploy/internal/DefaultArtifactDeployer.java
index c6f2858..3d977c3 100644
--- a/src/main/java/org/apache/maven/shared/transfer/artifact/deploy/internal/DefaultArtifactDeployer.java
+++ b/src/main/java/org/apache/maven/shared/transfer/artifact/deploy/internal/DefaultArtifactDeployer.java
@@ -134,8 +134,7 @@ class DefaultArtifactDeployer
             org.eclipse.aether.RepositorySystem repositorySystem =
                             container.lookup( org.eclipse.aether.RepositorySystem.class );
             
-            org.eclipse.aether.RepositorySystemSession session =
-                (org.eclipse.aether.RepositorySystemSession) Invoker.invoke( buildingRequest, "getRepositorySession" );
+            org.eclipse.aether.RepositorySystemSession session = Invoker.invoke( buildingRequest, "getRepositorySession" );
             
             return new Maven31ArtifactDeployer( repositorySystem, session );
         }
@@ -144,8 +143,7 @@ class DefaultArtifactDeployer
             org.sonatype.aether.RepositorySystem repositorySystem =
                             container.lookup( org.sonatype.aether.RepositorySystem.class );
             
-            org.sonatype.aether.RepositorySystemSession session =
-                (org.sonatype.aether.RepositorySystemSession) Invoker.invoke( buildingRequest, "getRepositorySession" );
+            org.sonatype.aether.RepositorySystemSession session = Invoker.invoke( buildingRequest, "getRepositorySession" );
             
             return new Maven30ArtifactDeployer( repositorySystem, session );
         }
diff --git a/src/main/java/org/apache/maven/shared/transfer/artifact/deploy/internal/Invoker.java b/src/main/java/org/apache/maven/shared/transfer/artifact/deploy/internal/Invoker.java
index 1102163..be93619 100644
--- a/src/main/java/org/apache/maven/shared/transfer/artifact/deploy/internal/Invoker.java
+++ b/src/main/java/org/apache/maven/shared/transfer/artifact/deploy/internal/Invoker.java
@@ -33,18 +33,18 @@ final class Invoker
         // do not instantiate
     }
 
-    public static Object invoke( Object object, String method )
+    public static <T> T invoke( Object object, String method )
         throws ArtifactDeployerException
     {
-        return invoke( object.getClass(), object, method );
+        return (T) invoke( object.getClass(), object, method );
     }
 
-    public static Object invoke( Class<?> objectClazz, Object object, String method )
+    public static <T> T invoke( Class<?> objectClazz, Object object, String method )
         throws ArtifactDeployerException
     {
         try
         {
-            return objectClazz.getMethod( method ).invoke( object );
+            return (T) objectClazz.getMethod( method ).invoke( object );
         }
         catch ( IllegalAccessException e )
         {
@@ -60,34 +60,12 @@ final class Invoker
         }
     }
 
-    public static Object invoke( Object object, String method, Class<?> clazz, Object arg )
-        throws ArtifactDeployerException
-    {
-        try
-        {
-            final Class<?> objectClazz = object.getClass();
-            return objectClazz.getMethod( method, clazz ).invoke( object, arg );
-        }
-        catch ( IllegalAccessException e )
-        {
-            throw new ArtifactDeployerException( e.getMessage(), e );
-        }
-        catch ( InvocationTargetException e )
-        {
-            throw new ArtifactDeployerException( e.getMessage(), e );
-        }
-        catch ( NoSuchMethodException e )
-        {
-            throw new ArtifactDeployerException( e.getMessage(), e );
-        }
-    }
-    
-    public static Object invoke( Class<?> objectClazz, String staticMethod, Class<?> argClazz, Object arg )
+    public static <T> T invoke( Class<?> objectClazz, String staticMethod, Class<?> argClazz, Object arg )
                     throws ArtifactDeployerException
     {
         try
         {
-            return objectClazz.getMethod( staticMethod, argClazz ).invoke( null, arg );
+            return (T) objectClazz.getMethod( staticMethod, argClazz ).invoke( null, arg );
         }
         catch ( IllegalAccessException e )
         {
diff --git a/src/main/java/org/apache/maven/shared/transfer/artifact/deploy/internal/Maven30ArtifactDeployer.java b/src/main/java/org/apache/maven/shared/transfer/artifact/deploy/internal/Maven30ArtifactDeployer.java
index e8ef395..06a7c93 100644
--- a/src/main/java/org/apache/maven/shared/transfer/artifact/deploy/internal/Maven30ArtifactDeployer.java
+++ b/src/main/java/org/apache/maven/shared/transfer/artifact/deploy/internal/Maven30ArtifactDeployer.java
@@ -78,9 +78,8 @@ class Maven30ArtifactDeployer
         // transform artifacts
         for ( org.apache.maven.artifact.Artifact mavenArtifact : mavenArtifacts )
         {
-            Artifact aetherArtifact =
-                (Artifact) Invoker.invoke( RepositoryUtils.class, "toArtifact",
-                                           org.apache.maven.artifact.Artifact.class, mavenArtifact );
+            Artifact aetherArtifact = Invoker.invoke( RepositoryUtils.class, "toArtifact",
+                                       org.apache.maven.artifact.Artifact.class, mavenArtifact );
             request.addArtifact( aetherArtifact );
 
             RemoteRepository aetherRepository;
@@ -133,7 +132,7 @@ class Maven30ArtifactDeployer
         throws ArtifactDeployerException
     {
         // CHECKSTYLE_OFF: LineLength
-        RemoteRepository aetherRepo = (RemoteRepository) Invoker.invoke( RepositoryUtils.class, "toRepo",
+        RemoteRepository aetherRepo = Invoker.invoke( RepositoryUtils.class, "toRepo",
                                                                          ArtifactRepository.class,
                                                                          remoteRepository );
         // CHECKSTYLE_ON: LineLength
diff --git a/src/main/java/org/apache/maven/shared/transfer/artifact/deploy/internal/Maven31ArtifactDeployer.java b/src/main/java/org/apache/maven/shared/transfer/artifact/deploy/internal/Maven31ArtifactDeployer.java
index 52c7295..f3bf542 100644
--- a/src/main/java/org/apache/maven/shared/transfer/artifact/deploy/internal/Maven31ArtifactDeployer.java
+++ b/src/main/java/org/apache/maven/shared/transfer/artifact/deploy/internal/Maven31ArtifactDeployer.java
@@ -79,9 +79,8 @@ class Maven31ArtifactDeployer
         // transform artifacts
         for ( org.apache.maven.artifact.Artifact mavenArtifact : mavenArtifacts )
         {
-            Artifact aetherArtifact =
-                (Artifact) Invoker.invoke( RepositoryUtils.class, "toArtifact",
-                                           org.apache.maven.artifact.Artifact.class, mavenArtifact );
+            Artifact aetherArtifact = Invoker.invoke( RepositoryUtils.class, "toArtifact",
+                                       org.apache.maven.artifact.Artifact.class, mavenArtifact );
             request.addArtifact( aetherArtifact );
 
             RemoteRepository aetherRepository;
@@ -134,7 +133,7 @@ class Maven31ArtifactDeployer
         throws ArtifactDeployerException
     {
         // CHECKSTYLE_OFF: LineLength
-        RemoteRepository aetherRepo = (RemoteRepository) Invoker.invoke( RepositoryUtils.class, "toRepo",
+        RemoteRepository aetherRepo = Invoker.invoke( RepositoryUtils.class, "toRepo",
                                                                          ArtifactRepository.class,
                                                                          remoteRepository );
         // CHECKSTYLE_ON: LineLength
diff --git a/src/main/java/org/apache/maven/shared/transfer/artifact/install/internal/DefaultArtifactInstaller.java b/src/main/java/org/apache/maven/shared/transfer/artifact/install/internal/DefaultArtifactInstaller.java
index f8a56f7..58e3a9e 100644
--- a/src/main/java/org/apache/maven/shared/transfer/artifact/install/internal/DefaultArtifactInstaller.java
+++ b/src/main/java/org/apache/maven/shared/transfer/artifact/install/internal/DefaultArtifactInstaller.java
@@ -148,8 +148,7 @@ class DefaultArtifactInstaller
             org.eclipse.aether.RepositorySystem repositorySystem =
                             container.lookup( org.eclipse.aether.RepositorySystem.class );
             
-            org.eclipse.aether.RepositorySystemSession session =
-                (org.eclipse.aether.RepositorySystemSession) Invoker.invoke( buildingRequest, "getRepositorySession" );
+            org.eclipse.aether.RepositorySystemSession session = Invoker.invoke( buildingRequest, "getRepositorySession" );
 
             return new Maven31ArtifactInstaller( repositorySystem, session );
         }
@@ -158,8 +157,7 @@ class DefaultArtifactInstaller
             org.sonatype.aether.RepositorySystem repositorySystem =
                             container.lookup( org.sonatype.aether.RepositorySystem.class );
             
-            org.sonatype.aether.RepositorySystemSession session =
-                (org.sonatype.aether.RepositorySystemSession) Invoker.invoke( buildingRequest, "getRepositorySession" );
+            org.sonatype.aether.RepositorySystemSession session = Invoker.invoke( buildingRequest, "getRepositorySession" );
 
             return new Maven30ArtifactInstaller( repositorySystem, session );
         }
diff --git a/src/main/java/org/apache/maven/shared/transfer/artifact/install/internal/Invoker.java b/src/main/java/org/apache/maven/shared/transfer/artifact/install/internal/Invoker.java
index f748e04..d1389ec 100644
--- a/src/main/java/org/apache/maven/shared/transfer/artifact/install/internal/Invoker.java
+++ b/src/main/java/org/apache/maven/shared/transfer/artifact/install/internal/Invoker.java
@@ -33,18 +33,18 @@ final class Invoker
         // do not instantiate
     }
 
-    public static Object invoke( Object object, String method )
+    public static <T> T invoke( Object object, String method )
         throws ArtifactInstallerException
     {
-        return invoke( object.getClass(), object, method );
+        return (T) invoke( object.getClass(), object, method );
     }
 
-    public static Object invoke( Class<?> objectClazz, Object object, String method )
+    public static <T> T invoke( Class<?> objectClazz, Object object, String method )
         throws ArtifactInstallerException
     {
         try
         {
-            return objectClazz.getMethod( method ).invoke( object );
+            return (T) objectClazz.getMethod( method ).invoke( object );
         }
         catch ( IllegalAccessException e )
         {
@@ -60,34 +60,12 @@ final class Invoker
         }
     }
 
-    public static Object invoke( Object object, String method, Class<?> argClazz, Object arg )
+    public static <T> T invoke( Class<?> objectClazz, String staticMethod, Class<?> argClazz, Object arg )
         throws ArtifactInstallerException
     {
         try
         {
-            final Class<?> objectClazz = object.getClass();
-            return objectClazz.getMethod( method, argClazz ).invoke( object, arg );
-        }
-        catch ( IllegalAccessException e )
-        {
-            throw new ArtifactInstallerException( e.getMessage(), e );
-        }
-        catch ( InvocationTargetException e )
-        {
-            throw new ArtifactInstallerException( e.getMessage(), e );
-        }
-        catch ( NoSuchMethodException e )
-        {
-            throw new ArtifactInstallerException( e.getMessage(), e );
-        }
-    }
-
-    public static Object invoke( Class<?> objectClazz, String staticMethod, Class<?> argClazz, Object arg )
-        throws ArtifactInstallerException
-    {
-        try
-        {
-            return objectClazz.getMethod( staticMethod, argClazz ).invoke( null, arg );
+            return (T) objectClazz.getMethod( staticMethod, argClazz ).invoke( null, arg );
         }
         catch ( IllegalAccessException e )
         {
diff --git a/src/main/java/org/apache/maven/shared/transfer/artifact/install/internal/Maven30ArtifactInstaller.java b/src/main/java/org/apache/maven/shared/transfer/artifact/install/internal/Maven30ArtifactInstaller.java
index 2a15dfd..fbff698 100644
--- a/src/main/java/org/apache/maven/shared/transfer/artifact/install/internal/Maven30ArtifactInstaller.java
+++ b/src/main/java/org/apache/maven/shared/transfer/artifact/install/internal/Maven30ArtifactInstaller.java
@@ -60,9 +60,8 @@ class Maven30ArtifactInstaller
         // transform artifacts
         for ( org.apache.maven.artifact.Artifact mavenArtifact : mavenArtifacts )
         {
-            Artifact mainArtifact =
-                (Artifact) Invoker.invoke( RepositoryUtils.class, "toArtifact",
-                                           org.apache.maven.artifact.Artifact.class, mavenArtifact );
+            Artifact mainArtifact = Invoker.invoke( RepositoryUtils.class, "toArtifact",
+                                       org.apache.maven.artifact.Artifact.class, mavenArtifact );
             request.addArtifact( mainArtifact );
 
             for ( ArtifactMetadata metadata : mavenArtifact.getMetadataList() )
diff --git a/src/main/java/org/apache/maven/shared/transfer/artifact/install/internal/Maven31ArtifactInstaller.java b/src/main/java/org/apache/maven/shared/transfer/artifact/install/internal/Maven31ArtifactInstaller.java
index e4eae74..aa15504 100644
--- a/src/main/java/org/apache/maven/shared/transfer/artifact/install/internal/Maven31ArtifactInstaller.java
+++ b/src/main/java/org/apache/maven/shared/transfer/artifact/install/internal/Maven31ArtifactInstaller.java
@@ -61,9 +61,8 @@ class Maven31ArtifactInstaller
         // transform artifacts
         for ( org.apache.maven.artifact.Artifact mavenArtifact : mavenArtifacts )
         {
-            Artifact mainArtifact =
-                (Artifact) Invoker.invoke( RepositoryUtils.class, "toArtifact",
-                                           org.apache.maven.artifact.Artifact.class, mavenArtifact );
+            Artifact mainArtifact = Invoker.invoke( RepositoryUtils.class, "toArtifact",
+                                       org.apache.maven.artifact.Artifact.class, mavenArtifact );
             request.addArtifact( mainArtifact );
 
             for ( ArtifactMetadata metadata : mavenArtifact.getMetadataList() )
diff --git a/src/main/java/org/apache/maven/shared/transfer/artifact/resolve/internal/DefaultArtifactResolver.java b/src/main/java/org/apache/maven/shared/transfer/artifact/resolve/internal/DefaultArtifactResolver.java
index 9f1826b..12c3ece 100644
--- a/src/main/java/org/apache/maven/shared/transfer/artifact/resolve/internal/DefaultArtifactResolver.java
+++ b/src/main/java/org/apache/maven/shared/transfer/artifact/resolve/internal/DefaultArtifactResolver.java
@@ -142,14 +142,11 @@ class DefaultArtifactResolver
             org.eclipse.aether.RepositorySystem repositorySystem =
                             container.lookup( org.eclipse.aether.RepositorySystem.class );
             
-            @SuppressWarnings( "unchecked" )
-            List<org.eclipse.aether.repository.RemoteRepository> aetherRepositories =
-                (List<org.eclipse.aether.repository.RemoteRepository>) Invoker.invoke( RepositoryUtils.class, "toRepos",
-                                                                           List.class,
-                                                                           buildingRequest.getRemoteRepositories() );
-
-            org.eclipse.aether.RepositorySystemSession session =
-                (org.eclipse.aether.RepositorySystemSession) Invoker.invoke( buildingRequest, "getRepositorySession" );
+            List<org.eclipse.aether.repository.RemoteRepository> aetherRepositories = Invoker.invoke( RepositoryUtils.class, "toRepos",
+                                                                       List.class,
+                                                                       buildingRequest.getRemoteRepositories() );
+
+            org.eclipse.aether.RepositorySystemSession session = Invoker.invoke( buildingRequest, "getRepositorySession" );
             
             return new Maven31ArtifactResolver( repositorySystem, aetherRepositories, session );
             
@@ -159,14 +156,11 @@ class DefaultArtifactResolver
             org.sonatype.aether.RepositorySystem repositorySystem =
                             container.lookup( org.sonatype.aether.RepositorySystem.class );
             
-            @SuppressWarnings( "unchecked" )
-            List<org.sonatype.aether.repository.RemoteRepository> aetherRepositories =
-                (List<org.sonatype.aether.repository.RemoteRepository>) Invoker.invoke( RepositoryUtils.class,
-                                                                            "toRepos", List.class,
-                                                                            buildingRequest.getRemoteRepositories() );
-
-            org.sonatype.aether.RepositorySystemSession session =
-                (org.sonatype.aether.RepositorySystemSession) Invoker.invoke( buildingRequest, "getRepositorySession" );
+            List<org.sonatype.aether.repository.RemoteRepository> aetherRepositories = Invoker.invoke( RepositoryUtils.class,
+                                                                        "toRepos", List.class,
+                                                                        buildingRequest.getRemoteRepositories() );
+
+            org.sonatype.aether.RepositorySystemSession session = Invoker.invoke( buildingRequest, "getRepositorySession" );
             
             return new Maven30ArtifactResolver( repositorySystem, aetherRepositories, session );
         }
diff --git a/src/main/java/org/apache/maven/shared/transfer/artifact/resolve/internal/Invoker.java b/src/main/java/org/apache/maven/shared/transfer/artifact/resolve/internal/Invoker.java
index a398f9e..ebbea34 100644
--- a/src/main/java/org/apache/maven/shared/transfer/artifact/resolve/internal/Invoker.java
+++ b/src/main/java/org/apache/maven/shared/transfer/artifact/resolve/internal/Invoker.java
@@ -33,40 +33,18 @@ final class Invoker
         // do not instantiate
     }
 
-    public static Object invoke( Object object, String method )
+    public static <T> T invoke( Object object, String method )
         throws ArtifactResolverException
     {
-        return invoke( object.getClass(), object, method );
+        return (T) invoke( object.getClass(), object, method );
     }
 
-    public static Object invoke( Class<?> objectClazz, Object object, String method )
+    public static <T> T invoke( Class<?> objectClazz, Object object, String method )
         throws ArtifactResolverException
     {
         try
         {
-            return objectClazz.getMethod( method ).invoke( object );
-        }
-        catch ( IllegalAccessException e )
-        {
-            throw new ArtifactResolverException( e.getMessage(), e );
-        }
-        catch ( InvocationTargetException e )
-        {
-            throw new ArtifactResolverException( e.getMessage(), e );
-        }
-        catch ( NoSuchMethodException e )
-        {
-            throw new ArtifactResolverException( e.getMessage(), e );
-        }
-    }
-
-    public static Object invoke( Object object, String method, Class<?> argClazz, Object arg )
-        throws ArtifactResolverException
-    {
-        try
-        {
-            final Class<?> objectClazz = object.getClass();
-            return objectClazz.getMethod( method, argClazz ).invoke( object, arg );
+            return (T) objectClazz.getMethod( method ).invoke( object );
         }
         catch ( IllegalAccessException e )
         {
diff --git a/src/main/java/org/apache/maven/shared/transfer/collection/internal/DefaultDependencyCollector.java b/src/main/java/org/apache/maven/shared/transfer/collection/internal/DefaultDependencyCollector.java
index 62a8fb2..449eb99 100644
--- a/src/main/java/org/apache/maven/shared/transfer/collection/internal/DefaultDependencyCollector.java
+++ b/src/main/java/org/apache/maven/shared/transfer/collection/internal/DefaultDependencyCollector.java
@@ -164,14 +164,11 @@ class DefaultDependencyCollector implements DependencyCollector, Contextualizabl
       org.eclipse.aether.RepositorySystem m31RepositorySystem =
           container.lookup( org.eclipse.aether.RepositorySystem.class );
 
-      org.eclipse.aether.RepositorySystemSession session =
-          (org.eclipse.aether.RepositorySystemSession) Invoker.invoke( buildingRequest, "getRepositorySession" );
+      org.eclipse.aether.RepositorySystemSession session = Invoker.invoke( buildingRequest, "getRepositorySession" );
 
-      @SuppressWarnings( "unchecked" )
-      List<org.eclipse.aether.repository.RemoteRepository> aetherRepositories =
-          (List<org.eclipse.aether.repository.RemoteRepository>) Invoker.invoke( RepositoryUtils.class, "toRepos",
-              List.class,
-              buildingRequest.getRemoteRepositories() );
+      List<org.eclipse.aether.repository.RemoteRepository> aetherRepositories = Invoker.invoke( RepositoryUtils.class, "toRepos",
+          List.class,
+          buildingRequest.getRemoteRepositories() );
 
       return new Maven31DependencyCollector( m31RepositorySystem, artifactHandlerManager, session,
           aetherRepositories );
@@ -181,14 +178,11 @@ class DefaultDependencyCollector implements DependencyCollector, Contextualizabl
       org.sonatype.aether.RepositorySystem m30RepositorySystem =
           container.lookup( org.sonatype.aether.RepositorySystem.class );
 
-      org.sonatype.aether.RepositorySystemSession session =
-          (org.sonatype.aether.RepositorySystemSession) Invoker.invoke( buildingRequest, "getRepositorySession" );
+      org.sonatype.aether.RepositorySystemSession session = Invoker.invoke( buildingRequest, "getRepositorySession" );
 
-      @SuppressWarnings( "unchecked" )
-      List<org.sonatype.aether.repository.RemoteRepository> aetherRepositories =
-          ( List<org.sonatype.aether.repository.RemoteRepository> ) Invoker.invoke( RepositoryUtils.class,
-              "toRepos", List.class,
-              buildingRequest.getRemoteRepositories() );
+      List<org.sonatype.aether.repository.RemoteRepository> aetherRepositories = Invoker.invoke( RepositoryUtils.class,
+          "toRepos", List.class,
+          buildingRequest.getRemoteRepositories() );
 
       return new Maven30DependencyCollector( m30RepositorySystem, artifactHandlerManager, session,
           aetherRepositories );
diff --git a/src/main/java/org/apache/maven/shared/transfer/collection/internal/Invoker.java b/src/main/java/org/apache/maven/shared/transfer/collection/internal/Invoker.java
index 31951f8..405c446 100644
--- a/src/main/java/org/apache/maven/shared/transfer/collection/internal/Invoker.java
+++ b/src/main/java/org/apache/maven/shared/transfer/collection/internal/Invoker.java
@@ -34,18 +34,21 @@ final class Invoker
         // do not instantiate
     }
 
-    public static Object invoke( Object object, String method )
+    public static <T> T invoke( Object object, String method )
         throws DependencyCollectionException
     {
-        return invoke( object.getClass(), object, method );
+        @SuppressWarnings( "unchecked" )
+        T invoke = (T) invoke( object.getClass(), object, method );
+        return invoke;
     }
 
-    public static Object invoke( Class<?> objectClazz, Object object, String method )
+    @SuppressWarnings( "unchecked" )
+    public static <T> T invoke( Class<?> objectClazz, Object object, String method )
         throws DependencyCollectionException
     {
         try
         {
-            return objectClazz.getMethod( method ).invoke( object );
+            return (T) objectClazz.getMethod( method ).invoke( object );
         }
         catch ( IllegalAccessException e )
         {
@@ -61,34 +64,12 @@ final class Invoker
         }
     }
 
-    public static Object invoke( Object object, String method, Class<?> argClazz, Object arg )
-        throws DependencyCollectionException
-    {
-        try
-        {
-            final Class<?> objectClazz = object.getClass();
-            return objectClazz.getMethod( method, argClazz ).invoke( object, arg );
-        }
-        catch ( IllegalAccessException e )
-        {
-            throw new DependencyCollectionException( e.getMessage(), e );
-        }
-        catch ( InvocationTargetException e )
-        {
-            throw new DependencyCollectionException( e.getMessage(), e );
-        }
-        catch ( NoSuchMethodException e )
-        {
-            throw new DependencyCollectionException( e.getMessage(), e );
-        }
-    }
-    
-    public static Object invoke( Class<?> objectClazz, String staticMethod, Class<?> argClazz, Object arg )
+    public static <T> T invoke( Class<?> objectClazz, String staticMethod, Class<?> argClazz, Object arg )
                     throws DependencyCollectionException
     {
         try
         {
-            return objectClazz.getMethod( staticMethod, argClazz ).invoke( null, arg );
+            return (T) objectClazz.getMethod( staticMethod, argClazz ).invoke( null, arg );
         }
         catch ( IllegalAccessException e )
         {
@@ -114,12 +95,12 @@ final class Invoker
      * @return the result of the method invocation
      * @throws DependencyCollectorException if any checked exception occurs
      */
-    public static Object invoke( Class<?> objectClazz, String staticMethod, Class<?>[] argClasses, Object[] args )
+    public static <T> T invoke( Class<?> objectClazz, String staticMethod, Class<?>[] argClasses, Object[] args )
                     throws DependencyCollectionException
     {
         try
         {
-            return objectClazz.getMethod( staticMethod, argClasses ).invoke( null, args );
+            return (T) objectClazz.getMethod( staticMethod, argClasses ).invoke( null, args );
         }
         catch ( IllegalAccessException e )
         {
@@ -135,32 +116,4 @@ final class Invoker
         }
     }
 
-    public static Object newInstance( Class<?> objectClazz, Class<?> argClazz, Object arg )
-        throws DependencyCollectionException
-    {
-        try
-        {
-            return objectClazz.getConstructor( argClazz ).newInstance( arg );
-        }
-        catch ( InstantiationException e )
-        {
-            throw new DependencyCollectionException( e.getMessage(), e );
-        }
-        catch ( IllegalAccessException e )
-        {
-            throw new DependencyCollectionException( e.getMessage(), e );
-        }
-        catch ( IllegalArgumentException e )
-        {
-            throw new DependencyCollectionException( e.getMessage(), e );
-        }
-        catch ( InvocationTargetException e )
-        {
-            throw new DependencyCollectionException( e.getMessage(), e );
-        }
-        catch ( NoSuchMethodException e )
-        {
-            throw new DependencyCollectionException( e.getMessage(), e );
-        }
-    }
 }
diff --git a/src/main/java/org/apache/maven/shared/transfer/collection/internal/Maven30DependencyCollector.java b/src/main/java/org/apache/maven/shared/transfer/collection/internal/Maven30DependencyCollector.java
index 67e3556..037d021 100644
--- a/src/main/java/org/apache/maven/shared/transfer/collection/internal/Maven30DependencyCollector.java
+++ b/src/main/java/org/apache/maven/shared/transfer/collection/internal/Maven30DependencyCollector.java
@@ -70,10 +70,9 @@ class Maven30DependencyCollector
     public CollectResult collectDependencies( org.apache.maven.model.Dependency root )
         throws DependencyCollectionException
     {
-        ArtifactTypeRegistry typeRegistry =
-                        (ArtifactTypeRegistry) Invoker
-                            .invoke( RepositoryUtils.class, "newArtifactTypeRegistry",
-                                                               ArtifactHandlerManager.class, artifactHandlerManager );
+        ArtifactTypeRegistry typeRegistry = Invoker
+            .invoke( RepositoryUtils.class, "newArtifactTypeRegistry",
+                                               ArtifactHandlerManager.class, artifactHandlerManager );
 
         CollectRequest request = new CollectRequest();
         request.setRoot( toDependency( root, typeRegistry ) );
@@ -113,10 +112,9 @@ class Maven30DependencyCollector
         CollectRequest request = new CollectRequest();
         request.setRoot( new Dependency( aetherArtifact, null ) );
 
-        ArtifactTypeRegistry typeRegistry =
-                        (ArtifactTypeRegistry) Invoker
-                            .invoke( RepositoryUtils.class, "newArtifactTypeRegistry",
-                                                               ArtifactHandlerManager.class, artifactHandlerManager );
+        ArtifactTypeRegistry typeRegistry = Invoker
+            .invoke( RepositoryUtils.class, "newArtifactTypeRegistry",
+                                               ArtifactHandlerManager.class, artifactHandlerManager );
 
         List<Dependency> aetherDependencies = new ArrayList<Dependency>( root.getDependencies().size() );
         for ( org.apache.maven.model.Dependency mavenDependency : root.getDependencies() )
@@ -164,7 +162,7 @@ class Maven30DependencyCollector
 
         Object[] args = new Object[] { mavenDependency, typeRegistry };
 
-        return (Dependency) Invoker
+        return Invoker
             .invoke( RepositoryUtils.class, "toDependency", argClasses, args );
     }
 }
diff --git a/src/main/java/org/apache/maven/shared/transfer/collection/internal/Maven30DependencyNodeAdapter.java b/src/main/java/org/apache/maven/shared/transfer/collection/internal/Maven30DependencyNodeAdapter.java
index 052353f..b8e6ea9 100644
--- a/src/main/java/org/apache/maven/shared/transfer/collection/internal/Maven30DependencyNodeAdapter.java
+++ b/src/main/java/org/apache/maven/shared/transfer/collection/internal/Maven30DependencyNodeAdapter.java
@@ -152,7 +152,7 @@ class Maven30DependencyNodeAdapter implements DependencyNode
     {
         try
         {
-            return (Artifact) Invoker.invoke( RepositoryUtils.class, "toArtifact",
+            return Invoker.invoke( RepositoryUtils.class, "toArtifact",
                 org.sonatype.aether.artifact.Artifact.class, aetherArtifact );
         }
         catch ( DependencyCollectionException e )
diff --git a/src/main/java/org/apache/maven/shared/transfer/collection/internal/Maven31DependencyCollector.java b/src/main/java/org/apache/maven/shared/transfer/collection/internal/Maven31DependencyCollector.java
index b6c5744..ef5057b 100644
--- a/src/main/java/org/apache/maven/shared/transfer/collection/internal/Maven31DependencyCollector.java
+++ b/src/main/java/org/apache/maven/shared/transfer/collection/internal/Maven31DependencyCollector.java
@@ -70,10 +70,9 @@ class Maven31DependencyCollector
     public CollectResult collectDependencies( org.apache.maven.model.Dependency root )
         throws DependencyCollectionException
     {
-        ArtifactTypeRegistry typeRegistry =
-                        (ArtifactTypeRegistry) Invoker
-                            .invoke( RepositoryUtils.class, "newArtifactTypeRegistry",
-                                                               ArtifactHandlerManager.class, artifactHandlerManager );
+        ArtifactTypeRegistry typeRegistry = Invoker
+            .invoke( RepositoryUtils.class, "newArtifactTypeRegistry",
+                                               ArtifactHandlerManager.class, artifactHandlerManager );
 
         CollectRequest request = new CollectRequest();
         request.setRoot( toDependency( root, typeRegistry ) );
@@ -113,10 +112,9 @@ class Maven31DependencyCollector
         CollectRequest request = new CollectRequest();
         request.setRoot( new Dependency( aetherArtifact, null ) );
 
-        ArtifactTypeRegistry typeRegistry =
-                        (ArtifactTypeRegistry) Invoker
-                            .invoke( RepositoryUtils.class, "newArtifactTypeRegistry",
-                                                               ArtifactHandlerManager.class, artifactHandlerManager );
+        ArtifactTypeRegistry typeRegistry = Invoker
+            .invoke( RepositoryUtils.class, "newArtifactTypeRegistry",
+                                               ArtifactHandlerManager.class, artifactHandlerManager );
 
         List<Dependency> aetherDependencies = new ArrayList<Dependency>( root.getDependencies().size() );
         for ( org.apache.maven.model.Dependency mavenDependency : root.getDependencies() )
@@ -163,7 +161,7 @@ class Maven31DependencyCollector
 
         Object[] args = new Object[] { root, typeRegistry };
 
-        return (Dependency) Invoker
+        return Invoker
             .invoke( RepositoryUtils.class, "toDependency", argClasses, args );
     }
 
diff --git a/src/main/java/org/apache/maven/shared/transfer/collection/internal/Maven31DependencyNodeAdapter.java b/src/main/java/org/apache/maven/shared/transfer/collection/internal/Maven31DependencyNodeAdapter.java
index 3b3dbb7..5987f7f 100644
--- a/src/main/java/org/apache/maven/shared/transfer/collection/internal/Maven31DependencyNodeAdapter.java
+++ b/src/main/java/org/apache/maven/shared/transfer/collection/internal/Maven31DependencyNodeAdapter.java
@@ -152,7 +152,7 @@ class Maven31DependencyNodeAdapter implements DependencyNode
     {
         try
         {
-            return (Artifact) Invoker.invoke( RepositoryUtils.class, "toArtifact",
+            return Invoker.invoke( RepositoryUtils.class, "toArtifact",
                 org.eclipse.aether.artifact.Artifact.class, aetherArtifact );
         }
         catch ( DependencyCollectionException e )
diff --git a/src/main/java/org/apache/maven/shared/transfer/dependencies/collect/internal/DefaultDependencyCollector.java b/src/main/java/org/apache/maven/shared/transfer/dependencies/collect/internal/DefaultDependencyCollector.java
index 3d50a66..b2676f5 100644
--- a/src/main/java/org/apache/maven/shared/transfer/dependencies/collect/internal/DefaultDependencyCollector.java
+++ b/src/main/java/org/apache/maven/shared/transfer/dependencies/collect/internal/DefaultDependencyCollector.java
@@ -175,14 +175,11 @@ class DefaultDependencyCollector implements DependencyCollector, Contextualizabl
             org.eclipse.aether.RepositorySystem m31RepositorySystem =
                 container.lookup( org.eclipse.aether.RepositorySystem.class );
 
-            org.eclipse.aether.RepositorySystemSession session =
-                (org.eclipse.aether.RepositorySystemSession) Invoker.invoke( buildingRequest, "getRepositorySession" );
+            org.eclipse.aether.RepositorySystemSession session = Invoker.invoke( buildingRequest, "getRepositorySession" );
 
-            @SuppressWarnings( "unchecked" )
-            List<org.eclipse.aether.repository.RemoteRepository> aetherRepositories =
-                (List<org.eclipse.aether.repository.RemoteRepository>) Invoker.invoke( RepositoryUtils.class, "toRepos",
-                                                                           List.class,
-                                                                           buildingRequest.getRemoteRepositories() );
+            List<org.eclipse.aether.repository.RemoteRepository> aetherRepositories = Invoker.invoke( RepositoryUtils.class, "toRepos",
+                                                                       List.class,
+                                                                       buildingRequest.getRemoteRepositories() );
 
             return new Maven31DependencyCollector( m31RepositorySystem, artifactHandlerManager, session,
                                                    aetherRepositories );
@@ -193,14 +190,11 @@ class DefaultDependencyCollector implements DependencyCollector, Contextualizabl
             org.sonatype.aether.RepositorySystem m30RepositorySystem =
                             container.lookup( org.sonatype.aether.RepositorySystem.class );
 
-            org.sonatype.aether.RepositorySystemSession session =
-                (org.sonatype.aether.RepositorySystemSession) Invoker.invoke( buildingRequest, "getRepositorySession" );
+            org.sonatype.aether.RepositorySystemSession session = Invoker.invoke( buildingRequest, "getRepositorySession" );
 
-            @SuppressWarnings( "unchecked" )
-            List<org.sonatype.aether.repository.RemoteRepository> aetherRepositories =
-                (List<org.sonatype.aether.repository.RemoteRepository>) Invoker.invoke( RepositoryUtils.class,
-                                                                            "toRepos", List.class,
-                                                                            buildingRequest.getRemoteRepositories() );
+            List<org.sonatype.aether.repository.RemoteRepository> aetherRepositories = Invoker.invoke( RepositoryUtils.class,
+                                                                        "toRepos", List.class,
+                                                                        buildingRequest.getRemoteRepositories() );
 
             return new Maven30DependencyCollector( m30RepositorySystem, artifactHandlerManager, session,
                                                    aetherRepositories );
diff --git a/src/main/java/org/apache/maven/shared/transfer/dependencies/collect/internal/Invoker.java b/src/main/java/org/apache/maven/shared/transfer/dependencies/collect/internal/Invoker.java
index 01a8410..efc59a6 100644
--- a/src/main/java/org/apache/maven/shared/transfer/dependencies/collect/internal/Invoker.java
+++ b/src/main/java/org/apache/maven/shared/transfer/dependencies/collect/internal/Invoker.java
@@ -33,18 +33,18 @@ final class Invoker
         // do not instantiate
     }
 
-    public static Object invoke( Object object, String method )
+    public static <T> T invoke( Object object, String method )
         throws DependencyCollectorException
     {
-        return invoke( object.getClass(), object, method );
+        return (T) invoke( object.getClass(), object, method );
     }
 
-    public static Object invoke( Class<?> objectClazz, Object object, String method )
+    public static <T> T invoke( Class<?> objectClazz, Object object, String method )
         throws DependencyCollectorException
     {
         try
         {
-            return objectClazz.getMethod( method ).invoke( object );
+            return (T) objectClazz.getMethod( method ).invoke( object );
         }
         catch ( IllegalAccessException e )
         {
@@ -82,12 +82,12 @@ final class Invoker
         }
     }
     
-    public static Object invoke( Class<?> objectClazz, String staticMethod, Class<?> argClazz, Object arg )
+    public static <T> T invoke( Class<?> objectClazz, String staticMethod, Class<?> argClazz, Object arg )
                     throws DependencyCollectorException
     {
         try
         {
-            return objectClazz.getMethod( staticMethod, argClazz ).invoke( null, arg );
+            return (T) objectClazz.getMethod( staticMethod, argClazz ).invoke( null, arg );
         }
         catch ( IllegalAccessException e )
         {
diff --git a/src/main/java/org/apache/maven/shared/transfer/dependencies/resolve/internal/DefaultDependencyResolver.java b/src/main/java/org/apache/maven/shared/transfer/dependencies/resolve/internal/DefaultDependencyResolver.java
index 19faa28..d4a6049 100644
--- a/src/main/java/org/apache/maven/shared/transfer/dependencies/resolve/internal/DefaultDependencyResolver.java
+++ b/src/main/java/org/apache/maven/shared/transfer/dependencies/resolve/internal/DefaultDependencyResolver.java
@@ -164,14 +164,12 @@ class DefaultDependencyResolver
             org.eclipse.aether.RepositorySystem m31RepositorySystem =
                 container.lookup( org.eclipse.aether.RepositorySystem.class );
 
-            org.eclipse.aether.RepositorySystemSession session =
-                (org.eclipse.aether.RepositorySystemSession) Invoker.invoke( buildingRequest, "getRepositorySession" );
-
-            List<org.eclipse.aether.repository.RemoteRepository> aetherRepositories =
-                (List<org.eclipse.aether.repository.RemoteRepository>) Invoker.invoke( RepositoryUtils.class, 
-                                                                           "toRepos",
-                                                                           List.class,
-                                                                           buildingRequest.getRemoteRepositories() );
+            org.eclipse.aether.RepositorySystemSession session = Invoker.invoke( buildingRequest, "getRepositorySession" );
+
+            List<org.eclipse.aether.repository.RemoteRepository> aetherRepositories = Invoker.invoke( RepositoryUtils.class,
+                                                                       "toRepos",
+                                                                       List.class,
+                                                                       buildingRequest.getRemoteRepositories() );
 
             return new Maven31DependencyResolver( m31RepositorySystem, artifactHandlerManager, session,
                                                   aetherRepositories );
diff --git a/src/main/java/org/apache/maven/shared/transfer/dependencies/resolve/internal/Invoker.java b/src/main/java/org/apache/maven/shared/transfer/dependencies/resolve/internal/Invoker.java
index f98a0ce..e20ea96 100644
--- a/src/main/java/org/apache/maven/shared/transfer/dependencies/resolve/internal/Invoker.java
+++ b/src/main/java/org/apache/maven/shared/transfer/dependencies/resolve/internal/Invoker.java
@@ -39,12 +39,12 @@ final class Invoker
         return (T) invoke( object.getClass(), object, method );
     }
 
-    public static Object invoke( Class<?> objectClazz, Object object, String method )
+    public static <T> T invoke( Class<?> objectClazz, Object object, String method )
         throws DependencyResolverException
     {
         try
         {
-            return objectClazz.getMethod( method ).invoke( object );
+            return (T) objectClazz.getMethod( method ).invoke( object );
         }
         catch ( IllegalAccessException e )
         {