Author: rfscholte
Date: Sat Aug  8 10:30:44 2015
New Revision: 1694786

URL: http://svn.apache.org/r1694786
Log:
Add String getPathForLocalArtifact( ProjectBuildingRequest, ArtifactCoordinate 
);

Modified:
    
maven/shared/trunk/maven-artifact-transfer/src/main/java/org/apache/maven/shared/artifact/repository/RepositoryManager.java
    
maven/shared/trunk/maven-artifact-transfer/src/main/java/org/apache/maven/shared/artifact/repository/internal/DefaultRepositoryManager.java
    
maven/shared/trunk/maven-artifact-transfer/src/main/java/org/apache/maven/shared/artifact/repository/internal/Maven30RepositoryManager.java
    
maven/shared/trunk/maven-artifact-transfer/src/main/java/org/apache/maven/shared/artifact/repository/internal/Maven31RepositoryManager.java

Modified: 
maven/shared/trunk/maven-artifact-transfer/src/main/java/org/apache/maven/shared/artifact/repository/RepositoryManager.java
URL: 
http://svn.apache.org/viewvc/maven/shared/trunk/maven-artifact-transfer/src/main/java/org/apache/maven/shared/artifact/repository/RepositoryManager.java?rev=1694786&r1=1694785&r2=1694786&view=diff
==============================================================================
--- 
maven/shared/trunk/maven-artifact-transfer/src/main/java/org/apache/maven/shared/artifact/repository/RepositoryManager.java
 (original)
+++ 
maven/shared/trunk/maven-artifact-transfer/src/main/java/org/apache/maven/shared/artifact/repository/RepositoryManager.java
 Sat Aug  8 10:30:44 2015
@@ -23,6 +23,7 @@ import java.io.File;
 
 import org.apache.maven.artifact.Artifact;
 import org.apache.maven.project.ProjectBuildingRequest;
+import org.apache.maven.shared.artifact.ArtifactCoordinate;
 
 /**
  * 
@@ -31,7 +32,9 @@ public interface RepositoryManager
 {
 
     String getPathForLocalArtifact( ProjectBuildingRequest buildingRequest, 
Artifact artifact );
-    
+
+    String getPathForLocalArtifact( ProjectBuildingRequest buildingRequest, 
ArtifactCoordinate coordinate );
+
     /**
      * Create a new {@code ProjectBuildingRequest} with an adjusted repository 
session. 
      * 

Modified: 
maven/shared/trunk/maven-artifact-transfer/src/main/java/org/apache/maven/shared/artifact/repository/internal/DefaultRepositoryManager.java
URL: 
http://svn.apache.org/viewvc/maven/shared/trunk/maven-artifact-transfer/src/main/java/org/apache/maven/shared/artifact/repository/internal/DefaultRepositoryManager.java?rev=1694786&r1=1694785&r2=1694786&view=diff
==============================================================================
--- 
maven/shared/trunk/maven-artifact-transfer/src/main/java/org/apache/maven/shared/artifact/repository/internal/DefaultRepositoryManager.java
 (original)
+++ 
maven/shared/trunk/maven-artifact-transfer/src/main/java/org/apache/maven/shared/artifact/repository/internal/DefaultRepositoryManager.java
 Sat Aug  8 10:30:44 2015
@@ -23,6 +23,7 @@ import java.io.File;
 
 import org.apache.maven.artifact.Artifact;
 import org.apache.maven.project.ProjectBuildingRequest;
+import org.apache.maven.shared.artifact.ArtifactCoordinate;
 import org.apache.maven.shared.artifact.repository.RepositoryManager;
 import org.codehaus.plexus.PlexusConstants;
 import org.codehaus.plexus.PlexusContainer;
@@ -41,9 +42,7 @@ public class DefaultRepositoryManager
 {
     private PlexusContainer container;
 
-    /**
-     * {@inheritDoc}
-     */
+    @Override
     public String getPathForLocalArtifact( ProjectBuildingRequest 
buildingRequest, Artifact artifact )
     {
         try
@@ -58,12 +57,26 @@ public class DefaultRepositoryManager
         {
             throw new IllegalStateException( e.getMessage(), e );
         }
-
     }
 
