correct placement of transformations

git-svn-id: https://svn.apache.org/repos/asf/maven/components/trunk@163682 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Brett Leslie Porter 2005-03-24 05:18:41 +00:00
parent ee15019eb8
commit 4ba9fbcc33
7 changed files with 46 additions and 62 deletions

View File

@ -23,10 +23,8 @@ import org.apache.maven.artifact.manager.WagonManager;
import org.apache.maven.artifact.repository.ArtifactRepository; import org.apache.maven.artifact.repository.ArtifactRepository;
import java.io.File; import java.io.File;
import java.util.List;
/**
* @todo snapshot notions need to be dealt with in one place.
*/
public class DefaultArtifactDeployer public class DefaultArtifactDeployer
implements ArtifactDeployer implements ArtifactDeployer
{ {
@ -34,6 +32,8 @@ public class DefaultArtifactDeployer
private ArtifactHandlerManager artifactHandlerManager; private ArtifactHandlerManager artifactHandlerManager;
private List artifactTransformations;
public void deploy( String basedir, Artifact artifact, ArtifactRepository deploymentRepository ) public void deploy( String basedir, Artifact artifact, ArtifactRepository deploymentRepository )
throws ArtifactDeploymentException throws ArtifactDeploymentException
{ {
@ -54,6 +54,8 @@ public class DefaultArtifactDeployer
public void deploy( File source, Artifact artifact, ArtifactRepository deploymentRepository ) public void deploy( File source, Artifact artifact, ArtifactRepository deploymentRepository )
throws ArtifactDeploymentException throws ArtifactDeploymentException
{ {
// TODO: perform transformations
try try
{ {
wagonManager.putArtifact( source, artifact, deploymentRepository ); wagonManager.putArtifact( source, artifact, deploymentRepository );

View File

@ -16,10 +16,7 @@ package org.apache.maven.artifact.handler.manager;
* limitations under the License. * limitations under the License.
*/ */
import org.apache.maven.artifact.Artifact;
import org.apache.maven.artifact.handler.ArtifactHandler; import org.apache.maven.artifact.handler.ArtifactHandler;
import org.apache.maven.artifact.repository.ArtifactRepository;
import org.apache.maven.artifact.repository.layout.ArtifactPathFormatException;
/** /**
* @author <a href="mailto:jason@maven.org">Jason van Zyl</a> * @author <a href="mailto:jason@maven.org">Jason van Zyl</a>
@ -31,10 +28,4 @@ public interface ArtifactHandlerManager
ArtifactHandler getArtifactHandler( String type ) ArtifactHandler getArtifactHandler( String type )
throws ArtifactHandlerNotFoundException; throws ArtifactHandlerNotFoundException;
String getLocalRepositoryArtifactPath( Artifact artifact, ArtifactRepository localRepository )
throws ArtifactPathFormatException;
String getRemoteRepositoryArtifactPath( Artifact artifact, ArtifactRepository remoteRepository )
throws ArtifactPathFormatException;
} }

View File

@ -16,15 +16,9 @@ package org.apache.maven.artifact.handler.manager;
* limitations under the License. * limitations under the License.
*/ */
import org.apache.maven.artifact.Artifact;
import org.apache.maven.artifact.handler.ArtifactHandler; import org.apache.maven.artifact.handler.ArtifactHandler;
import org.apache.maven.artifact.repository.ArtifactRepository;
import org.apache.maven.artifact.repository.layout.ArtifactPathFormatException;
import org.apache.maven.artifact.repository.layout.ArtifactRepositoryLayout; import org.apache.maven.artifact.repository.layout.ArtifactRepositoryLayout;
import org.apache.maven.artifact.transform.ArtifactTransformation;
import java.util.Iterator;
import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Set; import java.util.Set;
@ -36,8 +30,6 @@ import java.util.Set;
public class DefaultArtifactHandlerManager public class DefaultArtifactHandlerManager
implements ArtifactHandlerManager implements ArtifactHandlerManager
{ {
private List artifactTransformations;
private Map artifactHandlers; private Map artifactHandlers;
private ArtifactRepositoryLayout artifactRepositoryLayout; private ArtifactRepositoryLayout artifactRepositoryLayout;
@ -59,31 +51,4 @@ public class DefaultArtifactHandlerManager
{ {
return artifactHandlers.keySet(); return artifactHandlers.keySet();
} }
}
public String getRemoteRepositoryArtifactPath( Artifact artifact, ArtifactRepository remoteRepository )
throws ArtifactPathFormatException
{
// TODO: note that these are currrently assuming only PUT operations, not GET operations
// TODO: note also that these add metadata to the artifacts, so it is assumed this is only called once per artifact - needs to be fixed
for ( Iterator i = artifactTransformations.iterator(); i.hasNext(); )
{
ArtifactTransformation transform = (ArtifactTransformation) i.next();
artifact = transform.transformRemoteArtifact( artifact, remoteRepository );
}
return remoteRepository.pathOf( artifact );
}
public String getLocalRepositoryArtifactPath( Artifact artifact, ArtifactRepository localRepository )
throws ArtifactPathFormatException
{
for ( Iterator i = artifactTransformations.iterator(); i.hasNext(); )
{
ArtifactTransformation transform = (ArtifactTransformation) i.next();
artifact = transform.transformLocalArtifact( artifact, localRepository );
}
return localRepository.getBasedir() + "/" + localRepository.pathOf( artifact );
}
}

View File

@ -22,12 +22,14 @@ import org.apache.maven.artifact.handler.manager.ArtifactHandlerNotFoundExceptio
import org.apache.maven.artifact.metadata.ArtifactMetadata; import org.apache.maven.artifact.metadata.ArtifactMetadata;
import org.apache.maven.artifact.repository.ArtifactRepository; import org.apache.maven.artifact.repository.ArtifactRepository;
import org.apache.maven.artifact.repository.layout.ArtifactPathFormatException; import org.apache.maven.artifact.repository.layout.ArtifactPathFormatException;
import org.apache.maven.artifact.transform.ArtifactTransformation;
import org.codehaus.plexus.logging.AbstractLogEnabled; import org.codehaus.plexus.logging.AbstractLogEnabled;
import org.codehaus.plexus.util.FileUtils; import org.codehaus.plexus.util.FileUtils;
import java.io.File; import java.io.File;
import java.io.IOException; import java.io.IOException;
import java.util.Iterator; import java.util.Iterator;
import java.util.List;
public class DefaultArtifactInstaller public class DefaultArtifactInstaller
extends AbstractLogEnabled extends AbstractLogEnabled
@ -35,6 +37,8 @@ public class DefaultArtifactInstaller
{ {
private ArtifactHandlerManager artifactHandlerManager; private ArtifactHandlerManager artifactHandlerManager;
private List artifactTransformations;
public void install( String basedir, Artifact artifact, ArtifactRepository localRepository ) public void install( String basedir, Artifact artifact, ArtifactRepository localRepository )
throws ArtifactInstallationException throws ArtifactInstallationException
{ {
@ -57,12 +61,19 @@ public class DefaultArtifactInstaller
{ {
try try
{ {
String localPath = artifactHandlerManager.getLocalRepositoryArtifactPath( artifact, localRepository ); // TODO: better to have a transform manager, or reuse the handler manager again so we don't have these requirements duplicated all over?
for ( Iterator i = artifactTransformations.iterator(); i.hasNext(); )
{
ArtifactTransformation transform = (ArtifactTransformation) i.next();
artifact = transform.transformLocalArtifact( artifact, localRepository );
}
String localPath = localRepository.pathOf( artifact );
getLogger().info( "Installing " + source.getPath() + " to " + localPath ); getLogger().info( "Installing " + source.getPath() + " to " + localPath );
// TODO: use a file: wagon and the wagon manager? // TODO: use a file: wagon and the wagon manager?
File destination = new File( localPath ); File destination = new File( localRepository.getBasedir(), localPath );
if ( !destination.getParentFile().exists() ) if ( !destination.getParentFile().exists() )
{ {
destination.getParentFile().mkdirs(); destination.getParentFile().mkdirs();

View File

@ -91,7 +91,7 @@ public class DefaultWagonManager
wagon.connect( repository, getProxy( repository.getProtocol() ) ); wagon.connect( repository, getProxy( repository.getProtocol() ) );
wagon.put( source, artifactHandlerManager.getRemoteRepositoryArtifactPath( artifact, repository ) ); wagon.put( source, repository.pathOf( artifact ) );
wagon.disconnect(); wagon.disconnect();
@ -107,11 +107,10 @@ public class DefaultWagonManager
{ {
ArtifactRepository repository = (ArtifactRepository) iter.next(); ArtifactRepository repository = (ArtifactRepository) iter.next();
// TODO: should we avoid doing the transforms on this every time, and instead transform outside the loop?
String remotePath = null; String remotePath = null;
try try
{ {
remotePath = artifactHandlerManager.getRemoteRepositoryArtifactPath( artifact, repository ); remotePath = repository.pathOf( artifact );
} }
catch ( ArtifactPathFormatException e ) catch ( ArtifactPathFormatException e )
{ {

View File

@ -25,6 +25,7 @@ import org.apache.maven.artifact.metadata.ArtifactMetadataSource;
import org.apache.maven.artifact.repository.ArtifactRepository; import org.apache.maven.artifact.repository.ArtifactRepository;
import org.apache.maven.artifact.repository.layout.ArtifactPathFormatException; import org.apache.maven.artifact.repository.layout.ArtifactPathFormatException;
import org.apache.maven.artifact.resolver.filter.ArtifactFilter; import org.apache.maven.artifact.resolver.filter.ArtifactFilter;
import org.apache.maven.artifact.transform.ArtifactTransformation;
import org.apache.maven.wagon.TransferFailedException; import org.apache.maven.wagon.TransferFailedException;
import org.codehaus.plexus.logging.AbstractLogEnabled; import org.codehaus.plexus.logging.AbstractLogEnabled;
import org.codehaus.plexus.logging.Logger; import org.codehaus.plexus.logging.Logger;
@ -56,6 +57,8 @@ public class DefaultArtifactResolver
private ArtifactHandlerManager artifactHandlerManager; private ArtifactHandlerManager artifactHandlerManager;
private List artifactTransformations;
// ---------------------------------------------------------------------- // ----------------------------------------------------------------------
// Implementation // Implementation
// ---------------------------------------------------------------------- // ----------------------------------------------------------------------
@ -67,27 +70,32 @@ public class DefaultArtifactResolver
// ---------------------------------------------------------------------- // ----------------------------------------------------------------------
// Check for the existence of the artifact in the specified local // Check for the existence of the artifact in the specified local
// ArtifactRepository. If it is present then simply return as the // ArtifactRepository. If it is present then simply return as the
// request // request for resolution has been satisfied.
// for resolution has been satisfied.
// ---------------------------------------------------------------------- // ----------------------------------------------------------------------
Logger logger = getLogger(); Logger logger = getLogger();
logger.debug( "Resolving: " + artifact.getId() + " from:\n" + "{localRepository: " + localRepository + "}\n" + logger.debug( "Resolving: " + artifact.getId() + " from:\n" + "{localRepository: " + localRepository + "}\n" +
"{remoteRepositories: " + remoteRepositories + "}" ); "{remoteRepositories: " + remoteRepositories + "}" );
// TODO: better to have a transform manager, or reuse the handler manager again so we don't have these requirements duplicated all over?
for ( Iterator i = artifactTransformations.iterator(); i.hasNext(); )
{
ArtifactTransformation transform = (ArtifactTransformation) i.next();
artifact = transform.transformLocalArtifact( artifact, localRepository );
}
String localPath; String localPath;
try try
{ {
localPath = artifactHandlerManager.getLocalRepositoryArtifactPath( artifact, localRepository ); localPath = localRepository.pathOf( artifact );
} }
catch ( ArtifactPathFormatException e ) catch ( ArtifactPathFormatException e )
{ {
throw new ArtifactResolutionException( "Error resolving artifact: ", e ); throw new ArtifactResolutionException( "Error resolving artifact: ", e );
} }
// TODO: what if it were a snapshot that was transformed? File destination = new File( localRepository.getBasedir(), localPath );
File destination = new File( localPath );
artifact.setFile( destination ); artifact.setFile( destination );
if ( destination.exists() ) if ( destination.exists() )

View File

@ -25,6 +25,10 @@
<requirement> <requirement>
<role>org.apache.maven.artifact.handler.manager.ArtifactHandlerManager</role> <role>org.apache.maven.artifact.handler.manager.ArtifactHandlerManager</role>
</requirement> </requirement>
<requirement>
<role>org.apache.maven.artifact.transform.ArtifactTransformation</role>
<field-name>artifactTransformations</field-name>
</requirement>
</requirements> </requirements>
</component> </component>
@ -55,6 +59,10 @@
<requirement> <requirement>
<role>org.apache.maven.artifact.handler.manager.ArtifactHandlerManager</role> <role>org.apache.maven.artifact.handler.manager.ArtifactHandlerManager</role>
</requirement> </requirement>
<requirement>
<role>org.apache.maven.artifact.transform.ArtifactTransformation</role>
<field-name>artifactTransformations</field-name>
</requirement>
</requirements> </requirements>
</component> </component>
@ -73,6 +81,10 @@
<requirement> <requirement>
<role>org.apache.maven.artifact.handler.manager.ArtifactHandlerManager</role> <role>org.apache.maven.artifact.handler.manager.ArtifactHandlerManager</role>
</requirement> </requirement>
<requirement>
<role>org.apache.maven.artifact.transform.ArtifactTransformation</role>
<field-name>artifactTransformations</field-name>
</requirement>
</requirements> </requirements>
</component> </component>
@ -111,10 +123,6 @@
<role>org.apache.maven.artifact.handler.ArtifactHandler</role> <role>org.apache.maven.artifact.handler.ArtifactHandler</role>
<field-name>artifactHandlers</field-name> <field-name>artifactHandlers</field-name>
</requirement> </requirement>
<requirement>
<role>org.apache.maven.artifact.transform.ArtifactTransformation</role>
<field-name>artifactTransformations</field-name>
</requirement>
</requirements> </requirements>
</component> </component>