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
commit 7475735b0fdfc81debd6ef0d67a2c749f1bf2293 Author: Karl Heinz Marbaise <khmarba...@apache.org> AuthorDate: Sat Apr 4 14:20:55 2020 +0200 [MSHADRED-864] - Refactor and simplify code in Maven3{0,1}DependencyResolver --- Jenkinsfile | 2 +- pom.xml | 11 ++ .../artifact/deployer/ArtifactDeployerMojo.java | 8 +- .../artifact/installer/ArtifactInstallerMojo.java | 8 +- .../plugin/project/deploy/ProjectDeployerMojo.java | 16 +- .../project/install/ProjectInstallerMojo.java | 12 +- .../deploy/internal/DefaultArtifactDeployer.java | 41 +++-- .../transfer/artifact/deploy/internal/Invoker.java | 60 ++------ .../deploy/internal/Maven30ArtifactDeployer.java | 9 +- .../deploy/internal/Maven31ArtifactDeployer.java | 9 +- .../deploy/internal/MavenArtifactDeployer.java | 2 +- .../install/internal/DefaultArtifactInstaller.java | 40 +++-- .../artifact/install/internal/Invoker.java | 60 ++------ .../install/internal/Maven30ArtifactInstaller.java | 5 +- .../install/internal/Maven31ArtifactInstaller.java | 5 +- .../install/internal/MavenArtifactInstaller.java | 2 +- .../resolve/internal/DefaultArtifactResolver.java | 60 ++++---- .../artifact/resolve/internal/Invoker.java | 91 ++--------- .../resolve/internal/Maven30ArtifactResolver.java | 8 +- .../resolve/internal/Maven30ArtifactResult.java | 8 +- .../resolve/internal/Maven31ArtifactResolver.java | 16 +- .../resolve/internal/Maven31ArtifactResult.java | 2 +- .../resolve/internal/MavenArtifactResolver.java | 2 +- .../internal/DefaultDependencyCollector.java | 171 ++++++++++----------- .../transfer/collection/internal/Invoker.java | 107 +++---------- .../internal/Maven30DependencyCollector.java | 19 +-- .../internal/Maven30DependencyNodeAdapter.java | 2 +- .../internal/Maven31DependencyCollector.java | 16 +- .../internal/Maven31DependencyNodeAdapter.java | 2 +- .../internal/MavenDependencyCollector.java | 2 +- .../internal/DefaultDependencyCollector.java | 53 +++---- .../dependencies/collect/internal/Invoker.java | 120 +++------------ .../internal/Maven30DependencyCollector.java | 86 +++++------ .../internal/Maven31DependencyCollector.java | 87 +++++------ .../collect/internal/MavenDependencyCollector.java | 2 +- .../internal/DefaultDependencyResolver.java | 64 ++++---- .../dependencies/resolve/internal/Invoker.java | 79 +++------- .../resolve/internal/Maven30ArtifactResult.java | 8 +- .../internal/Maven30DependencyResolver.java | 147 ++++++++---------- .../resolve/internal/Maven31ArtifactResult.java | 2 +- .../internal/Maven31DependencyResolver.java | 129 +++++++--------- .../resolve/internal/MavenDependencyResolver.java | 2 +- .../install/internal/DefaultProjectInstaller.java | 4 +- .../transfer/repository/internal/Invoker.java | 48 ++---- .../internal/Maven31RepositoryManager.java | 2 +- 45 files changed, 568 insertions(+), 1061 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index e807e72..c077a2e 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -20,4 +20,4 @@ // Currently we can only build with JDK8+ based on the usage // of takari-plugin-integration-testing within integration // tests. -asfMavenTlpStdBuild( 'jdks' : ["8", "9", "10", "11" ] ) +asfMavenTlpStdBuild( 'jdks' : ["8", "9", "10", "11", "14", "15" ] ) diff --git a/pom.xml b/pom.xml index 1bcca0b..5b86b7c 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/it/maven-artifact-deployer-plugin/src/main/java/org/apache/maven/plugin/artifact/deployer/ArtifactDeployerMojo.java b/src/it/maven-artifact-deployer-plugin/src/main/java/org/apache/maven/plugin/artifact/deployer/ArtifactDeployerMojo.java index 2e40e67..07c72fd 100644 --- a/src/it/maven-artifact-deployer-plugin/src/main/java/org/apache/maven/plugin/artifact/deployer/ArtifactDeployerMojo.java +++ b/src/it/maven-artifact-deployer-plugin/src/main/java/org/apache/maven/plugin/artifact/deployer/ArtifactDeployerMojo.java @@ -130,13 +130,9 @@ public class ArtifactDeployerMojo deployer.deploy( session.getProjectBuildingRequest(), mavenArtifacts ); } - catch ( ArtifactDeployerException e ) + catch ( ArtifactDeployerException | IOException e ) { - throw new MojoExecutionException( "ArtifactDeployerException", e ); - } - catch ( IOException e ) - { - throw new MojoExecutionException( "IOException", e ); + throw new MojoExecutionException( e.getClass().getName(), e ); } } diff --git a/src/it/maven-artifact-installer-plugin/src/main/java/org/apache/maven/plugin/artifact/installer/ArtifactInstallerMojo.java b/src/it/maven-artifact-installer-plugin/src/main/java/org/apache/maven/plugin/artifact/installer/ArtifactInstallerMojo.java index f9f1496..3f7d5a1 100644 --- a/src/it/maven-artifact-installer-plugin/src/main/java/org/apache/maven/plugin/artifact/installer/ArtifactInstallerMojo.java +++ b/src/it/maven-artifact-installer-plugin/src/main/java/org/apache/maven/plugin/artifact/installer/ArtifactInstallerMojo.java @@ -127,13 +127,9 @@ public class ArtifactInstallerMojo installer.install( session.getProjectBuildingRequest(), mavenArtifacts ); } - catch ( ArtifactInstallerException e ) + catch ( ArtifactInstallerException | IOException e ) { - throw new MojoExecutionException( "ArtifactInstallerException", e ); - } - catch ( IOException e ) - { - throw new MojoExecutionException( "IOException", e ); + throw new MojoExecutionException( e.getClass().getName(), e ); } } diff --git a/src/it/maven-project-deployer-plugin/src/main/java/org/apache/maven/plugin/project/deploy/ProjectDeployerMojo.java b/src/it/maven-project-deployer-plugin/src/main/java/org/apache/maven/plugin/project/deploy/ProjectDeployerMojo.java index 26c794e..39a2fb7 100644 --- a/src/it/maven-project-deployer-plugin/src/main/java/org/apache/maven/plugin/project/deploy/ProjectDeployerMojo.java +++ b/src/it/maven-project-deployer-plugin/src/main/java/org/apache/maven/plugin/project/deploy/ProjectDeployerMojo.java @@ -114,21 +114,9 @@ public class ProjectDeployerMojo ArtifactRepository repo = session.getCurrentProject().getDistributionManagementArtifactRepository(); deployer.deploy( session.getProjectBuildingRequest(), pdr, repo ); } - catch ( IOException e ) + catch ( IOException | NoFileAssignedException | IllegalArgumentException | ArtifactDeployerException e ) { - throw new MojoExecutionException( "IOException", e ); - } - catch ( NoFileAssignedException e ) - { - throw new MojoExecutionException( "NoFileAssignedException", e ); - } - catch ( IllegalArgumentException e ) - { - throw new MojoExecutionException( "IllegalArgumentException", e ); - } - catch ( ArtifactDeployerException e ) - { - throw new MojoExecutionException( "ArtifactDeployerException", e ); + throw new MojoExecutionException( e.getClass().getName(), e); } } diff --git a/src/it/maven-project-installer-plugin/src/main/java/org/apache/maven/plugin/project/install/ProjectInstallerMojo.java b/src/it/maven-project-installer-plugin/src/main/java/org/apache/maven/plugin/project/install/ProjectInstallerMojo.java index 2e6a878..ee932aa 100644 --- a/src/it/maven-project-installer-plugin/src/main/java/org/apache/maven/plugin/project/install/ProjectInstallerMojo.java +++ b/src/it/maven-project-installer-plugin/src/main/java/org/apache/maven/plugin/project/install/ProjectInstallerMojo.java @@ -110,17 +110,9 @@ public class ProjectInstallerMojo pir.setProject( session.getCurrentProject()); installer.install( pbr, pir ); } - catch ( ArtifactInstallerException e ) + catch ( ArtifactInstallerException | IOException | NoFileAssignedException e ) { - throw new MojoExecutionException( "ArtifactInstallerException", e ); - } - catch ( IOException e ) - { - throw new MojoExecutionException( "IOException", e ); - } - catch ( NoFileAssignedException e ) - { - throw new MojoExecutionException( "NoFileAssignedException", e ); + throw new MojoExecutionException( e.getClass().getName(), e ); } } 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..ff2b097 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 @@ -35,18 +35,17 @@ import org.codehaus.plexus.context.ContextException; import org.codehaus.plexus.personality.plexus.lifecycle.phase.Contextualizable; /** - * + * */ @Component( role = ArtifactDeployer.class ) -class DefaultArtifactDeployer - implements ArtifactDeployer, Contextualizable +class DefaultArtifactDeployer implements ArtifactDeployer, Contextualizable { private PlexusContainer container; @Override public void deploy( ProjectBuildingRequest request, Collection<Artifact> mavenArtifacts ) - throws ArtifactDeployerException + throws ArtifactDeployerException { validateParameters( request, mavenArtifacts ); @@ -62,8 +61,7 @@ class DefaultArtifactDeployer @Override public void deploy( ProjectBuildingRequest request, ArtifactRepository remoteRepository, - Collection<Artifact> mavenArtifacts ) - throws ArtifactDeployerException + Collection<Artifact> mavenArtifacts ) throws ArtifactDeployerException { validateParameters( request, mavenArtifacts ); try @@ -120,33 +118,32 @@ class DefaultArtifactDeployer * @param context Plexus context to inject. * @throws ContextException if the PlexusContainer could not be located. */ - public void contextualize( Context context ) - throws ContextException + public void contextualize( Context context ) throws ContextException { container = (PlexusContainer) context.get( PlexusConstants.PLEXUS_KEY ); } - + private MavenArtifactDeployer getMavenArtifactDeployer( ProjectBuildingRequest buildingRequest ) - throws ComponentLookupException, ArtifactDeployerException + throws ComponentLookupException, ArtifactDeployerException { if ( isMaven31() ) { - 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.RepositorySystem repositorySystem = container.lookup( + org.eclipse.aether.RepositorySystem.class ); + + org.eclipse.aether.RepositorySystemSession session = Invoker.invoke( buildingRequest, + "getRepositorySession" ); + return new Maven31ArtifactDeployer( repositorySystem, session ); } else { - 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.RepositorySystem repositorySystem = container.lookup( + org.sonatype.aether.RepositorySystem.class ); + + 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..485e58d 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,71 +33,31 @@ final class Invoker // do not instantiate } - public static Object invoke( Object object, String method ) - throws ArtifactDeployerException - { - return invoke( object.getClass(), object, method ); - } - - public static Object invoke( Class<?> objectClazz, Object object, String method ) + public static <T> T invoke( Object object, String method ) throws ArtifactDeployerException { try { - return objectClazz.getMethod( method ).invoke( object ); - } - catch ( IllegalAccessException e ) - { - throw new ArtifactDeployerException( e.getMessage(), e ); - } - catch ( InvocationTargetException e ) - { - throw new ArtifactDeployerException( e.getMessage(), e ); + @SuppressWarnings( "unchecked" ) + T invoke = (T) object.getClass().getMethod( method ).invoke( object ); + return invoke; } - catch ( NoSuchMethodException e ) + catch ( IllegalAccessException | InvocationTargetException | NoSuchMethodException e ) { throw new ArtifactDeployerException( e.getMessage(), e ); } } - 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 ); - } - catch ( IllegalAccessException e ) - { - throw new ArtifactDeployerException( e.getMessage(), e ); - } - catch ( InvocationTargetException e ) - { - throw new ArtifactDeployerException( e.getMessage(), e ); + @SuppressWarnings( "unchecked" ) + T invoke = (T) objectClazz.getMethod( staticMethod, argClazz ).invoke( null, arg ); + return invoke; } - catch ( NoSuchMethodException e ) + catch ( IllegalAccessException | InvocationTargetException | NoSuchMethodException e ) { throw new ArtifactDeployerException( e.getMessage(), 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..611eb4c 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; @@ -132,11 +131,9 @@ class Maven30ArtifactDeployer private RemoteRepository getRemoteRepository( RepositorySystemSession session, ArtifactRepository remoteRepository ) 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 if ( aetherRepo.getAuthentication() == null ) { 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..8865c69 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; @@ -103,7 +102,7 @@ class Maven31ArtifactDeployer Artifact pomArtifact = new SubArtifact( aetherArtifact, "", "pom" ); pomArtifact = pomArtifact.setFile( ( (ProjectArtifactMetadata) metadata ).getFile() ); request.addArtifact( pomArtifact ); - } + } else if ( // metadata instanceof SnapshotArtifactRepositoryMetadata || metadata instanceof ArtifactRepositoryMetadata ) { @@ -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/deploy/internal/MavenArtifactDeployer.java b/src/main/java/org/apache/maven/shared/transfer/artifact/deploy/internal/MavenArtifactDeployer.java index c4f0446..8f9fea1 100644 --- a/src/main/java/org/apache/maven/shared/transfer/artifact/deploy/internal/MavenArtifactDeployer.java +++ b/src/main/java/org/apache/maven/shared/transfer/artifact/deploy/internal/MavenArtifactDeployer.java @@ -30,7 +30,7 @@ import org.apache.maven.shared.transfer.artifact.deploy.ArtifactDeployerExceptio * @author Robert Scholte * */ -public interface MavenArtifactDeployer +interface MavenArtifactDeployer { void deploy( Collection<Artifact> mavenArtifacts ) 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..738f00e 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 @@ -36,19 +36,18 @@ import org.codehaus.plexus.context.ContextException; import org.codehaus.plexus.personality.plexus.lifecycle.phase.Contextualizable; /** - * + * */ @Component( role = ArtifactInstaller.class ) -class DefaultArtifactInstaller - implements ArtifactInstaller, Contextualizable +class DefaultArtifactInstaller implements ArtifactInstaller, Contextualizable { private PlexusContainer container; - + private RepositoryManager repositoryManager; @Override public void install( ProjectBuildingRequest request, Collection<Artifact> mavenArtifacts ) - throws ArtifactInstallerException, IllegalArgumentException + throws ArtifactInstallerException, IllegalArgumentException { validateParameters( request, mavenArtifacts ); try @@ -63,7 +62,7 @@ class DefaultArtifactInstaller @Override public void install( ProjectBuildingRequest request, File localRepositry, Collection<Artifact> mavenArtifacts ) - throws ArtifactInstallerException + throws ArtifactInstallerException { validateParameters( request, mavenArtifacts ); if ( localRepositry == null ) @@ -76,7 +75,7 @@ class DefaultArtifactInstaller } // TODO: Should we check for exists() ? - + // update local repo in request ProjectBuildingRequest newRequest = repositoryManager.setLocalRepositoryBasedir( request, localRepositry ); @@ -134,32 +133,31 @@ class DefaultArtifactInstaller * @param context Plexus context to inject. * @throws ContextException if the PlexusContainer could not be located. */ - public void contextualize( Context context ) - throws ContextException + public void contextualize( Context context ) throws ContextException { container = (PlexusContainer) context.get( PlexusConstants.PLEXUS_KEY ); } - + private MavenArtifactInstaller getMavenArtifactInstaller( ProjectBuildingRequest buildingRequest ) - throws ComponentLookupException, ArtifactInstallerException + throws ComponentLookupException, ArtifactInstallerException { if ( isMaven31() ) { - 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.RepositorySystem repositorySystem = container.lookup( + org.eclipse.aether.RepositorySystem.class ); + + org.eclipse.aether.RepositorySystemSession session = Invoker.invoke( buildingRequest, + "getRepositorySession" ); return new Maven31ArtifactInstaller( repositorySystem, session ); } else { - 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.RepositorySystem repositorySystem = container.lookup( + org.sonatype.aether.RepositorySystem.class ); + + 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..eb8c69e 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,71 +33,31 @@ final class Invoker // do not instantiate } - public static Object invoke( Object object, String method ) - throws ArtifactInstallerException - { - return invoke( object.getClass(), object, method ); - } - - public static Object invoke( Class<?> objectClazz, Object object, String method ) - throws ArtifactInstallerException - { - try - { - return objectClazz.getMethod( method ).invoke( object ); - } - 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( Object object, String method, Class<?> argClazz, Object arg ) + public static <T> T invoke( Object object, String method ) 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 ); + @SuppressWarnings( "unchecked" ) + T invoke = (T) object.getClass().getMethod( method ).invoke( object ); + return invoke; } - catch ( NoSuchMethodException e ) + catch ( IllegalAccessException | InvocationTargetException | NoSuchMethodException e ) { throw new ArtifactInstallerException( 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 ArtifactInstallerException { try { - return objectClazz.getMethod( staticMethod, argClazz ).invoke( null, arg ); - } - catch ( IllegalAccessException e ) - { - throw new ArtifactInstallerException( e.getMessage(), e ); - } - catch ( InvocationTargetException e ) - { - throw new ArtifactInstallerException( e.getMessage(), e ); + @SuppressWarnings( "unchecked" ) + T invoke = (T) objectClazz.getMethod( staticMethod, argClazz ).invoke( null, arg ); + return invoke; } - catch ( NoSuchMethodException e ) + catch ( IllegalAccessException | InvocationTargetException | NoSuchMethodException e ) { throw new ArtifactInstallerException( e.getMessage(), 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/install/internal/MavenArtifactInstaller.java b/src/main/java/org/apache/maven/shared/transfer/artifact/install/internal/MavenArtifactInstaller.java index 7670d57..6d6509d 100644 --- a/src/main/java/org/apache/maven/shared/transfer/artifact/install/internal/MavenArtifactInstaller.java +++ b/src/main/java/org/apache/maven/shared/transfer/artifact/install/internal/MavenArtifactInstaller.java @@ -29,7 +29,7 @@ import org.apache.maven.shared.transfer.artifact.install.ArtifactInstallerExcept * @author Robert Scholte * */ -public interface MavenArtifactInstaller +interface MavenArtifactInstaller { void install( Collection<Artifact> mavenArtifacts ) throws ArtifactInstallerException; 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..00f6600 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 @@ -38,17 +38,16 @@ import org.codehaus.plexus.personality.plexus.lifecycle.phase.Contextualizable; /** - * + * */ @Component( role = ArtifactResolver.class, hint = "default" ) -class DefaultArtifactResolver - implements ArtifactResolver, Contextualizable +class DefaultArtifactResolver implements ArtifactResolver, Contextualizable { private PlexusContainer container; @Override public ArtifactResult resolveArtifact( ProjectBuildingRequest buildingRequest, Artifact mavenArtifact ) - throws ArtifactResolverException, IllegalArgumentException + throws ArtifactResolverException, IllegalArgumentException { validateParameters( buildingRequest, mavenArtifact ); try @@ -63,7 +62,7 @@ class DefaultArtifactResolver @Override public ArtifactResult resolveArtifact( ProjectBuildingRequest buildingRequest, ArtifactCoordinate coordinate ) - throws ArtifactResolverException, IllegalArgumentException + throws ArtifactResolverException, IllegalArgumentException { validateParameters( buildingRequest, coordinate ); try @@ -128,46 +127,39 @@ class DefaultArtifactResolver * @param context Plexus context to inject. * @throws ContextException if the PlexusContainer could not be located. */ - public void contextualize( Context context ) - throws ContextException + public void contextualize( Context context ) throws ContextException { container = (PlexusContainer) context.get( PlexusConstants.PLEXUS_KEY ); } - + private MavenArtifactResolver getMavenArtifactResolver( ProjectBuildingRequest buildingRequest ) - throws ComponentLookupException, ArtifactResolverException + throws ComponentLookupException, ArtifactResolverException { if ( isMaven31() ) { - 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" ); - + org.eclipse.aether.RepositorySystem repositorySystem = container.lookup( + org.eclipse.aether.RepositorySystem.class ); + + 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 ); - + } else { - 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" ); - + org.sonatype.aether.RepositorySystem repositorySystem = container.lookup( + org.sonatype.aether.RepositorySystem.class ); + + 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 d3ff34e..329e2c6 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 @@ -28,109 +28,40 @@ import org.apache.maven.shared.transfer.artifact.resolve.ArtifactResolverExcepti */ final class Invoker { + private Invoker() { // do not instantiate } - public static Object invoke( Object object, String method ) - throws ArtifactResolverException - { - return invoke( object.getClass(), object, method ); - } - - public static Object 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 ) + public static <T> T invoke( Object object, String method ) throws ArtifactResolverException { try { - final Class<?> objectClazz = object.getClass(); - return objectClazz.getMethod( method, argClazz ).invoke( object, arg ); - } - catch ( IllegalAccessException e ) - { - throw new ArtifactResolverException( e.getMessage(), e ); - } - catch ( InvocationTargetException e ) - { - throw new ArtifactResolverException( e.getMessage(), e ); + @SuppressWarnings( "unchecked" ) + T invoke = (T) object.getClass().getMethod( method ).invoke( object ); + return invoke; } - catch ( NoSuchMethodException e ) + catch ( IllegalAccessException | InvocationTargetException | NoSuchMethodException e ) { throw new ArtifactResolverException( 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 ArtifactResolverException { try { - return objectClazz.getMethod( staticMethod, argClazz ).invoke( null, arg ); - } - catch ( IllegalAccessException e ) - { - throw new ArtifactResolverException( e.getMessage(), e ); - } - catch ( InvocationTargetException e ) - { - throw new ArtifactResolverException( e.getMessage(), e ); + @SuppressWarnings( "unchecked" ) + T invoke = (T) objectClazz.getMethod( staticMethod, argClazz ).invoke( null, arg ); + return invoke; } - catch ( NoSuchMethodException e ) + catch ( IllegalAccessException | InvocationTargetException | NoSuchMethodException e ) { throw new ArtifactResolverException( 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 ArtifactResolverException if any checked exception occurs - */ - public static Object invoke( Class<?> objectClazz, String staticMethod, Class<?>[] argClasses, Object[] args ) - throws ArtifactResolverException - { - try - { - return objectClazz.getMethod( staticMethod, argClasses ).invoke( null, args ); - } - 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 ); - } - } } diff --git a/src/main/java/org/apache/maven/shared/transfer/artifact/resolve/internal/Maven30ArtifactResolver.java b/src/main/java/org/apache/maven/shared/transfer/artifact/resolve/internal/Maven30ArtifactResolver.java index e5f820c..95a6dc5 100644 --- a/src/main/java/org/apache/maven/shared/transfer/artifact/resolve/internal/Maven30ArtifactResolver.java +++ b/src/main/java/org/apache/maven/shared/transfer/artifact/resolve/internal/Maven30ArtifactResolver.java @@ -61,7 +61,7 @@ class Maven30ArtifactResolver throws ArtifactResolverException // CHECKSTYLE_ON: LineLength { - Artifact aetherArtifact = (Artifact) Invoker.invoke( RepositoryUtils.class, "toArtifact", + Artifact aetherArtifact = Invoker.invoke( RepositoryUtils.class, "toArtifact", org.apache.maven.artifact.Artifact.class, mavenArtifact ); return resolveArtifact( aetherArtifact ); @@ -98,11 +98,7 @@ class Maven30ArtifactResolver return new Maven30ArtifactResult( repositorySystem.resolveArtifact( session, request ) ); } - catch ( ArtifactDescriptorException e ) - { - throw new ArtifactResolverException( e.getMessage(), e ); - } - catch ( ArtifactResolutionException e ) + catch ( ArtifactDescriptorException | ArtifactResolutionException e ) { throw new ArtifactResolverException( e.getMessage(), e ); } diff --git a/src/main/java/org/apache/maven/shared/transfer/artifact/resolve/internal/Maven30ArtifactResult.java b/src/main/java/org/apache/maven/shared/transfer/artifact/resolve/internal/Maven30ArtifactResult.java index 8358096..3bbea28 100644 --- a/src/main/java/org/apache/maven/shared/transfer/artifact/resolve/internal/Maven30ArtifactResult.java +++ b/src/main/java/org/apache/maven/shared/transfer/artifact/resolve/internal/Maven30ArtifactResult.java @@ -26,12 +26,11 @@ import org.sonatype.aether.resolution.ArtifactResult; /** * {@link org.apache.maven.shared.transfer.artifact.resolve.ArtifactResult} wrapper for {@link ArtifactResult} - * + * * @author Robert Scholte * @since 3.0 */ -class Maven30ArtifactResult - implements org.apache.maven.shared.transfer.artifact.resolve.ArtifactResult +class Maven30ArtifactResult implements org.apache.maven.shared.transfer.artifact.resolve.ArtifactResult { private final ArtifactResult artifactResult; @@ -48,8 +47,7 @@ class Maven30ArtifactResult { try { - return (org.apache.maven.artifact.Artifact) Invoker.invoke( RepositoryUtils.class, "toArtifact", - Artifact.class, artifactResult.getArtifact() ); + return Invoker.invoke( RepositoryUtils.class, "toArtifact", Artifact.class, artifactResult.getArtifact() ); } catch ( ArtifactResolverException e ) { diff --git a/src/main/java/org/apache/maven/shared/transfer/artifact/resolve/internal/Maven31ArtifactResolver.java b/src/main/java/org/apache/maven/shared/transfer/artifact/resolve/internal/Maven31ArtifactResolver.java index 888a683..9ef5658 100644 --- a/src/main/java/org/apache/maven/shared/transfer/artifact/resolve/internal/Maven31ArtifactResolver.java +++ b/src/main/java/org/apache/maven/shared/transfer/artifact/resolve/internal/Maven31ArtifactResolver.java @@ -56,13 +56,11 @@ class Maven31ArtifactResolver } @Override - // CHECKSTYLE_OFF: LineLength - public org.apache.maven.shared.transfer.artifact.resolve.ArtifactResult resolveArtifact( org.apache.maven.artifact.Artifact mavenArtifact ) - throws ArtifactResolverException - // CHECKSTYLE_ON: LineLength + public org.apache.maven.shared.transfer.artifact.resolve.ArtifactResult resolveArtifact( + org.apache.maven.artifact.Artifact mavenArtifact ) throws ArtifactResolverException { - 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 ); return resolveArtifact( aetherArtifact ); } @@ -98,11 +96,7 @@ class Maven31ArtifactResolver return new Maven31ArtifactResult( repositorySystem.resolveArtifact( session, request ) ); } - catch ( ArtifactDescriptorException e ) - { - throw new ArtifactResolverException( e.getMessage(), e ); - } - catch ( ArtifactResolutionException e ) + catch ( ArtifactDescriptorException | ArtifactResolutionException e ) { throw new ArtifactResolverException( e.getMessage(), e ); } diff --git a/src/main/java/org/apache/maven/shared/transfer/artifact/resolve/internal/Maven31ArtifactResult.java b/src/main/java/org/apache/maven/shared/transfer/artifact/resolve/internal/Maven31ArtifactResult.java index 055ee22..7b56826 100644 --- a/src/main/java/org/apache/maven/shared/transfer/artifact/resolve/internal/Maven31ArtifactResult.java +++ b/src/main/java/org/apache/maven/shared/transfer/artifact/resolve/internal/Maven31ArtifactResult.java @@ -48,7 +48,7 @@ class Maven31ArtifactResult { try { - return (org.apache.maven.artifact.Artifact) Invoker.invoke( RepositoryUtils.class, "toArtifact", + return Invoker.invoke( RepositoryUtils.class, "toArtifact", Artifact.class, artifactResult.getArtifact() ); } catch ( ArtifactResolverException e ) diff --git a/src/main/java/org/apache/maven/shared/transfer/artifact/resolve/internal/MavenArtifactResolver.java b/src/main/java/org/apache/maven/shared/transfer/artifact/resolve/internal/MavenArtifactResolver.java index 2e9fb74..2413968 100644 --- a/src/main/java/org/apache/maven/shared/transfer/artifact/resolve/internal/MavenArtifactResolver.java +++ b/src/main/java/org/apache/maven/shared/transfer/artifact/resolve/internal/MavenArtifactResolver.java @@ -29,7 +29,7 @@ import org.apache.maven.shared.transfer.artifact.resolve.ArtifactResult; * @author Robert Scholte * */ -public interface MavenArtifactResolver +interface MavenArtifactResolver { ArtifactResult resolveArtifact( Artifact mavenArtifact ) throws ArtifactResolverException; 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..bf5966d 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 @@ -27,10 +27,10 @@ import org.apache.maven.artifact.handler.manager.ArtifactHandlerManager; import org.apache.maven.model.Dependency; import org.apache.maven.model.Model; import org.apache.maven.project.ProjectBuildingRequest; -import org.apache.maven.shared.transfer.dependencies.DependableCoordinate; import org.apache.maven.shared.transfer.collection.CollectResult; import org.apache.maven.shared.transfer.collection.DependencyCollectionException; import org.apache.maven.shared.transfer.collection.DependencyCollector; +import org.apache.maven.shared.transfer.dependencies.DependableCoordinate; import org.codehaus.plexus.PlexusConstants; import org.codehaus.plexus.PlexusContainer; import org.codehaus.plexus.component.annotations.Component; @@ -51,7 +51,7 @@ class DefaultDependencyCollector implements DependencyCollector, Contextualizabl @Override public CollectResult collectDependencies( ProjectBuildingRequest buildingRequest, Dependency root ) - throws DependencyCollectionException + throws DependencyCollectionException { validateParameters( buildingRequest, root ); @@ -67,7 +67,7 @@ class DefaultDependencyCollector implements DependencyCollector, Contextualizabl @Override public CollectResult collectDependencies( ProjectBuildingRequest buildingRequest, DependableCoordinate root ) - throws DependencyCollectionException + throws DependencyCollectionException { validateParameters( buildingRequest, root ); @@ -83,7 +83,7 @@ class DefaultDependencyCollector implements DependencyCollector, Contextualizabl @Override public CollectResult collectDependencies( ProjectBuildingRequest buildingRequest, Model root ) - throws DependencyCollectionException + throws DependencyCollectionException { validateParameters( buildingRequest, root ); @@ -95,105 +95,98 @@ class DefaultDependencyCollector implements DependencyCollector, Contextualizabl { throw new DependencyCollectionException( e.getMessage(), e ); } - } - - private void validateParameters( ProjectBuildingRequest buildingRequest, DependableCoordinate root ) - { - validateBuildingRequest( buildingRequest ); - Objects.requireNonNull( root, "The parameter root is not allowed to be null." ); - } - - private void validateParameters( ProjectBuildingRequest buildingRequest, Dependency root ) - { - validateBuildingRequest( buildingRequest ); - Objects.requireNonNull( root, "The parameter root is not allowed to be null." ); - } - - private void validateParameters( ProjectBuildingRequest buildingRequest, Model root ) - { - validateBuildingRequest( buildingRequest ); - Objects.requireNonNull( root, "The parameter root is not allowed to be null." ); - } - - private void validateBuildingRequest( ProjectBuildingRequest buildingRequest ) - { - Objects.requireNonNull( buildingRequest, "The parameter buildingRequest is not allowed to be null." ); - } - - /** - * @return true if the current Maven version is Maven 3.1. - */ - private boolean isMaven31() - { - return canFindCoreClass( "org.eclipse.aether.artifact.Artifact" ); // Maven 3.1 specific - } - - private boolean canFindCoreClass( String className ) - { - try + } + + private void validateParameters( ProjectBuildingRequest buildingRequest, DependableCoordinate root ) { - Thread.currentThread().getContextClassLoader().loadClass( className ); + validateBuildingRequest( buildingRequest ); + Objects.requireNonNull( root, "The parameter root is not allowed to be null." ); + } - return true; + private void validateParameters( ProjectBuildingRequest buildingRequest, Dependency root ) + { + validateBuildingRequest( buildingRequest ); + Objects.requireNonNull( root, "The parameter root is not allowed to be null." ); } - catch ( ClassNotFoundException e ) + + private void validateParameters( ProjectBuildingRequest buildingRequest, Model root ) { - return false; + validateBuildingRequest( buildingRequest ); + Objects.requireNonNull( root, "The parameter root is not allowed to be null." ); } - } - - /** - * Injects the Plexus content. - * - * @param context Plexus context to inject. - * @throws ContextException if the PlexusContainer could not be located. - */ - public void contextualize( Context context ) - throws ContextException - { - container = (PlexusContainer) context.get( PlexusConstants.PLEXUS_KEY ); - } - - private MavenDependencyCollector getMavenDependencyCollector( ProjectBuildingRequest buildingRequest ) - throws ComponentLookupException, DependencyCollectionException - { - ArtifactHandlerManager artifactHandlerManager = container.lookup( ArtifactHandlerManager.class ); - - if ( isMaven31() ) + + private void validateBuildingRequest( ProjectBuildingRequest buildingRequest ) { - org.eclipse.aether.RepositorySystem m31RepositorySystem = - container.lookup( org.eclipse.aether.RepositorySystem.class ); + Objects.requireNonNull( buildingRequest, "The parameter buildingRequest is not allowed to be null." ); + } - org.eclipse.aether.RepositorySystemSession session = - (org.eclipse.aether.RepositorySystemSession) Invoker.invoke( buildingRequest, "getRepositorySession" ); + /** + * @return true if the current Maven version is Maven 3.1. + */ + private boolean isMaven31() + { + return canFindCoreClass( "org.eclipse.aether.artifact.Artifact" ); // Maven 3.1 specific + } - @SuppressWarnings( "unchecked" ) - List<org.eclipse.aether.repository.RemoteRepository> aetherRepositories = - (List<org.eclipse.aether.repository.RemoteRepository>) Invoker.invoke( RepositoryUtils.class, "toRepos", - List.class, - buildingRequest.getRemoteRepositories() ); + private boolean canFindCoreClass( String className ) + { + try + { + Thread.currentThread().getContextClassLoader().loadClass( className ); - return new Maven31DependencyCollector( m31RepositorySystem, artifactHandlerManager, session, - aetherRepositories ); + return true; + } + catch ( ClassNotFoundException e ) + { + return false; + } + } + + /** + * Injects the Plexus content. + * + * @param context Plexus context to inject. + * @throws ContextException if the PlexusContainer could not be located. + */ + public void contextualize( Context context ) throws ContextException + { + container = (PlexusContainer) context.get( PlexusConstants.PLEXUS_KEY ); } - else + + private MavenDependencyCollector getMavenDependencyCollector( ProjectBuildingRequest buildingRequest ) + throws ComponentLookupException, DependencyCollectionException { - org.sonatype.aether.RepositorySystem m30RepositorySystem = - container.lookup( org.sonatype.aether.RepositorySystem.class ); + ArtifactHandlerManager artifactHandlerManager = container.lookup( ArtifactHandlerManager.class ); - org.sonatype.aether.RepositorySystemSession session = - (org.sonatype.aether.RepositorySystemSession) Invoker.invoke( buildingRequest, "getRepositorySession" ); + if ( isMaven31() ) + { + org.eclipse.aether.RepositorySystem m31RepositorySystem = container.lookup( + org.eclipse.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.eclipse.aether.RepositorySystemSession session = Invoker.invoke( buildingRequest, + "getRepositorySession" ); - return new Maven30DependencyCollector( m30RepositorySystem, artifactHandlerManager, session, - aetherRepositories ); - } + List<org.eclipse.aether.repository.RemoteRepository> aetherRepositories = Invoker.invoke( + RepositoryUtils.class, "toRepos", List.class, buildingRequest.getRemoteRepositories() ); - } + return new Maven31DependencyCollector( m31RepositorySystem, artifactHandlerManager, session, + aetherRepositories ); + } + else + { + org.sonatype.aether.RepositorySystem m30RepositorySystem = container.lookup( + org.sonatype.aether.RepositorySystem.class ); + + org.sonatype.aether.RepositorySystemSession session = Invoker.invoke( buildingRequest, + "getRepositorySession" ); + + 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..c78b5af 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 @@ -21,8 +21,8 @@ package org.apache.maven.shared.transfer.collection.internal; import java.lang.reflect.InvocationTargetException; -import org.apache.maven.shared.transfer.dependencies.collect.DependencyCollectorException; import org.apache.maven.shared.transfer.collection.DependencyCollectionException; +import org.apache.maven.shared.transfer.dependencies.collect.DependencyCollectorException; /** * Invokes method on objects using reflection. @@ -34,71 +34,31 @@ final class Invoker // do not instantiate } - public static Object invoke( Object object, String method ) - throws DependencyCollectionException - { - return invoke( object.getClass(), object, method ); - } - - public static Object invoke( Class<?> objectClazz, Object object, String method ) + public static <T> T invoke( Object object, String method ) throws DependencyCollectionException { try { - return objectClazz.getMethod( method ).invoke( object ); + @SuppressWarnings( "unchecked" ) + T invoke = (T) object.getClass().getMethod( method ).invoke( object ); + return invoke; } - catch ( IllegalAccessException e ) - { - throw new DependencyCollectionException( e.getMessage(), e ); - } - catch ( InvocationTargetException e ) - { - throw new DependencyCollectionException( e.getMessage(), e ); - } - catch ( NoSuchMethodException e ) + catch ( IllegalAccessException | InvocationTargetException | NoSuchMethodException e ) { throw new DependencyCollectionException( e.getMessage(), e ); } } - 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 ); - } - catch ( IllegalAccessException e ) - { - throw new DependencyCollectionException( e.getMessage(), e ); - } - catch ( InvocationTargetException e ) - { - throw new DependencyCollectionException( e.getMessage(), e ); + @SuppressWarnings( "unchecked" ) + T invoke = (T) objectClazz.getMethod( staticMethod, argClazz ).invoke( null, arg ); + return invoke; } - catch ( NoSuchMethodException e ) + catch ( IllegalAccessException | InvocationTargetException | NoSuchMethodException e ) { throw new DependencyCollectionException( e.getMessage(), e ); } @@ -114,53 +74,24 @@ 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 ); - } - catch ( IllegalAccessException e ) + if ( args.length != argClasses.length ) { - throw new DependencyCollectionException( e.getMessage(), e ); + throw new IllegalArgumentException( "The number of elements in argClasses and args are not the same." ); } - catch ( InvocationTargetException e ) - { - throw new DependencyCollectionException( e.getMessage(), e ); - } - catch ( NoSuchMethodException e ) - { - throw new DependencyCollectionException( e.getMessage(), e ); - } - } - 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 ); + @SuppressWarnings( "unchecked" ) + T invoke = (T) objectClazz.getMethod( staticMethod, argClasses ).invoke( null, args ); + return invoke; } - catch ( IllegalArgumentException e ) - { - throw new DependencyCollectionException( e.getMessage(), e ); - } - catch ( InvocationTargetException e ) - { - throw new DependencyCollectionException( e.getMessage(), e ); - } - catch ( NoSuchMethodException e ) + catch ( IllegalAccessException | InvocationTargetException | 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..5d9032d 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 @@ -26,10 +26,10 @@ import org.apache.maven.RepositoryUtils; import org.apache.maven.artifact.handler.ArtifactHandler; import org.apache.maven.artifact.handler.manager.ArtifactHandlerManager; import org.apache.maven.model.Model; -import org.apache.maven.shared.transfer.dependencies.DependableCoordinate; import org.apache.maven.shared.transfer.collection.CollectResult; import org.apache.maven.shared.transfer.collection.DependencyCollectionException; import org.apache.maven.shared.transfer.collection.DependencyCollector; +import org.apache.maven.shared.transfer.dependencies.DependableCoordinate; import org.sonatype.aether.RepositorySystem; import org.sonatype.aether.RepositorySystemSession; import org.sonatype.aether.artifact.Artifact; @@ -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,6 @@ class Maven30DependencyCollector Object[] args = new Object[] { mavenDependency, typeRegistry }; - return (Dependency) Invoker - .invoke( RepositoryUtils.class, "toDependency", argClasses, args ); + 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/collection/internal/MavenDependencyCollector.java b/src/main/java/org/apache/maven/shared/transfer/collection/internal/MavenDependencyCollector.java index 2181380..fc7edb8 100644 --- a/src/main/java/org/apache/maven/shared/transfer/collection/internal/MavenDependencyCollector.java +++ b/src/main/java/org/apache/maven/shared/transfer/collection/internal/MavenDependencyCollector.java @@ -28,7 +28,7 @@ import org.apache.maven.shared.transfer.collection.DependencyCollectionException /** * @author Robert Scholte */ -public interface MavenDependencyCollector +interface MavenDependencyCollector { CollectResult collectDependencies( Dependency root ) 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..872c5ff 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 @@ -40,17 +40,17 @@ import org.codehaus.plexus.personality.plexus.lifecycle.phase.Contextualizable; /** * This DependencyCollector passes the request to the proper Maven 3.x implementation - * + * * @author Robert Scholte */ @Component( role = DependencyCollector.class, hint = "default" ) -class DefaultDependencyCollector implements DependencyCollector, Contextualizable +class DefaultDependencyCollector implements DependencyCollector, Contextualizable { private PlexusContainer container; @Override public CollectorResult collectDependencies( ProjectBuildingRequest buildingRequest, Dependency root ) - throws DependencyCollectorException + throws DependencyCollectorException { validateParameters( buildingRequest, root ); @@ -66,7 +66,7 @@ class DefaultDependencyCollector implements DependencyCollector, Contextualizabl @Override public CollectorResult collectDependencies( ProjectBuildingRequest buildingRequest, DependableCoordinate root ) - throws DependencyCollectorException + throws DependencyCollectorException { validateParameters( buildingRequest, root ); @@ -82,7 +82,7 @@ class DefaultDependencyCollector implements DependencyCollector, Contextualizabl @Override public CollectorResult collectDependencies( ProjectBuildingRequest buildingRequest, Model root ) - throws DependencyCollectorException + throws DependencyCollectorException { validateParameters( buildingRequest, root ); @@ -159,51 +159,44 @@ class DefaultDependencyCollector implements DependencyCollector, Contextualizabl * @param context Plexus context to inject. * @throws ContextException if the PlexusContainer could not be located. */ - public void contextualize( Context context ) - throws ContextException + public void contextualize( Context context ) throws ContextException { container = (PlexusContainer) context.get( PlexusConstants.PLEXUS_KEY ); } - + private MavenDependencyCollector getMavenDependencyCollector( ProjectBuildingRequest buildingRequest ) - throws ComponentLookupException, DependencyCollectorException + throws ComponentLookupException, DependencyCollectorException { ArtifactHandlerManager artifactHandlerManager = container.lookup( ArtifactHandlerManager.class ); - + if ( isMaven31() ) { - org.eclipse.aether.RepositorySystem m31RepositorySystem = - container.lookup( org.eclipse.aether.RepositorySystem.class ); + 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 ); + aetherRepositories ); } else { - org.sonatype.aether.RepositorySystem m30RepositorySystem = - container.lookup( org.sonatype.aether.RepositorySystem.class ); + 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 ); + 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..17c7432 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,133 +33,61 @@ final class Invoker // do not instantiate } - public static Object invoke( Object object, String method ) - throws DependencyCollectorException - { - return invoke( object.getClass(), object, method ); - } - - public static Object invoke( Class<?> objectClazz, Object object, String method ) - throws DependencyCollectorException + public static <T> T invoke( Object object, String method ) throws DependencyCollectorException { try { - return objectClazz.getMethod( method ).invoke( object ); - } - catch ( IllegalAccessException e ) - { - throw new DependencyCollectorException( e.getMessage(), e ); - } - catch ( InvocationTargetException e ) - { - throw new DependencyCollectorException( e.getMessage(), e ); + @SuppressWarnings( "unchecked" ) + T invoke = (T) object.getClass().getMethod( method ).invoke( object ); + return invoke; } - catch ( NoSuchMethodException e ) + catch ( IllegalAccessException | InvocationTargetException | NoSuchMethodException e ) { throw new DependencyCollectorException( e.getMessage(), e ); } } - public static Object invoke( Object object, String method, Class<?> argClazz, Object arg ) - throws DependencyCollectorException + public static <T> T invoke( Class<?> objectClazz, String staticMethod, Class<?> argClazz, Object arg ) + throws DependencyCollectorException { try { - final Class<?> objectClazz = object.getClass(); - return objectClazz.getMethod( method, argClazz ).invoke( object, arg ); - } - catch ( IllegalAccessException e ) - { - throw new DependencyCollectorException( e.getMessage(), e ); - } - catch ( InvocationTargetException e ) - { - throw new DependencyCollectorException( e.getMessage(), e ); + @SuppressWarnings( "unchecked" ) + T invoke = (T) objectClazz.getMethod( staticMethod, argClazz ).invoke( null, arg ); + return invoke; } - catch ( NoSuchMethodException e ) + catch ( IllegalAccessException | InvocationTargetException | NoSuchMethodException e ) { throw new DependencyCollectorException( e.getMessage(), e ); } } - - public static Object invoke( Class<?> objectClazz, String staticMethod, Class<?> argClazz, Object arg ) - throws DependencyCollectorException - { - try - { - return objectClazz.getMethod( staticMethod, argClazz ).invoke( null, arg ); - } - catch ( IllegalAccessException e ) - { - throw new DependencyCollectorException( e.getMessage(), e ); - } - catch ( InvocationTargetException e ) - { - throw new DependencyCollectorException( e.getMessage(), e ); - } - catch ( NoSuchMethodException e ) - { - throw new DependencyCollectorException( 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 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 + * @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 Object invoke( Class<?> objectClazz, String staticMethod, Class<?>[] argClasses, Object[] args ) - throws DependencyCollectorException + public static <T> T invoke( Class<?> objectClazz, String staticMethod, Class<?>[] argClasses, Object[] args ) + throws DependencyCollectorException { - try - { - return objectClazz.getMethod( staticMethod, argClasses ).invoke( null, args ); - } - catch ( IllegalAccessException e ) - { - throw new DependencyCollectorException( e.getMessage(), e ); - } - catch ( InvocationTargetException e ) + if ( args.length != argClasses.length ) { - throw new DependencyCollectorException( e.getMessage(), e ); + throw new IllegalArgumentException( "The number of elements in argClasses and args are not the same." ); } - catch ( NoSuchMethodException e ) - { - throw new DependencyCollectorException( e.getMessage(), e ); - } - } - public static Object newInstance( Class<?> objectClazz, Class<?> argClazz, Object arg ) - throws DependencyCollectorException - { try { - return objectClazz.getConstructor( argClazz ).newInstance( arg ); + @SuppressWarnings( "unchecked" ) + T invoke = (T) objectClazz.getMethod( staticMethod, argClasses ).invoke( null, args ); + return invoke; } - catch ( InstantiationException e ) - { - throw new DependencyCollectorException( e.getMessage(), e ); - } - catch ( IllegalAccessException e ) - { - throw new DependencyCollectorException( e.getMessage(), e ); - } - catch ( IllegalArgumentException e ) - { - throw new DependencyCollectorException( e.getMessage(), e ); - } - catch ( InvocationTargetException e ) - { - throw new DependencyCollectorException( e.getMessage(), e ); - } - catch ( NoSuchMethodException e ) + 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/Maven30DependencyCollector.java b/src/main/java/org/apache/maven/shared/transfer/dependencies/collect/internal/Maven30DependencyCollector.java index 057e0bd..1a33fbc 100644 --- a/src/main/java/org/apache/maven/shared/transfer/dependencies/collect/internal/Maven30DependencyCollector.java +++ b/src/main/java/org/apache/maven/shared/transfer/dependencies/collect/internal/Maven30DependencyCollector.java @@ -42,23 +42,21 @@ import org.sonatype.aether.util.artifact.DefaultArtifact; /** * Maven 3.0 implementation of the {@link DependencyCollector} - * - * @author Robert Scholte * + * @author Robert Scholte */ -class Maven30DependencyCollector - implements MavenDependencyCollector +class Maven30DependencyCollector implements MavenDependencyCollector { private final RepositorySystem repositorySystem; private final ArtifactHandlerManager artifactHandlerManager; private final RepositorySystemSession session; - + private final List<RemoteRepository> aetherRepositories; - + Maven30DependencyCollector( RepositorySystem repositorySystem, ArtifactHandlerManager artifactHandlerManager, - RepositorySystemSession session, List<RemoteRepository> aetherRepositories ) + RepositorySystemSession session, List<RemoteRepository> aetherRepositories ) { super(); this.repositorySystem = repositorySystem; @@ -67,13 +65,22 @@ class Maven30DependencyCollector 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 (Dependency) Invoker.invoke( RepositoryUtils.class, "toDependency", argClasses, args ); + } + @Override public CollectorResult collectDependencies( org.apache.maven.model.Dependency root ) - throws DependencyCollectorException + throws DependencyCollectorException { - 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 ) ); @@ -82,42 +89,39 @@ class Maven30DependencyCollector } @Override - public CollectorResult collectDependencies( DependableCoordinate root ) - throws DependencyCollectorException + public CollectorResult collectDependencies( DependableCoordinate root ) throws DependencyCollectorException { ArtifactHandler artifactHandler = artifactHandlerManager.getArtifactHandler( root.getType() ); - + String extension = artifactHandler != null ? artifactHandler.getExtension() : null; - + Artifact aetherArtifact = new DefaultArtifact( root.getGroupId(), root.getArtifactId(), root.getClassifier(), - extension, root.getVersion() ); - + extension, root.getVersion() ); + CollectRequest request = new CollectRequest(); request.setRoot( new Dependency( aetherArtifact, null ) ); return collectDependencies( request ); } - + @Override - public CollectorResult collectDependencies( Model root ) - throws DependencyCollectorException + public CollectorResult collectDependencies( Model root ) throws DependencyCollectorException { // Are there examples where packaging and type are NOT in sync ArtifactHandler artifactHandler = artifactHandlerManager.getArtifactHandler( root.getPackaging() ); - + String extension = artifactHandler != null ? artifactHandler.getExtension() : null; - - Artifact aetherArtifact = - new DefaultArtifact( root.getGroupId(), root.getArtifactId(), extension, root.getVersion() ); - + + Artifact aetherArtifact = new DefaultArtifact( root.getGroupId(), root.getArtifactId(), extension, + root.getVersion() ); + 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() ); + List<Dependency> aetherDependencies = new ArrayList<>( root.getDependencies().size() ); for ( org.apache.maven.model.Dependency mavenDependency : root.getDependencies() ) { aetherDependencies.add( toDependency( mavenDependency, typeRegistry ) ); @@ -126,22 +130,21 @@ class Maven30DependencyCollector if ( root.getDependencyManagement() != null ) { - List<Dependency> aetherManagerDependencies = - new ArrayList<Dependency>( root.getDependencyManagement().getDependencies().size() ); - + List<Dependency> aetherManagerDependencies = new ArrayList<>( + root.getDependencyManagement().getDependencies().size() ); + for ( org.apache.maven.model.Dependency mavenDependency : root.getDependencyManagement().getDependencies() ) { aetherManagerDependencies.add( toDependency( mavenDependency, typeRegistry ) ); } - + request.setManagedDependencies( aetherManagerDependencies ); } - + return collectDependencies( request ); } - private CollectorResult collectDependencies( CollectRequest request ) - throws DependencyCollectorException + private CollectorResult collectDependencies( CollectRequest request ) throws DependencyCollectorException { request.setRepositories( aetherRepositories ); @@ -154,15 +157,4 @@ class Maven30DependencyCollector throw new DependencyCollectorException( e.getMessage(), e ); } } - - 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 (Dependency) Invoker.invoke( RepositoryUtils.class, "toDependency", argClasses, args ); - } } 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 0ee0385..de98210 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 @@ -42,23 +42,21 @@ import org.eclipse.aether.repository.RemoteRepository; /** * Maven 3.1+ implementation of the {@link DependencyCollector} - * - * @author Robert Scholte * + * @author Robert Scholte */ -class Maven31DependencyCollector - implements MavenDependencyCollector +class Maven31DependencyCollector implements MavenDependencyCollector { private final RepositorySystem repositorySystem; private final ArtifactHandlerManager artifactHandlerManager; - + private final RepositorySystemSession session; - + private final List<RemoteRepository> aetherRepositories; - + Maven31DependencyCollector( RepositorySystem repositorySystem, ArtifactHandlerManager artifactHandlerManager, - RepositorySystemSession session, List<RemoteRepository> aetherRepositories ) + RepositorySystemSession session, List<RemoteRepository> aetherRepositories ) { super(); this.repositorySystem = repositorySystem; @@ -67,13 +65,22 @@ class Maven31DependencyCollector 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 (Dependency) Invoker.invoke( RepositoryUtils.class, "toDependency", argClasses, args ); + } + @Override public CollectorResult collectDependencies( org.apache.maven.model.Dependency root ) - throws DependencyCollectorException + throws DependencyCollectorException { - 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 ) ); @@ -82,42 +89,39 @@ class Maven31DependencyCollector } @Override - public CollectorResult collectDependencies( DependableCoordinate root ) - throws DependencyCollectorException + public CollectorResult collectDependencies( DependableCoordinate root ) throws DependencyCollectorException { ArtifactHandler artifactHandler = artifactHandlerManager.getArtifactHandler( root.getType() ); - + String extension = artifactHandler != null ? artifactHandler.getExtension() : null; - + Artifact aetherArtifact = new DefaultArtifact( root.getGroupId(), root.getArtifactId(), root.getClassifier(), - extension, root.getVersion() ); - + extension, root.getVersion() ); + CollectRequest request = new CollectRequest(); request.setRoot( new Dependency( aetherArtifact, null ) ); return collectDependencies( request ); } - + @Override - public CollectorResult collectDependencies( Model root ) - throws DependencyCollectorException + public CollectorResult collectDependencies( Model root ) throws DependencyCollectorException { // Are there examples where packaging and type are NOT in sync ArtifactHandler artifactHandler = artifactHandlerManager.getArtifactHandler( root.getPackaging() ); - + String extension = artifactHandler != null ? artifactHandler.getExtension() : null; - - Artifact aetherArtifact = - new DefaultArtifact( root.getGroupId(), root.getArtifactId(), extension, root.getVersion() ); - + + Artifact aetherArtifact = new DefaultArtifact( root.getGroupId(), root.getArtifactId(), extension, + root.getVersion() ); + CollectRequest request = new CollectRequest(); request.setRoot( new Dependency( aetherArtifact, null ) ); - - ArtifactTypeRegistry typeRegistry = - (ArtifactTypeRegistry) Invoker.invoke( RepositoryUtils.class, "newArtifactTypeRegistry", - ArtifactHandlerManager.class, artifactHandlerManager ); - List<Dependency> aetherDependencies = new ArrayList<Dependency>( root.getDependencies().size() ); + ArtifactTypeRegistry typeRegistry = Invoker.invoke( RepositoryUtils.class, "newArtifactTypeRegistry", + ArtifactHandlerManager.class, artifactHandlerManager ); + + List<Dependency> aetherDependencies = new ArrayList<>( root.getDependencies().size() ); for ( org.apache.maven.model.Dependency mavenDependency : root.getDependencies() ) { aetherDependencies.add( toDependency( mavenDependency, typeRegistry ) ); @@ -126,22 +130,21 @@ class Maven31DependencyCollector if ( root.getDependencyManagement() != null ) { - List<Dependency> aetherManagerDependencies = - new ArrayList<Dependency>( root.getDependencyManagement().getDependencies().size() ); - + List<Dependency> aetherManagerDependencies = new ArrayList<>( + root.getDependencyManagement().getDependencies().size() ); + for ( org.apache.maven.model.Dependency mavenDependency : root.getDependencyManagement().getDependencies() ) { aetherManagerDependencies.add( toDependency( mavenDependency, typeRegistry ) ); } - + request.setManagedDependencies( aetherManagerDependencies ); } return collectDependencies( request ); } - private CollectorResult collectDependencies( CollectRequest request ) - throws DependencyCollectorException + private CollectorResult collectDependencies( CollectRequest request ) throws DependencyCollectorException { request.setRepositories( aetherRepositories ); @@ -154,14 +157,4 @@ class Maven31DependencyCollector throw new DependencyCollectorException( e.getMessage(), e ); } } - - private static Dependency toDependency( org.apache.maven.model.Dependency root, ArtifactTypeRegistry typeRegistry ) - throws DependencyCollectorException - { - Class<?>[] argClasses = new Class<?>[] { org.apache.maven.model.Dependency.class, ArtifactTypeRegistry.class }; - - Object[] args = new Object[] { root, typeRegistry }; - - return (Dependency) Invoker.invoke( RepositoryUtils.class, "toDependency", argClasses, args ); - } } diff --git a/src/main/java/org/apache/maven/shared/transfer/dependencies/collect/internal/MavenDependencyCollector.java b/src/main/java/org/apache/maven/shared/transfer/dependencies/collect/internal/MavenDependencyCollector.java index 53823f8..ce647f5 100644 --- a/src/main/java/org/apache/maven/shared/transfer/dependencies/collect/internal/MavenDependencyCollector.java +++ b/src/main/java/org/apache/maven/shared/transfer/dependencies/collect/internal/MavenDependencyCollector.java @@ -29,7 +29,7 @@ import org.apache.maven.shared.transfer.dependencies.collect.DependencyCollector * * @author Robert Scholte */ -public interface MavenDependencyCollector +interface MavenDependencyCollector { CollectorResult collectDependencies( Dependency root ) 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..05a63c8 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 @@ -41,27 +41,24 @@ import org.codehaus.plexus.context.ContextException; import org.codehaus.plexus.personality.plexus.lifecycle.phase.Contextualizable; /** - * + * */ @Component( role = DependencyResolver.class, hint = "default" ) -class DefaultDependencyResolver - implements DependencyResolver, Contextualizable +class DefaultDependencyResolver implements DependencyResolver, Contextualizable { private PlexusContainer container; @Override public Iterable<ArtifactResult> resolveDependencies( ProjectBuildingRequest buildingRequest, - Collection<Dependency> coordinates, - Collection<Dependency> managedDependencies, - TransformableFilter filter ) - throws DependencyResolverException + Collection<Dependency> coordinates, Collection<Dependency> managedDependencies, TransformableFilter filter ) + throws DependencyResolverException { validateBuildingRequest( buildingRequest ); - + try { return getMavenDependencyResolver( buildingRequest ).resolveDependencies( coordinates, managedDependencies, - filter ); + filter ); } catch ( ComponentLookupException e ) { @@ -71,8 +68,7 @@ class DefaultDependencyResolver @Override public Iterable<ArtifactResult> resolveDependencies( ProjectBuildingRequest buildingRequest, - DependableCoordinate coordinate, TransformableFilter filter ) - throws DependencyResolverException + DependableCoordinate coordinate, TransformableFilter filter ) throws DependencyResolverException { validateParameters( buildingRequest, coordinate ); try @@ -87,8 +83,7 @@ class DefaultDependencyResolver @Override public Iterable<ArtifactResult> resolveDependencies( ProjectBuildingRequest buildingRequest, Model model, - TransformableFilter filter ) - throws DependencyResolverException + TransformableFilter filter ) throws DependencyResolverException { validateParameters( buildingRequest, model ); try @@ -129,8 +124,7 @@ class DefaultDependencyResolver * @param context Plexus context to inject. * @throws ContextException if the PlexusContainer could not be located. */ - public void contextualize( Context context ) - throws ContextException + public void contextualize( Context context ) throws ContextException { container = (PlexusContainer) context.get( PlexusConstants.PLEXUS_KEY ); } @@ -153,45 +147,39 @@ class DefaultDependencyResolver } } - + private MavenDependencyResolver getMavenDependencyResolver( ProjectBuildingRequest buildingRequest ) - throws ComponentLookupException, DependencyResolverException + throws ComponentLookupException, DependencyResolverException { ArtifactHandlerManager artifactHandlerManager = container.lookup( ArtifactHandlerManager.class ); - + if ( isMaven31() ) { - org.eclipse.aether.RepositorySystem m31RepositorySystem = - container.lookup( org.eclipse.aether.RepositorySystem.class ); + 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" ); - 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 Maven31DependencyResolver( m31RepositorySystem, artifactHandlerManager, session, - aetherRepositories ); + aetherRepositories ); } else { - org.sonatype.aether.RepositorySystem m30RepositorySystem = - container.lookup( org.sonatype.aether.RepositorySystem.class ); + 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" ); - 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 Maven30DependencyResolver( m30RepositorySystem, artifactHandlerManager, session, - aetherRepositories ); + 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 3c8619f..dc7ad4c 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 @@ -33,71 +33,31 @@ final class Invoker // do not instantiate } - public static Object invoke( Object object, String method ) - throws DependencyResolverException - { - return invoke( object.getClass(), object, method ); - } - - public static Object invoke( Class<?> objectClazz, Object object, String method ) + public static <T> T invoke( Object object, String method ) throws DependencyResolverException { try { - return objectClazz.getMethod( method ).invoke( object ); - } - catch ( IllegalAccessException e ) - { - throw new DependencyResolverException( e.getMessage(), e ); - } - catch ( InvocationTargetException e ) - { - throw new DependencyResolverException( e.getMessage(), e ); + @SuppressWarnings( "unchecked" ) + T invoke = (T) object.getClass().getMethod( method ).invoke( object ); + return invoke; } - catch ( NoSuchMethodException e ) + catch ( IllegalAccessException | InvocationTargetException | NoSuchMethodException e ) { throw new DependencyResolverException( e.getMessage(), e ); } } - 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 DependencyResolverException { try { - final Class<?> objectClazz = object.getClass(); - return objectClazz.getMethod( method, argClazz ).invoke( object, arg ); + @SuppressWarnings( "unchecked" ) + T invoke = (T) objectClazz.getMethod( staticMethod, argClazz ).invoke( null, arg ); + return invoke; } - catch ( IllegalAccessException e ) - { - throw new DependencyResolverException( e.getMessage(), e ); - } - catch ( InvocationTargetException e ) - { - throw new DependencyResolverException( e.getMessage(), e ); - } - catch ( NoSuchMethodException e ) - { - throw new DependencyResolverException( e.getMessage(), e ); - } - } - - public static Object invoke( Class<?> objectClazz, String staticMethod, Class<?> argClazz, Object arg ) - throws DependencyResolverException - { - try - { - return objectClazz.getMethod( staticMethod, argClazz ).invoke( null, arg ); - } - catch ( IllegalAccessException e ) - { - throw new DependencyResolverException( e.getMessage(), e ); - } - catch ( InvocationTargetException e ) - { - throw new DependencyResolverException( e.getMessage(), e ); - } - catch ( NoSuchMethodException e ) + catch ( IllegalAccessException | InvocationTargetException | NoSuchMethodException e ) { throw new DependencyResolverException( e.getMessage(), e ); } @@ -113,22 +73,21 @@ final class Invoker * @return the result of the method invocation * @throws DependencyResolverException 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 DependencyResolverException { - try + if ( args.length != argClasses.length ) { - return objectClazz.getMethod( staticMethod, argClasses ).invoke( null, args ); + throw new IllegalArgumentException( "The number of elements in argClasses and args are not the same." ); } - catch ( IllegalAccessException e ) - { - throw new DependencyResolverException( e.getMessage(), e ); - } - catch ( InvocationTargetException e ) + + try { - throw new DependencyResolverException( e.getMessage(), e ); + @SuppressWarnings( "unchecked" ) + T invoke = (T) objectClazz.getMethod( staticMethod, argClasses ).invoke( null, args ); + return invoke; } - catch ( NoSuchMethodException e ) + 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/Maven30ArtifactResult.java b/src/main/java/org/apache/maven/shared/transfer/dependencies/resolve/internal/Maven30ArtifactResult.java index ce1f497..b9f37d9 100644 --- a/src/main/java/org/apache/maven/shared/transfer/dependencies/resolve/internal/Maven30ArtifactResult.java +++ b/src/main/java/org/apache/maven/shared/transfer/dependencies/resolve/internal/Maven30ArtifactResult.java @@ -26,12 +26,11 @@ import org.sonatype.aether.resolution.ArtifactResult; /** * {@link org.apache.maven.shared.transfer.artifact.resolve.ArtifactResult} wrapper for {@link ArtifactResult} - * + * * @author Robert Scholte * @since 3.0 */ -class Maven30ArtifactResult - implements org.apache.maven.shared.transfer.artifact.resolve.ArtifactResult +class Maven30ArtifactResult implements org.apache.maven.shared.transfer.artifact.resolve.ArtifactResult { private final ArtifactResult artifactResult; @@ -48,8 +47,7 @@ class Maven30ArtifactResult { try { - return (org.apache.maven.artifact.Artifact) Invoker.invoke( RepositoryUtils.class, "toArtifact", - Artifact.class, artifactResult.getArtifact() ); + return Invoker.invoke( RepositoryUtils.class, "toArtifact", Artifact.class, artifactResult.getArtifact() ); } catch ( DependencyResolverException e ) { diff --git a/src/main/java/org/apache/maven/shared/transfer/dependencies/resolve/internal/Maven30DependencyResolver.java b/src/main/java/org/apache/maven/shared/transfer/dependencies/resolve/internal/Maven30DependencyResolver.java index b70a7f0..3b04c47 100644 --- a/src/main/java/org/apache/maven/shared/transfer/dependencies/resolve/internal/Maven30DependencyResolver.java +++ b/src/main/java/org/apache/maven/shared/transfer/dependencies/resolve/internal/Maven30DependencyResolver.java @@ -19,11 +19,6 @@ package org.apache.maven.shared.transfer.dependencies.resolve.internal; * under the License. */ -import java.util.ArrayList; -import java.util.Collection; -import java.util.Iterator; -import java.util.List; - import org.apache.maven.RepositoryUtils; import org.apache.maven.artifact.handler.ArtifactHandler; import org.apache.maven.artifact.handler.manager.ArtifactHandlerManager; @@ -33,7 +28,6 @@ import org.apache.maven.shared.artifact.filter.resolve.TransformableFilter; import org.apache.maven.shared.artifact.filter.resolve.transform.SonatypeAetherFilterTransformer; import org.apache.maven.shared.transfer.dependencies.DependableCoordinate; import org.apache.maven.shared.transfer.dependencies.resolve.DependencyResolverException; - import org.sonatype.aether.RepositorySystem; import org.sonatype.aether.RepositorySystemSession; import org.sonatype.aether.artifact.Artifact; @@ -49,6 +43,12 @@ import org.sonatype.aether.resolution.ArtifactResult; import org.sonatype.aether.util.artifact.DefaultArtifact; import org.sonatype.aether.util.artifact.DefaultArtifactType; +import java.util.ArrayList; +import java.util.Collection; +import java.util.Collections; +import java.util.Iterator; +import java.util.List; + /** * */ @@ -58,11 +58,11 @@ class Maven30DependencyResolver private final RepositorySystem repositorySystem; private final ArtifactHandlerManager artifactHandlerManager; - + private final RepositorySystemSession session; - + private final List<RemoteRepository> aetherRepositories; - + Maven30DependencyResolver( RepositorySystem repositorySystem, ArtifactHandlerManager artifactHandlerManager, RepositorySystemSession session, List<RemoteRepository> aetherRepositories ) { @@ -80,9 +80,7 @@ class Maven30DependencyResolver // CHECKSTYLE_ON: LineLength throws DependencyResolverException { - ArtifactTypeRegistry typeRegistry = - (ArtifactTypeRegistry) Invoker.invoke( RepositoryUtils.class, "newArtifactTypeRegistry", - ArtifactHandlerManager.class, artifactHandlerManager ); + ArtifactTypeRegistry typeRegistry = createTypeRegistry(); Dependency aetherRoot = toDependency( coordinate, typeRegistry ); @@ -90,7 +88,17 @@ class Maven30DependencyResolver return resolveDependencies( dependencyFilter, request ); } - + + private static final Class<?>[] ARG_CLASSES = new Class<?>[] { + org.apache.maven.model.Dependency.class, ArtifactTypeRegistry.class + }; + + 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, @@ -109,94 +117,69 @@ class Maven30DependencyResolver Dependency aetherRoot = new Dependency( aetherArtifact, null ); CollectRequest request = new CollectRequest( aetherRoot, aetherRepositories ); - - ArtifactTypeRegistry typeRegistry = - (ArtifactTypeRegistry) Invoker.invoke( RepositoryUtils.class, "newArtifactTypeRegistry", - ArtifactHandlerManager.class, artifactHandlerManager ); - List<Dependency> aetherDependencies = new ArrayList<Dependency>( model.getDependencies().size() ); - for ( org.apache.maven.model.Dependency mavenDependency : model.getDependencies() ) - { - aetherDependencies.add( toDependency( mavenDependency, typeRegistry ) ); - } - request.setDependencies( aetherDependencies ); + request.setDependencies( resolveDependencies( model.getDependencies() ) ); DependencyManagement mavenDependencyManagement = model.getDependencyManagement(); if ( mavenDependencyManagement != null ) { - List<Dependency> aetherManagerDependencies = - new ArrayList<Dependency>( mavenDependencyManagement.getDependencies().size() ); - - for ( org.apache.maven.model.Dependency mavenDependency : mavenDependencyManagement.getDependencies() ) - { - aetherManagerDependencies.add( toDependency( mavenDependency, typeRegistry ) ); - } - - request.setManagedDependencies( aetherManagerDependencies ); + request.setManagedDependencies( resolveDependencies( mavenDependencyManagement.getDependencies() ) ); } return resolveDependencies( dependencyFilter, request ); } - @Override + /** + * @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 - 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 ) + private List<Dependency> resolveDependencies( Collection<org.apache.maven.model.Dependency> mavenDependencies ) throws + DependencyResolverException // CHECKSTYLE_ON: LineLength - throws DependencyResolverException { - ArtifactTypeRegistry typeRegistry = - (ArtifactTypeRegistry) Invoker.invoke( RepositoryUtils.class, "newArtifactTypeRegistry", - ArtifactHandlerManager.class, artifactHandlerManager ); - - final Class<?>[] argClasses = - new Class<?>[] { org.apache.maven.model.Dependency.class, ArtifactTypeRegistry.class }; - - List<Dependency> aetherDependencies = null; - - if ( mavenDependencies != null ) - { - aetherDependencies = new ArrayList<Dependency>( mavenDependencies.size() ); - - for ( org.apache.maven.model.Dependency mavenDependency : mavenDependencies ) - { - Object[] args = new Object[] { mavenDependency, typeRegistry }; - - Dependency aetherDependency = - (Dependency) Invoker.invoke( RepositoryUtils.class, "toDependency", argClasses, args ); + if ( mavenDependencies == null ) + { + return Collections.emptyList(); + } - aetherDependencies.add( aetherDependency ); - } - } + ArtifactTypeRegistry typeRegistry = createTypeRegistry(); - List<Dependency> aetherManagedDependencies = null; + List<Dependency> aetherDependencies = new ArrayList<>( mavenDependencies.size() ); - if ( managedMavenDependencies != null ) + for ( org.apache.maven.model.Dependency mavenDependency : mavenDependencies ) { - aetherManagedDependencies = new ArrayList<Dependency>( managedMavenDependencies.size() ); + aetherDependencies.add( toDependency( mavenDependency, typeRegistry ) ); + } - for ( org.apache.maven.model.Dependency mavenDependency : managedMavenDependencies ) - { - Object[] args = new Object[] { mavenDependency, typeRegistry }; + return aetherDependencies; + } - Dependency aetherDependency = - (Dependency) Invoker.invoke( RepositoryUtils.class, "toDependency", argClasses, args ); + @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 + { - aetherManagedDependencies.add( aetherDependency ); - } - } + List<Dependency> aetherDependencies = resolveDependencies( mavenDependencies ); + + List<Dependency> aetherManagedDependencies = resolveDependencies( managedMavenDependencies ); - CollectRequest request = - new CollectRequest( aetherDependencies, aetherManagedDependencies, aetherRepositories ); + CollectRequest request = new CollectRequest( aetherDependencies, aetherManagedDependencies, + aetherRepositories ); return resolveDependencies( filter, request ); } // CHECKSTYLE_OFF: LineLength - private Iterable<org.apache.maven.shared.transfer.artifact.resolve.ArtifactResult> resolveDependencies( TransformableFilter dependencyFilter, - CollectRequest request ) - throws DependencyResolverException + private Iterable<org.apache.maven.shared.transfer.artifact.resolve.ArtifactResult> resolveDependencies( + TransformableFilter dependencyFilter, + CollectRequest request + ) throws DependencyResolverException // CHECKSTYLE_ON :LineLength { try @@ -217,8 +200,8 @@ class Maven30DependencyResolver public Iterator<org.apache.maven.shared.transfer.artifact.resolve.ArtifactResult> iterator() { // CHECKSTYLE_OFF: LineLength - Collection<org.apache.maven.shared.transfer.artifact.resolve.ArtifactResult> artResults = - new ArrayList<org.apache.maven.shared.transfer.artifact.resolve.ArtifactResult>( dependencyResults.size() ); + Collection<org.apache.maven.shared.transfer.artifact.resolve.ArtifactResult> artResults = new ArrayList<>( + dependencyResults.size() ); // CHECKSTYLE_ON: LineLength for ( ArtifactResult artifactResult : dependencyResults ) @@ -242,9 +225,9 @@ class Maven30DependencyResolver /** * Based on RepositoryUtils#toDependency(org.apache.maven.model.Dependency, ArtifactTypeRegistry) - * - * @param coordinate - * @param stereotypes + * + * @param coordinate {@link DependableCoordinate} + * @param stereotypes {@link org.eclipse.aether.artifact.ArtifactTypeRegistry * @return as Aether Dependency */ private static Dependency toDependency( DependableCoordinate coordinate, ArtifactTypeRegistry stereotypes ) @@ -266,10 +249,8 @@ class Maven30DependencyResolver ArtifactTypeRegistry typeRegistry ) throws DependencyResolverException { - Class<?>[] argClasses = new Class<?>[] { org.apache.maven.model.Dependency.class, ArtifactTypeRegistry.class }; - Object[] args = new Object[] { mavenDependency, typeRegistry }; - return (Dependency) Invoker.invoke( RepositoryUtils.class, "toDependency", argClasses, args ); + return Invoker.invoke( RepositoryUtils.class, "toDependency", ARG_CLASSES, args ); } } 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 dba4e8e..fe26ce4 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 @@ -48,7 +48,7 @@ class Maven31ArtifactResult { try { - return (org.apache.maven.artifact.Artifact) Invoker.invoke( RepositoryUtils.class, "toArtifact", + return Invoker.invoke( RepositoryUtils.class, "toArtifact", Artifact.class, artifactResult.getArtifact() ); } catch ( DependencyResolverException e ) 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 3d23f08..ad7c82b 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 @@ -19,11 +19,6 @@ package org.apache.maven.shared.transfer.dependencies.resolve.internal; * under the License. */ -import java.util.List; -import java.util.ArrayList; -import java.util.Collection; -import java.util.Iterator; - import org.apache.maven.RepositoryUtils; import org.apache.maven.artifact.handler.ArtifactHandler; import org.apache.maven.artifact.handler.manager.ArtifactHandlerManager; @@ -49,15 +44,21 @@ import org.eclipse.aether.resolution.DependencyRequest; import org.eclipse.aether.resolution.DependencyResolutionException; import org.eclipse.aether.resolution.DependencyResult; +import java.util.ArrayList; +import java.util.Collection; +import java.util.Collections; +import java.util.Iterator; +import java.util.List; + /** * */ class Maven31DependencyResolver implements MavenDependencyResolver { - private RepositorySystem repositorySystem; + private final RepositorySystem repositorySystem; - private ArtifactHandlerManager artifactHandlerManager; + private final ArtifactHandlerManager artifactHandlerManager; private final RepositorySystemSession session; @@ -77,12 +78,10 @@ class Maven31DependencyResolver // CHECKSTYLE_OFF: LineLength public Iterable<org.apache.maven.shared.transfer.artifact.resolve.ArtifactResult> resolveDependencies( DependableCoordinate coordinate, TransformableFilter dependencyFilter ) - throws DependencyResolverException // CHECKSTYLE_ON: LineLength + throws DependencyResolverException { - ArtifactTypeRegistry typeRegistry = - (ArtifactTypeRegistry) Invoker.invoke( RepositoryUtils.class, "newArtifactTypeRegistry", - ArtifactHandlerManager.class, artifactHandlerManager ); + ArtifactTypeRegistry typeRegistry = createTypeRegistry(); Dependency aetherRoot = toDependency( coordinate, typeRegistry ); @@ -90,7 +89,17 @@ class Maven31DependencyResolver return resolveDependencies( dependencyFilter, request ); } - + + private static final Class<?>[] ARG_CLASSES = new Class<?>[] { + org.apache.maven.model.Dependency.class, ArtifactTypeRegistry.class + }; + + 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, @@ -109,83 +118,56 @@ class Maven31DependencyResolver Dependency aetherRoot = new Dependency( aetherArtifact, null ); CollectRequest request = new CollectRequest( aetherRoot, aetherRepositories ); - - ArtifactTypeRegistry typeRegistry = - (ArtifactTypeRegistry) Invoker.invoke( RepositoryUtils.class, "newArtifactTypeRegistry", - ArtifactHandlerManager.class, artifactHandlerManager ); - - List<Dependency> aetherDependencies = new ArrayList<Dependency>( model.getDependencies().size() ); - for ( org.apache.maven.model.Dependency mavenDependency : model.getDependencies() ) - { - aetherDependencies.add( toDependency( mavenDependency, typeRegistry ) ); - } - request.setDependencies( aetherDependencies ); + + request.setDependencies( resolveDependencies( model.getDependencies() ) ); DependencyManagement mavenDependencyManagement = model.getDependencyManagement(); if ( mavenDependencyManagement != null ) { - List<Dependency> aetherManagerDependencies = - new ArrayList<Dependency>( mavenDependencyManagement.getDependencies().size() ); - - for ( org.apache.maven.model.Dependency mavenDependency : mavenDependencyManagement.getDependencies() ) - { - aetherManagerDependencies.add( toDependency( mavenDependency, typeRegistry ) ); - } - - request.setManagedDependencies( aetherManagerDependencies ); + request.setManagedDependencies( resolveDependencies( model.getDependencyManagement().getDependencies() ) ); } return resolveDependencies( dependencyFilter, request ); } - @Override + /** + * @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 - 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 ) - throws DependencyResolverException + private List<Dependency> resolveDependencies( Collection<org.apache.maven.model.Dependency> mavenDependencies ) throws DependencyResolverException // CHECKSTYLE_ON: LineLength { - ArtifactTypeRegistry typeRegistry = - (ArtifactTypeRegistry) Invoker.invoke( RepositoryUtils.class, "newArtifactTypeRegistry", - ArtifactHandlerManager.class, artifactHandlerManager ); - - final Class<?>[] argClasses = - new Class<?>[] { org.apache.maven.model.Dependency.class, ArtifactTypeRegistry.class }; - - List<Dependency> aetherDeps = null; - - if ( mavenDependencies != null ) + if ( mavenDependencies == null ) { - aetherDeps = new ArrayList<Dependency>( mavenDependencies.size() ); + return Collections.emptyList(); + } - for ( org.apache.maven.model.Dependency mavenDependency : mavenDependencies ) - { - Object[] args = new Object[] { mavenDependency, typeRegistry }; + ArtifactTypeRegistry typeRegistry = createTypeRegistry(); - Dependency aetherDependency = - (Dependency) Invoker.invoke( RepositoryUtils.class, "toDependency", argClasses, args ); + List<Dependency> aetherDependencies = new ArrayList<>( mavenDependencies.size() ); - aetherDeps.add( aetherDependency ); - } + for ( org.apache.maven.model.Dependency mavenDependency : mavenDependencies ) + { + aetherDependencies.add( toDependency( mavenDependency, typeRegistry ) ); } - List<Dependency> aetherManagedDependencies = null; - - if ( managedMavenDependencies != null ) - { - aetherManagedDependencies = new ArrayList<Dependency>( managedMavenDependencies.size() ); + return aetherDependencies; + } - for ( org.apache.maven.model.Dependency mavenDependency : managedMavenDependencies ) - { - Object[] args = new Object[] { mavenDependency, typeRegistry }; + @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 + { - Dependency aetherDependency = - (Dependency) Invoker.invoke( RepositoryUtils.class, "toDependency", argClasses, args ); + List<Dependency> aetherDeps = resolveDependencies( mavenDependencies ); - aetherManagedDependencies.add( aetherDependency ); - } - } + List<Dependency> aetherManagedDependencies = resolveDependencies( managedMavenDependencies ); CollectRequest request = new CollectRequest( aetherDeps, aetherManagedDependencies, aetherRepositories ); @@ -193,9 +175,10 @@ class Maven31DependencyResolver } // CHECKSTYLE_OFF: LineLength - private Iterable<org.apache.maven.shared.transfer.artifact.resolve.ArtifactResult> resolveDependencies( TransformableFilter dependencyFilter, - CollectRequest request ) - throws DependencyResolverException + private Iterable<org.apache.maven.shared.transfer.artifact.resolve.ArtifactResult> resolveDependencies( + TransformableFilter dependencyFilter, + CollectRequest request + ) throws DependencyResolverException // CHECKSTYLE_ON: LineLength { try @@ -261,10 +244,8 @@ class Maven31DependencyResolver private static Dependency toDependency( org.apache.maven.model.Dependency root, ArtifactTypeRegistry typeRegistry ) throws DependencyResolverException { - Class<?>[] argClasses = new Class<?>[] { org.apache.maven.model.Dependency.class, ArtifactTypeRegistry.class }; - Object[] args = new Object[] { root, typeRegistry }; - return (Dependency) Invoker.invoke( RepositoryUtils.class, "toDependency", argClasses, args ); + return Invoker.invoke( RepositoryUtils.class, "toDependency", ARG_CLASSES, args ); } } diff --git a/src/main/java/org/apache/maven/shared/transfer/dependencies/resolve/internal/MavenDependencyResolver.java b/src/main/java/org/apache/maven/shared/transfer/dependencies/resolve/internal/MavenDependencyResolver.java index da0222d..8652207 100644 --- a/src/main/java/org/apache/maven/shared/transfer/dependencies/resolve/internal/MavenDependencyResolver.java +++ b/src/main/java/org/apache/maven/shared/transfer/dependencies/resolve/internal/MavenDependencyResolver.java @@ -33,7 +33,7 @@ import org.apache.maven.shared.transfer.dependencies.resolve.DependencyResolverE * @author Robert Scholte * */ -public interface MavenDependencyResolver +interface MavenDependencyResolver { Iterable<ArtifactResult> resolveDependencies( DependableCoordinate coordinate, diff --git a/src/main/java/org/apache/maven/shared/transfer/project/install/internal/DefaultProjectInstaller.java b/src/main/java/org/apache/maven/shared/transfer/project/install/internal/DefaultProjectInstaller.java index dd6de0d..02ec826 100644 --- a/src/main/java/org/apache/maven/shared/transfer/project/install/internal/DefaultProjectInstaller.java +++ b/src/main/java/org/apache/maven/shared/transfer/project/install/internal/DefaultProjectInstaller.java @@ -149,10 +149,8 @@ class DefaultProjectInstaller } } - // CHECKSTYLE_OFF: LineLength private void addMetaDataFilesForArtifact( ProjectBuildingRequest buildingRequest, Artifact artifact, - Collection<File> targetMetadataFiles ) - // CHECKSTYLE_ON: LineLength + Collection<File> targetMetadataFiles ) { Collection<ArtifactMetadata> metadatas = artifact.getMetadataList(); if ( metadatas != null ) 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 index 2da84bc..48342dc 100644 --- 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 @@ -33,50 +33,32 @@ final class Invoker // do not instantiate } - public static Object invoke( Object object, String method ) - throws RepositoryManagerException - { - return invoke( object.getClass(), object, method ); - } - - public static Object invoke( Class<?> objectClazz, Object object, String method ) + public static <T> T invoke( Object object, String method ) throws RepositoryManagerException { try { - return objectClazz.getMethod( method ).invoke( object ); + @SuppressWarnings( "unchecked" ) + T invoke = (T) object.getClass().getMethod( method ).invoke( object ); + return invoke; } - catch ( IllegalAccessException e ) - { - throw new RepositoryManagerException( e.getMessage(), e ); - } - catch ( InvocationTargetException e ) - { - throw new RepositoryManagerException( e.getMessage(), e ); - } - catch ( NoSuchMethodException e ) + catch ( IllegalAccessException | InvocationTargetException | NoSuchMethodException e ) { throw new RepositoryManagerException( e.getMessage(), e ); } } - public static Object invoke( Object object, String method, Class<?> argClazz, Object arg ) + public static <T> T invoke( Object object, String method, Class<?> argClazz, Object arg ) throws RepositoryManagerException { try { final Class<?> objectClazz = object.getClass(); - return objectClazz.getMethod( method, argClazz ).invoke( object, arg ); - } - catch ( IllegalAccessException e ) - { - throw new RepositoryManagerException( e.getMessage(), e ); - } - catch ( InvocationTargetException e ) - { - throw new RepositoryManagerException( e.getMessage(), e ); + @SuppressWarnings( "unchecked" ) + T invoke = (T) objectClazz.getMethod( method, argClazz ).invoke( object, arg ); + return invoke; } - catch ( NoSuchMethodException e ) + catch ( IllegalAccessException | InvocationTargetException | NoSuchMethodException e ) { throw new RepositoryManagerException( e.getMessage(), e ); } @@ -89,15 +71,7 @@ final class Invoker { return objectClazz.getMethod( staticMethod, argClazz ).invoke( null, arg ); } - catch ( IllegalAccessException e ) - { - throw new RepositoryManagerException( e.getMessage(), e ); - } - catch ( InvocationTargetException e ) - { - throw new RepositoryManagerException( e.getMessage(), e ); - } - catch ( NoSuchMethodException e ) + 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 86ae613..6f486a0 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 @@ -103,7 +103,7 @@ class Maven31RepositoryManager RepositorySystemSession session; try { - session = (RepositorySystemSession) Invoker.invoke( buildingRequest, "getRepositorySession" ); + session = Invoker.invoke( buildingRequest, "getRepositorySession" ); } catch ( RepositoryManagerException e ) {