[MSHARED-164] Replaced digestutils with commons-codec
authorKristian Rosenvold <krosenvold@apache.org>
Mon, 10 Nov 2014 19:42:15 +0000 (19:42 +0000)
committerKristian Rosenvold <krosenvold@apache.org>
Mon, 10 Nov 2014 19:42:15 +0000 (19:42 +0000)
git-svn-id: https://svn.apache.org/repos/asf/maven/shared/trunk@1637962 13f79535-47bb-0310-9956-ffa450edef68

pom.xml
src/main/java/org/apache/maven/shared/repository/DefaultRepositoryAssembler.java
src/main/java/org/apache/maven/shared/repository/utils/DigestUtils.java [deleted file]

diff --git a/pom.xml b/pom.xml
index 7d6aa04..791c926 100644 (file)
--- a/pom.xml
+++ b/pom.xml
@@ -94,6 +94,11 @@ under the License.
       <scope>test</scope>
     </dependency>
     <dependency>
+      <groupId>commons-codec</groupId>
+      <artifactId>commons-codec</artifactId>
+      <version>1.6</version>
+    </dependency>
+    <dependency>
       <groupId>org.apache.maven.wagon</groupId>
       <artifactId>wagon-http-lightweight</artifactId>
       <version>1.0-beta-2</version>
index d2a51da..6382edc 100644 (file)
@@ -52,7 +52,6 @@ import org.apache.maven.shared.artifact.filter.PatternIncludesArtifactFilter;
 import org.apache.maven.shared.artifact.filter.ScopeArtifactFilter;
 import org.apache.maven.shared.repository.model.GroupVersionAlignment;
 import org.apache.maven.shared.repository.model.RepositoryInfo;
-import org.apache.maven.shared.repository.utils.DigestUtils;
 import org.apache.maven.shared.utils.io.FileUtils;
 import org.apache.maven.shared.utils.io.IOUtil;
 import org.codehaus.plexus.PlexusConstants;
@@ -66,11 +65,11 @@ import org.codehaus.plexus.logging.console.ConsoleLogger;
 import org.codehaus.plexus.personality.plexus.lifecycle.phase.Contextualizable;
 
 import java.io.File;
+import java.io.FileInputStream;
 import java.io.FileWriter;
 import java.io.IOException;
 import java.io.Writer;
 import java.lang.reflect.Field;
-import java.security.NoSuchAlgorithmException;
 import java.text.DateFormat;
 import java.text.SimpleDateFormat;
 import java.util.ArrayList;
@@ -83,6 +82,8 @@ import java.util.Map;
 import java.util.Set;
 import java.util.TimeZone;
 
