You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by sl...@apache.org on 2020/12/26 13:45:39 UTC

[maven-artifact-transfer] 03/03: [MSHARED-944] Cleanup - remove reflections

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

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

commit 0605987d9cbd18d1d80d9c847165613426e3c885
Author: Sylwester Lachiewicz <sl...@apache.org>
AuthorDate: Thu Nov 26 01:35:39 2020 +0100

    [MSHARED-944] Cleanup - remove reflections
---
 .../internal/DefaultDependencyCollector.java       | 17 ++--
 .../internal/Maven31DependencyCollector.java       | 25 +-----
 .../internal/DefaultDependencyCollector.java       | 16 ++--
 .../dependencies/collect/internal/Invoker.java     | 93 ---------------------
 .../internal/Maven31DependencyCollector.java       | 24 ++----
 .../internal/Maven31DependencyNodeAdapter.java     | 39 ++-------
 .../internal/DefaultDependencyResolver.java        | 11 ++-
 .../dependencies/resolve/internal/Invoker.java     | 95 ----------------------
 .../resolve/internal/Maven31ArtifactResult.java    | 15 +---
 .../internal/Maven31DependencyResolver.java        | 38 ++-------
 .../internal/DefaultRepositoryManager.java         | 22 ++---
 .../transfer/repository/internal/Invoker.java      | 79 ------------------
 .../internal/Maven31RepositoryManager.java         | 48 ++---------
 13 files changed, 62 insertions(+), 460 deletions(-)

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 df2a248..24d1d04 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
@@ -19,9 +19,6 @@ package org.apache.maven.shared.transfer.collection.internal;
  * under the License.
  */
 
-import java.util.List;
-import java.util.Objects;
-
 import org.apache.maven.RepositoryUtils;
 import org.apache.maven.artifact.handler.manager.ArtifactHandlerManager;
 import org.apache.maven.model.Dependency;
@@ -39,9 +36,11 @@ import org.codehaus.plexus.context.Context;
 import org.codehaus.plexus.context.ContextException;
 import org.codehaus.plexus.personality.plexus.lifecycle.phase.Contextualizable;
 import org.eclipse.aether.RepositorySystem;
-import org.eclipse.aether.RepositorySystemSession;
 import org.eclipse.aether.repository.RemoteRepository;
 
+import java.util.List;
+import java.util.Objects;
+
 /**
  * This DependencyCollector passes the request to the proper Maven 3.x implementation
  *
@@ -143,18 +142,16 @@ class DefaultDependencyCollector implements DependencyCollector, Contextualizabl
     }
 
     private MavenDependencyCollector getMavenDependencyCollector( ProjectBuildingRequest buildingRequest )
-            throws ComponentLookupException, DependencyCollectionException
+            throws ComponentLookupException
     {
         ArtifactHandlerManager artifactHandlerManager = container.lookup( ArtifactHandlerManager.class );
 
         RepositorySystem m31RepositorySystem = container.lookup( RepositorySystem.class );
 
-        RepositorySystemSession session = Invoker.invoke( buildingRequest, "getRepositorySession" );
-
-        List<RemoteRepository> aetherRepositories = Invoker.invoke(
-                RepositoryUtils.class, "toRepos", List.class, buildingRequest.getRemoteRepositories() );
+        List<RemoteRepository> aetherRepositories = RepositoryUtils.toRepos( buildingRequest.getRemoteRepositories() );
 
-        return new Maven31DependencyCollector( m31RepositorySystem, artifactHandlerManager, session,
+        return new Maven31DependencyCollector( m31RepositorySystem, artifactHandlerManager,
+                buildingRequest.getRepositorySession(),
                 aetherRepositories );
     }
 
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 43846ab..36425f4 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
@@ -39,6 +39,8 @@ import org.eclipse.aether.collection.CollectRequest;
 import org.eclipse.aether.graph.Dependency;
 import org.eclipse.aether.repository.RemoteRepository;
 
+import static org.apache.maven.RepositoryUtils.toDependency;
+
 /**
  * Maven 3.1+ implementation of the {@link DependencyCollector}
  * 
@@ -70,13 +72,8 @@ class Maven31DependencyCollector
     public CollectResult collectDependencies( org.apache.maven.model.Dependency root )
         throws DependencyCollectionException
     {
-        ArtifactTypeRegistry typeRegistry = Invoker
-            .invoke( RepositoryUtils.class, "newArtifactTypeRegistry",
-                                               ArtifactHandlerManager.class, artifactHandlerManager );
-
         CollectRequest request = new CollectRequest();
-        request.setRoot( toDependency( root, typeRegistry ) );
-
+        request.setRoot( toDependency( root, RepositoryUtils.newArtifactTypeRegistry( artifactHandlerManager ) ) );
         return collectDependencies( request );
     }
 
@@ -112,9 +109,7 @@ class Maven31DependencyCollector
         CollectRequest request = new CollectRequest();
         request.setRoot( new Dependency( aetherArtifact, null ) );
 
-        ArtifactTypeRegistry typeRegistry = Invoker
-            .invoke( RepositoryUtils.class, "newArtifactTypeRegistry",
-                                               ArtifactHandlerManager.class, artifactHandlerManager );
+        ArtifactTypeRegistry typeRegistry = RepositoryUtils.newArtifactTypeRegistry( artifactHandlerManager );
 
         List<Dependency> aetherDependencies = new ArrayList<>( root.getDependencies().size() );
         for ( org.apache.maven.model.Dependency mavenDependency : root.getDependencies() )
@@ -153,16 +148,4 @@ class Maven31DependencyCollector
             throw new DependencyCollectionException( e.getMessage(), e );
         }
     }
-
-    private static Dependency toDependency( org.apache.maven.model.Dependency root, ArtifactTypeRegistry typeRegistry )
-                    throws DependencyCollectionException
-    {
-        Class<?>[] argClasses = new Class<?>[] { org.apache.maven.model.Dependency.class, ArtifactTypeRegistry.class };
-
-        Object[] args = new Object[] { root, typeRegistry };
-
-        return Invoker
-            .invoke( RepositoryUtils.class, "toDependency", argClasses, args );
-    }
-
 }
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 160dca3..cff0340 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
@@ -19,8 +19,6 @@ package org.apache.maven.shared.transfer.dependencies.collect.internal;
  * under the License.
  */
 
