Author: rfscholte Date: Thu May 14 11:39:32 2015 New Revision: 1679346 URL: http://svn.apache.org/r1679346 Log: Fix handling of metadata
Modified: maven/shared/trunk/maven-artifact-transfer/src/main/java/org/apache/maven/shared/artifact/deploy/internal/Invoker.java maven/shared/trunk/maven-artifact-transfer/src/main/java/org/apache/maven/shared/artifact/deploy/internal/Maven30ArtifactDeployer.java maven/shared/trunk/maven-artifact-transfer/src/main/java/org/apache/maven/shared/artifact/deploy/internal/Maven31ArtifactDeployer.java Modified: maven/shared/trunk/maven-artifact-transfer/src/main/java/org/apache/maven/shared/artifact/deploy/internal/Invoker.java URL: http://svn.apache.org/viewvc/maven/shared/trunk/maven-artifact-transfer/src/main/java/org/apache/maven/shared/artifact/deploy/internal/Invoker.java?rev=1679346&r1=1679345&r2=1679346&view=diff ============================================================================== --- maven/shared/trunk/maven-artifact-transfer/src/main/java/org/apache/maven/shared/artifact/deploy/internal/Invoker.java (original) +++ maven/shared/trunk/maven-artifact-transfer/src/main/java/org/apache/maven/shared/artifact/deploy/internal/Invoker.java Thu May 14 11:39:32 2015 @@ -81,4 +81,26 @@ final class Invoker throw new ArtifactDeployerException( e.getMessage(), e ); } } + + public static Object 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 ); + } + catch ( NoSuchMethodException e ) + { + throw new ArtifactDeployerException( e.getMessage(), e ); + } + } + } Modified: maven/shared/trunk/maven-artifact-transfer/src/main/java/org/apache/maven/shared/artifact/deploy/internal/Maven30ArtifactDeployer.java URL: http://svn.apache.org/viewvc/maven/shared/trunk/maven-artifact-transfer/src/main/java/org/apache/maven/shared/artifact/deploy/internal/Maven30ArtifactDeployer.java?rev=1679346&r1=1679345&r2=1679346&view=diff ============================================================================== --- maven/shared/trunk/maven-artifact-transfer/src/main/java/org/apache/maven/shared/artifact/deploy/internal/Maven30ArtifactDeployer.java (original) +++ maven/shared/trunk/maven-artifact-transfer/src/main/java/org/apache/maven/shared/artifact/deploy/internal/Maven30ArtifactDeployer.java Thu May 14 11:39:32 2015 @@ -21,7 +21,11 @@ package org.apache.maven.shared.artifact import java.util.Collection; +import org.apache.maven.RepositoryUtils; +import org.apache.maven.artifact.metadata.ArtifactMetadata; +import org.apache.maven.artifact.repository.metadata.ArtifactRepositoryMetadata; import org.apache.maven.project.ProjectBuildingRequest; +import org.apache.maven.project.artifact.ProjectArtifactMetadata; import org.apache.maven.shared.artifact.deploy.ArtifactDeployer; import org.apache.maven.shared.artifact.deploy.ArtifactDeployerException; import org.codehaus.plexus.component.annotations.Component; @@ -33,7 +37,8 @@ import org.sonatype.aether.deployment.De import org.sonatype.aether.deployment.DeploymentException; import org.sonatype.aether.metadata.Metadata; import org.sonatype.aether.metadata.Metadata.Nature; -import org.sonatype.aether.util.artifact.DefaultArtifact; +import org.sonatype.aether.repository.RemoteRepository; +import org.sonatype.aether.util.artifact.SubArtifact; import org.sonatype.aether.util.metadata.DefaultMetadata; @Component( role = ArtifactDeployer.class, hint = "maven3" ) @@ -55,26 +60,39 @@ public class Maven30ArtifactDeployer for ( org.apache.maven.artifact.Artifact mavenArtifact : mavenArtifacts ) { Artifact aetherArtifact = - new DefaultArtifact( mavenArtifact.getGroupId(), mavenArtifact.getArtifactId(), - mavenArtifact.getClassifier(), mavenArtifact.getArtifactHandler().getExtension(), - mavenArtifact.getVersion(), null, mavenArtifact.getFile() ); - + (Artifact) Invoker.invoke( RepositoryUtils.class, "toArtifact", + org.apache.maven.artifact.Artifact.class, mavenArtifact ); request.addArtifact( aetherArtifact ); + + RemoteRepository aetherRepository = + (RemoteRepository) Invoker.invoke( RepositoryUtils.class, "toRepo", + org.apache.maven.artifact.repository.ArtifactRepository.class, + mavenArtifact.getRepository() ); + request.setRepository( aetherRepository ); - if ( mavenArtifact.getMetadataList() != null ) + for ( ArtifactMetadata metadata : mavenArtifact.getMetadataList() ) { - for( org.apache.maven.artifact.metadata.ArtifactMetadata metadata : mavenArtifact.getMetadataList() ) + if ( metadata instanceof ProjectArtifactMetadata ) + { + org.sonatype.aether.artifact.Artifact pomArtifact = new SubArtifact( aetherArtifact, "", "pom" ); + pomArtifact = pomArtifact.setFile( ( (ProjectArtifactMetadata) metadata ).getFile() ); + request.addArtifact( pomArtifact ); + } + else if ( // metadata instanceof SnapshotArtifactRepositoryMetadata || + metadata instanceof ArtifactRepositoryMetadata ) { - Metadata aetherMetadata = new DefaultMetadata( metadata.getGroupId(), metadata.getArtifactId(), "maven-metadata.xml", Nature.RELEASE_OR_SNAPSHOT ); - - request.addMetadata( aetherMetadata ); + // eaten, handled by repo system + } + else + { + // request.addMetadata( new MetadataBridge( metadata ) ); } } } RepositorySystemSession session = (RepositorySystemSession) Invoker.invoke( buildingRequest, "getRepositorySession" ); - + // deploy try { Modified: maven/shared/trunk/maven-artifact-transfer/src/main/java/org/apache/maven/shared/artifact/deploy/internal/Maven31ArtifactDeployer.java URL: http://svn.apache.org/viewvc/maven/shared/trunk/maven-artifact-transfer/src/main/java/org/apache/maven/shared/artifact/deploy/internal/Maven31ArtifactDeployer.java?rev=1679346&r1=1679345&r2=1679346&view=diff ============================================================================== --- maven/shared/trunk/maven-artifact-transfer/src/main/java/org/apache/maven/shared/artifact/deploy/internal/Maven31ArtifactDeployer.java (original) +++ maven/shared/trunk/maven-artifact-transfer/src/main/java/org/apache/maven/shared/artifact/deploy/internal/Maven31ArtifactDeployer.java Thu May 14 11:39:32 2015 @@ -21,7 +21,11 @@ package org.apache.maven.shared.artifact import java.util.Collection; +import org.apache.maven.RepositoryUtils; +import org.apache.maven.artifact.metadata.ArtifactMetadata; +import org.apache.maven.artifact.repository.metadata.ArtifactRepositoryMetadata; import org.apache.maven.project.ProjectBuildingRequest; +import org.apache.maven.project.artifact.ProjectArtifactMetadata; import org.apache.maven.shared.artifact.deploy.ArtifactDeployer; import org.apache.maven.shared.artifact.deploy.ArtifactDeployerException; import org.codehaus.plexus.component.annotations.Component; @@ -29,12 +33,10 @@ import org.codehaus.plexus.component.ann import org.eclipse.aether.RepositorySystem; import org.eclipse.aether.RepositorySystemSession; import org.eclipse.aether.artifact.Artifact; -import org.eclipse.aether.artifact.DefaultArtifact; import org.eclipse.aether.deployment.DeployRequest; import org.eclipse.aether.deployment.DeploymentException; -import org.eclipse.aether.metadata.DefaultMetadata; -import org.eclipse.aether.metadata.Metadata; -import org.eclipse.aether.metadata.Metadata.Nature; +import org.eclipse.aether.repository.RemoteRepository; +import org.eclipse.aether.util.artifact.SubArtifact; @Component( role = ArtifactDeployer.class , hint="maven31" ) public class Maven31ArtifactDeployer implements ArtifactDeployer @@ -54,18 +56,32 @@ public class Maven31ArtifactDeployer imp for ( org.apache.maven.artifact.Artifact mavenArtifact : mavenArtifacts ) { Artifact aetherArtifact = - new DefaultArtifact( mavenArtifact.getGroupId(), mavenArtifact.getArtifactId(), - mavenArtifact.getClassifier(), mavenArtifact.getArtifactHandler().getExtension(), - mavenArtifact.getVersion(), null, mavenArtifact.getFile() ); + (Artifact) Invoker.invoke( RepositoryUtils.class, "toArtifact", + org.apache.maven.artifact.Artifact.class, mavenArtifact ); request.addArtifact( aetherArtifact ); - if ( mavenArtifact.getMetadataList() != null ) + RemoteRepository aetherRepository = + (RemoteRepository) Invoker.invoke( RepositoryUtils.class, "toRepo", + org.apache.maven.artifact.repository.ArtifactRepository.class, + mavenArtifact.getRepository() ); + request.setRepository( aetherRepository ); + + for ( ArtifactMetadata metadata : mavenArtifact.getMetadataList() ) { - for( org.apache.maven.artifact.metadata.ArtifactMetadata metadata : mavenArtifact.getMetadataList() ) + if ( metadata instanceof ProjectArtifactMetadata ) + { + Artifact pomArtifact = new SubArtifact( aetherArtifact, "", "pom" ); + pomArtifact = pomArtifact.setFile( ( (ProjectArtifactMetadata) metadata ).getFile() ); + request.addArtifact( pomArtifact ); + } + else if ( // metadata instanceof SnapshotArtifactRepositoryMetadata || + metadata instanceof ArtifactRepositoryMetadata ) + { + // eaten, handled by repo system + } + else { - Metadata aetherMetadata = new DefaultMetadata( metadata.getGroupId(), metadata.getArtifactId(), "maven-metadata.xml", Nature.RELEASE_OR_SNAPSHOT ); - - request.addMetadata( aetherMetadata ); + // request.addMetadata( new MetadataBridge( metadata ) ); } } }