This is an automated email from the ASF dual-hosted git repository. rfscholte pushed a commit to branch MSHARED-811 in repository https://gitbox.apache.org/repos/asf/maven-artifact-transfer.git
commit 46660e4b972066d25d0e1009a6b2b5ada7d55694 Author: rfscholte <rfscho...@apache.org> AuthorDate: Mon Apr 1 21:36:59 2019 +0200 [MSHARED-811] Improve handling of Metadata --- .../artifact/deployer/ArtifactDeployerMojo.java | 87 +++++++++++++++++ .../artifact/deployer/ArtifactDeployerTest.java | 21 ++++ .../artifact/installer/ArtifactInstallerMojo.java | 86 +++++++++++++++++ .../artifact/installer/ArtifactInstallerTest.java | 16 +++ .../deploy/internal/Maven30ArtifactDeployer.java | 8 +- .../deploy/internal/Maven31ArtifactDeployer.java | 8 +- .../install/internal/Maven30ArtifactInstaller.java | 8 +- .../install/internal/Maven31ArtifactInstaller.java | 8 +- .../shared/transfer/metadata/ArtifactMetadata.java | 33 +++++++ .../metadata/internal/Maven30MetadataBridge.java | 107 +++++++++++++++++++++ .../metadata/internal/Maven31MetadataBridge.java | 106 ++++++++++++++++++++ 11 files changed, 480 insertions(+), 8 deletions(-) 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 039f6f8..2e40e67 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 @@ -21,6 +21,7 @@ package org.apache.maven.plugin.artifact.deployer; import java.io.File; import java.io.IOException; +import java.nio.channels.UnsupportedAddressTypeException; import java.nio.charset.Charset; import java.nio.file.Files; import java.nio.file.Path; @@ -31,6 +32,9 @@ import java.util.List; import org.apache.maven.artifact.Artifact; import org.apache.maven.artifact.DefaultArtifact; import org.apache.maven.artifact.handler.DefaultArtifactHandler; +import org.apache.maven.artifact.metadata.AbstractArtifactMetadata; +import org.apache.maven.artifact.repository.ArtifactRepository; +import org.apache.maven.artifact.repository.metadata.RepositoryMetadataStoreException; import org.apache.maven.execution.MavenSession; import org.apache.maven.plugin.AbstractMojo; import org.apache.maven.plugin.MojoExecutionException; @@ -42,6 +46,7 @@ import org.apache.maven.plugins.annotations.Parameter; import org.apache.maven.project.ProjectBuildingRequest; import org.apache.maven.shared.transfer.artifact.deploy.ArtifactDeployer; import org.apache.maven.shared.transfer.artifact.deploy.ArtifactDeployerException; +import org.apache.maven.shared.transfer.metadata.ArtifactMetadata; import org.apache.maven.shared.transfer.repository.RepositoryManager; /** @@ -113,6 +118,15 @@ public class ArtifactDeployerMojo artifactWithClassifier.setRepository( session.getProjectBuildingRequest().getLocalRepository() ); Collection<Artifact> mavenArtifacts = Arrays.<Artifact>asList( artifact, artifactWithClassifier ); + + for ( Artifact a : mavenArtifacts ) + { + File camVfile = File.createTempFile( "test-deploy", ".camV", artifactsDirectory ); + a.addMetadata( new CustomArtifactMetadata( a, camVfile, true ) ); + + File camGfile = File.createTempFile( "test-deploy", ".camG", artifactsDirectory ); + a.addMetadata( new CustomArtifactMetadata( a, camGfile, false ) ); + } deployer.deploy( session.getProjectBuildingRequest(), mavenArtifacts ); } @@ -126,4 +140,77 @@ public class ArtifactDeployerMojo } } + private class CustomArtifactMetadata extends AbstractArtifactMetadata implements ArtifactMetadata + { + private final File file; + + private final boolean storedInArtifactVersionDirectory; + + protected CustomArtifactMetadata( Artifact artifact, File file, boolean storedInArtifactVersionDirectory ) + { + super( artifact ); + this.file = file; + this.storedInArtifactVersionDirectory = storedInArtifactVersionDirectory; + } + + @Override + public File getFile() + { + return file; + } + + @Override + public String getRemoteFilename() + { + return artifact.getArtifactId() + '-' + artifact.getVersion() + getDotExtension(); + } + + @Override + public String getLocalFilename( ArtifactRepository repository ) + { + return artifact.getArtifactId() + '-' + artifact.getVersion() + getDotExtension(); + } + + @Override + public void storeInLocalRepository( ArtifactRepository localRepository, ArtifactRepository remoteRepository ) + throws RepositoryMetadataStoreException + { + throw new UnsupportedOperationException("ArtifactDeployerMojo.CustomArtifactMetadata.storeInLocalRepository(ArtifactRepository, ArtifactRepository)"); + } + + @Override + public boolean storedInArtifactVersionDirectory() + { + return storedInArtifactVersionDirectory; + } + + @Override + public void merge( org.apache.maven.artifact.metadata.ArtifactMetadata metadata ) + { + throw new UnsupportedOperationException("ArtifactDeployerMojo.CustomArtifactMetadata.merge(ArtifactMetadata)"); + } + + @Override + public void merge( org.apache.maven.repository.legacy.metadata.ArtifactMetadata metadata ) + { + throw new UnsupportedOperationException("ArtifactDeployerMojo.CustomArtifactMetadata.merge(ArtifactMetadata)"); + } + + @Override + public String getBaseVersion() + { + return artifact.getBaseVersion(); + } + + @Override + public Object getKey() + { + return artifact.getId() + getDotExtension(); + } + + private String getDotExtension() + { + return file.getName().substring( file.getName().lastIndexOf( '.' ) ); + } + } } diff --git a/src/it/maven-artifact-deployer-plugin/src/test/java/org/apache/maven/plugin/artifact/deployer/ArtifactDeployerTest.java b/src/it/maven-artifact-deployer-plugin/src/test/java/org/apache/maven/plugin/artifact/deployer/ArtifactDeployerTest.java index 6fcb201..6a9ebd0 100644 --- a/src/it/maven-artifact-deployer-plugin/src/test/java/org/apache/maven/plugin/artifact/deployer/ArtifactDeployerTest.java +++ b/src/it/maven-artifact-deployer-plugin/src/test/java/org/apache/maven/plugin/artifact/deployer/ArtifactDeployerTest.java @@ -70,6 +70,7 @@ public class ArtifactDeployerTest .withCliOption( "-DmvnVersion=" + mavenRuntime.getMavenVersion() ) // Might be superfluous .withCliOption( "-B" ) .withCliOption( "-V" ) + .withCliOption( "-e" ) .execute( "clean", "verify" ); //@formatter:on @@ -92,6 +93,8 @@ public class ArtifactDeployerTest File baseDirectoy = new File( localRepo, "ARTIFACT-DEPLOYER-GROUPID-" + mvnVersion + "/ARTIFACTID/VERSION/" ); checkForArtifactFile( baseDirectoy ); + checkForArtifactGroupMetaFile( baseDirectoy ); + checkForArtifactVersionMetaFile( baseDirectoy ); checkForArtifactClassifierFile( baseDirectoy ); assertTrue( new File( localRepo, "ARTIFACT-DEPLOYER-GROUPID-" + mvnVersion @@ -117,4 +120,22 @@ public class ArtifactDeployerTest assertTrue( "artifactFile md5 not found.", new File( artifactFile.getAbsolutePath() + ".md5" ).exists() ); assertTrue( "artifactFile sha1 not found.", new File( artifactFile.getAbsolutePath() + ".sha1" ).exists() ); } + + private void checkForArtifactGroupMetaFile( File baseDirectoy ) + { + File localFile = new File( baseDirectoy.getParentFile(), "ARTIFACTID-VERSION-local.camG" ); + File baseFile = new File( baseDirectoy.getParentFile(), "ARTIFACTID-VERSION.camG" ); + assertTrue( "localFile '" + localFile.getAbsolutePath() + "'", localFile.exists() ); + assertTrue( "artifactFile md5 not found.", new File( baseFile.getAbsolutePath() + ".md5" ).exists() ); + assertTrue( "artifactFile sha1 not found.", new File( baseFile.getAbsolutePath() + ".sha1" ).exists() ); + } + + private void checkForArtifactVersionMetaFile( File baseDirectoy ) + { + File localFile = new File( baseDirectoy, "ARTIFACTID-VERSION-local.camV" ); + File baseFile = new File( baseDirectoy, "ARTIFACTID-VERSION.camV" ); + assertTrue( "localFile '" + localFile.getAbsolutePath() + "'", localFile.exists() ); + assertTrue( "artifactFile md5 not found.", new File( baseFile.getAbsolutePath() + ".md5" ).exists() ); + assertTrue( "artifactFile sha1 not found.", new File( baseFile.getAbsolutePath() + ".sha1" ).exists() ); + } } \ No newline at end of file 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 2a0bf73..f9f1496 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 @@ -31,6 +31,9 @@ import java.util.List; import org.apache.maven.artifact.Artifact; import org.apache.maven.artifact.DefaultArtifact; import org.apache.maven.artifact.handler.DefaultArtifactHandler; +import org.apache.maven.artifact.metadata.AbstractArtifactMetadata; +import org.apache.maven.artifact.repository.ArtifactRepository; +import org.apache.maven.artifact.repository.metadata.RepositoryMetadataStoreException; import org.apache.maven.execution.MavenSession; import org.apache.maven.plugin.AbstractMojo; import org.apache.maven.plugin.MojoExecutionException; @@ -42,6 +45,7 @@ import org.apache.maven.plugins.annotations.Parameter; import org.apache.maven.project.ProjectBuildingRequest; import org.apache.maven.shared.transfer.artifact.install.ArtifactInstaller; import org.apache.maven.shared.transfer.artifact.install.ArtifactInstallerException; +import org.apache.maven.shared.transfer.metadata.ArtifactMetadata; import org.apache.maven.shared.transfer.repository.RepositoryManager; /** @@ -111,6 +115,15 @@ public class ArtifactInstallerMojo artifactWithClassifier.setFile( tmpFileClassifier ); Collection<Artifact> mavenArtifacts = Arrays.<Artifact>asList( artifact, artifactWithClassifier ); + + for ( Artifact a : mavenArtifacts ) + { + File camVfile = File.createTempFile( "test-install", ".camV", artifactsDirectory ); + a.addMetadata( new CustomArtifactMetadata( a, camVfile, true ) ); + + File camGfile = File.createTempFile( "test-install", ".camG", artifactsDirectory ); + a.addMetadata( new CustomArtifactMetadata( a, camGfile, false ) ); + } installer.install( session.getProjectBuildingRequest(), mavenArtifacts ); } @@ -125,4 +138,77 @@ public class ArtifactInstallerMojo } + private class CustomArtifactMetadata extends AbstractArtifactMetadata implements ArtifactMetadata + { + private final File file; + + private final boolean storedInArtifactVersionDirectory; + + protected CustomArtifactMetadata( Artifact artifact, File file, boolean storedInArtifactVersionDirectory ) + { + super( artifact ); + this.file = file; + this.storedInArtifactVersionDirectory = storedInArtifactVersionDirectory; + } + + @Override + public File getFile() + { + return file; + } + + @Override + public String getRemoteFilename() + { + return artifact.getArtifactId() + '-' + artifact.getVersion() + getDotExtension(); + } + + @Override + public String getLocalFilename( ArtifactRepository repository ) + { + return artifact.getArtifactId() + '-' + artifact.getVersion() + getDotExtension(); + } + + @Override + public void storeInLocalRepository( ArtifactRepository localRepository, ArtifactRepository remoteRepository ) + throws RepositoryMetadataStoreException + { + throw new UnsupportedOperationException("ArtifactDeployerMojo.CustomArtifactMetadata.storeInLocalRepository(ArtifactRepository, ArtifactRepository)"); + } + + @Override + public boolean storedInArtifactVersionDirectory() + { + return storedInArtifactVersionDirectory; + } + + @Override + public void merge( org.apache.maven.artifact.metadata.ArtifactMetadata metadata ) + { + throw new UnsupportedOperationException("ArtifactDeployerMojo.CustomArtifactMetadata.merge(ArtifactMetadata)"); + } + + @Override + public void merge( org.apache.maven.repository.legacy.metadata.ArtifactMetadata metadata ) + { + throw new UnsupportedOperationException("ArtifactDeployerMojo.CustomArtifactMetadata.merge(ArtifactMetadata)"); + } + + @Override + public String getBaseVersion() + { + return artifact.getBaseVersion(); + } + + @Override + public Object getKey() + { + return artifact.getId() + getDotExtension(); + } + + private String getDotExtension() + { + return file.getName().substring( file.getName().lastIndexOf( '.' ) ); + } + } } diff --git a/src/it/maven-artifact-installer-plugin/src/test/java/org/apache/maven/plugin/artifact/installer/ArtifactInstallerTest.java b/src/it/maven-artifact-installer-plugin/src/test/java/org/apache/maven/plugin/artifact/installer/ArtifactInstallerTest.java index a48c51c..7d6a0c3 100644 --- a/src/it/maven-artifact-installer-plugin/src/test/java/org/apache/maven/plugin/artifact/installer/ArtifactInstallerTest.java +++ b/src/it/maven-artifact-installer-plugin/src/test/java/org/apache/maven/plugin/artifact/installer/ArtifactInstallerTest.java @@ -95,6 +95,8 @@ public class ArtifactInstallerTest // We don't have a pom file. checkForNonExistingPomFile( baseDirectoy ); checkForArtifact( baseDirectoy ); + checkForArtifactGroupMetaFile( baseDirectoy ); + checkForArtifactVersionMetaFile( baseDirectoy ); checkForArtifactClassifier( baseDirectoy ); } @@ -116,6 +118,20 @@ public class ArtifactInstallerTest assertFalse( "artifactFile md5 not found.", new File( artifactFile.getAbsolutePath() + ".md5" ).exists() ); assertFalse( "artifactFile sha1 not found.", new File( artifactFile.getAbsolutePath() + ".sha1" ).exists() ); } + + private void checkForArtifactGroupMetaFile( File baseDirectoy ) + { + File localFile = new File( baseDirectoy.getParentFile(), "ARTIFACTID-VERSION-local.camG" ); + File baseFile = new File( baseDirectoy.getParentFile(), "ARTIFACTID-VERSION.camG" ); + assertTrue( "localFile '" + localFile.getAbsolutePath() + "'", localFile.exists() ); + } + + private void checkForArtifactVersionMetaFile( File baseDirectoy ) + { + File localFile = new File( baseDirectoy, "ARTIFACTID-VERSION-local.camV" ); + File baseFile = new File( baseDirectoy, "ARTIFACTID-VERSION.camV" ); + assertTrue( "localFile '" + localFile.getAbsolutePath() + "'", localFile.exists() ); + } private void checkForNonExistingPomFile( File baseDirectoy ) { 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 64d9249..83cc6a2 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 @@ -29,6 +29,7 @@ import org.apache.maven.project.ProjectBuildingRequest; import org.apache.maven.project.artifact.ProjectArtifactMetadata; import org.apache.maven.shared.transfer.artifact.deploy.ArtifactDeployer; import org.apache.maven.shared.transfer.artifact.deploy.ArtifactDeployerException; +import org.apache.maven.shared.transfer.metadata.internal.Maven30MetadataBridge; import org.codehaus.plexus.component.annotations.Component; import org.codehaus.plexus.component.annotations.Requirement; import org.sonatype.aether.RepositorySystem; @@ -109,9 +110,12 @@ class Maven30ArtifactDeployer { // eaten, handled by repo system } - else + else if ( metadata instanceof org.apache.maven.shared.transfer.metadata.ArtifactMetadata ) { - // request.addMetadata( new MetadataBridge( metadata ) ); + org.apache.maven.shared.transfer.metadata.ArtifactMetadata transferMedata = + ( org.apache.maven.shared.transfer.metadata.ArtifactMetadata ) metadata; + + request.addMetadata( new Maven30MetadataBridge( metadata ).setFile( transferMedata.getFile() ) ); } } } 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 82dbf8f..71594de 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 @@ -29,6 +29,7 @@ import org.apache.maven.project.ProjectBuildingRequest; import org.apache.maven.project.artifact.ProjectArtifactMetadata; import org.apache.maven.shared.transfer.artifact.deploy.ArtifactDeployer; import org.apache.maven.shared.transfer.artifact.deploy.ArtifactDeployerException; +import org.apache.maven.shared.transfer.metadata.internal.Maven31MetadataBridge; import org.codehaus.plexus.component.annotations.Component; import org.codehaus.plexus.component.annotations.Requirement; import org.eclipse.aether.RepositorySystem; @@ -109,9 +110,12 @@ class Maven31ArtifactDeployer { // eaten, handled by repo system } - else + else if ( metadata instanceof org.apache.maven.shared.transfer.metadata.ArtifactMetadata ) { - // request.addMetadata( new MetadataBridge( metadata ) ); + org.apache.maven.shared.transfer.metadata.ArtifactMetadata transferMetadata = + (org.apache.maven.shared.transfer.metadata.ArtifactMetadata) metadata; + + request.addMetadata( new Maven31MetadataBridge( metadata ).setFile( transferMetadata.getFile() ) ); } } } 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 013568c..260beec 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 @@ -29,6 +29,7 @@ import org.apache.maven.project.ProjectBuildingRequest; import org.apache.maven.project.artifact.ProjectArtifactMetadata; import org.apache.maven.shared.transfer.artifact.install.ArtifactInstaller; import org.apache.maven.shared.transfer.artifact.install.ArtifactInstallerException; +import org.apache.maven.shared.transfer.metadata.internal.Maven30MetadataBridge; import org.apache.maven.shared.transfer.repository.RepositoryManager; import org.codehaus.plexus.component.annotations.Component; import org.codehaus.plexus.component.annotations.Requirement; @@ -89,9 +90,12 @@ class Maven30ArtifactInstaller { // eaten, handled by repo system } - else + else if ( metadata instanceof org.apache.maven.shared.transfer.metadata.ArtifactMetadata ) { - // request.addMetadata( new MetadataBridge( metadata ) ); + org.apache.maven.shared.transfer.metadata.ArtifactMetadata transferMedata = + ( org.apache.maven.shared.transfer.metadata.ArtifactMetadata ) metadata; + + request.addMetadata( new Maven30MetadataBridge( metadata ).setFile( transferMedata.getFile() ) ); } } } 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 236c0cf..d922b97 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 @@ -29,6 +29,7 @@ import org.apache.maven.project.ProjectBuildingRequest; import org.apache.maven.project.artifact.ProjectArtifactMetadata; import org.apache.maven.shared.transfer.artifact.install.ArtifactInstaller; import org.apache.maven.shared.transfer.artifact.install.ArtifactInstallerException; +import org.apache.maven.shared.transfer.metadata.internal.Maven31MetadataBridge; import org.apache.maven.shared.transfer.repository.RepositoryManager; import org.codehaus.plexus.component.annotations.Component; import org.codehaus.plexus.component.annotations.Requirement; @@ -89,9 +90,12 @@ class Maven31ArtifactInstaller { // eaten, handled by repo system } - else + else if ( metadata instanceof org.apache.maven.shared.transfer.metadata.ArtifactMetadata ) { - // request.addMetadata( new MetadataBridge( metadata ) ); + org.apache.maven.shared.transfer.metadata.ArtifactMetadata transferMetadata = + (org.apache.maven.shared.transfer.metadata.ArtifactMetadata) metadata; + + request.addMetadata( new Maven31MetadataBridge( metadata ).setFile( transferMetadata.getFile() ) ); } } } diff --git a/src/main/java/org/apache/maven/shared/transfer/metadata/ArtifactMetadata.java b/src/main/java/org/apache/maven/shared/transfer/metadata/ArtifactMetadata.java new file mode 100644 index 0000000..e77d6fd --- /dev/null +++ b/src/main/java/org/apache/maven/shared/transfer/metadata/ArtifactMetadata.java @@ -0,0 +1,33 @@ +package org.apache.maven.shared.transfer.metadata; + +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import java.io.File; + +/** + * Original ArtifactMetada with File reference + * + * @author Robert Scholte + * + */ +public interface ArtifactMetadata extends org.apache.maven.repository.legacy.metadata.ArtifactMetadata +{ + File getFile(); +} diff --git a/src/main/java/org/apache/maven/shared/transfer/metadata/internal/Maven30MetadataBridge.java b/src/main/java/org/apache/maven/shared/transfer/metadata/internal/Maven30MetadataBridge.java new file mode 100644 index 0000000..fde00a8 --- /dev/null +++ b/src/main/java/org/apache/maven/shared/transfer/metadata/internal/Maven30MetadataBridge.java @@ -0,0 +1,107 @@ +package org.apache.maven.shared.transfer.metadata.internal; + +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import java.io.File; + +import org.apache.maven.artifact.metadata.ArtifactMetadata; +import org.apache.maven.artifact.repository.metadata.RepositoryMetadata; +import org.sonatype.aether.metadata.Metadata; + +/** + * A MetadataBridge for Maven 3.0 + * + * @author Robert Scholte + * + */ +public class Maven30MetadataBridge implements Metadata +{ + private ArtifactMetadata metadata; + + private File file; + + public Maven30MetadataBridge( ArtifactMetadata metadata ) + { + this.metadata = metadata; + } + + @Override + public String getGroupId() + { + return emptify( metadata.getGroupId() ); + } + + @Override + public String getArtifactId() + { + return metadata.storedInGroupDirectory() ? "" : emptify( metadata.getArtifactId() ); + } + + @Override + public String getVersion() + { + return metadata.storedInArtifactVersionDirectory() ? emptify( metadata.getBaseVersion() ) : ""; + } + + @Override + public String getType() + { + return metadata.getRemoteFilename(); + } + + private String emptify( String string ) + { + return ( string != null ) ? string : ""; + } + + @Override + public File getFile() + { + return file; + } + + @Override + public Maven30MetadataBridge setFile( File file ) + { + this.file = file; + return this; + } + + @Override + public Nature getNature() + { + if ( metadata instanceof RepositoryMetadata ) + { + switch ( ( (RepositoryMetadata) metadata ).getNature() ) + { + case RepositoryMetadata.RELEASE_OR_SNAPSHOT: + return Nature.RELEASE_OR_SNAPSHOT; + case RepositoryMetadata.SNAPSHOT: + return Nature.SNAPSHOT; + default: + return Nature.RELEASE; + } + } + else + { + return Nature.RELEASE; + } + } +} diff --git a/src/main/java/org/apache/maven/shared/transfer/metadata/internal/Maven31MetadataBridge.java b/src/main/java/org/apache/maven/shared/transfer/metadata/internal/Maven31MetadataBridge.java new file mode 100644 index 0000000..b33d96e --- /dev/null +++ b/src/main/java/org/apache/maven/shared/transfer/metadata/internal/Maven31MetadataBridge.java @@ -0,0 +1,106 @@ +package org.apache.maven.shared.transfer.metadata.internal; + +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import java.io.File; +import java.util.Map; + +import org.apache.maven.artifact.metadata.ArtifactMetadata; +import org.apache.maven.artifact.repository.metadata.RepositoryMetadata; +import org.eclipse.aether.metadata.AbstractMetadata; +import org.eclipse.aether.metadata.Metadata; + +/** + * A MetadataBridge for Maven 3.1 + * @author Robert Scholte + */ +public class Maven31MetadataBridge extends AbstractMetadata implements Metadata +{ + private ArtifactMetadata metadata; + + private File file; + + public Maven31MetadataBridge( ArtifactMetadata metadata ) + { + this.metadata = metadata; + } + + @Override + public String getGroupId() + { + return emptify( metadata.getGroupId() ); + } + + @Override + public String getArtifactId() + { + return metadata.storedInGroupDirectory() ? "" : emptify( metadata.getArtifactId() ); + } + + @Override + public String getVersion() + { + return metadata.storedInArtifactVersionDirectory() ? emptify( metadata.getBaseVersion() ) : ""; + } + + @Override + public String getType() + { + return metadata.getRemoteFilename(); + } + + private String emptify( String string ) + { + return ( string != null ) ? string : ""; + } + + @Override + public File getFile() + { + return file; + } + + @Override + public Nature getNature() + { + if ( metadata instanceof RepositoryMetadata ) + { + switch ( ( (RepositoryMetadata) metadata ).getNature() ) + { + case RepositoryMetadata.RELEASE_OR_SNAPSHOT: + return Nature.RELEASE_OR_SNAPSHOT; + case RepositoryMetadata.SNAPSHOT: + return Nature.SNAPSHOT; + default: + return Nature.RELEASE; + } + } + else + { + return Nature.RELEASE; + } + } + + @Override + public Map<String, String> getProperties() + { + return copyProperties( null ); + } +}