-import java.util.List;
-
 import org.apache.maven.RepositoryUtils;
 import org.apache.maven.artifact.handler.manager.ArtifactHandlerManager;
 import org.apache.maven.model.Dependency;
@@ -38,9 +36,10 @@ import org.codehaus.plexus.context.Context;
 import org.codehaus.plexus.context.ContextException;
 import org.codehaus.plexus.personality.plexus.lifecycle.phase.Contextualizable;
 import org.eclipse.aether.RepositorySystem;
-import org.eclipse.aether.RepositorySystemSession;
 import org.eclipse.aether.repository.RemoteRepository;
 
+import java.util.List;
+
 /**
  * This DependencyCollector passes the request to the proper Maven 3.x implementation
  *
@@ -145,19 +144,16 @@ class DefaultDependencyCollector implements DependencyCollector, Contextualizabl
     }
 
     private MavenDependencyCollector getMavenDependencyCollector( ProjectBuildingRequest buildingRequest )
-            throws ComponentLookupException, DependencyCollectorException
+            throws ComponentLookupException
     {
         ArtifactHandlerManager artifactHandlerManager = container.lookup( ArtifactHandlerManager.class );
 
         RepositorySystem m31RepositorySystem = container.lookup( RepositorySystem.class );
 
-        RepositorySystemSession session = Invoker.invoke( buildingRequest, "getRepositorySession" );
-
-        List<RemoteRepository> aetherRepositories = Invoker.invoke(
-                RepositoryUtils.class, "toRepos", List.class, buildingRequest.getRemoteRepositories() );
+        List<RemoteRepository> aetherRepositories = RepositoryUtils.toRepos( buildingRequest.getRemoteRepositories() );
 
-        return new Maven31DependencyCollector( m31RepositorySystem, artifactHandlerManager, session,
-                aetherRepositories );
+        return new Maven31DependencyCollector( m31RepositorySystem, artifactHandlerManager,
+                buildingRequest.getRepositorySession(), 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
deleted file mode 100644
index 45872e9..0000000
--- a/src/main/java/org/apache/maven/shared/transfer/dependencies/collect/internal/Invoker.java
+++ /dev/null
@@ -1,93 +0,0 @@
-package org.apache.maven.shared.transfer.dependencies.collect.internal;
-
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-import org.apache.maven.shared.transfer.dependencies.collect.DependencyCollectorException;
-
-import java.lang.reflect.InvocationTargetException;
-
-/**
- * Invokes method on objects using reflection.
- */
-final class Invoker
-{
-    private Invoker()
-    {
-        // do not instantiate
-    }
-
-    public static <T> T invoke( Object object, String method ) throws DependencyCollectorException
-    {
-        try
-        {
-            @SuppressWarnings( "unchecked" )
-            T invoke = (T) object.getClass().getMethod( method ).invoke( object );
-            return invoke;
-        }
-        catch ( IllegalAccessException | InvocationTargetException | NoSuchMethodException e )
-        {
-            throw new DependencyCollectorException( e.getMessage(), e );
-        }
-    }
-
-    public static <T> T invoke( Class<?> objectClazz, String staticMethod, Class<?> argClazz, Object arg )
-            throws DependencyCollectorException
-    {
-        try
-        {
-            @SuppressWarnings( "unchecked" )
-            T invoke = (T) objectClazz.getMethod( staticMethod, argClazz ).invoke( null, arg );
-            return invoke;
-        }
-        catch ( IllegalAccessException | InvocationTargetException | NoSuchMethodException e )
-        {
-            throw new DependencyCollectorException( e.getMessage(), e );
-        }
-    }
-
-    /**
-     * @param objectClazz  the class of the static method
-     * @param staticMethod the static method to call
-     * @param argClasses   the classes of the argument, used to select the right static method
-     * @param args         the actual arguments to be passed
-     * @return the result of the method invocation
-     * @throws DependencyCollectorException if any checked exception occurs
-     */
-    public static <T> T invoke( Class<?> objectClazz, String staticMethod, Class<?>[] argClasses, Object[] args )
-            throws DependencyCollectorException
-    {
-        if ( args.length != argClasses.length )
-        {
-            throw new IllegalArgumentException( "The number of elements in argClasses and args are not the same." );
-        }
-
-        try
-        {
-            @SuppressWarnings( "unchecked" )
-            T invoke = (T) objectClazz.getMethod( staticMethod, argClasses ).invoke( null, args );
-            return invoke;
-        }
-        catch ( IllegalAccessException | InvocationTargetException | NoSuchMethodException e )
-        {
-            throw new DependencyCollectorException( e.getMessage(), e );
-        }
-    }
-
-}
diff --git a/src/main/java/org/apache/maven/shared/transfer/dependencies/collect/internal/Maven31DependencyCollector.java b/src/main/java/org/apache/maven/shared/transfer/dependencies/collect/internal/Maven31DependencyCollector.java
index 50f3700..924637a 100644
--- a/src/main/java/org/apache/maven/shared/transfer/dependencies/collect/internal/Maven31DependencyCollector.java
+++ b/src/main/java/org/apache/maven/shared/transfer/dependencies/collect/internal/Maven31DependencyCollector.java
@@ -19,9 +19,6 @@ package org.apache.maven.shared.transfer.dependencies.collect.internal;
  * under the License.
  */
 
