You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@archiva.apache.org by oc...@apache.org on 2009/07/27 09:34:40 UTC

svn commit: r798059 - in /archiva/trunk/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src: main/java/org/apache/maven/archiva/consumers/core/ main/resources/META-INF/ test/java/org/apache/maven/archiva/consumers/core/ test/resou...

Author: oching
Date: Mon Jul 27 07:34:40 2009
New Revision: 798059

URL: http://svn.apache.org/viewvc?rev=798059&view=rev
Log:
[MRM-1212]
o move fixing of incorrect checksums to ArtifactMissingChecksumConsumer
o added tests

Added:
    archiva/trunk/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/test/resources/test-repo/correct-checksums/
    archiva/trunk/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/test/resources/test-repo/correct-checksums/1.0/
    archiva/trunk/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/test/resources/test-repo/correct-checksums/1.0/correct-checksums-1.0.jar
    archiva/trunk/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/test/resources/test-repo/correct-checksums/1.0/correct-checksums-1.0.jar.md5
    archiva/trunk/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/test/resources/test-repo/correct-checksums/1.0/correct-checksums-1.0.jar.sha1
    archiva/trunk/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/test/resources/test-repo/incorrect-checksums/
    archiva/trunk/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/test/resources/test-repo/incorrect-checksums/1.0/
    archiva/trunk/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/test/resources/test-repo/incorrect-checksums/1.0/incorrect-checksums-1.0.jar
    archiva/trunk/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/test/resources/test-repo/incorrect-checksums/1.0/incorrect-checksums-1.0.jar.md5
    archiva/trunk/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/test/resources/test-repo/incorrect-checksums/1.0/incorrect-checksums-1.0.jar.sha1
    archiva/trunk/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/test/resources/test-repo/no-checksums-artifact/
    archiva/trunk/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/test/resources/test-repo/no-checksums-artifact/1.0/
    archiva/trunk/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/test/resources/test-repo/no-checksums-artifact/1.0/no-checksums-artifact-1.0.jar
Modified:
    archiva/trunk/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/main/java/org/apache/maven/archiva/consumers/core/ArtifactMissingChecksumsConsumer.java
    archiva/trunk/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/main/resources/META-INF/spring-context.xml
    archiva/trunk/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/test/java/org/apache/maven/archiva/consumers/core/ArtifactMissingChecksumsConsumerTest.java

Modified: archiva/trunk/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/main/java/org/apache/maven/archiva/consumers/core/ArtifactMissingChecksumsConsumer.java
URL: http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/main/java/org/apache/maven/archiva/consumers/core/ArtifactMissingChecksumsConsumer.java?rev=798059&r1=798058&r2=798059&view=diff
==============================================================================
--- archiva/trunk/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/main/java/org/apache/maven/archiva/consumers/core/ArtifactMissingChecksumsConsumer.java (original)
+++ archiva/trunk/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/main/java/org/apache/maven/archiva/consumers/core/ArtifactMissingChecksumsConsumer.java Mon Jul 27 07:34:40 2009
@@ -19,6 +19,8 @@
  * under the License.
  */
 
+import org.apache.archiva.checksum.ChecksumAlgorithm;
+import org.apache.archiva.checksum.ChecksummedFile;
 import org.apache.maven.archiva.configuration.ArchivaConfiguration;
 import org.apache.maven.archiva.configuration.ConfigurationNames;
 import org.apache.maven.archiva.configuration.FileTypes;
@@ -26,9 +28,6 @@
 import org.apache.maven.archiva.consumers.AbstractMonitoredConsumer;
 import org.apache.maven.archiva.consumers.ConsumerException;
 import org.apache.maven.archiva.consumers.KnownRepositoryContentConsumer;
-import org.codehaus.plexus.digest.ChecksumFile;
-import org.codehaus.plexus.digest.Digester;
-import org.codehaus.plexus.digest.DigesterException;
 import org.codehaus.plexus.personality.plexus.lifecycle.phase.Initializable;
 import org.codehaus.plexus.personality.plexus.lifecycle.phase.InitializationException;
 import org.codehaus.plexus.registry.Registry;
@@ -41,14 +40,14 @@
 import java.util.List;
 
 /**
- * ArtifactMissingChecksumsConsumer - Create missing checksums for the artifact.
+ * ArtifactMissingChecksumsConsumer - Create missing and/or fix invalid checksums for the artifact.
  *
  * @version $Id$
  */
 public class ArtifactMissingChecksumsConsumer
     extends AbstractMonitoredConsumer
     implements KnownRepositoryContentConsumer, RegistryListener, Initializable