+import static org.apache.commons.codec.digest.DigestUtils.*;
+
 /**
  * @author Jason van Zyl
  * @plexus.component role="org.apache.maven.shared.repository.RepositoryAssembler" role-hint="default"
@@ -531,20 +532,17 @@ public class DefaultRepositoryAssembler
     private void writeChecksums( File file )
         throws IOException, RepositoryAssemblyException
     {
-        try
-        {
-            String md5 = DigestUtils.createChecksum( file, "MD5" );
-            String sha1 = DigestUtils.createChecksum( file, "SHA-1" );
-
-            FileUtils.fileWrite( new File( file.getParentFile(), file.getName() + ".md5" ).getAbsolutePath(),
-                                 md5.toLowerCase() );
-            FileUtils.fileWrite( new File( file.getParentFile(), file.getName() + ".sha1" ).getAbsolutePath(),
-                                 sha1.toLowerCase() );
-        }
-        catch ( NoSuchAlgorithmException e )
-        {
-            throw new RepositoryAssemblyException( "Unable to get write checksums: " + e.getMessage(), e );
-        }
+        FileInputStream data = new FileInputStream( file );
+        String md5 = md5Hex( data ).toUpperCase();
+        data.close();
+        FileInputStream data1 = new FileInputStream( file );
+        String sha1 = shaHex( data1 ).toUpperCase();
+        data1.close();
+
+        FileUtils.fileWrite( new File( file.getParentFile(), file.getName() + ".md5" ).getAbsolutePath(),
+                             md5.toLowerCase() );
+        FileUtils.fileWrite( new File( file.getParentFile(), file.getName() + ".sha1" ).getAbsolutePath(),
+                             sha1.toLowerCase() );
     }
 
     protected Map createGroupVersionAlignments( List versionAlignments )
diff --git a/src/main/java/org/apache/maven/shared/repository/utils/DigestUtils.java b/src/main/java/org/apache/maven/shared/repository/utils/DigestUtils.java
deleted file mode 100644 (file)
index 7cfa25a..0000000
+++ /dev/null
@@ -1,151 +0,0 @@
-package org.apache.maven.shared.repository.utils;
-
-/*
- * 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 java.util.regex.Matcher;
-import java.util.regex.Pattern;
-
-import org.apache.maven.shared.utils.io.IOUtil;
-
-/**
- * Create a digest for a file. Stolen from repository-utils - once released, use that instead.
- *
- * @author <a href="mailto:brett@apache.org">Brett Porter</a>
- * @todo [jdcasey] This needs unit tests.
- */
-public final class DigestUtils
-{
-    private static final int CHECKSUM_BUFFER_SIZE = 16384;
-
-    private static final int BYTE_MASK = 0xFF;
-
-    private DigestUtils()
-    {
-    }
-
-    public static String createChecksum( File file, String algorithm )
-        throws IOException, NoSuchAlgorithmException
-    {
-        MessageDigest digest = MessageDigest.getInstance( algorithm );
-
-        InputStream fis = new FileInputStream( file );
-        try
-        {
-            byte[] buffer = new byte[CHECKSUM_BUFFER_SIZE];
-            int numRead;
-            do
-            {
-                numRead = fis.read( buffer );
-                if ( numRead > 0 )
-                {
-                    digest.update( buffer, 0, numRead );
-                }
-            }
-            while ( numRead != -1 );
-        }
-        finally
-        {
-            IOUtil.close( fis );
-        }
-
-        return byteArrayToHexStr( digest.digest() );
-    }
-
-    public boolean verifyChecksum( File file, String checksum, String algorithm )
-        throws NoSuchAlgorithmException, IOException
-    {
-        boolean result = true;
-
-        String trimmedChecksum = checksum.replace( '\n', ' ' ).trim();
-        // Free-BSD / openssl
-        Matcher m = Pattern.compile( algorithm.replaceAll( "-", "" ) + "\\s*\\((.*?)\\)\\s*=\\s*([a-zA-Z0-9]+)" )
-            .matcher( trimmedChecksum );
-        if ( m.matches() )
-        {
-            String filename = m.group( 1 );
-            if ( !filename.equals( file.getName() ) )
-            {
-                // TODO: provide better warning
-                result = false;
-            }
-            trimmedChecksum = m.group( 2 );
-        }
-        else
-        {
-            // GNU tools
-            m = Pattern.compile( "([a-zA-Z0-9]+)\\s\\*?(.+)" ).matcher( trimmedChecksum );
-            if ( m.matches() )
-            {
-                String filename = m.group( 2 );
-                if ( !filename.equals( file.getName() ) )
-                {
-                    // TODO: provide better warning
-                    result = false;
-                }
-                trimmedChecksum = m.group( 1 );
-            }
-        }
-
-        if ( result )
-        {
-            //Create checksum for jar file
-            String sum = createChecksum( file, algorithm );
-            result = trimmedChecksum.toUpperCase().equals( sum.toUpperCase() );
-        }
-        return result;
-    }
-
-    /**
-     * Convert an incoming array of bytes into a string that represents each of
-     * the bytes as two hex characters.
-     *
-     * @param data
-     */
-    private static String byteArrayToHexStr( byte[] data )
-    {
-        String output = "";
-
-        for ( byte aData : data )
-        {
-            //Deposit a byte into the 8 lsb of an int.
-            int tempInt = aData & BYTE_MASK;
-
-            //Get hex representation of the int as a string.
-            String tempStr = Integer.toHexString( tempInt );
-
-            //Append a leading 0 if necessary so that each hex string will contain 2 characters.
-            if ( tempStr.length() == 1 )
-            {
-                tempStr = "0" + tempStr;
-            }
-
-            //Concatenate the two characters to the output string.
-            output = output + tempStr;
-        }
-
-        return output.toUpperCase();
-    }
-}