-import java.util.ArrayList;
-import java.util.List;
-
 import org.apache.maven.RepositoryUtils;
 import org.apache.maven.artifact.handler.ArtifactHandler;
 import org.apache.maven.artifact.handler.manager.ArtifactHandlerManager;
@@ -40,6 +37,11 @@ import org.eclipse.aether.collection.DependencyCollectionException;
 import org.eclipse.aether.graph.Dependency;
 import org.eclipse.aether.repository.RemoteRepository;
 
+import java.util.ArrayList;
+import java.util.List;
+
+import static org.apache.maven.RepositoryUtils.toDependency;
+
 /**
  * Maven 3.1+ implementation of the {@link DependencyCollector}
  *
@@ -65,22 +67,11 @@ class Maven31DependencyCollector implements MavenDependencyCollector
         this.aetherRepositories = aetherRepositories;
     }
 
-    private static Dependency toDependency( org.apache.maven.model.Dependency mavenDependency,
-            ArtifactTypeRegistry typeRegistry ) throws DependencyCollectorException
-    {
-        Class<?>[] argClasses = new Class<?>[] {org.apache.maven.model.Dependency.class, ArtifactTypeRegistry.class};
-
-        Object[] args = new Object[] {mavenDependency, typeRegistry};
-
-        return Invoker.invoke( RepositoryUtils.class, "toDependency", argClasses, args );
-    }
-
     @Override
     public CollectorResult collectDependencies( org.apache.maven.model.Dependency root )
             throws DependencyCollectorException
     {
-        ArtifactTypeRegistry typeRegistry = Invoker.invoke( RepositoryUtils.class, "newArtifactTypeRegistry",
-                ArtifactHandlerManager.class, artifactHandlerManager );
+        ArtifactTypeRegistry typeRegistry = RepositoryUtils.newArtifactTypeRegistry( artifactHandlerManager );
 
         CollectRequest request = new CollectRequest();
         request.setRoot( toDependency( root, typeRegistry ) );
@@ -118,8 +109,7 @@ class Maven31DependencyCollector implements MavenDependencyCollector
         CollectRequest request = new CollectRequest();
         request.setRoot( new Dependency( aetherArtifact, null ) );
 
-        ArtifactTypeRegistry typeRegistry = Invoker.invoke( RepositoryUtils.class, "newArtifactTypeRegistry",
-                ArtifactHandlerManager.class, artifactHandlerManager );
+        ArtifactTypeRegistry typeRegistry = RepositoryUtils.newArtifactTypeRegistry( artifactHandlerManager );
 
         List<Dependency> aetherDependencies = new ArrayList<>( root.getDependencies().size() );
         for ( org.apache.maven.model.Dependency mavenDependency : root.getDependencies() )
diff --git a/src/main/java/org/apache/maven/shared/transfer/dependencies/collect/internal/Maven31DependencyNodeAdapter.java b/src/main/java/org/apache/maven/shared/transfer/dependencies/collect/internal/Maven31DependencyNodeAdapter.java
index f0cccc4..d5584dc 100644
--- a/src/main/java/org/apache/maven/shared/transfer/dependencies/collect/internal/Maven31DependencyNodeAdapter.java
+++ b/src/main/java/org/apache/maven/shared/transfer/dependencies/collect/internal/Maven31DependencyNodeAdapter.java
@@ -19,17 +19,18 @@ package org.apache.maven.shared.transfer.dependencies.collect.internal;
  * under the License.
  */
 