-{
+{   
     private String id;
 
     private String description;
@@ -57,36 +56,26 @@
 
     private FileTypes filetypes;
 
-    private Digester digestSha1;
-
-    private Digester digestMd5;
-
-    private ChecksumFile checksum;
+    private ChecksummedFile checksum;
 
     private static final String TYPE_CHECKSUM_NOT_FILE = "checksum-bad-not-file";
-
+    
     private static final String TYPE_CHECKSUM_CANNOT_CALC = "checksum-calc-failure";
-
+    
     private static final String TYPE_CHECKSUM_CANNOT_CREATE = "checksum-create-failure";
 
     private File repositoryDir;
     
     private List<String> includes = new ArrayList<String>();
-
+    
     public ArtifactMissingChecksumsConsumer(String id,
             String description,
             ArchivaConfiguration configuration,
-            FileTypes filetypes,
-            Digester digestSha1,
-            Digester digestMd5,
-            ChecksumFile checksum) {
+            FileTypes filetypes) {
         this.id = id;
         this.description = description;
         this.configuration = configuration;
         this.filetypes = filetypes;
-        this.digestSha1 = digestSha1;
-        this.digestMd5 = digestMd5;
-        this.checksum = checksum;
     }
 
     public String getId()
@@ -128,37 +117,51 @@
     public void processFile( String path )
         throws ConsumerException
     {
-        createIfMissing( path, digestSha1 );
-        createIfMissing( path, digestMd5 );
+        createFixChecksum( path, new ChecksumAlgorithm[] { ChecksumAlgorithm.SHA1 } );
+        createFixChecksum( path, new ChecksumAlgorithm[] { ChecksumAlgorithm.MD5 } );        
     }
-
-    private void createIfMissing( String path, Digester digester )
+    
+    private void createFixChecksum( String path, ChecksumAlgorithm checksumAlgorithm[] )
     {
-        File checksumFile = new File( this.repositoryDir, path + digester.getFilenameExtension() );
-        if ( !checksumFile.exists() )
+        File artifactFile = new File( this.repositoryDir, path );
+        File checksumFile = new File( this.repositoryDir, path + checksumAlgorithm[0].getExt() );
+                
+        if( checksumFile.exists() )
         {
+            checksum = new ChecksummedFile( artifactFile );
             try
             {
-                checksum.createChecksum( new File( this.repositoryDir, path ), digester );
-                triggerConsumerInfo( "Created missing checksum file " + checksumFile.getAbsolutePath() );
+                if( !checksum.isValidChecksum( checksumAlgorithm[0] ) )
+                {   
+                    checksum.fixChecksums( checksumAlgorithm );
+                    triggerConsumerInfo( "Fixed checksum file " + checksumFile.getAbsolutePath() );
+                }
             }
-            catch ( DigesterException e )
+            catch ( IOException e )
             {
-                triggerConsumerError( TYPE_CHECKSUM_CANNOT_CALC,
-                                      "Cannot calculate checksum for file " + checksumFile + ": " + e.getMessage() );
+                triggerConsumerError( TYPE_CHECKSUM_CANNOT_CALC, "Cannot calculate checksum for file " + checksumFile +
+                    ": " + e.getMessage() );
+            }
+        }
+        else if( !checksumFile.exists() )
+        {   
+            checksum = new ChecksummedFile( artifactFile );
+            try
+            {
+                checksum.createChecksum( checksumAlgorithm[0] );
+                triggerConsumerInfo( "Created missing checksum file " + checksumFile.getAbsolutePath() );
             }
             catch ( IOException e )
             {
-                triggerConsumerError( TYPE_CHECKSUM_CANNOT_CREATE,
-                                      "Cannot create checksum for file " + checksumFile + ": " + e.getMessage() );
+                triggerConsumerError( TYPE_CHECKSUM_CANNOT_CREATE, "Cannot create checksum for file " + checksumFile +
+                    ": " + e.getMessage() );
             }
         }
-        else if ( !checksumFile.isFile() )
+        else
         {
             triggerConsumerWarning( TYPE_CHECKSUM_NOT_FILE,
                                     "Checksum file " + checksumFile.getAbsolutePath() + " is not a file." );
         }
-
     }
 
     public void afterConfigurationChange( Registry registry, String propertyName, Object propertyValue )

Modified: archiva/trunk/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/main/resources/META-INF/spring-context.xml
URL: http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/main/resources/META-INF/spring-context.xml?rev=798059&r1=798058&r2=798059&view=diff
==============================================================================
--- archiva/trunk/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/main/resources/META-INF/spring-context.xml (original)
+++ archiva/trunk/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/main/resources/META-INF/spring-context.xml Mon Jul 27 07:34:40 2009
@@ -8,7 +8,7 @@
            <value>create-missing-checksums</value>
          </constructor-arg>
          <constructor-arg>
-           <value>Create Missing Checksums (.sha1, .md5)</value>
+           <value>Create Missing and/or Fix Invalid Checksums (.sha1, .md5)</value>
          </constructor-arg>
          <constructor-arg>
            <ref bean="archivaConfiguration"/>
@@ -16,14 +16,5 @@
          <constructor-arg>
            <ref bean="fileTypes"/>
          </constructor-arg>
-         <constructor-arg>
-           <ref bean="digester#sha1"/>
-         </constructor-arg>
-         <constructor-arg>
-           <ref bean="digester#md5"/>
-         </constructor-arg>
-         <constructor-arg>
-           <ref bean="checksumFile"/>
-         </constructor-arg>
        </bean>
 </beans>
\ No newline at end of file

Modified: archiva/trunk/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/test/java/org/apache/maven/archiva/consumers/core/ArtifactMissingChecksumsConsumerTest.java
URL: http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/test/java/org/apache/maven/archiva/consumers/core/ArtifactMissingChecksumsConsumerTest.java?rev=798059&r1=798058&r2=798059&view=diff
==============================================================================
--- archiva/trunk/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/test/java/org/apache/maven/archiva/consumers/core/ArtifactMissingChecksumsConsumerTest.java (original)
+++ archiva/trunk/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/test/java/org/apache/maven/archiva/consumers/core/ArtifactMissingChecksumsConsumerTest.java Mon Jul 27 07:34:40 2009
@@ -1,5 +1,12 @@
 package org.apache.maven.archiva.consumers.core;
 
+import java.io.File;
+import java.util.Calendar;
+
+import org.apache.archiva.checksum.ChecksumAlgorithm;
+import org.apache.archiva.checksum.ChecksummedFile;
+import org.apache.maven.archiva.configuration.ManagedRepositoryConfiguration;
+
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
  * or more contributor license agreements.  See the NOTICE file
@@ -22,12 +29,62 @@
 public class ArtifactMissingChecksumsConsumerTest
     extends AbstractArtifactConsumerTest
 {
+    private ManagedRepositoryConfiguration repoConfig;
+
     @Override
     protected void setUp()
         throws Exception
     {
         super.setUp();
 
+        repoConfig = new ManagedRepositoryConfiguration();
+        repoConfig.setId( "test-repo" );
+        repoConfig.setName( "Test Repository" );
+        repoConfig.setLayout( "default" );
+        repoConfig.setLocation( new File( getBasedir(), "target/test-classes/test-repo/" ).getPath() );
+
         consumer = (ArtifactMissingChecksumsConsumer) lookup( "artifactMissingChecksumsConsumer" );
     }
+
+    public void testNoExistingChecksums()
+        throws Exception
+    {
+        String path = "/no-checksums-artifact/1.0/no-checksums-artifact-1.0.jar";
+
+        File sha1File = new File( repoConfig.getLocation(), path + ".sha1" );
+        File md5File = new File( repoConfig.getLocation(), path + ".md5" );
+
+        assertFalse( sha1File.exists() );
+        assertFalse( md5File.exists() );
+
+        consumer.beginScan( repoConfig, Calendar.getInstance().getTime() );
+
+        consumer.processFile( path );
+
+        assertTrue( sha1File.exists() );
+        assertTrue( md5File.exists() );
+    }
+
+    public void testExistingIncorrectChecksums()
+        throws Exception
+    {
+        String path = "/incorrect-checksums/1.0/incorrect-checksums-1.0.jar";
+
+        File sha1File = new File( repoConfig.getLocation(), path + ".sha1" );
+        File md5File = new File( repoConfig.getLocation(), path + ".md5" );
+
+        ChecksummedFile checksum = new ChecksummedFile( new File( repoConfig.getLocation(), path ) );
+
+        assertTrue( sha1File.exists() );
+        assertTrue( md5File.exists() );
+        assertFalse( checksum.isValidChecksums( new ChecksumAlgorithm[] { ChecksumAlgorithm.MD5, ChecksumAlgorithm.SHA1 } ) );
+
+        consumer.beginScan( repoConfig, Calendar.getInstance().getTime() );
+
+        consumer.processFile( path );
+
+        assertTrue( sha1File.exists() );
+        assertTrue( md5File.exists() );
+        assertTrue( checksum.isValidChecksums( new ChecksumAlgorithm[] { ChecksumAlgorithm.MD5, ChecksumAlgorithm.SHA1 } ) );        
+    }
 }

Added: archiva/trunk/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/test/resources/test-repo/correct-checksums/1.0/correct-checksums-1.0.jar
URL: http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/test/resources/test-repo/correct-checksums/1.0/correct-checksums-1.0.jar?rev=798059&view=auto
==============================================================================
    (empty)

Added: archiva/trunk/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/test/resources/test-repo/correct-checksums/1.0/correct-checksums-1.0.jar.md5
URL: http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/test/resources/test-repo/correct-checksums/1.0/correct-checksums-1.0.jar.md5?rev=798059&view=auto
==============================================================================
--- archiva/trunk/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/test/resources/test-repo/correct-checksums/1.0/correct-checksums-1.0.jar.md5 (added)
+++ archiva/trunk/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/test/resources/test-repo/correct-checksums/1.0/correct-checksums-1.0.jar.md5 Mon Jul 27 07:34:40 2009
@@ -0,0 +1 @@
+d41d8cd98f00b204e9800998ecf8427e  correct-checksums-1.0.jar
\ No newline at end of file

Added: archiva/trunk/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/test/resources/test-repo/correct-checksums/1.0/correct-checksums-1.0.jar.sha1
URL: http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/test/resources/test-repo/correct-checksums/1.0/correct-checksums-1.0.jar.sha1?rev=798059&view=auto
==============================================================================
--- archiva/trunk/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/test/resources/test-repo/correct-checksums/1.0/correct-checksums-1.0.jar.sha1 (added)
+++ archiva/trunk/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/test/resources/test-repo/correct-checksums/1.0/correct-checksums-1.0.jar.sha1 Mon Jul 27 07:34:40 2009
@@ -0,0 +1 @@
+da39a3ee5e6b4b0d3255bfef95601890afd80709
\ No newline at end of file

Added: archiva/trunk/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/test/resources/test-repo/incorrect-checksums/1.0/incorrect-checksums-1.0.jar
URL: http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/test/resources/test-repo/incorrect-checksums/1.0/incorrect-checksums-1.0.jar?rev=798059&view=auto
==============================================================================
    (empty)

Added: archiva/trunk/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/test/resources/test-repo/incorrect-checksums/1.0/incorrect-checksums-1.0.jar.md5
URL: http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/test/resources/test-repo/incorrect-checksums/1.0/incorrect-checksums-1.0.jar.md5?rev=798059&view=auto
==============================================================================
--- archiva/trunk/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/test/resources/test-repo/incorrect-checksums/1.0/incorrect-checksums-1.0.jar.md5 (added)
+++ archiva/trunk/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/test/resources/test-repo/incorrect-checksums/1.0/incorrect-checksums-1.0.jar.md5 Mon Jul 27 07:34:40 2009
@@ -0,0 +1 @@
+902a360ecad98a34b59863c1e65bcf71  incorrect-checksums-1.0.jar
\ No newline at end of file

Added: archiva/trunk/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/test/resources/test-repo/incorrect-checksums/1.0/incorrect-checksums-1.0.jar.sha1
URL: http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/test/resources/test-repo/incorrect-checksums/1.0/incorrect-checksums-1.0.jar.sha1?rev=798059&view=auto
==============================================================================
--- archiva/trunk/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/test/resources/test-repo/incorrect-checksums/1.0/incorrect-checksums-1.0.jar.sha1 (added)
+++ archiva/trunk/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/test/resources/test-repo/incorrect-checksums/1.0/incorrect-checksums-1.0.jar.sha1 Mon Jul 27 07:34:40 2009
@@ -0,0 +1 @@
+dcab88fc2a043c2479a6de676a2f8179e9ea2167
\ No newline at end of file

Added: archiva/trunk/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/test/resources/test-repo/no-checksums-artifact/1.0/no-checksums-artifact-1.0.jar
URL: http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/test/resources/test-repo/no-checksums-artifact/1.0/no-checksums-artifact-1.0.jar?rev=798059&view=auto
==============================================================================
    (empty)