You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by kh...@apache.org on 2018/04/08 19:08:58 UTC
[maven-artifact-transfer] 03/03: [MSHARED-695] - WIP - Move
checksum generation from install to deploy o Moved checksum generation into
deploy part. Removed checksume from install
This is an automated email from the ASF dual-hosted git repository.
khmarbaise pushed a commit to branch MSHARED-695
in repository https://gitbox.apache.org/repos/asf/maven-artifact-transfer.git
commit 30e1bad9e1c5d516ff77884a99cdb9689f16600e
Author: Karl Heinz Marbaise <kh...@apache.org>
AuthorDate: Sun Apr 8 21:08:12 2018 +0200
[MSHARED-695] - WIP - Move checksum generation from install to deploy
o Moved checksum generation into deploy part. Removed checksume from
install
---
.../project/install/ProjectInstallerTest.java | 12 +-
.../install/internal/DefaultProjectInstaller.java | 122 +--------------------
.../project/install/internal/DualDigester.java | 115 -------------------
.../internal/DualDigesterTest.java | 2 +-
4 files changed, 11 insertions(+), 240 deletions(-)
diff --git a/src/it/maven-project-installer-plugin/src/test/java/org/apache/maven/plugin/project/install/ProjectInstallerTest.java b/src/it/maven-project-installer-plugin/src/test/java/org/apache/maven/plugin/project/install/ProjectInstallerTest.java
index c6b8e2e..e13f99e 100644
--- a/src/it/maven-project-installer-plugin/src/test/java/org/apache/maven/plugin/project/install/ProjectInstallerTest.java
+++ b/src/it/maven-project-installer-plugin/src/test/java/org/apache/maven/plugin/project/install/ProjectInstallerTest.java
@@ -106,8 +106,8 @@ public class ProjectInstallerTest
{
File jarClassifierFile = new File( baseDirectoy, "maven-project-installer-plugin-it-1.0.0-A-classifier.jar" );
assertTrue( "jarClassifierFile '" + jarClassifierFile.getAbsolutePath() + "'", jarClassifierFile.exists() );
- assertTrue( "jarClassifier md5 not found.", new File( jarClassifierFile.getAbsolutePath() + ".md5" ).exists() );
- assertTrue( "jarClassifier sha1 not found.",
+ assertFalse( "jarClassifier md5 not found.", new File( jarClassifierFile.getAbsolutePath() + ".md5" ).exists() );
+ assertFalse( "jarClassifier sha1 not found.",
new File( jarClassifierFile.getAbsolutePath() + ".sha1" ).exists() );
}
@@ -115,15 +115,15 @@ public class ProjectInstallerTest
{
File jarFile = new File( baseDirectoy, "maven-project-installer-plugin-it-1.0.0-A.jar" );
assertTrue( "jarFile '" + jarFile.getAbsolutePath() + "'", jarFile.exists() );
- assertTrue( "jar md5 not found.", new File( jarFile.getAbsolutePath() + ".md5" ).exists() );
- assertTrue( "jar sha1 not found.", new File( jarFile.getAbsolutePath() + ".sha1" ).exists() );
+ assertFalse( "jar md5 not found.", new File( jarFile.getAbsolutePath() + ".md5" ).exists() );
+ assertFalse( "jar sha1 not found.", new File( jarFile.getAbsolutePath() + ".sha1" ).exists() );
}
private void checkForPomFile( File baseDirectoy )
{
File pomFile = new File( baseDirectoy, "maven-project-installer-plugin-it-1.0.0-A.pom" );
assertTrue( "pomFile '" + pomFile.getAbsolutePath() + "'", pomFile.exists() );
- assertTrue( "pom md5 not found.", new File( pomFile.getAbsolutePath() + ".md5" ).exists() );
- assertTrue( "pom sha1 not found.", new File( pomFile.getAbsolutePath() + ".sha1" ).exists() );
+ assertFalse( "pom md5 not found.", new File( pomFile.getAbsolutePath() + ".md5" ).exists() );
+ assertFalse( "pom sha1 not found.", new File( pomFile.getAbsolutePath() + ".sha1" ).exists() );
}
}
\ No newline at end of file
diff --git a/src/main/java/org/apache/maven/shared/project/install/internal/DefaultProjectInstaller.java b/src/main/java/org/apache/maven/shared/project/install/internal/DefaultProjectInstaller.java
index c6dd828..4e001db 100644
--- a/src/main/java/org/apache/maven/shared/project/install/internal/DefaultProjectInstaller.java
+++ b/src/main/java/org/apache/maven/shared/project/install/internal/DefaultProjectInstaller.java
@@ -40,7 +40,6 @@ import org.apache.maven.shared.project.install.ProjectInstallerRequest;
import org.apache.maven.shared.repository.RepositoryManager;
import org.codehaus.plexus.component.annotations.Component;
import org.codehaus.plexus.component.annotations.Requirement;
-import org.codehaus.plexus.util.FileUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -62,8 +61,6 @@ class DefaultProjectInstaller
@Requirement
private RepositoryManager repositoryManager;
- private final DualDigester digester = new DualDigester();
-
/**
* {@inheritDoc}
*/
@@ -75,8 +72,6 @@ class DefaultProjectInstaller
validateParameters( buildingRequest, installerRequest );
MavenProject project = installerRequest.getProject();
- boolean createChecksum = true;
-
Artifact artifact = project.getArtifact();
String packaging = project.getPackaging();
File pomFile = project.getFile();
@@ -96,8 +91,7 @@ class DefaultProjectInstaller
{
installer.install( buildingRequest,
Collections.<Artifact>singletonList( new ProjectArtifact( project ) ) );
- installChecksums( buildingRequest, artifact, createChecksum );
- addMetaDataFilesForArtifact( buildingRequest, artifact, metadataFiles, createChecksum );
+ addMetaDataFilesForArtifact( buildingRequest, artifact, metadataFiles );
}
}
else
@@ -115,8 +109,7 @@ class DefaultProjectInstaller
if ( file != null && file.isFile() )
{
installer.install( buildingRequest, Collections.<Artifact>singletonList( artifact ) );
- installChecksums( buildingRequest, artifact, createChecksum );
- addMetaDataFilesForArtifact( buildingRequest, artifact, metadataFiles, createChecksum );
+ addMetaDataFilesForArtifact( buildingRequest, artifact, metadataFiles );
}
else if ( !attachedArtifacts.isEmpty() )
{
@@ -134,11 +127,9 @@ class DefaultProjectInstaller
for ( Artifact attached : attachedArtifacts )
{
installer.install( buildingRequest, Collections.singletonList( attached ) );
- installChecksums( buildingRequest, attached, createChecksum );
- addMetaDataFilesForArtifact( buildingRequest, attached, metadataFiles, createChecksum );
+ addMetaDataFilesForArtifact( buildingRequest, attached, metadataFiles );
}
- installChecksums( metadataFiles );
}
private void validateParameters( ProjectBuildingRequest buildingRequest, ProjectInstallerRequest installerRequest )
@@ -153,40 +144,11 @@ class DefaultProjectInstaller
}
}
- /**
- * Installs the checksums for the specified artifact if this has been enabled in the plugin configuration. This
- * method creates checksums for files that have already been installed to the local repo to account for on-the-fly
- * generated/updated files. For example, in Maven 2.0.4- the <code>ProjectArtifactMetadata</code> did not install
- * the original POM file (cf. MNG-2820). While the plugin currently requires Maven 2.0.6, we continue to hash the
- * installed POM for robustness with regard to future changes like re-introducing some kind of POM filtering.
- *
- * @param buildingRequest The project building request, must not be <code>null</code>.
- * @param artifact The artifact for which to create checksums, must not be <code>null</code>.
- * @param createChecksum {@code true} if checksum should be created, otherwise {@code false}.
- * @throws IOException If the checksums could not be installed.
- */
- private void installChecksums( ProjectBuildingRequest buildingRequest, Artifact artifact, boolean createChecksum )
- throws IOException
- {
- if ( !createChecksum )
- {
- return;
- }
-
- File artifactFile = getLocalRepoFile( buildingRequest, artifact );
- installChecksums( artifactFile );
- }
-
// CHECKSTYLE_OFF: LineLength
private void addMetaDataFilesForArtifact( ProjectBuildingRequest buildingRequest, Artifact artifact,
- Collection<File> targetMetadataFiles, boolean createChecksum )
+ Collection<File> targetMetadataFiles )
// CHECKSTYLE_ON: LineLength
{
- if ( !createChecksum )
- {
- return;
- }
-
Collection<ArtifactMetadata> metadatas = artifact.getMetadataList();
if ( metadatas != null )
{
@@ -199,82 +161,6 @@ class DefaultProjectInstaller
}
/**
- * Installs the checksums for the specified metadata files.
- *
- * @param metadataFiles The collection of metadata files to install checksums for, must not be <code>null</code>.
- * @throws IOException If the checksums could not be installed.
- */
- private void installChecksums( Collection<File> metadataFiles )
- throws IOException
- {
- for ( File metadataFile : metadataFiles )
- {
- installChecksums( metadataFile );
- }
- }
-
- /**
- * Installs the checksums for the specified file (if it exists).
- *
- * @param installedFile The path to the already installed file in the local repo for which to generate checksums,
- * must not be <code>null</code>.
- * @throws IOException In case of errors. Could not install checksums.
- */
- private void installChecksums( File installedFile )
- throws IOException
- {
- boolean signatureFile = installedFile.getName().endsWith( ".asc" );
- if ( installedFile.isFile() && !signatureFile )
- {
- LOGGER.debug( "Calculating checksums for " + installedFile );
- digester.calculate( installedFile );
- installChecksum( installedFile, ".md5", digester.getMd5() );
- installChecksum( installedFile, ".sha1", digester.getSha1() );
- }
- }
-
- /**
- * Installs a checksum for the specified file.
- *
- * @param installedFile The base path from which the path to the checksum files is derived by appending the given
- * file extension, must not be <code>null</code>.
- * @param ext The file extension (including the leading dot) to use for the checksum file, must not be
- * <code>null</code>.
- * @param checksum the checksum to write
- * @throws IOException If the checksum could not be installed.
- */
- private void installChecksum( File installedFile, String ext, String checksum )
- throws IOException
- {
- File checksumFile = new File( installedFile.getAbsolutePath() + ext );
- LOGGER.debug( "Installing checksum to " + checksumFile );
- try
- {
- // noinspection ResultOfMethodCallIgnored
- checksumFile.getParentFile().mkdirs();
- FileUtils.fileWrite( checksumFile.getAbsolutePath(), "UTF-8", checksum );
- }
- catch ( IOException e )
- {
- throw new IOException( "Failed to install checksum to " + checksumFile, e );
- }
- }
-
- /**
- * Gets the path of the specified artifact within the local repository. Note that the returned path need not exist
- * (yet).
- *
- * @param buildingRequest The project building request, must not be <code>null</code>.
- * @param artifact The artifact whose local repo path should be determined, must not be <code>null</code>.
- * @return The absolute path to the artifact when installed, never <code>null</code>.
- */
- private File getLocalRepoFile( ProjectBuildingRequest buildingRequest, Artifact artifact )
- {
- String path = repositoryManager.getPathForLocalArtifact( buildingRequest, artifact );
- return new File( repositoryManager.getLocalRepositoryBasedir( buildingRequest ), path );
- }
-
- /**
* Gets the path of the specified artifact metadata within the local repository. Note that the returned path need
* not exist (yet).
*
diff --git a/src/main/java/org/apache/maven/shared/project/install/internal/DualDigester.java b/src/main/java/org/apache/maven/shared/project/install/internal/DualDigester.java
deleted file mode 100644
index 000bf65..0000000
--- a/src/main/java/org/apache/maven/shared/project/install/internal/DualDigester.java
+++ /dev/null
@@ -1,115 +0,0 @@
-package org.apache.maven.shared.project.install.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.io.FileInputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.security.MessageDigest;
-import java.security.NoSuchAlgorithmException;
-
-import org.apache.commons.codec.binary.Hex;
-import org.codehaus.plexus.util.IOUtil;
-
-
-/**
- * Calculates md5 and sha1 digest.
- * <p/>
- * Todo: Consider using a thread to calculate one of the digests when the files are large; it's fairly slow !
- *
- * @author Kristian Rosenvold
- */
-//TODO: Think about this class if we could use the ChecksumUtils class of
-// aether-util ? I think we need to go via reflection.
-//
-class DualDigester
-{
- private final MessageDigest md5 = getDigester( "MD5" );
-
- private final MessageDigest sh1 = getDigester( "SHA-1" );
-
- private static final int BUFSIZE = 65536 * 2;
-
- private final byte[] buffer = new byte[BUFSIZE];
-
- static MessageDigest getDigester( String algorithm )
- {
- try
- {
- return MessageDigest.getInstance( algorithm );
- }
- catch ( NoSuchAlgorithmException e )
- {
- throw new RuntimeException( "Unable to initialize digest " + algorithm + " : " + e.getMessage() );
- }
- }
-
- public void calculate( File file ) throws IOException
- {
- FileInputStream fis = null;
-
- try
- {
- fis = new FileInputStream( file );
- calculate( fis );
- fis.close();
- fis = null;
- }
- catch ( IOException e )
- {
- throw new IOException( "Failed to calculate digest checksum for " + file, e );
- }
- finally
- {
- IOUtil.close( fis );
- }
- }
-
- void calculate( InputStream stream )
- throws IOException
- {
- md5.reset();
- sh1.reset();
- update( stream );
- }
-
- public String getMd5()
- {
- return Hex.encodeHexString( md5.digest() );
- }
-
- public String getSha1()
- {
- return Hex.encodeHexString( sh1.digest() );
- }
-
- private void update( InputStream is )
- throws IOException
- {
- int size = is.read( buffer, 0, BUFSIZE );
- while ( size >= 0 )
- {
- md5.update( buffer, 0, size );
- sh1.update( buffer, 0, size );
- size = is.read( buffer, 0, BUFSIZE );
- }
- }
-}
diff --git a/src/test/java/org/apache/maven/shared/project/install/internal/DualDigesterTest.java b/src/test/java/org/apache/maven/shared/project/deploy/internal/DualDigesterTest.java
similarity index 95%
rename from src/test/java/org/apache/maven/shared/project/install/internal/DualDigesterTest.java
rename to src/test/java/org/apache/maven/shared/project/deploy/internal/DualDigesterTest.java
index 7f8fbe8..49b7698 100644
--- a/src/test/java/org/apache/maven/shared/project/install/internal/DualDigesterTest.java
+++ b/src/test/java/org/apache/maven/shared/project/deploy/internal/DualDigesterTest.java
@@ -1,4 +1,4 @@
-package org.apache.maven.shared.project.install.internal;
+package org.apache.maven.shared.project.deploy.internal;
/*
* Licensed to the Apache Software Foundation (ASF) under one
--
To stop receiving notification emails like this one, please contact
khmarbaise@apache.org.