-import java.util.ArrayList;
-import java.util.List;
-
-import org.apache.maven.RepositoryUtils;
 import org.apache.maven.artifact.Artifact;
 import org.apache.maven.artifact.repository.ArtifactRepository;
-import org.apache.maven.shared.transfer.dependencies.collect.DependencyCollectorException;
 import org.apache.maven.shared.transfer.graph.DependencyNode;
 import org.apache.maven.shared.transfer.graph.DependencyVisitor;
 import org.eclipse.aether.repository.RemoteRepository;
 
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Objects;
+
+import static org.apache.maven.RepositoryUtils.toArtifact;
+
 /**
  * DependencyCollectorNode wrapper around {@link org.eclipse.aether.graph.DependencyNode}
  *
@@ -52,7 +53,7 @@ class Maven31DependencyNodeAdapter implements DependencyNode
     @Override
     public Artifact getArtifact()
     {
-        return getArtifact( dependencyNode.getArtifact() );
+        return toArtifact( dependencyNode.getArtifact() );
     }
 
     @Override
@@ -134,30 +135,6 @@ class Maven31DependencyNodeAdapter implements DependencyNode
         }
 
         Maven31DependencyNodeAdapter other = (Maven31DependencyNodeAdapter) obj;
-        if ( dependencyNode == null )
-        {
-            if ( other.dependencyNode != null )
-            {
-                return false;
-            }
-        }
-        else if ( !dependencyNode.equals( other.dependencyNode ) )
-        {
-            return false;
-        }
-        return true;
-    }
-
-    private Artifact getArtifact( org.eclipse.aether.artifact.Artifact aetherArtifact )
-    {
-        try
-        {
-            return Invoker.invoke( RepositoryUtils.class, "toArtifact",
-                org.eclipse.aether.artifact.Artifact.class, aetherArtifact );
-        }
-        catch ( DependencyCollectorException e )
-        {
-            throw new RuntimeException( e );
-        }
+        return Objects.equals( dependencyNode, other.dependencyNode );
     }
 }
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 5d51e97..241fb30 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
@@ -60,8 +60,8 @@ class DefaultDependencyResolver implements DependencyResolver, Contextualizable
 
         try
         {
-            return getMavenDependencyResolver( buildingRequest ).resolveDependencies( coordinates, managedDependencies,
-                    filter );
+            return getMavenDependencyResolver( buildingRequest )
+                    .resolveDependencies( coordinates, managedDependencies, filter );
         }
         catch ( ComponentLookupException e )
         {
@@ -130,16 +130,15 @@ class DefaultDependencyResolver implements DependencyResolver, Contextualizable
     }
 
     private MavenDependencyResolver getMavenDependencyResolver( ProjectBuildingRequest buildingRequest )
-            throws ComponentLookupException, DependencyResolverException
+            throws ComponentLookupException
     {
         ArtifactHandlerManager artifactHandlerManager = container.lookup( ArtifactHandlerManager.class );
 
         RepositorySystem m31RepositorySystem = container.lookup( RepositorySystem.class );
 
-        RepositorySystemSession session = Invoker.invoke( buildingRequest, "getRepositorySession" );
+        RepositorySystemSession session = buildingRequest.getRepositorySession();
 
-        List<RemoteRepository> aetherRepositories = Invoker.invoke(
-                RepositoryUtils.class, "toRepos", List.class, buildingRequest.getRemoteRepositories() );
+        List<RemoteRepository> aetherRepositories = RepositoryUtils.toRepos( 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
deleted file mode 100644
index dc7ad4c..0000000
--- a/src/main/java/org/apache/maven/shared/transfer/dependencies/resolve/internal/Invoker.java
+++ /dev/null
@@ -1,95 +0,0 @@
-package org.apache.maven.shared.transfer.dependencies.resolve.internal;
-
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-import java.lang.reflect.InvocationTargetException;
-
-import org.apache.maven.shared.transfer.dependencies.resolve.DependencyResolverException;
-
-/**
- * Invokes method on objects using reflection.
- */
-final class Invoker
-{
-    private Invoker()
-    {
-        // do not instantiate
-    }
-
-    public static <T> T invoke( Object object, String method )
-        throws DependencyResolverException
-    {
-        try
-        {
-            @SuppressWarnings( "unchecked" )
-            T invoke = (T) object.getClass().getMethod( method ).invoke( object );
-            return invoke;
-        }
-        catch ( IllegalAccessException | InvocationTargetException | NoSuchMethodException e )
-        {
-            throw new DependencyResolverException( e.getMessage(), e );
-        }
-    }
-
-    public static <T> T invoke( Class<?> objectClazz, String staticMethod, Class<?> argClazz, Object arg )
-        throws DependencyResolverException
-    {
-        try
-        {
-            @SuppressWarnings( "unchecked" )
-            T invoke = (T) objectClazz.getMethod( staticMethod, argClazz ).invoke( null, arg );
-            return invoke;
-        }
-        catch ( IllegalAccessException | InvocationTargetException | NoSuchMethodException e )
-        {
-            throw new DependencyResolverException( e.getMessage(), e );
-        }
-    }
-
-    /**
-     * <strong>Note:</strong> Ensure that argClasses and args have the same number of elements
-     * 
-     * @param objectClazz the class of the static method
-     * @param staticMethod the static method to call
-     * @param argClasses the classes of the argument, used to select the right static method
-     * @param args the actual arguments to be passed
-     * @return the result of the method invocation
-     * @throws DependencyResolverException if any checked exception occurs
-     */
-    public static <T> T invoke( Class<?> objectClazz, String staticMethod, Class<?>[] argClasses, Object[] args )
-        throws DependencyResolverException
-    {
-        if ( args.length != argClasses.length )
-        {
-            throw new IllegalArgumentException( "The number of elements in argClasses and args are not the same." );
-        }
-
-        try
-        {
-            @SuppressWarnings( "unchecked" )
-            T invoke = (T) objectClazz.getMethod( staticMethod, argClasses ).invoke( null, args );
-            return invoke;
-        }
-        catch ( IllegalAccessException | InvocationTargetException | NoSuchMethodException e )
-        {
-            throw new DependencyResolverException( e.getMessage(), e );
-        }
-    }
-}
diff --git a/src/main/java/org/apache/maven/shared/transfer/dependencies/resolve/internal/Maven31ArtifactResult.java b/src/main/java/org/apache/maven/shared/transfer/dependencies/resolve/internal/Maven31ArtifactResult.java
index fe26ce4..db9c206 100644
--- a/src/main/java/org/apache/maven/shared/transfer/dependencies/resolve/internal/Maven31ArtifactResult.java
+++ b/src/main/java/org/apache/maven/shared/transfer/dependencies/resolve/internal/Maven31ArtifactResult.java
@@ -20,9 +20,8 @@ package org.apache.maven.shared.transfer.dependencies.resolve.internal;
  */
 
 import org.apache.maven.RepositoryUtils;
