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.