Replace deprecated ArtifactFactory with RepositoryUtils to translate an Aether artifact to a Maven artifact

git-svn-id: https://svn.apache.org/repos/asf/maven/shared/trunk@1687128 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/src/main/java/org/apache/maven/shared/dependency/graph/internal/Invoker.java b/src/main/java/org/apache/maven/shared/dependency/graph/internal/Invoker.java
index e7df4bf..f591973 100644
--- a/src/main/java/org/apache/maven/shared/dependency/graph/internal/Invoker.java
+++ b/src/main/java/org/apache/maven/shared/dependency/graph/internal/Invoker.java
@@ -19,10 +19,10 @@
  * under the License.
  */
 
-import org.apache.maven.shared.dependency.graph.DependencyGraphBuilderException;
-
 import java.lang.reflect.InvocationTargetException;
 
+import org.apache.maven.shared.dependency.graph.DependencyGraphBuilderException;
+
 /**
  * Invokes method on objects using reflection.
  */
@@ -81,4 +81,25 @@
             throw new DependencyGraphBuilderException( e.getMessage(), e );
         }
     }
+    
+    public static Object invoke( Class<?> objectClazz, String staticMethod, Class<?> argClazz, Object arg )
+                    throws DependencyGraphBuilderException
+    {
+        try
+        {
+            return objectClazz.getMethod( staticMethod, argClazz ).invoke( null, arg );
+        }
+        catch ( IllegalAccessException e )
+        {
+            throw new DependencyGraphBuilderException( e.getMessage(), e );
+        }
+        catch ( InvocationTargetException e )
+        {
+            throw new DependencyGraphBuilderException( e.getMessage(), e );
+        }
+        catch ( NoSuchMethodException e )
+        {
+            throw new DependencyGraphBuilderException( e.getMessage(), e );
+        }
+    }
 }
diff --git a/src/main/java/org/apache/maven/shared/dependency/graph/internal/Maven31DependencyGraphBuilder.java b/src/main/java/org/apache/maven/shared/dependency/graph/internal/Maven31DependencyGraphBuilder.java
index 066e6ff..95d5665 100644
--- a/src/main/java/org/apache/maven/shared/dependency/graph/internal/Maven31DependencyGraphBuilder.java
+++ b/src/main/java/org/apache/maven/shared/dependency/graph/internal/Maven31DependencyGraphBuilder.java
@@ -19,10 +19,16 @@
  * under the License.
  */
 
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+
+import org.apache.maven.RepositoryUtils;
 import org.apache.maven.artifact.Artifact;
-import org.apache.maven.artifact.factory.ArtifactFactory;
 import org.apache.maven.artifact.resolver.filter.ArtifactFilter;
-import org.apache.maven.artifact.versioning.VersionRange;
 import org.apache.maven.project.DefaultDependencyResolutionRequest;
 import org.apache.maven.project.DependencyResolutionException;
 import org.apache.maven.project.DependencyResolutionRequest;
@@ -40,13 +46,6 @@
 import org.eclipse.aether.graph.Dependency;
 import org.eclipse.aether.version.VersionConstraint;
 
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Set;
-
 /**
  * Wrapper around Eclipse Aether dependency resolver, used in Maven 3.1.
  *
@@ -62,9 +61,6 @@
     @Requirement
     private ProjectDependenciesResolver resolver;
 
-    @Requirement
-    private ArtifactFactory factory;
-
     /**
      * Builds the dependency graph for Maven 3.1+.
      *
@@ -189,11 +185,16 @@
     private Artifact getDependencyArtifact( Dependency dep )
     {
         org.eclipse.aether.artifact.Artifact artifact = dep.getArtifact();
-
-        return factory.createDependencyArtifact( artifact.getGroupId(), artifact.getArtifactId(),
-                                                 VersionRange.createFromVersion( artifact.getVersion() ),
-                                                 artifact.getProperty( "type", artifact.getExtension() ),
-                                                 artifact.getClassifier(), dep.getScope(), dep.isOptional() );
+        
+        try
+        {
+            return (Artifact) Invoker.invoke( RepositoryUtils.class, "toArtifact", org.eclipse.aether.artifact.Artifact.class, artifact );
+        }
+        catch ( DependencyGraphBuilderException e )
+        {
+            // ReflectionException should not happen
+            throw new RuntimeException( e.getMessage(), e );
+        }
     }
 
     private DependencyNode buildDependencyNode( DependencyNode parent, org.eclipse.aether.graph.DependencyNode node,
diff --git a/src/main/java/org/apache/maven/shared/dependency/graph/internal/Maven3DependencyGraphBuilder.java b/src/main/java/org/apache/maven/shared/dependency/graph/internal/Maven3DependencyGraphBuilder.java
index a24c6e8..1b9870a 100644
--- a/src/main/java/org/apache/maven/shared/dependency/graph/internal/Maven3DependencyGraphBuilder.java
+++ b/src/main/java/org/apache/maven/shared/dependency/graph/internal/Maven3DependencyGraphBuilder.java
@@ -19,10 +19,16 @@
  * under the License.
  */
 
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+
+import org.apache.maven.RepositoryUtils;
 import org.apache.maven.artifact.Artifact;
-import org.apache.maven.artifact.factory.ArtifactFactory;
 import org.apache.maven.artifact.resolver.filter.ArtifactFilter;
-import org.apache.maven.artifact.versioning.VersionRange;
 import org.apache.maven.project.DefaultDependencyResolutionRequest;
 import org.apache.maven.project.DependencyResolutionException;
 import org.apache.maven.project.DependencyResolutionRequest;
@@ -39,13 +45,6 @@
 import org.sonatype.aether.graph.Dependency;
 import org.sonatype.aether.version.VersionConstraint;
 
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Set;
-
 /**
  * Wrapper around Maven 3 dependency resolver.
  *
@@ -61,9 +60,6 @@
     @Requirement
     private ProjectDependenciesResolver resolver;
 
-    @Requirement
-    private ArtifactFactory factory;
-
     /**
      * Builds the dependency graph for Maven 3.
      *
@@ -175,12 +171,8 @@
 
     private Artifact getDependencyArtifact( Dependency dep )
     {
-        org.sonatype.aether.artifact.Artifact artifact = dep.getArtifact();
-
-        return factory.createDependencyArtifact( artifact.getGroupId(), artifact.getArtifactId(),
-                                                 VersionRange.createFromVersion( artifact.getVersion() ),
-                                                 artifact.getProperty( "type", artifact.getExtension() ),
-                                                 artifact.getClassifier(), dep.getScope(), dep.isOptional() );
+        
+        return RepositoryUtils.toArtifact( dep.getArtifact() );
     }
 
     private DependencyNode buildDependencyNode( DependencyNode parent, org.sonatype.aether.graph.DependencyNode node,