-import org.apache.maven.shared.transfer.dependencies.resolve.DependencyResolverException;
+import org.apache.maven.artifact.Artifact;
 import org.eclipse.aether.resolution.ArtifactResult;
-import org.eclipse.aether.artifact.Artifact;
 
 /**
  * {@link org.apache.maven.shared.transfer.artifact.resolve.ArtifactResult} wrapper for {@link ArtifactResult}
@@ -44,16 +43,8 @@ class Maven31ArtifactResult
     }
 
     @Override
-    public org.apache.maven.artifact.Artifact getArtifact()
+    public Artifact getArtifact()
     {
-        try
-        {
-            return Invoker.invoke( RepositoryUtils.class, "toArtifact",
-                                                                        Artifact.class, artifactResult.getArtifact() );
-        }
-        catch ( DependencyResolverException e )
-        {
-            throw new RuntimeException( e );
-        }
+        return RepositoryUtils.toArtifact( artifactResult.getArtifact() );
     }
 }
diff --git a/src/main/java/org/apache/maven/shared/transfer/dependencies/resolve/internal/Maven31DependencyResolver.java b/src/main/java/org/apache/maven/shared/transfer/dependencies/resolve/internal/Maven31DependencyResolver.java
index ea35bc5..8c04e58 100644
--- a/src/main/java/org/apache/maven/shared/transfer/dependencies/resolve/internal/Maven31DependencyResolver.java
+++ b/src/main/java/org/apache/maven/shared/transfer/dependencies/resolve/internal/Maven31DependencyResolver.java
@@ -93,22 +93,11 @@ class Maven31DependencyResolver implements MavenDependencyResolver
         return new Dependency( artifact, null );
     }
 
-    private static Dependency toDependency( org.apache.maven.model.Dependency root, ArtifactTypeRegistry typeRegistry )
-            throws DependencyResolverException
-    {
-        Object[] args = new Object[] {root, typeRegistry};
-
-        return Invoker.invoke( RepositoryUtils.class, "toDependency", ARG_CLASSES, args );
-    }
-
     @Override
-    // CHECKSTYLE_OFF: LineLength
     public Iterable<org.apache.maven.shared.transfer.artifact.resolve.ArtifactResult> resolveDependencies(
-            DependableCoordinate coordinate, TransformableFilter dependencyFilter )
-        // CHECKSTYLE_ON: LineLength
-            throws DependencyResolverException
+            DependableCoordinate coordinate, TransformableFilter dependencyFilter ) throws DependencyResolverException
     {
-        ArtifactTypeRegistry typeRegistry = createTypeRegistry();
+        ArtifactTypeRegistry typeRegistry = RepositoryUtils.newArtifactTypeRegistry( artifactHandlerManager );
 
         Dependency aetherRoot = toDependency( coordinate, typeRegistry );
 
@@ -117,18 +106,9 @@ class Maven31DependencyResolver implements MavenDependencyResolver
         return resolveDependencies( dependencyFilter, request );
     }
 
-    private ArtifactTypeRegistry createTypeRegistry() throws DependencyResolverException
-    {
-        return Invoker.invoke( RepositoryUtils.class, "newArtifactTypeRegistry", ArtifactHandlerManager.class,
-                artifactHandlerManager );
-    }
-
     @Override
-    // CHECKSTYLE_OFF: LineLength
     public Iterable<org.apache.maven.shared.transfer.artifact.resolve.ArtifactResult> resolveDependencies( Model model,
-            TransformableFilter dependencyFilter )
-        // CHECKSTYLE_ON: LineLength
-            throws DependencyResolverException
+            TransformableFilter dependencyFilter ) throws DependencyResolverException
     {
         // Are there examples where packaging and type are NOT in sync
         ArtifactHandler artifactHandler = artifactHandlerManager.getArtifactHandler( model.getPackaging() );
@@ -156,36 +136,30 @@ class Maven31DependencyResolver implements MavenDependencyResolver
     /**
      * @param mavenDependencies {@link org.apache.maven.model.Dependency} can be {@code null}.
      * @return List of resolved dependencies.
-     * @throws DependencyResolverException in case of a failure of the typeRegistry error.
      */