-    /**
-     * {@inheritDoc}
-     */
+    @Override
+    public String getPathForLocalArtifact( ProjectBuildingRequest 
buildingRequest, ArtifactCoordinate coor )
+    {
+        try
+        {
+            String hint = isMaven31() ? "maven31" : "maven3";
+
+            RepositoryManager effectiveRepositoryManager = container.lookup( 
RepositoryManager.class, hint );
+
+            return effectiveRepositoryManager.getPathForLocalArtifact( 
buildingRequest, coor );
+        }
+        catch ( ComponentLookupException e )
+        {
+            throw new IllegalStateException( e.getMessage(), e );
+        }
+    }
+    
+    @Override
     public ProjectBuildingRequest setLocalRepositoryBasedir( 
ProjectBuildingRequest request, File basedir )
     {
         try
@@ -80,9 +93,7 @@ public class DefaultRepositoryManager
         }
     }
 
-    /**
-     * {@inheritDoc}
-     */
+    @Override
     public File getLocalRepositoryBasedir( ProjectBuildingRequest request )
     {
         try

Modified: 
maven/shared/trunk/maven-artifact-transfer/src/main/java/org/apache/maven/shared/artifact/repository/internal/Maven30RepositoryManager.java
URL: 
http://svn.apache.org/viewvc/maven/shared/trunk/maven-artifact-transfer/src/main/java/org/apache/maven/shared/artifact/repository/internal/Maven30RepositoryManager.java?rev=1694786&r1=1694785&r2=1694786&view=diff
==============================================================================
--- 
maven/shared/trunk/maven-artifact-transfer/src/main/java/org/apache/maven/shared/artifact/repository/internal/Maven30RepositoryManager.java
 (original)
+++ 
maven/shared/trunk/maven-artifact-transfer/src/main/java/org/apache/maven/shared/artifact/repository/internal/Maven30RepositoryManager.java
 Sat Aug  8 10:30:44 2015
@@ -22,8 +22,10 @@ package org.apache.maven.shared.artifact
 import java.io.File;
 
 import org.apache.maven.RepositoryUtils;
+import org.apache.maven.artifact.handler.manager.ArtifactHandlerManager;
 import org.apache.maven.project.DefaultProjectBuildingRequest;
 import org.apache.maven.project.ProjectBuildingRequest;
+import org.apache.maven.shared.artifact.ArtifactCoordinate;
 import org.apache.maven.shared.artifact.repository.RepositoryManager;
 import org.apache.maven.shared.artifact.repository.RepositoryManagerException;
 import org.codehaus.plexus.component.annotations.Component;
@@ -31,10 +33,13 @@ import org.codehaus.plexus.component.ann
 import org.sonatype.aether.RepositorySystem;
 import org.sonatype.aether.RepositorySystemSession;
 import org.sonatype.aether.artifact.Artifact;
+import org.sonatype.aether.artifact.ArtifactType;
+import org.sonatype.aether.artifact.ArtifactTypeRegistry;
 import org.sonatype.aether.repository.LocalRepository;
 import org.sonatype.aether.repository.LocalRepositoryManager;
 import org.sonatype.aether.util.DefaultRepositoryCache;
 import org.sonatype.aether.util.DefaultRepositorySystemSession;
+import org.sonatype.aether.util.artifact.DefaultArtifact;
 
 /**
  * 
@@ -46,14 +51,16 @@ public class Maven30RepositoryManager
 
     @Requirement
     private RepositorySystem repositorySystem;
+    
+    @Requirement
+    private ArtifactHandlerManager artifactHandlerManager;
 
-    /**
-     * {@inheritDoc}
-     */
+    @Override
     public String getPathForLocalArtifact( ProjectBuildingRequest 
buildingRequest,
                                            org.apache.maven.artifact.Artifact 
mavenArtifact )
     {
         Artifact aetherArtifact;
+        
         RepositorySystemSession session;
         
         // LRM.getPathForLocalArtifact() won't throw an Exception, so 
translate reflection error to RuntimeException
@@ -72,10 +79,34 @@ public class Maven30RepositoryManager
 
         return session.getLocalRepositoryManager().getPathForLocalArtifact( 
aetherArtifact );
     }
+    
+    @Override
+    public String getPathForLocalArtifact( ProjectBuildingRequest 
buildingRequest, ArtifactCoordinate coordinate )
+    {
+        Artifact aetherArtifact;
+        
+        RepositorySystemSession session;
 
-    /**
-     * {@inheritDoc}
-     */
+        // LRM.getPathForLocalArtifact() won't throw an Exception, so 
translate reflection error to RuntimeException
+        try
+        {
+            ArtifactTypeRegistry typeRegistry =
+                (ArtifactTypeRegistry) Invoker.invoke( RepositoryUtils.class, 
"newArtifactTypeRegistry",
+                                                       
ArtifactHandlerManager.class, artifactHandlerManager );
+            
+            aetherArtifact = toArtifact( coordinate, typeRegistry );
+            
+            session = (RepositorySystemSession) Invoker.invoke( 
buildingRequest, "getRepositorySession" );
+        }
+        catch ( RepositoryManagerException e )
+        {
+            throw new RuntimeException( e.getMessage(), e );
+        }
+       
+        return session.getLocalRepositoryManager().getPathForLocalArtifact( 
aetherArtifact );
+    }
+
+    @Override
     public ProjectBuildingRequest setLocalRepositoryBasedir( 
ProjectBuildingRequest buildingRequest, File basedir )
     {
         ProjectBuildingRequest newRequest = new DefaultProjectBuildingRequest( 
buildingRequest );
@@ -116,9 +147,7 @@ public class Maven30RepositoryManager
         return newRequest;
     }
     
-    /**
-     * {@inheritDoc}
-     */
+    @Override
     public File getLocalRepositoryBasedir( ProjectBuildingRequest 
buildingRequest )
     {
         RepositorySystemSession session;
@@ -137,5 +166,20 @@ public class Maven30RepositoryManager
     {
         return localRepository.getContentType();
     }
+    
+    protected Artifact toArtifact( ArtifactCoordinate coordinate, 
ArtifactTypeRegistry typeRegistry )
+    {
+        if ( coordinate == null )
+        {
+            return null;
+        }
 
+        ArtifactType artifactType = typeRegistry.get( coordinate.getType() );
+
+        Artifact result =
+            new DefaultArtifact( coordinate.getGroupId(), 
coordinate.getArtifactId(), coordinate.getClassifier(),
+                                 artifactType.getExtension(), 
coordinate.getVersion(), null, artifactType );
+
+        return result;
+    }
 }

Modified: 
maven/shared/trunk/maven-artifact-transfer/src/main/java/org/apache/maven/shared/artifact/repository/internal/Maven31RepositoryManager.java
URL: 
http://svn.apache.org/viewvc/maven/shared/trunk/maven-artifact-transfer/src/main/java/org/apache/maven/shared/artifact/repository/internal/Maven31RepositoryManager.java?rev=1694786&r1=1694785&r2=1694786&view=diff
==============================================================================
--- 
maven/shared/trunk/maven-artifact-transfer/src/main/java/org/apache/maven/shared/artifact/repository/internal/Maven31RepositoryManager.java
 (original)
+++ 
maven/shared/trunk/maven-artifact-transfer/src/main/java/org/apache/maven/shared/artifact/repository/internal/Maven31RepositoryManager.java
 Sat Aug  8 10:30:44 2015
@@ -22,8 +22,10 @@ package org.apache.maven.shared.artifact
 import java.io.File;
 
 import org.apache.maven.RepositoryUtils;
+import org.apache.maven.artifact.handler.manager.ArtifactHandlerManager;
 import org.apache.maven.project.DefaultProjectBuildingRequest;
 import org.apache.maven.project.ProjectBuildingRequest;
+import org.apache.maven.shared.artifact.ArtifactCoordinate;
 import org.apache.maven.shared.artifact.repository.RepositoryManager;
 import org.apache.maven.shared.artifact.repository.RepositoryManagerException;
 import org.codehaus.plexus.component.annotations.Component;
@@ -33,6 +35,9 @@ import org.eclipse.aether.DefaultReposit
 import org.eclipse.aether.RepositorySystem;
 import org.eclipse.aether.RepositorySystemSession;
 import org.eclipse.aether.artifact.Artifact;
+import org.eclipse.aether.artifact.ArtifactType;
+import org.eclipse.aether.artifact.ArtifactTypeRegistry;
+import org.eclipse.aether.artifact.DefaultArtifact;
 import org.eclipse.aether.repository.LocalRepository;
 import org.eclipse.aether.repository.LocalRepositoryManager;
 
@@ -43,10 +48,13 @@ import org.eclipse.aether.repository.Loc
 public class Maven31RepositoryManager
     implements RepositoryManager
 {
-
     @Requirement
     private RepositorySystem repositorySystem;
 
+    @Requirement
+    private ArtifactHandlerManager artifactHandlerManager;
+
+    @Override
     public String getPathForLocalArtifact( ProjectBuildingRequest 
buildingRequest,
                                            org.apache.maven.artifact.Artifact 
mavenArtifact )
     {
@@ -69,7 +77,34 @@ public class Maven31RepositoryManager
 
         return session.getLocalRepositoryManager().getPathForLocalArtifact( 
aetherArtifact );
     }
+    
+    @Override
+    public String getPathForLocalArtifact( ProjectBuildingRequest 
buildingRequest, ArtifactCoordinate coordinate )
+    {
+        Artifact aetherArtifact;
+        
+        RepositorySystemSession session;
+
+        // LRM.getPathForLocalArtifact() won't throw an Exception, so 
translate reflection error to RuntimeException
+        try
+        {
+            ArtifactTypeRegistry typeRegistry =
+                (ArtifactTypeRegistry) Invoker.invoke( RepositoryUtils.class, 
"newArtifactTypeRegistry",
+                                                       
ArtifactHandlerManager.class, artifactHandlerManager );
+            
+            aetherArtifact = toArtifact( coordinate, typeRegistry );
+            
+            session = (RepositorySystemSession) Invoker.invoke( 
buildingRequest, "getRepositorySession" );
+        }
+        catch ( RepositoryManagerException e )
+        {
+            throw new RuntimeException( e.getMessage(), e );
+        }
+       
+        return session.getLocalRepositoryManager().getPathForLocalArtifact( 
aetherArtifact );
+    }
 
+    @Override
     public ProjectBuildingRequest setLocalRepositoryBasedir( 
ProjectBuildingRequest buildingRequest, File basedir )
     {
         ProjectBuildingRequest newRequest = new DefaultProjectBuildingRequest( 
buildingRequest );
@@ -110,6 +145,7 @@ public class Maven31RepositoryManager
         return newRequest;
     }
 
+    @Override
     public File getLocalRepositoryBasedir( ProjectBuildingRequest 
buildingRequest )
     {
         RepositorySystemSession session;
@@ -139,4 +175,20 @@ public class Maven31RepositoryManager
         }
         return repositoryType;
     }
+    
+    protected Artifact toArtifact( ArtifactCoordinate coordinate, 
ArtifactTypeRegistry typeRegistry )
+    {
+        if ( coordinate == null )
+        {
+            return null;
+        }
+
+        ArtifactType artifactType = typeRegistry.get( coordinate.getType() );
+
+        Artifact result =
+            new DefaultArtifact( coordinate.getGroupId(), 
coordinate.getArtifactId(), coordinate.getClassifier(),
+                                 artifactType.getExtension(), 
coordinate.getVersion(), null, artifactType );
+
+        return result;
+    }
 }


Reply via email to