-    // CHECKSTYLE_OFF: LineLength
     private List<Dependency> resolveDependencies( Collection<org.apache.maven.model.Dependency> mavenDependencies )
-            throws DependencyResolverException
-    // CHECKSTYLE_ON: LineLength
     {
         if ( mavenDependencies == null )
         {
             return Collections.emptyList();
         }
 
-        ArtifactTypeRegistry typeRegistry = createTypeRegistry();
+        ArtifactTypeRegistry typeRegistry = RepositoryUtils.newArtifactTypeRegistry( artifactHandlerManager );
 
         List<Dependency> aetherDependencies = new ArrayList<>( mavenDependencies.size() );
 
         for ( org.apache.maven.model.Dependency mavenDependency : mavenDependencies )
         {
-            aetherDependencies.add( toDependency( mavenDependency, typeRegistry ) );
+            aetherDependencies.add( RepositoryUtils.toDependency( mavenDependency, typeRegistry ) );
         }
 
         return aetherDependencies;
     }
 
     @Override
-    // CHECKSTYLE_OFF: LineLength
     public Iterable<org.apache.maven.shared.transfer.artifact.resolve.ArtifactResult> resolveDependencies(
             Collection<org.apache.maven.model.Dependency> mavenDependencies,
             Collection<org.apache.maven.model.Dependency> managedMavenDependencies, TransformableFilter filter )
-        // CHECKSTYLE_ON: LineLength
             throws DependencyResolverException
     {
 
@@ -198,10 +172,8 @@ class Maven31DependencyResolver implements MavenDependencyResolver
         return resolveDependencies( filter, request );
     }
 
-    // CHECKSTYLE_OFF: LineLength
     private Iterable<org.apache.maven.shared.transfer.artifact.resolve.ArtifactResult> resolveDependencies(
             TransformableFilter dependencyFilter, CollectRequest request ) throws DependencyResolverException
-    // CHECKSTYLE_ON: LineLength
     {
         try
         {
diff --git a/src/main/java/org/apache/maven/shared/transfer/repository/internal/DefaultRepositoryManager.java b/src/main/java/org/apache/maven/shared/transfer/repository/internal/DefaultRepositoryManager.java
index c1ee372..3c9aa51 100644
--- a/src/main/java/org/apache/maven/shared/transfer/repository/internal/DefaultRepositoryManager.java
+++ b/src/main/java/org/apache/maven/shared/transfer/repository/internal/DefaultRepositoryManager.java
@@ -19,8 +19,6 @@ package org.apache.maven.shared.transfer.repository.internal;
  * under the License.
  */
 
-import java.io.File;
-
 import org.apache.maven.artifact.Artifact;
 import org.apache.maven.artifact.metadata.ArtifactMetadata;
 import org.apache.maven.project.ProjectBuildingRequest;
@@ -28,7 +26,6 @@ import org.apache.maven.project.artifact.ProjectArtifactMetadata;
 import org.apache.maven.shared.transfer.artifact.ArtifactCoordinate;
 import org.apache.maven.shared.transfer.artifact.DefaultArtifactCoordinate;
 import org.apache.maven.shared.transfer.repository.RepositoryManager;
-import org.apache.maven.shared.transfer.repository.RepositoryManagerException;
 import org.codehaus.plexus.PlexusConstants;
 import org.codehaus.plexus.PlexusContainer;
 import org.codehaus.plexus.component.annotations.Component;
@@ -37,7 +34,8 @@ import org.codehaus.plexus.context.Context;
 import org.codehaus.plexus.context.ContextException;
 import org.codehaus.plexus.personality.plexus.lifecycle.phase.Contextualizable;
 import org.eclipse.aether.RepositorySystem;
-import org.eclipse.aether.RepositorySystemSession;
+
+import java.io.File;
 
 /**
  * 
@@ -55,7 +53,7 @@ class DefaultRepositoryManager
         {
             return getMavenRepositoryManager( buildingRequest ).getPathForLocalArtifact( artifact );
         }
-        catch ( ComponentLookupException | RepositoryManagerException e )
+        catch ( ComponentLookupException e )
         {
             throw new IllegalStateException( e.getMessage(), e );
         }
@@ -68,7 +66,7 @@ class DefaultRepositoryManager
         {
             return getMavenRepositoryManager( buildingRequest ).getPathForLocalArtifact( coor );
         }
-        catch ( ComponentLookupException | RepositoryManagerException e )
+        catch ( ComponentLookupException e )
         {
             throw new IllegalStateException( e.getMessage(), e );
         }
@@ -91,7 +89,7 @@ class DefaultRepositoryManager
         {
             return getMavenRepositoryManager( buildingRequest ).getPathForLocalMetadata( metadata );
         }
-        catch ( ComponentLookupException | RepositoryManagerException e )
+        catch ( ComponentLookupException e )
         {
             throw new IllegalStateException( e.getMessage(), e );
         }
@@ -104,7 +102,7 @@ class DefaultRepositoryManager
         {
             return getMavenRepositoryManager( buildingRequest ).setLocalRepositoryBasedir( buildingRequest, basedir );
         }
-        catch ( ComponentLookupException | RepositoryManagerException e )
+        catch ( ComponentLookupException e )
         {
             throw new IllegalStateException( e.getMessage(), e );
         }
@@ -117,20 +115,18 @@ class DefaultRepositoryManager
         {
             return getMavenRepositoryManager( buildingRequest ).getLocalRepositoryBasedir();
         }
-        catch ( ComponentLookupException | RepositoryManagerException e )
+        catch ( ComponentLookupException e )
         {
             throw new IllegalStateException( e.getMessage(), e );
         }
     }
     
     private MavenRepositoryManager getMavenRepositoryManager( ProjectBuildingRequest buildingRequest )
-        throws ComponentLookupException, RepositoryManagerException
+        throws ComponentLookupException
     {
         RepositorySystem m31RepositorySystem = container.lookup( RepositorySystem.class );
 
-        RepositorySystemSession session = Invoker.invoke( buildingRequest, "getRepositorySession" );
-
-        return new Maven31RepositoryManager( m31RepositorySystem, session );
+        return new Maven31RepositoryManager( m31RepositorySystem, buildingRequest.getRepositorySession() );
     }
     
     public void contextualize( Context context ) throws ContextException
diff --git a/src/main/java/org/apache/maven/shared/transfer/repository/internal/Invoker.java b/src/main/java/org/apache/maven/shared/transfer/repository/internal/Invoker.java
deleted file mode 100644
index 48342dc..0000000
--- a/src/main/java/org/apache/maven/shared/transfer/repository/internal/Invoker.java
+++ /dev/null
@@ -1,79 +0,0 @@
-package org.apache.maven.shared.transfer.repository.internal;
-
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-import java.lang.reflect.InvocationTargetException;
-
-import org.apache.maven.shared.transfer.repository.RepositoryManagerException;
-
-/**
- * Invokes method on objects using reflection.
- */
-final class Invoker
-{
-    private Invoker()
-    {
-        // do not instantiate
-    }
-
-    public static <T> T invoke( Object object, String method )
-        throws RepositoryManagerException
-    {
-        try
-        {
-            @SuppressWarnings( "unchecked" )
-            T invoke = (T) object.getClass().getMethod( method ).invoke( object );
-            return invoke;
-        }
-        catch ( IllegalAccessException | InvocationTargetException | NoSuchMethodException e )
-        {
-            throw new RepositoryManagerException( e.getMessage(), e );
-        }
-    }
-
-    public static <T> T invoke( Object object, String method, Class<?> argClazz, Object arg )
-        throws RepositoryManagerException
-    {
-        try
-        {
-            final Class<?> objectClazz = object.getClass();
-            @SuppressWarnings( "unchecked" )
-            T invoke = (T) objectClazz.getMethod( method, argClazz ).invoke( object, arg );
-            return invoke;
-        }
-        catch ( IllegalAccessException | InvocationTargetException | NoSuchMethodException e )
-        {
-            throw new RepositoryManagerException( e.getMessage(), e );
-        }
-    }
-
-    public static Object invoke( Class<?> objectClazz, String staticMethod, Class<?> argClazz, Object arg )
-        throws RepositoryManagerException
-    {
-        try
-        {
-            return objectClazz.getMethod( staticMethod, argClazz ).invoke( null, arg );
-        }
-        catch ( IllegalAccessException | InvocationTargetException | NoSuchMethodException e )
-        {
-            throw new RepositoryManagerException( e.getMessage(), e );
-        }
-    }
-}
diff --git a/src/main/java/org/apache/maven/shared/transfer/repository/internal/Maven31RepositoryManager.java b/src/main/java/org/apache/maven/shared/transfer/repository/internal/Maven31RepositoryManager.java
index 8ca19c6..f7f6ecb 100644
--- a/src/main/java/org/apache/maven/shared/transfer/repository/internal/Maven31RepositoryManager.java
+++ b/src/main/java/org/apache/maven/shared/transfer/repository/internal/Maven31RepositoryManager.java
@@ -19,14 +19,11 @@ package org.apache.maven.shared.transfer.repository.internal;
  * under the License.
  */
 
-import java.io.File;
-
 import org.apache.maven.RepositoryUtils;
 import org.apache.maven.artifact.metadata.ArtifactMetadata;
 import org.apache.maven.project.DefaultProjectBuildingRequest;
 import org.apache.maven.project.ProjectBuildingRequest;
 import org.apache.maven.shared.transfer.artifact.ArtifactCoordinate;
-import org.apache.maven.shared.transfer.repository.RepositoryManagerException;
 import org.eclipse.aether.DefaultRepositoryCache;
 import org.eclipse.aether.DefaultRepositorySystemSession;
 import org.eclipse.aether.RepositorySystem;
@@ -39,6 +36,8 @@ import org.eclipse.aether.metadata.Metadata.Nature;
 import org.eclipse.aether.repository.LocalRepository;
 import org.eclipse.aether.repository.LocalRepositoryManager;
 
+import java.io.File;
+
 /**
  * 
  */
@@ -49,8 +48,7 @@ class Maven31RepositoryManager
 
     private final RepositorySystemSession session;
 
-    Maven31RepositoryManager( RepositorySystem repositorySystem, 
-                              RepositorySystemSession session )
+    Maven31RepositoryManager( RepositorySystem repositorySystem, RepositorySystemSession session )
     {
         this.repositorySystem = repositorySystem;
         this.session = session;
@@ -59,28 +57,14 @@ class Maven31RepositoryManager
     @Override
     public String getPathForLocalArtifact( org.apache.maven.artifact.Artifact mavenArtifact )
     {
-        Artifact aetherArtifact;
-
-        // LRM.getPathForLocalArtifact() won't throw an Exception, so translate reflection error to RuntimeException
-        try
-        {
-            aetherArtifact = (Artifact) Invoker.invoke( RepositoryUtils.class, "toArtifact",
-                                                        org.apache.maven.artifact.Artifact.class, mavenArtifact );
-        }
-        catch ( RepositoryManagerException e )
-        {
-            throw new RuntimeException( e.getMessage(), e );
-        }
-
-        return session.getLocalRepositoryManager().getPathForLocalArtifact( aetherArtifact );
+        return session.getLocalRepositoryManager()
+                .getPathForLocalArtifact( RepositoryUtils.toArtifact( mavenArtifact ) );
     }
 
     @Override
     public String getPathForLocalArtifact( ArtifactCoordinate coordinate )
     {
-        Artifact aetherArtifact = toArtifact( coordinate );
-
-        return session.getLocalRepositoryManager().getPathForLocalArtifact( aetherArtifact );
+        return session.getLocalRepositoryManager().getPathForLocalArtifact( toArtifact( coordinate ) );
     }
     
     @Override
@@ -100,15 +84,7 @@ class Maven31RepositoryManager
     {
         ProjectBuildingRequest newRequest = new DefaultProjectBuildingRequest( buildingRequest );
 
-        RepositorySystemSession session;
-        try
-        {
-            session = Invoker.invoke( buildingRequest, "getRepositorySession" );
-        }
-        catch ( RepositoryManagerException e )
-        {
-            throw new RuntimeException( e.getMessage(), e );
-        }
+        RepositorySystemSession session = buildingRequest.getRepositorySession();
 
         // "clone" session and replace localRepository
         DefaultRepositorySystemSession newSession = new DefaultRepositorySystemSession( session );
@@ -123,15 +99,7 @@ class Maven31RepositoryManager
             repositorySystem.newLocalRepositoryManager( newSession, new LocalRepository( basedir, repositoryType ) );
 
         newSession.setLocalRepositoryManager( localRepositoryManager );
-
-        try
-        {
-            Invoker.invoke( newRequest, "setRepositorySession", RepositorySystemSession.class, newSession );
-        }
-        catch ( RepositoryManagerException e )
-        {
-            throw new RuntimeException( e.getMessage(), e );
-        }
+        newRequest.setRepositorySession( newSession );
 
         return newRequest;
     }