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 2010/04/03 17:01:22 UTC

svn commit: r930528 - in /archiva/branches/archiva-1.3.x/archiva-modules/archiva-web/archiva-webapp/src: main/java/org/apache/maven/archiva/web/action/UploadAction.java test/java/org/apache/maven/archiva/web/action/UploadActionTest.java

Author: oching
Date: Sat Apr  3 15:01:22 2010
New Revision: 930528

URL: http://svn.apache.org/viewvc?rev=930528&view=rev
Log:
[MRM-1353] Build number is always 1 for SNAPSHOT artifacts uploaded via web upload form
o get latest build number from version-level metadata when deploying artifacts from webapp
o for snapshot artifacts deployed, generate or update the version-level metadata
o added unit test for this scenario
o refactored some parts of the tests for upload artifact

Modified:
    archiva/branches/archiva-1.3.x/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/UploadAction.java
    archiva/branches/archiva-1.3.x/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/action/UploadActionTest.java

Modified: archiva/branches/archiva-1.3.x/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/UploadAction.java
URL: http://svn.apache.org/viewvc/archiva/branches/archiva-1.3.x/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/UploadAction.java?rev=930528&r1=930527&r2=930528&view=diff
==============================================================================
--- archiva/branches/archiva-1.3.x/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/UploadAction.java (original)
+++ archiva/branches/archiva-1.3.x/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/UploadAction.java Sat Apr  3 15:01:22 2010
@@ -76,6 +76,7 @@ import com.opensymphony.xwork2.Validatea
  *
  * @plexus.component role="com.opensymphony.xwork2.Action" role-hint="uploadAction" instantiation-strategy="per-lookup"
  */
+@SuppressWarnings( "serial" )
 public class UploadAction
     extends PlexusActionSupport
     implements Validateable, Preparable, Auditable
@@ -307,17 +308,15 @@ public class UploadAction
             ManagedRepositoryContent repository = repositoryFactory.getManagedRepositoryContent( repositoryId );
 
             String artifactPath = repository.toPath( artifactReference );
-
             int lastIndex = artifactPath.lastIndexOf( '/' );
-
             File targetPath = new File( repoConfig.getLocation(), artifactPath.substring( 0, lastIndex ) );
-
+            
             Date lastUpdatedTimestamp = Calendar.getInstance().getTime();
             int newBuildNumber = -1;
             String timestamp = null;
 
-            File metadataFile = getMetadata( targetPath.getAbsolutePath() );
-            ArchivaRepositoryMetadata metadata = getMetadata( metadataFile );
+            File versionMetadataFile = getMetadata( targetPath.getAbsolutePath() );
+            ArchivaRepositoryMetadata versionMetadata = getMetadata( versionMetadataFile );
 
             if ( VersionUtil.isSnapshot( version ) )
             {
@@ -325,13 +324,13 @@ public class UploadAction
                 DateFormat fmt = new SimpleDateFormat( "yyyyMMdd.HHmmss" );
                 fmt.setTimeZone( timezone );
                 timestamp = fmt.format( lastUpdatedTimestamp );
-                if ( metadata.getSnapshotVersion() != null )
+
+                if ( versionMetadata.getSnapshotVersion() != null )
                 {
-                    newBuildNumber = metadata.getSnapshotVersion().getBuildNumber() + 1;
+                    newBuildNumber = versionMetadata.getSnapshotVersion().getBuildNumber() + 1;
                 }
                 else
                 {
-                    metadata.setSnapshotVersion( new SnapshotVersion() );
                     newBuildNumber = 1;
                 }
             }
@@ -346,7 +345,7 @@ public class UploadAction
             {
                 filename = filename.replaceAll( "SNAPSHOT", timestamp + "-" + newBuildNumber );
             }
-
+            
             boolean fixChecksums = !( config.getRepositoryScanning().getKnownContentConsumers().contains( "create-missing-checksums" ) );
             
             try
@@ -411,13 +410,19 @@ public class UploadAction
                     addActionError( "Error encountered while uploading pom file: " + ie.getMessage() );
                     return ERROR;
                 }
-
             }
 
             // explicitly update only if metadata-updater consumer is not enabled!
-            if( !config.getRepositoryScanning().getKnownContentConsumers().contains( "metadata-updater" ) )
+            if ( !config.getRepositoryScanning().getKnownContentConsumers().contains( "metadata-updater" ) )
             {
-                updateMetadata( metadata, metadataFile, lastUpdatedTimestamp, timestamp, newBuildNumber, fixChecksums );
+                updateProjectMetadata( targetPath.getAbsolutePath(), lastUpdatedTimestamp, timestamp, newBuildNumber,
+                                       fixChecksums );
+
+                if ( VersionUtil.isSnapshot( version ) )
+                {
+                    updateVersionMetadata( versionMetadata, versionMetadataFile, lastUpdatedTimestamp, timestamp,
+                                           newBuildNumber, fixChecksums );
+                }
             }
 
             String msg = "Artifact \'" + groupId + ":" + artifactId + ":" + version +
@@ -492,9 +497,7 @@ public class UploadAction
 
     private File getMetadata( String targetPath )
     {
-        String artifactPath = targetPath.substring( 0, targetPath.lastIndexOf( File.separatorChar ) );
-
-        return new File( artifactPath, MetadataTools.MAVEN_METADATA );
+        return new File( targetPath, MetadataTools.MAVEN_METADATA );
     }
 
     private ArchivaRepositoryMetadata getMetadata( File metadataFile )
@@ -507,21 +510,57 @@ public class UploadAction
         }
         return metadata;
     }
+    
+    /**
+     * Update version level metadata for snapshot artifacts. If it does not exist, create the metadata and fix checksums
+     * if necessary.
+     */
+    private void updateVersionMetadata( ArchivaRepositoryMetadata metadata, File metadataFile,
+                                        Date lastUpdatedTimestamp, String timestamp, int buildNumber,
+                                        boolean fixChecksums )
+        throws RepositoryMetadataException
+    {
+        if ( !metadataFile.exists() )
+        {
+            metadata.setGroupId( groupId );
+            metadata.setArtifactId( artifactId );
+            metadata.setVersion( version );
+        }
+
+        if ( metadata.getSnapshotVersion() == null )
+        {
+            metadata.setSnapshotVersion( new SnapshotVersion() );
+        }
+
+        metadata.getSnapshotVersion().setBuildNumber( buildNumber );
+        metadata.getSnapshotVersion().setTimestamp( timestamp );
+        metadata.setLastUpdatedTimestamp( lastUpdatedTimestamp );
+
+        RepositoryMetadataWriter.write( metadata, metadataFile );
+
+        if ( fixChecksums )
+        {
+            fixChecksums( metadataFile );
+        }
+    }
 
     /**
-     * Update artifact level metadata. If it does not exist, create the metadata and 
-     * fix checksums if necessary.
+     * Update artifact level metadata. If it does not exist, create the metadata and fix checksums if necessary.
      */
-    private void updateMetadata( ArchivaRepositoryMetadata metadata, File metadataFile, Date lastUpdatedTimestamp,
-                                 String timestamp, int buildNumber, boolean fixChecksums )
+    private void updateProjectMetadata( String targetPath, Date lastUpdatedTimestamp, String timestamp,
+                                        int buildNumber, boolean fixChecksums )
         throws RepositoryMetadataException
     {
         List<String> availableVersions = new ArrayList<String>();
         String latestVersion = version;
 
-        if ( metadataFile.exists() )
+        String projectPath = targetPath.substring( 0, targetPath.lastIndexOf( File.separatorChar ) );
+        File projectMetadataFile = getMetadata( projectPath );
+        ArchivaRepositoryMetadata projectMetadata = getMetadata( projectMetadataFile );
+
+        if ( projectMetadataFile.exists() )
         {
-            availableVersions = metadata.getAvailableVersions();
+            availableVersions = projectMetadata.getAvailableVersions();
 
             Collections.sort( availableVersions, VersionComparator.getInstance() );
 
@@ -536,39 +575,34 @@ public class UploadAction
         {
             availableVersions.add( version );
 
-            metadata.setGroupId( groupId );
-            metadata.setArtifactId( artifactId );
+            projectMetadata.setGroupId( groupId );
+            projectMetadata.setArtifactId( artifactId );
         }
 
-        if ( metadata.getGroupId() == null )
+        if ( projectMetadata.getGroupId() == null )
         {
-            metadata.setGroupId( groupId );
+            projectMetadata.setGroupId( groupId );
         }
-        if ( metadata.getArtifactId() == null )
+        
+        if ( projectMetadata.getArtifactId() == null )
         {
-            metadata.setArtifactId( artifactId );
+            projectMetadata.setArtifactId( artifactId );
         }
 
-        metadata.setLatestVersion( latestVersion );
-        metadata.setLastUpdatedTimestamp( lastUpdatedTimestamp );
-        metadata.setAvailableVersions( availableVersions );
+        projectMetadata.setLatestVersion( latestVersion );
+        projectMetadata.setLastUpdatedTimestamp( lastUpdatedTimestamp );
+        projectMetadata.setAvailableVersions( availableVersions );
 
         if ( !VersionUtil.isSnapshot( version ) )
         {
-            metadata.setReleasedVersion( latestVersion );
+            projectMetadata.setReleasedVersion( latestVersion );
         }
-        else
-        {
-            metadata.getSnapshotVersion().setBuildNumber( buildNumber );
 
-            metadata.getSnapshotVersion().setTimestamp( timestamp );
-        }
+        RepositoryMetadataWriter.write( projectMetadata, projectMetadataFile );
 
-        RepositoryMetadataWriter.write( metadata, metadataFile );
-        
-        if( fixChecksums )
+        if ( fixChecksums )
         {
-            fixChecksums( metadataFile );
+            fixChecksums( projectMetadataFile );
         }
     }
 

Modified: archiva/branches/archiva-1.3.x/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/action/UploadActionTest.java
URL: http://svn.apache.org/viewvc/archiva/branches/archiva-1.3.x/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/action/UploadActionTest.java?rev=930528&r1=930527&r2=930528&view=diff
==============================================================================
--- archiva/branches/archiva-1.3.x/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/action/UploadActionTest.java (original)
+++ archiva/branches/archiva-1.3.x/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/action/UploadActionTest.java Sat Apr  3 15:01:22 2010
@@ -33,11 +33,14 @@ import org.apache.maven.archiva.configur
 import org.apache.maven.archiva.configuration.RepositoryScanningConfiguration;
 import org.apache.maven.archiva.database.ArchivaAuditLogsDao;
 import org.apache.maven.archiva.model.ArchivaAuditLogs;
+import org.apache.maven.archiva.model.ArchivaRepositoryMetadata;
+import org.apache.maven.archiva.model.SnapshotVersion;
 import org.apache.maven.archiva.repository.ManagedRepositoryContent;
 import org.apache.maven.archiva.repository.RepositoryContentFactory;
 import org.apache.maven.archiva.repository.RepositoryNotFoundException;
 import org.apache.maven.archiva.repository.content.ManagedDefaultRepositoryContent;
 import org.apache.maven.archiva.repository.metadata.MetadataTools;
+import org.apache.maven.archiva.repository.metadata.RepositoryMetadataReader;
 import org.apache.maven.archiva.scheduled.ArchivaTaskScheduler;
 import org.codehaus.plexus.spring.PlexusInSpringTestCase;
 import org.easymock.MockControl;
@@ -64,14 +67,14 @@ public class UploadActionTest
     private RepositoryContentFactory repoFactory;
 
     private MockControl repoFactoryControl;
-    
+
     private ArchivaAuditLogsDao auditLogsDao;
 
     private MockControl auditLogsDaoControl;
 
     private static final String REPOSITORY_ID = "test-repo";
 
-    private Configuration config;    
+    private Configuration config;
 
     public void setUp()
         throws Exception
@@ -86,7 +89,7 @@ public class UploadActionTest
 
         repoFactoryControl = MockClassControl.createControl( RepositoryContentFactory.class );
         repoFactory = (RepositoryContentFactory) repoFactoryControl.getMock();
-        
+
         auditLogsDaoControl = MockControl.createControl( ArchivaAuditLogsDao.class );
         auditLogsDaoControl.setDefaultMatcher( MockControl.ALWAYS_MATCHER );
         auditLogsDao = (ArchivaAuditLogsDao) auditLogsDaoControl.getMock();
@@ -99,9 +102,9 @@ public class UploadActionTest
 
         File testRepo = new File( getBasedir(), "target/test-classes/test-repo" );
         testRepo.mkdirs();
-        
+
         assertTrue( testRepo.exists() );
-        
+
         config = new Configuration();
         ManagedRepositoryConfiguration repoConfig = new ManagedRepositoryConfiguration();
         repoConfig.setId( REPOSITORY_ID );
@@ -110,7 +113,7 @@ public class UploadActionTest
         repoConfig.setName( REPOSITORY_ID );
         repoConfig.setBlockRedeployments( true );
         config.addManagedRepository( repoConfig );
-        
+
         RepositoryScanningConfiguration repoScanning = new RepositoryScanningConfiguration();
         repoScanning.setKnownContentConsumers( new ArrayList<String>() );
         config.setRepositoryScanning( repoScanning );
@@ -142,78 +145,131 @@ public class UploadActionTest
         uploadAction.setGeneratePom( generatePom );
     }
 
-    private void assertAllArtifactsIncludingSupportArtifactsArePresent( String repoLocation )
+    private void assertAllArtifactsIncludingSupportArtifactsArePresent( String repoLocation, String artifact,
+                                                                        String version )
     {
-        assertTrue( new File( repoLocation, "/org/apache/archiva/artifact-upload/1.0/artifact-upload-1.0.jar" ).exists() );
-        assertTrue( new File( repoLocation, "/org/apache/archiva/artifact-upload/1.0/artifact-upload-1.0.jar.sha1" ).exists() );
-        assertTrue( new File( repoLocation, "/org/apache/archiva/artifact-upload/1.0/artifact-upload-1.0.jar.md5" ).exists() );
-
-        assertTrue( new File( repoLocation, "/org/apache/archiva/artifact-upload/1.0/artifact-upload-1.0.pom" ).exists() );
-        assertTrue( new File( repoLocation, "/org/apache/archiva/artifact-upload/1.0/artifact-upload-1.0.pom.sha1" ).exists() );
-        assertTrue( new File( repoLocation, "/org/apache/archiva/artifact-upload/1.0/artifact-upload-1.0.pom.md5" ).exists() );
+        assertTrue( new File( repoLocation, "/org/apache/archiva/artifact-upload/" + version + "/" + artifact + ".jar" ).exists() );
+        assertTrue( new File( repoLocation, "/org/apache/archiva/artifact-upload/" + version + "/" + artifact
+            + ".jar.sha1" ).exists() );
+        assertTrue( new File( repoLocation, "/org/apache/archiva/artifact-upload/" + version + "/" + artifact
+            + ".jar.md5" ).exists() );
+
+        assertTrue( new File( repoLocation, "/org/apache/archiva/artifact-upload/" + version + "/" + artifact + ".pom" ).exists() );
+        assertTrue( new File( repoLocation, "/org/apache/archiva/artifact-upload/" + version + "/" + artifact
+            + ".pom.sha1" ).exists() );
+        assertTrue( new File( repoLocation, "/org/apache/archiva/artifact-upload/" + version + "/" + artifact
+            + ".pom.md5" ).exists() );
 
         assertTrue( new File( repoLocation, "/org/apache/archiva/artifact-upload/" + MetadataTools.MAVEN_METADATA ).exists() );
-        assertTrue( new File( repoLocation, "/org/apache/archiva/artifact-upload/" + MetadataTools.MAVEN_METADATA +
-            ".sha1" ).exists() );
-        assertTrue( new File( repoLocation, "/org/apache/archiva/artifact-upload/" + MetadataTools.MAVEN_METADATA +
-            ".md5" ).exists() );
+        assertTrue( new File( repoLocation, "/org/apache/archiva/artifact-upload/" + MetadataTools.MAVEN_METADATA
+            + ".sha1" ).exists() );
+        assertTrue( new File( repoLocation, "/org/apache/archiva/artifact-upload/" + MetadataTools.MAVEN_METADATA
+            + ".md5" ).exists() );
     }
 
-    private void verifyChecksums( String repoLocation )
+    private void verifyVersionMetadataChecksums( String repoLocation, String version )
         throws IOException
     {
-        // verify checksums of jar file
         ChecksummedFile checksum =
-            new ChecksummedFile( new File( repoLocation,
-                                           "/org/apache/archiva/artifact-upload/1.0/artifact-upload-1.0.jar" ) );
+            new ChecksummedFile( new File( repoLocation, "/org/apache/archiva/artifact-upload/" + version + "/"
+                + MetadataTools.MAVEN_METADATA ) );
         String sha1 = checksum.calculateChecksum( ChecksumAlgorithm.SHA1 );
         String md5 = checksum.calculateChecksum( ChecksumAlgorithm.MD5 );
 
         String contents =
-            FileUtils.readFileToString( new File( repoLocation,
-                                                  "/org/apache/archiva/artifact-upload/1.0/artifact-upload-1.0.jar.sha1" ) );
+            FileUtils.readFileToString( new File( repoLocation, "/org/apache/archiva/artifact-upload/" + version + "/"
+                + MetadataTools.MAVEN_METADATA + ".sha1" ) );
         assertTrue( StringUtils.contains( contents, sha1 ) );
 
         contents =
-            FileUtils.readFileToString( new File( repoLocation,
-                                                  "/org/apache/archiva/artifact-upload/1.0/artifact-upload-1.0.jar.md5" ) );
+            FileUtils.readFileToString( new File( repoLocation, "/org/apache/archiva/artifact-upload/" + version + "/"
+                + MetadataTools.MAVEN_METADATA + ".md5" ) );
         assertTrue( StringUtils.contains( contents, md5 ) );
+    }
 
-        // verify checksums of pom file
-        checksum =
-            new ChecksummedFile( new File( repoLocation,
-                                           "/org/apache/archiva/artifact-upload/1.0/artifact-upload-1.0.pom" ) );
-        sha1 = checksum.calculateChecksum( ChecksumAlgorithm.SHA1 );
-        md5 = checksum.calculateChecksum( ChecksumAlgorithm.MD5 );
+    private void verifyProjectMetadataChecksums( String repoLocation )
+        throws IOException
+    {
+        ChecksummedFile checksum =
+            new ChecksummedFile( new File( repoLocation, "/org/apache/archiva/artifact-upload/"
+                + MetadataTools.MAVEN_METADATA ) );
+        String sha1 = checksum.calculateChecksum( ChecksumAlgorithm.SHA1 );
+        String md5 = checksum.calculateChecksum( ChecksumAlgorithm.MD5 );
 
-        contents =
-            FileUtils.readFileToString( new File( repoLocation,
-                                                  "/org/apache/archiva/artifact-upload/1.0/artifact-upload-1.0.pom.sha1" ) );
+        String contents =
+            FileUtils.readFileToString( new File( repoLocation, "/org/apache/archiva/artifact-upload/"
+                + MetadataTools.MAVEN_METADATA + ".sha1" ) );
         assertTrue( StringUtils.contains( contents, sha1 ) );
 
         contents =
-            FileUtils.readFileToString( new File( repoLocation,
-                                                  "/org/apache/archiva/artifact-upload/1.0/artifact-upload-1.0.pom.md5" ) );
+            FileUtils.readFileToString( new File( repoLocation, "/org/apache/archiva/artifact-upload/"
+                + MetadataTools.MAVEN_METADATA + ".md5" ) );
         assertTrue( StringUtils.contains( contents, md5 ) );
+    }
 
-        // verify checksums of metadata file
+    private void verifyPomChecksums( String repoLocation, String artifact, String version )
+        throws IOException
+    {
+        ChecksummedFile checksum;
+        String sha1;
+        String md5;
+        String contents;
         checksum =
-            new ChecksummedFile( new File( repoLocation, "/org/apache/archiva/artifact-upload/" +
-                MetadataTools.MAVEN_METADATA ) );
+            new ChecksummedFile( new File( repoLocation, "/org/apache/archiva/artifact-upload/" + version + "/"
+                + artifact + ".pom" ) );
         sha1 = checksum.calculateChecksum( ChecksumAlgorithm.SHA1 );
         md5 = checksum.calculateChecksum( ChecksumAlgorithm.MD5 );
 
         contents =
-            FileUtils.readFileToString( new File( repoLocation, "/org/apache/archiva/artifact-upload/" +
-                MetadataTools.MAVEN_METADATA + ".sha1" ) );
+            FileUtils.readFileToString( new File( repoLocation, "/org/apache/archiva/artifact-upload/" + version + "/"
+                + artifact + ".pom.sha1" ) );
         assertTrue( StringUtils.contains( contents, sha1 ) );
 
         contents =
-            FileUtils.readFileToString( new File( repoLocation, "/org/apache/archiva/artifact-upload/" +
-                MetadataTools.MAVEN_METADATA + ".md5" ) );
+            FileUtils.readFileToString( new File( repoLocation, "/org/apache/archiva/artifact-upload/" + version + "/"
+                + artifact + ".pom.md5" ) );
         assertTrue( StringUtils.contains( contents, md5 ) );
     }
 
+    private void verifyArtifactChecksums( String repoLocation, String artifact, String version )
+        throws IOException
+    {
+        ChecksummedFile checksum =
+            new ChecksummedFile( new File( repoLocation, "/org/apache/archiva/artifact-upload/" + version + "/"
+                + artifact + ".jar" ) );
+        String sha1 = checksum.calculateChecksum( ChecksumAlgorithm.SHA1 );
+        String md5 = checksum.calculateChecksum( ChecksumAlgorithm.MD5 );
+
+        String contents =
+            FileUtils.readFileToString( new File( repoLocation, "/org/apache/archiva/artifact-upload/" + version + "/"
+                + artifact + ".jar.sha1" ) );
+        assertTrue( StringUtils.contains( contents, sha1 ) );
+
+        contents =
+            FileUtils.readFileToString( new File( repoLocation, "/org/apache/archiva/artifact-upload/" + version + "/"
+                + artifact + ".jar.md5" ) );
+        assertTrue( StringUtils.contains( contents, md5 ) );
+    }
+
+    private String getTimestamp( String[] artifactsList, int startIndex, int index )
+    {
+        int endIndex = -1;
+        String timestamp;
+
+        if ( artifactsList[index].contains( "jar" ) )
+        {
+            endIndex = artifactsList[index].indexOf( ".jar" );
+        }
+        else
+        {
+            endIndex = artifactsList[index].indexOf( ".pom" );
+        }
+
+        timestamp = artifactsList[index].substring( startIndex, endIndex );
+
+        return timestamp;
+    }
+
     public void testArtifactUploadWithPomSuccessful()
         throws Exception
     {
@@ -239,11 +295,13 @@ public class UploadActionTest
         archivaConfigControl.verify();
         repoFactoryControl.verify();
         auditLogsDaoControl.verify();
-        
+
         String repoLocation = config.findManagedRepositoryById( REPOSITORY_ID ).getLocation();
-        assertAllArtifactsIncludingSupportArtifactsArePresent( repoLocation );
+        assertAllArtifactsIncludingSupportArtifactsArePresent( repoLocation, "artifact-upload-1.0", "1.0" );
 
-        verifyChecksums( repoLocation );
+        verifyArtifactChecksums( repoLocation, "artifact-upload-1.0", "1.0" );
+        verifyPomChecksums( repoLocation, "artifact-upload-1.0", "1.0" );
+        verifyProjectMetadataChecksums( repoLocation );
     }
 
     public void testArtifactUploadWithClassifier()
@@ -264,7 +322,7 @@ public class UploadActionTest
         archivaConfigControl.replay();
         repoFactoryControl.replay();
         auditLogsDaoControl.replay();
-        
+
         String returnString = uploadAction.doUpload();
         assertEquals( Action.SUCCESS, returnString );
 
@@ -283,44 +341,13 @@ public class UploadActionTest
         assertFalse( new File( repoLocation, "/org/apache/archiva/artifact-upload/1.0/artifact-upload-1.0.pom.md5" ).exists() );
 
         assertTrue( new File( repoLocation, "/org/apache/archiva/artifact-upload/" + MetadataTools.MAVEN_METADATA ).exists() );
-        assertTrue( new File( repoLocation, "/org/apache/archiva/artifact-upload/" + MetadataTools.MAVEN_METADATA +
-            ".sha1" ).exists() );
-        assertTrue( new File( repoLocation, "/org/apache/archiva/artifact-upload/" + MetadataTools.MAVEN_METADATA +
-            ".md5" ).exists() );
-
-        // verify checksums of jar file
-        ChecksummedFile checksum =
-            new ChecksummedFile( new File( repoLocation,
-                                           "/org/apache/archiva/artifact-upload/1.0/artifact-upload-1.0-tests.jar" ) );
-        String sha1 = checksum.calculateChecksum( ChecksumAlgorithm.SHA1 );
-        String md5 = checksum.calculateChecksum( ChecksumAlgorithm.MD5 );
+        assertTrue( new File( repoLocation, "/org/apache/archiva/artifact-upload/" + MetadataTools.MAVEN_METADATA
+            + ".sha1" ).exists() );
+        assertTrue( new File( repoLocation, "/org/apache/archiva/artifact-upload/" + MetadataTools.MAVEN_METADATA
+            + ".md5" ).exists() );
 
-        String contents =
-            FileUtils.readFileToString( new File( repoLocation,
-                                                  "/org/apache/archiva/artifact-upload/1.0/artifact-upload-1.0-tests.jar.sha1" ) );
-        assertTrue( StringUtils.contains( contents, sha1 ) );
-
-        contents =
-            FileUtils.readFileToString( new File( repoLocation,
-                                                  "/org/apache/archiva/artifact-upload/1.0/artifact-upload-1.0-tests.jar.md5" ) );
-        assertTrue( StringUtils.contains( contents, md5 ) );
-
-        // verify checksums of metadata file
-        checksum =
-            new ChecksummedFile( new File( repoLocation, "/org/apache/archiva/artifact-upload/" +
-                MetadataTools.MAVEN_METADATA ) );
-        sha1 = checksum.calculateChecksum( ChecksumAlgorithm.SHA1 );
-        md5 = checksum.calculateChecksum( ChecksumAlgorithm.MD5 );
-
-        contents =
-            FileUtils.readFileToString( new File( repoLocation, "/org/apache/archiva/artifact-upload/" +
-                MetadataTools.MAVEN_METADATA + ".sha1" ) );
-        assertTrue( StringUtils.contains( contents, sha1 ) );
-
-        contents =
-            FileUtils.readFileToString( new File( repoLocation, "/org/apache/archiva/artifact-upload/" +
-                MetadataTools.MAVEN_METADATA + ".md5" ) );
-        assertTrue( StringUtils.contains( contents, md5 ) );
+        verifyArtifactChecksums( repoLocation, "artifact-upload-1.0-tests", "1.0" );
+        verifyProjectMetadataChecksums( repoLocation );
     }
 
     public void testArtifactUploadGeneratePomSuccessful()
@@ -350,14 +377,16 @@ public class UploadActionTest
         auditLogsDaoControl.verify();
 
         String repoLocation = config.findManagedRepositoryById( REPOSITORY_ID ).getLocation();
-        assertAllArtifactsIncludingSupportArtifactsArePresent( repoLocation );
+        assertAllArtifactsIncludingSupportArtifactsArePresent( repoLocation, "artifact-upload-1.0", "1.0" );
 
-        verifyChecksums( repoLocation );
+        verifyArtifactChecksums( repoLocation, "artifact-upload-1.0", "1.0" );
+        verifyPomChecksums( repoLocation, "artifact-upload-1.0", "1.0" );
+        verifyProjectMetadataChecksums( repoLocation );
     }
 
     public void testArtifactUploadFailedRepositoryNotFound()
         throws Exception
-    {        
+    {
         setUploadParameters( "1.0", null,
                              new File( getBasedir(),
                                        "target/test-classes/upload-artifact-test/artifact-to-be-uploaded.jar" ), null,
@@ -398,11 +427,11 @@ public class UploadActionTest
         archivaConfigControl.expectAndReturn( archivaConfig.getConfiguration(), config );
         repoFactoryControl.expectAndReturn( repoFactory.getManagedRepositoryContent( REPOSITORY_ID ), content );
         auditLogsDaoControl.expectAndReturn( auditLogsDao.saveAuditLogs( new ArchivaAuditLogs() ), null );
-        
+
         archivaConfigControl.replay();
         repoFactoryControl.replay();
         auditLogsDaoControl.replay();
-       
+
         String returnString = uploadAction.doUpload();
         assertEquals( Action.SUCCESS, returnString );
 
@@ -413,86 +442,92 @@ public class UploadActionTest
         String repoLocation = config.findManagedRepositoryById( REPOSITORY_ID ).getLocation();
         String[] artifactsList = new File( repoLocation, "/org/apache/archiva/artifact-upload/1.0-SNAPSHOT/" ).list();
 
-        assertEquals( 6, artifactsList.length );
-
-        assertTrue( new File( repoLocation, "/org/apache/archiva/artifact-upload/" + MetadataTools.MAVEN_METADATA ).exists() );
-        assertTrue( new File( repoLocation, "/org/apache/archiva/artifact-upload/" + MetadataTools.MAVEN_METADATA +
-            ".sha1" ).exists() );
-        assertTrue( new File( repoLocation, "/org/apache/archiva/artifact-upload/" + MetadataTools.MAVEN_METADATA +
-            ".md5" ).exists() );
+        assertEquals( 9, artifactsList.length );
+        assertTrue( new File( repoLocation, "/org/apache/archiva/artifact-upload/1.0-SNAPSHOT/"
+            + MetadataTools.MAVEN_METADATA ).exists() );
+        assertTrue( new File( repoLocation, "/org/apache/archiva/artifact-upload/1.0-SNAPSHOT/"
+            + MetadataTools.MAVEN_METADATA + ".sha1" ).exists() );
+        assertTrue( new File( repoLocation, "/org/apache/archiva/artifact-upload/1.0-SNAPSHOT/"
+            + MetadataTools.MAVEN_METADATA + ".md5" ).exists() );
 
         int startIndex = "artifact-upload-1.0-".length();
-        int endIndex = -1; 
+        String timestamp = getTimestamp( artifactsList, startIndex, 0 );
 
-        if ( artifactsList[0].contains( "jar" ) )
-        {
-            endIndex = artifactsList[0].indexOf( ".jar" );
-        }
-        else
-        {
-            endIndex = artifactsList[0].indexOf( ".pom" );
-        }
+        assertAllArtifactsIncludingSupportArtifactsArePresent( repoLocation, "artifact-upload-1.0-" + timestamp,
+                                                               "1.0-SNAPSHOT" );
+        verifyArtifactChecksums( repoLocation, "artifact-upload-1.0-" + timestamp, "1.0-SNAPSHOT" );
+        verifyPomChecksums( repoLocation, "artifact-upload-1.0-" + timestamp, "1.0-SNAPSHOT" );
+        verifyProjectMetadataChecksums( repoLocation );
+        verifyVersionMetadataChecksums( repoLocation, "1.0-SNAPSHOT" );
+
+        // verify build number
+        File metadataFile =
+            new File( repoLocation, "/org/apache/archiva/artifact-upload/1.0-SNAPSHOT/" + MetadataTools.MAVEN_METADATA );
+        ArchivaRepositoryMetadata artifactMetadata = RepositoryMetadataReader.read( metadataFile );
 
-        String timestamp = artifactsList[0].substring( startIndex, endIndex );
+        SnapshotVersion snapshotVersion = artifactMetadata.getSnapshotVersion();
+        assertEquals( "Incorrect build number set in artifact metadata.", 1, snapshotVersion.getBuildNumber() );
 
-        assertTrue( new File( repoLocation, "/org/apache/archiva/artifact-upload/1.0-SNAPSHOT/artifact-upload-1.0-" + timestamp + ".jar" ).exists()  );
-        assertTrue( new File( repoLocation, "/org/apache/archiva/artifact-upload/1.0-SNAPSHOT/artifact-upload-1.0-" + timestamp + ".jar.md5" ).exists()  );
-        assertTrue( new File( repoLocation, "/org/apache/archiva/artifact-upload/1.0-SNAPSHOT/artifact-upload-1.0-" + timestamp + ".jar.sha1" ).exists()  );
-        assertTrue( new File( repoLocation, "/org/apache/archiva/artifact-upload/1.0-SNAPSHOT/artifact-upload-1.0-" + timestamp + ".pom" ).exists()  );
-        assertTrue( new File( repoLocation, "/org/apache/archiva/artifact-upload/1.0-SNAPSHOT/artifact-upload-1.0-" + timestamp + ".pom.md5" ).exists()  );
-        assertTrue( new File( repoLocation, "/org/apache/archiva/artifact-upload/1.0-SNAPSHOT/artifact-upload-1.0-" + timestamp + ".pom.sha1" ).exists()  );
+        String timestampPart = StringUtils.substringBeforeLast( timestamp, "-" );
+        assertEquals( "Incorrect timestamp set in artifact metadata.", timestampPart, snapshotVersion.getTimestamp() );
 
-        // verify checksums of jar file
-        ChecksummedFile checksum =
-            new ChecksummedFile( new File( repoLocation,
-                                           "/org/apache/archiva/artifact-upload/1.0-SNAPSHOT/artifact-upload-1.0-" + timestamp + ".jar" ) );
-        String sha1 = checksum.calculateChecksum( ChecksumAlgorithm.SHA1 );
-        String md5 = checksum.calculateChecksum( ChecksumAlgorithm.MD5 );
+        String buildnumber = StringUtils.substringAfterLast( timestamp, "-" );
+        assertEquals( "Incorrect build number in filename.", "1", buildnumber );
 
-        String contents =
-            FileUtils.readFileToString( new File( repoLocation,
-                                                  "/org/apache/archiva/artifact-upload/1.0-SNAPSHOT/artifact-upload-1.0-" + timestamp + ".jar.sha1" ) );
-        assertTrue( StringUtils.contains( contents, sha1 ) );
+        archivaConfigControl.reset();
+        repoFactoryControl.reset();
+        auditLogsDaoControl.reset();
 
-        contents =
-            FileUtils.readFileToString( new File( repoLocation,
-                                                  "/org/apache/archiva/artifact-upload/1.0-SNAPSHOT/artifact-upload-1.0-" + timestamp + ".jar.md5" ) );
-        assertTrue( StringUtils.contains( contents, md5 ) );
+        auditLogsDaoControl.setDefaultMatcher( MockControl.ALWAYS_MATCHER );
 
-        // verify checksums of pom file
-        checksum =
-            new ChecksummedFile( new File( repoLocation,
-                                           "/org/apache/archiva/artifact-upload/1.0-SNAPSHOT/artifact-upload-1.0-" + timestamp + ".pom" ) );
-        sha1 = checksum.calculateChecksum( ChecksumAlgorithm.SHA1 );
-        md5 = checksum.calculateChecksum( ChecksumAlgorithm.MD5 );
+        // MRM-1353
+        // upload snapshot artifact again and check if build number was incremented
+        setUploadParameters( "1.0-SNAPSHOT", null,
+                             new File( getBasedir(),
+                                       "target/test-classes/upload-artifact-test/artifact-to-be-uploaded.jar" ), null,
+                             true );
 
-        contents =
-            FileUtils.readFileToString( new File( repoLocation,
-                                                  "/org/apache/archiva/artifact-upload/1.0-SNAPSHOT/artifact-upload-1.0-" + timestamp + ".pom.sha1" ) );
-        assertTrue( StringUtils.contains( contents, sha1 ) );
+        archivaConfigControl.expectAndReturn( archivaConfig.getConfiguration(), config );
+        repoFactoryControl.expectAndReturn( repoFactory.getManagedRepositoryContent( REPOSITORY_ID ), content );
+        auditLogsDaoControl.expectAndReturn( auditLogsDao.saveAuditLogs( new ArchivaAuditLogs() ), null );
 
-        contents =
-            FileUtils.readFileToString( new File( repoLocation,
-                                                  "/org/apache/archiva/artifact-upload/1.0-SNAPSHOT/artifact-upload-1.0-" + timestamp + ".pom.md5" ) );
-        assertTrue( StringUtils.contains( contents, md5 ) );
+        archivaConfigControl.replay();
+        repoFactoryControl.replay();
+        auditLogsDaoControl.replay();
 
-        
-        // verify checksums of metadata file
-        checksum =
-            new ChecksummedFile( new File( repoLocation, "/org/apache/archiva/artifact-upload/" +
-                MetadataTools.MAVEN_METADATA ) );
-        sha1 = checksum.calculateChecksum( ChecksumAlgorithm.SHA1 );
-        md5 = checksum.calculateChecksum( ChecksumAlgorithm.MD5 );
+        returnString = uploadAction.doUpload();
+        assertEquals( Action.SUCCESS, returnString );
 
-        contents =
-            FileUtils.readFileToString( new File( repoLocation, "/org/apache/archiva/artifact-upload/" +
-                MetadataTools.MAVEN_METADATA + ".sha1" ) );
-        assertTrue( StringUtils.contains( contents, sha1 ) );
+        archivaConfigControl.verify();
+        repoFactoryControl.verify();
+        auditLogsDaoControl.verify();
 
-        contents =
-            FileUtils.readFileToString( new File( repoLocation, "/org/apache/archiva/artifact-upload/" +
-                MetadataTools.MAVEN_METADATA + ".md5" ) );
-        assertTrue( StringUtils.contains( contents, md5 ) );
+        artifactsList = new File( repoLocation, "/org/apache/archiva/artifact-upload/1.0-SNAPSHOT/" ).list();
+
+        assertEquals( 15, artifactsList.length );
+
+        timestamp = getTimestamp( artifactsList, startIndex, 6 );
+
+        assertAllArtifactsIncludingSupportArtifactsArePresent( repoLocation, "artifact-upload-1.0-" + timestamp,
+                                                               "1.0-SNAPSHOT" );
+        verifyArtifactChecksums( repoLocation, "artifact-upload-1.0-" + timestamp, "1.0-SNAPSHOT" );
+        verifyPomChecksums( repoLocation, "artifact-upload-1.0-" + timestamp, "1.0-SNAPSHOT" );
+        verifyProjectMetadataChecksums( repoLocation );
+        verifyVersionMetadataChecksums( repoLocation, "1.0-SNAPSHOT" );
+
+        // verify build number set in metadata and in filename
+        metadataFile =
+            new File( repoLocation, "/org/apache/archiva/artifact-upload/1.0-SNAPSHOT/" + MetadataTools.MAVEN_METADATA );
+        artifactMetadata = RepositoryMetadataReader.read( metadataFile );
+
+        snapshotVersion = artifactMetadata.getSnapshotVersion();
+        assertEquals( "Incorrect build number set in artifact metadata.", 2, snapshotVersion.getBuildNumber() );
+
+        timestampPart = StringUtils.substringBeforeLast( timestamp, "-" );
+        assertEquals( "Incorrect timestamp set in artifact metadata.", timestampPart, snapshotVersion.getTimestamp() );
+
+        buildnumber = StringUtils.substringAfterLast( timestamp, "-" );
+        assertEquals( "Incorrect build number in filename.", "2", buildnumber );
     }
 
     public void testChecksumIsCorrectWhenArtifactIsReUploaded()
@@ -505,13 +540,13 @@ public class UploadActionTest
 
         ManagedRepositoryContent content = new ManagedDefaultRepositoryContent();
         ManagedRepositoryConfiguration repoConfig = config.findManagedRepositoryById( REPOSITORY_ID );
-        repoConfig.setBlockRedeployments( false );        
-        content.setRepository( repoConfig );      
-        
+        repoConfig.setBlockRedeployments( false );
+        content.setRepository( repoConfig );
+
         archivaConfigControl.expectAndReturn( archivaConfig.getConfiguration(), config );
         repoFactoryControl.expectAndReturn( repoFactory.getManagedRepositoryContent( REPOSITORY_ID ), content );
         auditLogsDaoControl.expectAndReturn( auditLogsDao.saveAuditLogs( new ArchivaAuditLogs() ), null );
-        
+
         archivaConfigControl.replay();
         repoFactoryControl.replay();
         auditLogsDaoControl.replay();
@@ -529,9 +564,11 @@ public class UploadActionTest
         auditLogsDaoControl.setDefaultMatcher( MockControl.ALWAYS_MATCHER );
 
         String repoLocation = config.findManagedRepositoryById( REPOSITORY_ID ).getLocation();
-        assertAllArtifactsIncludingSupportArtifactsArePresent( repoLocation );
+        assertAllArtifactsIncludingSupportArtifactsArePresent( repoLocation, "artifact-upload-1.0", "1.0" );
 
-        verifyChecksums( repoLocation );
+        verifyArtifactChecksums( repoLocation, "artifact-upload-1.0", "1.0" );
+        verifyPomChecksums( repoLocation, "artifact-upload-1.0", "1.0" );
+        verifyProjectMetadataChecksums( repoLocation );
 
         // RE-upload artifact
         setUploadParameters( "1.0", null,
@@ -542,7 +579,7 @@ public class UploadActionTest
         archivaConfigControl.expectAndReturn( archivaConfig.getConfiguration(), config );
         repoFactoryControl.expectAndReturn( repoFactory.getManagedRepositoryContent( REPOSITORY_ID ), content );
         auditLogsDaoControl.expectAndReturn( auditLogsDao.saveAuditLogs( new ArchivaAuditLogs() ), null );
-        
+
         archivaConfigControl.replay();
         repoFactoryControl.replay();
         auditLogsDaoControl.replay();
@@ -555,14 +592,16 @@ public class UploadActionTest
         auditLogsDaoControl.verify();
 
         repoLocation = config.findManagedRepositoryById( REPOSITORY_ID ).getLocation();
-        assertAllArtifactsIncludingSupportArtifactsArePresent( repoLocation );
+        assertAllArtifactsIncludingSupportArtifactsArePresent( repoLocation, "artifact-upload-1.0", "1.0" );
 
-        verifyChecksums( repoLocation );
+        verifyArtifactChecksums( repoLocation, "artifact-upload-1.0", "1.0" );
+        verifyPomChecksums( repoLocation, "artifact-upload-1.0", "1.0" );
+        verifyProjectMetadataChecksums( repoLocation );
     }
-    
+
     public void testUploadArtifactAlreadyExistingRedeploymentsBlocked()
         throws Exception
-    {   
+    {
         setUploadParameters( "1.0", null,
                              new File( getBasedir(),
                                        "target/test-classes/upload-artifact-test/artifact-to-be-uploaded.jar" ), null,
@@ -574,19 +613,19 @@ public class UploadActionTest
         archivaConfigControl.expectAndReturn( archivaConfig.getConfiguration(), config, 2 );
         repoFactoryControl.expectAndReturn( repoFactory.getManagedRepositoryContent( REPOSITORY_ID ), content, 2 );
         auditLogsDaoControl.expectAndReturn( auditLogsDao.saveAuditLogs( new ArchivaAuditLogs() ), null );
-        
+
         archivaConfigControl.replay();
         repoFactoryControl.replay();
         auditLogsDaoControl.replay();
 
         String returnString = uploadAction.doUpload();
         assertEquals( Action.SUCCESS, returnString );
-        
+
         setUploadParameters( "1.0", null,
                              new File( getBasedir(),
                                        "target/test-classes/upload-artifact-test/artifact-to-be-uploaded.jar" ), null,
                              true );
-        
+
         returnString = uploadAction.doUpload();
         assertEquals( Action.ERROR, returnString );
 
@@ -595,50 +634,54 @@ public class UploadActionTest
         auditLogsDaoControl.verify();
 
         String repoLocation = config.findManagedRepositoryById( REPOSITORY_ID ).getLocation();
-        assertAllArtifactsIncludingSupportArtifactsArePresent( repoLocation );
+        assertAllArtifactsIncludingSupportArtifactsArePresent( repoLocation, "artifact-upload-1.0", "1.0" );
 
-        verifyChecksums( repoLocation );
+        verifyArtifactChecksums( repoLocation, "artifact-upload-1.0", "1.0" );
+        verifyPomChecksums( repoLocation, "artifact-upload-1.0", "1.0" );
+        verifyProjectMetadataChecksums( repoLocation );
     }
-    
+
     public void testUploadArtifactAlreadyExistingRedeploymentsAllowed()
         throws Exception
-    {                
+    {
         setUploadParameters( "1.0", null,
                              new File( getBasedir(),
                                        "target/test-classes/upload-artifact-test/artifact-to-be-uploaded.jar" ), null,
                              true );
-    
+
         ManagedRepositoryContent content = new ManagedDefaultRepositoryContent();
         ManagedRepositoryConfiguration repoConfig = config.findManagedRepositoryById( REPOSITORY_ID );
-        repoConfig.setBlockRedeployments( false );        
-        content.setRepository( repoConfig );        
-    
+        repoConfig.setBlockRedeployments( false );
+        content.setRepository( repoConfig );
+
         archivaConfigControl.expectAndReturn( archivaConfig.getConfiguration(), config, 2 );
         repoFactoryControl.expectAndReturn( repoFactory.getManagedRepositoryContent( REPOSITORY_ID ), content, 2 );
         auditLogsDaoControl.expectAndReturn( auditLogsDao.saveAuditLogs( new ArchivaAuditLogs() ), null, 2 );
-    
+
         archivaConfigControl.replay();
         repoFactoryControl.replay();
         auditLogsDaoControl.replay();
-    
+
         String returnString = uploadAction.doUpload();
         assertEquals( Action.SUCCESS, returnString );
-    
+
         setUploadParameters( "1.0", null,
                              new File( getBasedir(),
                                        "target/test-classes/upload-artifact-test/artifact-to-be-uploaded.jar" ), null,
                              true );
-        
+
         returnString = uploadAction.doUpload();
         assertEquals( Action.SUCCESS, returnString );
-        
+
         archivaConfigControl.verify();
         repoFactoryControl.verify();
         auditLogsDaoControl.verify();
-    
+
         String repoLocation = config.findManagedRepositoryById( REPOSITORY_ID ).getLocation();
-        assertAllArtifactsIncludingSupportArtifactsArePresent( repoLocation );
-    
-        verifyChecksums( repoLocation );
+        assertAllArtifactsIncludingSupportArtifactsArePresent( repoLocation, "artifact-upload-1.0", "1.0" );
+
+        verifyArtifactChecksums( repoLocation, "artifact-upload-1.0", "1.0" );
+        verifyPomChecksums( repoLocation, "artifact-upload-1.0", "1.0" );
+        verifyProjectMetadataChecksums( repoLocation );
     }
-}
+}
\ No newline at end of file



Re: svn commit: r930528 - in /archiva/branches/archiva-1.3.x/archiva-modules/archiva-web/archiva-webapp/src: main/java/org/apache/maven/archiva/web/action/UploadAction.java test/java/org/apache/maven/archiva/web/action/UploadActionTest.java

Posted by Deng Ching <oc...@apache.org>.
Hi Brett,

I was meaning to merge this to trunk but haven't got around to doing that
yet :) I attached a screenshot of the issue from the trunk build but I'll
verify again with a Selenium test..

Thanks,
Deng

On Tue, Apr 6, 2010 at 12:36 PM, Brett Porter <br...@apache.org> wrote:

> Does this need to be merged to trunk? I thought you said it wasn't working
> there.
>
> That said, I was quite sure I tackled this specific issue already :) Should
> we have a Selenium test to confirm?
>
> - Brett
>
> On 04/04/2010, at 2:01 AM, oching@apache.org wrote:
>
> > Author: oching
> > Date: Sat Apr  3 15:01:22 2010
> > New Revision: 930528
> >
> > URL: http://svn.apache.org/viewvc?rev=930528&view=rev
> > Log:
> > [MRM-1353] Build number is always 1 for SNAPSHOT artifacts uploaded via
> web upload form
> > o get latest build number from version-level metadata when deploying
> artifacts from webapp
> > o for snapshot artifacts deployed, generate or update the version-level
> metadata
> > o added unit test for this scenario
> > o refactored some parts of the tests for upload artifact
> >
> > Modified:
> >
>  archiva/branches/archiva-1.3.x/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/UploadAction.java
> >
>  archiva/branches/archiva-1.3.x/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/action/UploadActionTest.java
> >
> > Modified:
> archiva/branches/archiva-1.3.x/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/UploadAction.java
> > URL:
> http://svn.apache.org/viewvc/archiva/branches/archiva-1.3.x/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/UploadAction.java?rev=930528&r1=930527&r2=930528&view=diff
> >
> ==============================================================================
> > ---
> archiva/branches/archiva-1.3.x/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/UploadAction.java
> (original)
> > +++
> archiva/branches/archiva-1.3.x/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/UploadAction.java
> Sat Apr  3 15:01:22 2010
> > @@ -76,6 +76,7 @@ import com.opensymphony.xwork2.Validatea
> >  *
> >  * @plexus.component role="com.opensymphony.xwork2.Action"
> role-hint="uploadAction" instantiation-strategy="per-lookup"
> >  */
> > +@SuppressWarnings( "serial" )
> > public class UploadAction
> >     extends PlexusActionSupport
> >     implements Validateable, Preparable, Auditable
> > @@ -307,17 +308,15 @@ public class UploadAction
> >             ManagedRepositoryContent repository =
> repositoryFactory.getManagedRepositoryContent( repositoryId );
> >
> >             String artifactPath = repository.toPath( artifactReference );
> > -
> >             int lastIndex = artifactPath.lastIndexOf( '/' );
> > -
> >             File targetPath = new File( repoConfig.getLocation(),
> artifactPath.substring( 0, lastIndex ) );
> > -
> > +
> >             Date lastUpdatedTimestamp = Calendar.getInstance().getTime();
> >             int newBuildNumber = -1;
> >             String timestamp = null;
> >
> > -            File metadataFile = getMetadata(
> targetPath.getAbsolutePath() );
> > -            ArchivaRepositoryMetadata metadata = getMetadata(
> metadataFile );
> > +            File versionMetadataFile = getMetadata(
> targetPath.getAbsolutePath() );
> > +            ArchivaRepositoryMetadata versionMetadata = getMetadata(
> versionMetadataFile );
> >
> >             if ( VersionUtil.isSnapshot( version ) )
> >             {
> > @@ -325,13 +324,13 @@ public class UploadAction
> >                 DateFormat fmt = new SimpleDateFormat( "yyyyMMdd.HHmmss"
> );
> >                 fmt.setTimeZone( timezone );
> >                 timestamp = fmt.format( lastUpdatedTimestamp );
> > -                if ( metadata.getSnapshotVersion() != null )
> > +
> > +                if ( versionMetadata.getSnapshotVersion() != null )
> >                 {
> > -                    newBuildNumber =
> metadata.getSnapshotVersion().getBuildNumber() + 1;
> > +                    newBuildNumber =
> versionMetadata.getSnapshotVersion().getBuildNumber() + 1;
> >                 }
> >                 else
> >                 {
> > -                    metadata.setSnapshotVersion( new SnapshotVersion()
> );
> >                     newBuildNumber = 1;
> >                 }
> >             }
> > @@ -346,7 +345,7 @@ public class UploadAction
> >             {
> >                 filename = filename.replaceAll( "SNAPSHOT", timestamp +
> "-" + newBuildNumber );
> >             }
> > -
> > +
> >             boolean fixChecksums = !(
> config.getRepositoryScanning().getKnownContentConsumers().contains(
> "create-missing-checksums" ) );
> >
> >             try
> > @@ -411,13 +410,19 @@ public class UploadAction
> >                     addActionError( "Error encountered while uploading
> pom file: " + ie.getMessage() );
> >                     return ERROR;
> >                 }
> > -
> >             }
> >
> >             // explicitly update only if metadata-updater consumer is not
> enabled!
> > -            if(
> !config.getRepositoryScanning().getKnownContentConsumers().contains(
> "metadata-updater" ) )
> > +            if (
> !config.getRepositoryScanning().getKnownContentConsumers().contains(
> "metadata-updater" ) )
> >             {
> > -                updateMetadata( metadata, metadataFile,
> lastUpdatedTimestamp, timestamp, newBuildNumber, fixChecksums );
> > +                updateProjectMetadata( targetPath.getAbsolutePath(),
> lastUpdatedTimestamp, timestamp, newBuildNumber,
> > +                                       fixChecksums );
> > +
> > +                if ( VersionUtil.isSnapshot( version ) )
> > +                {
> > +                    updateVersionMetadata( versionMetadata,
> versionMetadataFile, lastUpdatedTimestamp, timestamp,
> > +                                           newBuildNumber, fixChecksums
> );
> > +                }
> >             }
> >
> >             String msg = "Artifact \'" + groupId + ":" + artifactId + ":"
> + version +
> > @@ -492,9 +497,7 @@ public class UploadAction
> >
> >     private File getMetadata( String targetPath )
> >     {
> > -        String artifactPath = targetPath.substring( 0,
> targetPath.lastIndexOf( File.separatorChar ) );
> > -
> > -        return new File( artifactPath, MetadataTools.MAVEN_METADATA );
> > +        return new File( targetPath, MetadataTools.MAVEN_METADATA );
> >     }
> >
> >     private ArchivaRepositoryMetadata getMetadata( File metadataFile )
> > @@ -507,21 +510,57 @@ public class UploadAction
> >         }
> >         return metadata;
> >     }
> > +
> > +    /**
> > +     * Update version level metadata for snapshot artifacts. If it does
> not exist, create the metadata and fix checksums
> > +     * if necessary.
> > +     */
> > +    private void updateVersionMetadata( ArchivaRepositoryMetadata
> metadata, File metadataFile,
> > +                                        Date lastUpdatedTimestamp,
> String timestamp, int buildNumber,
> > +                                        boolean fixChecksums )
> > +        throws RepositoryMetadataException
> > +    {
> > +        if ( !metadataFile.exists() )
> > +        {
> > +            metadata.setGroupId( groupId );
> > +            metadata.setArtifactId( artifactId );
> > +            metadata.setVersion( version );
> > +        }
> > +
> > +        if ( metadata.getSnapshotVersion() == null )
> > +        {
> > +            metadata.setSnapshotVersion( new SnapshotVersion() );
> > +        }
> > +
> > +        metadata.getSnapshotVersion().setBuildNumber( buildNumber );
> > +        metadata.getSnapshotVersion().setTimestamp( timestamp );
> > +        metadata.setLastUpdatedTimestamp( lastUpdatedTimestamp );
> > +
> > +        RepositoryMetadataWriter.write( metadata, metadataFile );
> > +
> > +        if ( fixChecksums )
> > +        {
> > +            fixChecksums( metadataFile );
> > +        }
> > +    }
> >
> >     /**
> > -     * Update artifact level metadata. If it does not exist, create the
> metadata and
> > -     * fix checksums if necessary.
> > +     * Update artifact level metadata. If it does not exist, create the
> metadata and fix checksums if necessary.
> >      */
> > -    private void updateMetadata( ArchivaRepositoryMetadata metadata,
> File metadataFile, Date lastUpdatedTimestamp,
> > -                                 String timestamp, int buildNumber,
> boolean fixChecksums )
> > +    private void updateProjectMetadata( String targetPath, Date
> lastUpdatedTimestamp, String timestamp,
> > +                                        int buildNumber, boolean
> fixChecksums )
> >         throws RepositoryMetadataException
> >     {
> >         List<String> availableVersions = new ArrayList<String>();
> >         String latestVersion = version;
> >
> > -        if ( metadataFile.exists() )
> > +        String projectPath = targetPath.substring( 0,
> targetPath.lastIndexOf( File.separatorChar ) );
> > +        File projectMetadataFile = getMetadata( projectPath );
> > +        ArchivaRepositoryMetadata projectMetadata = getMetadata(
> projectMetadataFile );
> > +
> > +        if ( projectMetadataFile.exists() )
> >         {
> > -            availableVersions = metadata.getAvailableVersions();
> > +            availableVersions = projectMetadata.getAvailableVersions();
> >
> >             Collections.sort( availableVersions,
> VersionComparator.getInstance() );
> >
> > @@ -536,39 +575,34 @@ public class UploadAction
> >         {
> >             availableVersions.add( version );
> >
> > -            metadata.setGroupId( groupId );
> > -            metadata.setArtifactId( artifactId );
> > +            projectMetadata.setGroupId( groupId );
> > +            projectMetadata.setArtifactId( artifactId );
> >         }
> >
> > -        if ( metadata.getGroupId() == null )
> > +        if ( projectMetadata.getGroupId() == null )
> >         {
> > -            metadata.setGroupId( groupId );
> > +            projectMetadata.setGroupId( groupId );
> >         }
> > -        if ( metadata.getArtifactId() == null )
> > +
> > +        if ( projectMetadata.getArtifactId() == null )
> >         {
> > -            metadata.setArtifactId( artifactId );
> > +            projectMetadata.setArtifactId( artifactId );
> >         }
> >
> > -        metadata.setLatestVersion( latestVersion );
> > -        metadata.setLastUpdatedTimestamp( lastUpdatedTimestamp );
> > -        metadata.setAvailableVersions( availableVersions );
> > +        projectMetadata.setLatestVersion( latestVersion );
> > +        projectMetadata.setLastUpdatedTimestamp( lastUpdatedTimestamp );
> > +        projectMetadata.setAvailableVersions( availableVersions );
> >
> >         if ( !VersionUtil.isSnapshot( version ) )
> >         {
> > -            metadata.setReleasedVersion( latestVersion );
> > +            projectMetadata.setReleasedVersion( latestVersion );
> >         }
> > -        else
> > -        {
> > -            metadata.getSnapshotVersion().setBuildNumber( buildNumber );
> >
> > -            metadata.getSnapshotVersion().setTimestamp( timestamp );
> > -        }
> > +        RepositoryMetadataWriter.write( projectMetadata,
> projectMetadataFile );
> >
> > -        RepositoryMetadataWriter.write( metadata, metadataFile );
> > -
> > -        if( fixChecksums )
> > +        if ( fixChecksums )
> >         {
> > -            fixChecksums( metadataFile );
> > +            fixChecksums( projectMetadataFile );
> >         }
> >     }
> >
> >
> > Modified:
> archiva/branches/archiva-1.3.x/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/action/UploadActionTest.java
> > URL:
> http://svn.apache.org/viewvc/archiva/branches/archiva-1.3.x/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/action/UploadActionTest.java?rev=930528&r1=930527&r2=930528&view=diff
> >
> ==============================================================================
> > ---
> archiva/branches/archiva-1.3.x/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/action/UploadActionTest.java
> (original)
> > +++
> archiva/branches/archiva-1.3.x/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/action/UploadActionTest.java
> Sat Apr  3 15:01:22 2010
> > @@ -33,11 +33,14 @@ import org.apache.maven.archiva.configur
> > import
> org.apache.maven.archiva.configuration.RepositoryScanningConfiguration;
> > import org.apache.maven.archiva.database.ArchivaAuditLogsDao;
> > import org.apache.maven.archiva.model.ArchivaAuditLogs;
> > +import org.apache.maven.archiva.model.ArchivaRepositoryMetadata;
> > +import org.apache.maven.archiva.model.SnapshotVersion;
> > import org.apache.maven.archiva.repository.ManagedRepositoryContent;
> > import org.apache.maven.archiva.repository.RepositoryContentFactory;
> > import org.apache.maven.archiva.repository.RepositoryNotFoundException;
> > import
> org.apache.maven.archiva.repository.content.ManagedDefaultRepositoryContent;
> > import org.apache.maven.archiva.repository.metadata.MetadataTools;
> > +import
> org.apache.maven.archiva.repository.metadata.RepositoryMetadataReader;
> > import org.apache.maven.archiva.scheduled.ArchivaTaskScheduler;
> > import org.codehaus.plexus.spring.PlexusInSpringTestCase;
> > import org.easymock.MockControl;
> > @@ -64,14 +67,14 @@ public class UploadActionTest
> >     private RepositoryContentFactory repoFactory;
> >
> >     private MockControl repoFactoryControl;
> > -
> > +
> >     private ArchivaAuditLogsDao auditLogsDao;
> >
> >     private MockControl auditLogsDaoControl;
> >
> >     private static final String REPOSITORY_ID = "test-repo";
> >
> > -    private Configuration config;
> > +    private Configuration config;
> >
> >     public void setUp()
> >         throws Exception
> > @@ -86,7 +89,7 @@ public class UploadActionTest
> >
> >         repoFactoryControl = MockClassControl.createControl(
> RepositoryContentFactory.class );
> >         repoFactory = (RepositoryContentFactory)
> repoFactoryControl.getMock();
> > -
> > +
> >         auditLogsDaoControl = MockControl.createControl(
> ArchivaAuditLogsDao.class );
> >         auditLogsDaoControl.setDefaultMatcher( MockControl.ALWAYS_MATCHER
> );
> >         auditLogsDao = (ArchivaAuditLogsDao)
> auditLogsDaoControl.getMock();
> > @@ -99,9 +102,9 @@ public class UploadActionTest
> >
> >         File testRepo = new File( getBasedir(),
> "target/test-classes/test-repo" );
> >         testRepo.mkdirs();
> > -
> > +
> >         assertTrue( testRepo.exists() );
> > -
> > +
> >         config = new Configuration();
> >         ManagedRepositoryConfiguration repoConfig = new
> ManagedRepositoryConfiguration();
> >         repoConfig.setId( REPOSITORY_ID );
> > @@ -110,7 +113,7 @@ public class UploadActionTest
> >         repoConfig.setName( REPOSITORY_ID );
> >         repoConfig.setBlockRedeployments( true );
> >         config.addManagedRepository( repoConfig );
> > -
> > +
> >         RepositoryScanningConfiguration repoScanning = new
> RepositoryScanningConfiguration();
> >         repoScanning.setKnownContentConsumers( new ArrayList<String>() );
> >         config.setRepositoryScanning( repoScanning );
> > @@ -142,78 +145,131 @@ public class UploadActionTest
> >         uploadAction.setGeneratePom( generatePom );
> >     }
> >
> > -    private void assertAllArtifactsIncludingSupportArtifactsArePresent(
> String repoLocation )
> > +    private void assertAllArtifactsIncludingSupportArtifactsArePresent(
> String repoLocation, String artifact,
> > +
>  String version )
> >     {
> > -        assertTrue( new File( repoLocation,
> "/org/apache/archiva/artifact-upload/1.0/artifact-upload-1.0.jar" ).exists()
> );
> > -        assertTrue( new File( repoLocation,
> "/org/apache/archiva/artifact-upload/1.0/artifact-upload-1.0.jar.sha1"
> ).exists() );
> > -        assertTrue( new File( repoLocation,
> "/org/apache/archiva/artifact-upload/1.0/artifact-upload-1.0.jar.md5"
> ).exists() );
> > -
> > -        assertTrue( new File( repoLocation,
> "/org/apache/archiva/artifact-upload/1.0/artifact-upload-1.0.pom" ).exists()
> );
> > -        assertTrue( new File( repoLocation,
> "/org/apache/archiva/artifact-upload/1.0/artifact-upload-1.0.pom.sha1"
> ).exists() );
> > -        assertTrue( new File( repoLocation,
> "/org/apache/archiva/artifact-upload/1.0/artifact-upload-1.0.pom.md5"
> ).exists() );
> > +        assertTrue( new File( repoLocation,
> "/org/apache/archiva/artifact-upload/" + version + "/" + artifact + ".jar"
> ).exists() );
> > +        assertTrue( new File( repoLocation,
> "/org/apache/archiva/artifact-upload/" + version + "/" + artifact
> > +            + ".jar.sha1" ).exists() );
> > +        assertTrue( new File( repoLocation,
> "/org/apache/archiva/artifact-upload/" + version + "/" + artifact
> > +            + ".jar.md5" ).exists() );
> > +
> > +        assertTrue( new File( repoLocation,
> "/org/apache/archiva/artifact-upload/" + version + "/" + artifact + ".pom"
> ).exists() );
> > +        assertTrue( new File( repoLocation,
> "/org/apache/archiva/artifact-upload/" + version + "/" + artifact
> > +            + ".pom.sha1" ).exists() );
> > +        assertTrue( new File( repoLocation,
> "/org/apache/archiva/artifact-upload/" + version + "/" + artifact
> > +            + ".pom.md5" ).exists() );
> >
> >         assertTrue( new File( repoLocation,
> "/org/apache/archiva/artifact-upload/" + MetadataTools.MAVEN_METADATA
> ).exists() );
> > -        assertTrue( new File( repoLocation,
> "/org/apache/archiva/artifact-upload/" + MetadataTools.MAVEN_METADATA +
> > -            ".sha1" ).exists() );
> > -        assertTrue( new File( repoLocation,
> "/org/apache/archiva/artifact-upload/" + MetadataTools.MAVEN_METADATA +
> > -            ".md5" ).exists() );
> > +        assertTrue( new File( repoLocation,
> "/org/apache/archiva/artifact-upload/" + MetadataTools.MAVEN_METADATA
> > +            + ".sha1" ).exists() );
> > +        assertTrue( new File( repoLocation,
> "/org/apache/archiva/artifact-upload/" + MetadataTools.MAVEN_METADATA
> > +            + ".md5" ).exists() );
> >     }
> >
> > -    private void verifyChecksums( String repoLocation )
> > +    private void verifyVersionMetadataChecksums( String repoLocation,
> String version )
> >         throws IOException
> >     {
> > -        // verify checksums of jar file
> >         ChecksummedFile checksum =
> > -            new ChecksummedFile( new File( repoLocation,
> > -
> "/org/apache/archiva/artifact-upload/1.0/artifact-upload-1.0.jar" ) );
> > +            new ChecksummedFile( new File( repoLocation,
> "/org/apache/archiva/artifact-upload/" + version + "/"
> > +                + MetadataTools.MAVEN_METADATA ) );
> >         String sha1 = checksum.calculateChecksum( ChecksumAlgorithm.SHA1
> );
> >         String md5 = checksum.calculateChecksum( ChecksumAlgorithm.MD5 );
> >
> >         String contents =
> > -            FileUtils.readFileToString( new File( repoLocation,
> > -
>  "/org/apache/archiva/artifact-upload/1.0/artifact-upload-1.0.jar.sha1" ) );
> > +            FileUtils.readFileToString( new File( repoLocation,
> "/org/apache/archiva/artifact-upload/" + version + "/"
> > +                + MetadataTools.MAVEN_METADATA + ".sha1" ) );
> >         assertTrue( StringUtils.contains( contents, sha1 ) );
> >
> >         contents =
> > -            FileUtils.readFileToString( new File( repoLocation,
> > -
>  "/org/apache/archiva/artifact-upload/1.0/artifact-upload-1.0.jar.md5" ) );
> > +            FileUtils.readFileToString( new File( repoLocation,
> "/org/apache/archiva/artifact-upload/" + version + "/"
> > +                + MetadataTools.MAVEN_METADATA + ".md5" ) );
> >         assertTrue( StringUtils.contains( contents, md5 ) );
> > +    }
> >
> > -        // verify checksums of pom file
> > -        checksum =
> > -            new ChecksummedFile( new File( repoLocation,
> > -
> "/org/apache/archiva/artifact-upload/1.0/artifact-upload-1.0.pom" ) );
> > -        sha1 = checksum.calculateChecksum( ChecksumAlgorithm.SHA1 );
> > -        md5 = checksum.calculateChecksum( ChecksumAlgorithm.MD5 );
> > +    private void verifyProjectMetadataChecksums( String repoLocation )
> > +        throws IOException
> > +    {
> > +        ChecksummedFile checksum =
> > +            new ChecksummedFile( new File( repoLocation,
> "/org/apache/archiva/artifact-upload/"
> > +                + MetadataTools.MAVEN_METADATA ) );
> > +        String sha1 = checksum.calculateChecksum( ChecksumAlgorithm.SHA1
> );
> > +        String md5 = checksum.calculateChecksum( ChecksumAlgorithm.MD5
> );
> >
> > -        contents =
> > -            FileUtils.readFileToString( new File( repoLocation,
> > -
>  "/org/apache/archiva/artifact-upload/1.0/artifact-upload-1.0.pom.sha1" ) );
> > +        String contents =
> > +            FileUtils.readFileToString( new File( repoLocation,
> "/org/apache/archiva/artifact-upload/"
> > +                + MetadataTools.MAVEN_METADATA + ".sha1" ) );
> >         assertTrue( StringUtils.contains( contents, sha1 ) );
> >
> >         contents =
> > -            FileUtils.readFileToString( new File( repoLocation,
> > -
>  "/org/apache/archiva/artifact-upload/1.0/artifact-upload-1.0.pom.md5" ) );
> > +            FileUtils.readFileToString( new File( repoLocation,
> "/org/apache/archiva/artifact-upload/"
> > +                + MetadataTools.MAVEN_METADATA + ".md5" ) );
> >         assertTrue( StringUtils.contains( contents, md5 ) );
> > +    }
> >
> > -        // verify checksums of metadata file
> > +    private void verifyPomChecksums( String repoLocation, String
> artifact, String version )
> > +        throws IOException
> > +    {
> > +        ChecksummedFile checksum;
> > +        String sha1;
> > +        String md5;
> > +        String contents;
> >         checksum =
> > -            new ChecksummedFile( new File( repoLocation,
> "/org/apache/archiva/artifact-upload/" +
> > -                MetadataTools.MAVEN_METADATA ) );
> > +            new ChecksummedFile( new File( repoLocation,
> "/org/apache/archiva/artifact-upload/" + version + "/"
> > +                + artifact + ".pom" ) );
> >         sha1 = checksum.calculateChecksum( ChecksumAlgorithm.SHA1 );
> >         md5 = checksum.calculateChecksum( ChecksumAlgorithm.MD5 );
> >
> >         contents =
> > -            FileUtils.readFileToString( new File( repoLocation,
> "/org/apache/archiva/artifact-upload/" +
> > -                MetadataTools.MAVEN_METADATA + ".sha1" ) );
> > +            FileUtils.readFileToString( new File( repoLocation,
> "/org/apache/archiva/artifact-upload/" + version + "/"
> > +                + artifact + ".pom.sha1" ) );
> >         assertTrue( StringUtils.contains( contents, sha1 ) );
> >
> >         contents =
> > -            FileUtils.readFileToString( new File( repoLocation,
> "/org/apache/archiva/artifact-upload/" +
> > -                MetadataTools.MAVEN_METADATA + ".md5" ) );
> > +            FileUtils.readFileToString( new File( repoLocation,
> "/org/apache/archiva/artifact-upload/" + version + "/"
> > +                + artifact + ".pom.md5" ) );
> >         assertTrue( StringUtils.contains( contents, md5 ) );
> >     }
> >
> > +    private void verifyArtifactChecksums( String repoLocation, String
> artifact, String version )
> > +        throws IOException
> > +    {
> > +        ChecksummedFile checksum =
> > +            new ChecksummedFile( new File( repoLocation,
> "/org/apache/archiva/artifact-upload/" + version + "/"
> > +                + artifact + ".jar" ) );
> > +        String sha1 = checksum.calculateChecksum( ChecksumAlgorithm.SHA1
> );
> > +        String md5 = checksum.calculateChecksum( ChecksumAlgorithm.MD5
> );
> > +
> > +        String contents =
> > +            FileUtils.readFileToString( new File( repoLocation,
> "/org/apache/archiva/artifact-upload/" + version + "/"
> > +                + artifact + ".jar.sha1" ) );
> > +        assertTrue( StringUtils.contains( contents, sha1 ) );
> > +
> > +        contents =
> > +            FileUtils.readFileToString( new File( repoLocation,
> "/org/apache/archiva/artifact-upload/" + version + "/"
> > +                + artifact + ".jar.md5" ) );
> > +        assertTrue( StringUtils.contains( contents, md5 ) );
> > +    }
> > +
> > +    private String getTimestamp( String[] artifactsList, int startIndex,
> int index )
> > +    {
> > +        int endIndex = -1;
> > +        String timestamp;
> > +
> > +        if ( artifactsList[index].contains( "jar" ) )
> > +        {
> > +            endIndex = artifactsList[index].indexOf( ".jar" );
> > +        }
> > +        else
> > +        {
> > +            endIndex = artifactsList[index].indexOf( ".pom" );
> > +        }
> > +
> > +        timestamp = artifactsList[index].substring( startIndex, endIndex
> );
> > +
> > +        return timestamp;
> > +    }
> > +
> >     public void testArtifactUploadWithPomSuccessful()
> >         throws Exception
> >     {
> > @@ -239,11 +295,13 @@ public class UploadActionTest
> >         archivaConfigControl.verify();
> >         repoFactoryControl.verify();
> >         auditLogsDaoControl.verify();
> > -
> > +
> >         String repoLocation = config.findManagedRepositoryById(
> REPOSITORY_ID ).getLocation();
> > -        assertAllArtifactsIncludingSupportArtifactsArePresent(
> repoLocation );
> > +        assertAllArtifactsIncludingSupportArtifactsArePresent(
> repoLocation, "artifact-upload-1.0", "1.0" );
> >
> > -        verifyChecksums( repoLocation );
> > +        verifyArtifactChecksums( repoLocation, "artifact-upload-1.0",
> "1.0" );
> > +        verifyPomChecksums( repoLocation, "artifact-upload-1.0", "1.0"
> );
> > +        verifyProjectMetadataChecksums( repoLocation );
> >     }
> >
> >     public void testArtifactUploadWithClassifier()
> > @@ -264,7 +322,7 @@ public class UploadActionTest
> >         archivaConfigControl.replay();
> >         repoFactoryControl.replay();
> >         auditLogsDaoControl.replay();
> > -
> > +
> >         String returnString = uploadAction.doUpload();
> >         assertEquals( Action.SUCCESS, returnString );
> >
> > @@ -283,44 +341,13 @@ public class UploadActionTest
> >         assertFalse( new File( repoLocation,
> "/org/apache/archiva/artifact-upload/1.0/artifact-upload-1.0.pom.md5"
> ).exists() );
> >
> >         assertTrue( new File( repoLocation,
> "/org/apache/archiva/artifact-upload/" + MetadataTools.MAVEN_METADATA
> ).exists() );
> > -        assertTrue( new File( repoLocation,
> "/org/apache/archiva/artifact-upload/" + MetadataTools.MAVEN_METADATA +
> > -            ".sha1" ).exists() );
> > -        assertTrue( new File( repoLocation,
> "/org/apache/archiva/artifact-upload/" + MetadataTools.MAVEN_METADATA +
> > -            ".md5" ).exists() );
> > -
> > -        // verify checksums of jar file
> > -        ChecksummedFile checksum =
> > -            new ChecksummedFile( new File( repoLocation,
> > -
> "/org/apache/archiva/artifact-upload/1.0/artifact-upload-1.0-tests.jar" ) );
> > -        String sha1 = checksum.calculateChecksum( ChecksumAlgorithm.SHA1
> );
> > -        String md5 = checksum.calculateChecksum( ChecksumAlgorithm.MD5
> );
> > +        assertTrue( new File( repoLocation,
> "/org/apache/archiva/artifact-upload/" + MetadataTools.MAVEN_METADATA
> > +            + ".sha1" ).exists() );
> > +        assertTrue( new File( repoLocation,
> "/org/apache/archiva/artifact-upload/" + MetadataTools.MAVEN_METADATA
> > +            + ".md5" ).exists() );
> >
> > -        String contents =
> > -            FileUtils.readFileToString( new File( repoLocation,
> > -
>  "/org/apache/archiva/artifact-upload/1.0/artifact-upload-1.0-tests.jar.sha1"
> ) );
> > -        assertTrue( StringUtils.contains( contents, sha1 ) );
> > -
> > -        contents =
> > -            FileUtils.readFileToString( new File( repoLocation,
> > -
>  "/org/apache/archiva/artifact-upload/1.0/artifact-upload-1.0-tests.jar.md5"
> ) );
> > -        assertTrue( StringUtils.contains( contents, md5 ) );
> > -
> > -        // verify checksums of metadata file
> > -        checksum =
> > -            new ChecksummedFile( new File( repoLocation,
> "/org/apache/archiva/artifact-upload/" +
> > -                MetadataTools.MAVEN_METADATA ) );
> > -        sha1 = checksum.calculateChecksum( ChecksumAlgorithm.SHA1 );
> > -        md5 = checksum.calculateChecksum( ChecksumAlgorithm.MD5 );
> > -
> > -        contents =
> > -            FileUtils.readFileToString( new File( repoLocation,
> "/org/apache/archiva/artifact-upload/" +
> > -                MetadataTools.MAVEN_METADATA + ".sha1" ) );
> > -        assertTrue( StringUtils.contains( contents, sha1 ) );
> > -
> > -        contents =
> > -            FileUtils.readFileToString( new File( repoLocation,
> "/org/apache/archiva/artifact-upload/" +
> > -                MetadataTools.MAVEN_METADATA + ".md5" ) );
> > -        assertTrue( StringUtils.contains( contents, md5 ) );
> > +        verifyArtifactChecksums( repoLocation,
> "artifact-upload-1.0-tests", "1.0" );
> > +        verifyProjectMetadataChecksums( repoLocation );
> >     }
> >
> >     public void testArtifactUploadGeneratePomSuccessful()
> > @@ -350,14 +377,16 @@ public class UploadActionTest
> >         auditLogsDaoControl.verify();
> >
> >         String repoLocation = config.findManagedRepositoryById(
> REPOSITORY_ID ).getLocation();
> > -        assertAllArtifactsIncludingSupportArtifactsArePresent(
> repoLocation );
> > +        assertAllArtifactsIncludingSupportArtifactsArePresent(
> repoLocation, "artifact-upload-1.0", "1.0" );
> >
> > -        verifyChecksums( repoLocation );
> > +        verifyArtifactChecksums( repoLocation, "artifact-upload-1.0",
> "1.0" );
> > +        verifyPomChecksums( repoLocation, "artifact-upload-1.0", "1.0"
> );
> > +        verifyProjectMetadataChecksums( repoLocation );
> >     }
> >
> >     public void testArtifactUploadFailedRepositoryNotFound()
> >         throws Exception
> > -    {
> > +    {
> >         setUploadParameters( "1.0", null,
> >                              new File( getBasedir(),
> >
>  "target/test-classes/upload-artifact-test/artifact-to-be-uploaded.jar" ),
> null,
> > @@ -398,11 +427,11 @@ public class UploadActionTest
> >         archivaConfigControl.expectAndReturn(
> archivaConfig.getConfiguration(), config );
> >         repoFactoryControl.expectAndReturn(
> repoFactory.getManagedRepositoryContent( REPOSITORY_ID ), content );
> >         auditLogsDaoControl.expectAndReturn( auditLogsDao.saveAuditLogs(
> new ArchivaAuditLogs() ), null );
> > -
> > +
> >         archivaConfigControl.replay();
> >         repoFactoryControl.replay();
> >         auditLogsDaoControl.replay();
> > -
> > +
> >         String returnString = uploadAction.doUpload();
> >         assertEquals( Action.SUCCESS, returnString );
> >
> > @@ -413,86 +442,92 @@ public class UploadActionTest
> >         String repoLocation = config.findManagedRepositoryById(
> REPOSITORY_ID ).getLocation();
> >         String[] artifactsList = new File( repoLocation,
> "/org/apache/archiva/artifact-upload/1.0-SNAPSHOT/" ).list();
> >
> > -        assertEquals( 6, artifactsList.length );
> > -
> > -        assertTrue( new File( repoLocation,
> "/org/apache/archiva/artifact-upload/" + MetadataTools.MAVEN_METADATA
> ).exists() );
> > -        assertTrue( new File( repoLocation,
> "/org/apache/archiva/artifact-upload/" + MetadataTools.MAVEN_METADATA +
> > -            ".sha1" ).exists() );
> > -        assertTrue( new File( repoLocation,
> "/org/apache/archiva/artifact-upload/" + MetadataTools.MAVEN_METADATA +
> > -            ".md5" ).exists() );
> > +        assertEquals( 9, artifactsList.length );
> > +        assertTrue( new File( repoLocation,
> "/org/apache/archiva/artifact-upload/1.0-SNAPSHOT/"
> > +            + MetadataTools.MAVEN_METADATA ).exists() );
> > +        assertTrue( new File( repoLocation,
> "/org/apache/archiva/artifact-upload/1.0-SNAPSHOT/"
> > +            + MetadataTools.MAVEN_METADATA + ".sha1" ).exists() );
> > +        assertTrue( new File( repoLocation,
> "/org/apache/archiva/artifact-upload/1.0-SNAPSHOT/"
> > +            + MetadataTools.MAVEN_METADATA + ".md5" ).exists() );
> >
> >         int startIndex = "artifact-upload-1.0-".length();
> > -        int endIndex = -1;
> > +        String timestamp = getTimestamp( artifactsList, startIndex, 0 );
> >
> > -        if ( artifactsList[0].contains( "jar" ) )
> > -        {
> > -            endIndex = artifactsList[0].indexOf( ".jar" );
> > -        }
> > -        else
> > -        {
> > -            endIndex = artifactsList[0].indexOf( ".pom" );
> > -        }
> > +        assertAllArtifactsIncludingSupportArtifactsArePresent(
> repoLocation, "artifact-upload-1.0-" + timestamp,
> > +
> "1.0-SNAPSHOT" );
> > +        verifyArtifactChecksums( repoLocation, "artifact-upload-1.0-" +
> timestamp, "1.0-SNAPSHOT" );
> > +        verifyPomChecksums( repoLocation, "artifact-upload-1.0-" +
> timestamp, "1.0-SNAPSHOT" );
> > +        verifyProjectMetadataChecksums( repoLocation );
> > +        verifyVersionMetadataChecksums( repoLocation, "1.0-SNAPSHOT" );
> > +
> > +        // verify build number
> > +        File metadataFile =
> > +            new File( repoLocation,
> "/org/apache/archiva/artifact-upload/1.0-SNAPSHOT/" +
> MetadataTools.MAVEN_METADATA );
> > +        ArchivaRepositoryMetadata artifactMetadata =
> RepositoryMetadataReader.read( metadataFile );
> >
> > -        String timestamp = artifactsList[0].substring( startIndex,
> endIndex );
> > +        SnapshotVersion snapshotVersion =
> artifactMetadata.getSnapshotVersion();
> > +        assertEquals( "Incorrect build number set in artifact
> metadata.", 1, snapshotVersion.getBuildNumber() );
> >
> > -        assertTrue( new File( repoLocation,
> "/org/apache/archiva/artifact-upload/1.0-SNAPSHOT/artifact-upload-1.0-" +
> timestamp + ".jar" ).exists()  );
> > -        assertTrue( new File( repoLocation,
> "/org/apache/archiva/artifact-upload/1.0-SNAPSHOT/artifact-upload-1.0-" +
> timestamp + ".jar.md5" ).exists()  );
> > -        assertTrue( new File( repoLocation,
> "/org/apache/archiva/artifact-upload/1.0-SNAPSHOT/artifact-upload-1.0-" +
> timestamp + ".jar.sha1" ).exists()  );
> > -        assertTrue( new File( repoLocation,
> "/org/apache/archiva/artifact-upload/1.0-SNAPSHOT/artifact-upload-1.0-" +
> timestamp + ".pom" ).exists()  );
> > -        assertTrue( new File( repoLocation,
> "/org/apache/archiva/artifact-upload/1.0-SNAPSHOT/artifact-upload-1.0-" +
> timestamp + ".pom.md5" ).exists()  );
> > -        assertTrue( new File( repoLocation,
> "/org/apache/archiva/artifact-upload/1.0-SNAPSHOT/artifact-upload-1.0-" +
> timestamp + ".pom.sha1" ).exists()  );
> > +        String timestampPart = StringUtils.substringBeforeLast(
> timestamp, "-" );
> > +        assertEquals( "Incorrect timestamp set in artifact metadata.",
> timestampPart, snapshotVersion.getTimestamp() );
> >
> > -        // verify checksums of jar file
> > -        ChecksummedFile checksum =
> > -            new ChecksummedFile( new File( repoLocation,
> > -
> "/org/apache/archiva/artifact-upload/1.0-SNAPSHOT/artifact-upload-1.0-" +
> timestamp + ".jar" ) );
> > -        String sha1 = checksum.calculateChecksum( ChecksumAlgorithm.SHA1
> );
> > -        String md5 = checksum.calculateChecksum( ChecksumAlgorithm.MD5
> );
> > +        String buildnumber = StringUtils.substringAfterLast( timestamp,
> "-" );
> > +        assertEquals( "Incorrect build number in filename.", "1",
> buildnumber );
> >
> > -        String contents =
> > -            FileUtils.readFileToString( new File( repoLocation,
> > -
>  "/org/apache/archiva/artifact-upload/1.0-SNAPSHOT/artifact-upload-1.0-" +
> timestamp + ".jar.sha1" ) );
> > -        assertTrue( StringUtils.contains( contents, sha1 ) );
> > +        archivaConfigControl.reset();
> > +        repoFactoryControl.reset();
> > +        auditLogsDaoControl.reset();
> >
> > -        contents =
> > -            FileUtils.readFileToString( new File( repoLocation,
> > -
>  "/org/apache/archiva/artifact-upload/1.0-SNAPSHOT/artifact-upload-1.0-" +
> timestamp + ".jar.md5" ) );
> > -        assertTrue( StringUtils.contains( contents, md5 ) );
> > +        auditLogsDaoControl.setDefaultMatcher(
> MockControl.ALWAYS_MATCHER );
> >
> > -        // verify checksums of pom file
> > -        checksum =
> > -            new ChecksummedFile( new File( repoLocation,
> > -
> "/org/apache/archiva/artifact-upload/1.0-SNAPSHOT/artifact-upload-1.0-" +
> timestamp + ".pom" ) );
> > -        sha1 = checksum.calculateChecksum( ChecksumAlgorithm.SHA1 );
> > -        md5 = checksum.calculateChecksum( ChecksumAlgorithm.MD5 );
> > +        // MRM-1353
> > +        // upload snapshot artifact again and check if build number was
> incremented
> > +        setUploadParameters( "1.0-SNAPSHOT", null,
> > +                             new File( getBasedir(),
> > +
> "target/test-classes/upload-artifact-test/artifact-to-be-uploaded.jar" ),
> null,
> > +                             true );
> >
> > -        contents =
> > -            FileUtils.readFileToString( new File( repoLocation,
> > -
>  "/org/apache/archiva/artifact-upload/1.0-SNAPSHOT/artifact-upload-1.0-" +
> timestamp + ".pom.sha1" ) );
> > -        assertTrue( StringUtils.contains( contents, sha1 ) );
> > +        archivaConfigControl.expectAndReturn(
> archivaConfig.getConfiguration(), config );
> > +        repoFactoryControl.expectAndReturn(
> repoFactory.getManagedRepositoryContent( REPOSITORY_ID ), content );
> > +        auditLogsDaoControl.expectAndReturn( auditLogsDao.saveAuditLogs(
> new ArchivaAuditLogs() ), null );
> >
> > -        contents =
> > -            FileUtils.readFileToString( new File( repoLocation,
> > -
>  "/org/apache/archiva/artifact-upload/1.0-SNAPSHOT/artifact-upload-1.0-" +
> timestamp + ".pom.md5" ) );
> > -        assertTrue( StringUtils.contains( contents, md5 ) );
> > +        archivaConfigControl.replay();
> > +        repoFactoryControl.replay();
> > +        auditLogsDaoControl.replay();
> >
> > -
> > -        // verify checksums of metadata file
> > -        checksum =
> > -            new ChecksummedFile( new File( repoLocation,
> "/org/apache/archiva/artifact-upload/" +
> > -                MetadataTools.MAVEN_METADATA ) );
> > -        sha1 = checksum.calculateChecksum( ChecksumAlgorithm.SHA1 );
> > -        md5 = checksum.calculateChecksum( ChecksumAlgorithm.MD5 );
> > +        returnString = uploadAction.doUpload();
> > +        assertEquals( Action.SUCCESS, returnString );
> >
> > -        contents =
> > -            FileUtils.readFileToString( new File( repoLocation,
> "/org/apache/archiva/artifact-upload/" +
> > -                MetadataTools.MAVEN_METADATA + ".sha1" ) );
> > -        assertTrue( StringUtils.contains( contents, sha1 ) );
> > +        archivaConfigControl.verify();
> > +        repoFactoryControl.verify();
> > +        auditLogsDaoControl.verify();
> >
> > -        contents =
> > -            FileUtils.readFileToString( new File( repoLocation,
> "/org/apache/archiva/artifact-upload/" +
> > -                MetadataTools.MAVEN_METADATA + ".md5" ) );
> > -        assertTrue( StringUtils.contains( contents, md5 ) );
> > +        artifactsList = new File( repoLocation,
> "/org/apache/archiva/artifact-upload/1.0-SNAPSHOT/" ).list();
> > +
> > +        assertEquals( 15, artifactsList.length );
> > +
> > +        timestamp = getTimestamp( artifactsList, startIndex, 6 );
> > +
> > +        assertAllArtifactsIncludingSupportArtifactsArePresent(
> repoLocation, "artifact-upload-1.0-" + timestamp,
> > +
> "1.0-SNAPSHOT" );
> > +        verifyArtifactChecksums( repoLocation, "artifact-upload-1.0-" +
> timestamp, "1.0-SNAPSHOT" );
> > +        verifyPomChecksums( repoLocation, "artifact-upload-1.0-" +
> timestamp, "1.0-SNAPSHOT" );
> > +        verifyProjectMetadataChecksums( repoLocation );
> > +        verifyVersionMetadataChecksums( repoLocation, "1.0-SNAPSHOT" );
> > +
> > +        // verify build number set in metadata and in filename
> > +        metadataFile =
> > +            new File( repoLocation,
> "/org/apache/archiva/artifact-upload/1.0-SNAPSHOT/" +
> MetadataTools.MAVEN_METADATA );
> > +        artifactMetadata = RepositoryMetadataReader.read( metadataFile
> );
> > +
> > +        snapshotVersion = artifactMetadata.getSnapshotVersion();
> > +        assertEquals( "Incorrect build number set in artifact
> metadata.", 2, snapshotVersion.getBuildNumber() );
> > +
> > +        timestampPart = StringUtils.substringBeforeLast( timestamp, "-"
> );
> > +        assertEquals( "Incorrect timestamp set in artifact metadata.",
> timestampPart, snapshotVersion.getTimestamp() );
> > +
> > +        buildnumber = StringUtils.substringAfterLast( timestamp, "-" );
> > +        assertEquals( "Incorrect build number in filename.", "2",
> buildnumber );
> >     }
> >
> >     public void testChecksumIsCorrectWhenArtifactIsReUploaded()
> > @@ -505,13 +540,13 @@ public class UploadActionTest
> >
> >         ManagedRepositoryContent content = new
> ManagedDefaultRepositoryContent();
> >         ManagedRepositoryConfiguration repoConfig =
> config.findManagedRepositoryById( REPOSITORY_ID );
> > -        repoConfig.setBlockRedeployments( false );
> > -        content.setRepository( repoConfig );
> > -
> > +        repoConfig.setBlockRedeployments( false );
> > +        content.setRepository( repoConfig );
> > +
> >         archivaConfigControl.expectAndReturn(
> archivaConfig.getConfiguration(), config );
> >         repoFactoryControl.expectAndReturn(
> repoFactory.getManagedRepositoryContent( REPOSITORY_ID ), content );
> >         auditLogsDaoControl.expectAndReturn( auditLogsDao.saveAuditLogs(
> new ArchivaAuditLogs() ), null );
> > -
> > +
> >         archivaConfigControl.replay();
> >         repoFactoryControl.replay();
> >         auditLogsDaoControl.replay();
> > @@ -529,9 +564,11 @@ public class UploadActionTest
> >         auditLogsDaoControl.setDefaultMatcher( MockControl.ALWAYS_MATCHER
> );
> >
> >         String repoLocation = config.findManagedRepositoryById(
> REPOSITORY_ID ).getLocation();
> > -        assertAllArtifactsIncludingSupportArtifactsArePresent(
> repoLocation );
> > +        assertAllArtifactsIncludingSupportArtifactsArePresent(
> repoLocation, "artifact-upload-1.0", "1.0" );
> >
> > -        verifyChecksums( repoLocation );
> > +        verifyArtifactChecksums( repoLocation, "artifact-upload-1.0",
> "1.0" );
> > +        verifyPomChecksums( repoLocation, "artifact-upload-1.0", "1.0"
> );
> > +        verifyProjectMetadataChecksums( repoLocation );
> >
> >         // RE-upload artifact
> >         setUploadParameters( "1.0", null,
> > @@ -542,7 +579,7 @@ public class UploadActionTest
> >         archivaConfigControl.expectAndReturn(
> archivaConfig.getConfiguration(), config );
> >         repoFactoryControl.expectAndReturn(
> repoFactory.getManagedRepositoryContent( REPOSITORY_ID ), content );
> >         auditLogsDaoControl.expectAndReturn( auditLogsDao.saveAuditLogs(
> new ArchivaAuditLogs() ), null );
> > -
> > +
> >         archivaConfigControl.replay();
> >         repoFactoryControl.replay();
> >         auditLogsDaoControl.replay();
> > @@ -555,14 +592,16 @@ public class UploadActionTest
> >         auditLogsDaoControl.verify();
> >
> >         repoLocation = config.findManagedRepositoryById( REPOSITORY_ID
> ).getLocation();
> > -        assertAllArtifactsIncludingSupportArtifactsArePresent(
> repoLocation );
> > +        assertAllArtifactsIncludingSupportArtifactsArePresent(
> repoLocation, "artifact-upload-1.0", "1.0" );
> >
> > -        verifyChecksums( repoLocation );
> > +        verifyArtifactChecksums( repoLocation, "artifact-upload-1.0",
> "1.0" );
> > +        verifyPomChecksums( repoLocation, "artifact-upload-1.0", "1.0"
> );
> > +        verifyProjectMetadataChecksums( repoLocation );
> >     }
> > -
> > +
> >     public void testUploadArtifactAlreadyExistingRedeploymentsBlocked()
> >         throws Exception
> > -    {
> > +    {
> >         setUploadParameters( "1.0", null,
> >                              new File( getBasedir(),
> >
>  "target/test-classes/upload-artifact-test/artifact-to-be-uploaded.jar" ),
> null,
> > @@ -574,19 +613,19 @@ public class UploadActionTest
> >         archivaConfigControl.expectAndReturn(
> archivaConfig.getConfiguration(), config, 2 );
> >         repoFactoryControl.expectAndReturn(
> repoFactory.getManagedRepositoryContent( REPOSITORY_ID ), content, 2 );
> >         auditLogsDaoControl.expectAndReturn( auditLogsDao.saveAuditLogs(
> new ArchivaAuditLogs() ), null );
> > -
> > +
> >         archivaConfigControl.replay();
> >         repoFactoryControl.replay();
> >         auditLogsDaoControl.replay();
> >
> >         String returnString = uploadAction.doUpload();
> >         assertEquals( Action.SUCCESS, returnString );
> > -
> > +
> >         setUploadParameters( "1.0", null,
> >                              new File( getBasedir(),
> >
>  "target/test-classes/upload-artifact-test/artifact-to-be-uploaded.jar" ),
> null,
> >                              true );
> > -
> > +
> >         returnString = uploadAction.doUpload();
> >         assertEquals( Action.ERROR, returnString );
> >
> > @@ -595,50 +634,54 @@ public class UploadActionTest
> >         auditLogsDaoControl.verify();
> >
> >         String repoLocation = config.findManagedRepositoryById(
> REPOSITORY_ID ).getLocation();
> > -        assertAllArtifactsIncludingSupportArtifactsArePresent(
> repoLocation );
> > +        assertAllArtifactsIncludingSupportArtifactsArePresent(
> repoLocation, "artifact-upload-1.0", "1.0" );
> >
> > -        verifyChecksums( repoLocation );
> > +        verifyArtifactChecksums( repoLocation, "artifact-upload-1.0",
> "1.0" );
> > +        verifyPomChecksums( repoLocation, "artifact-upload-1.0", "1.0"
> );
> > +        verifyProjectMetadataChecksums( repoLocation );
> >     }
> > -
> > +
> >     public void testUploadArtifactAlreadyExistingRedeploymentsAllowed()
> >         throws Exception
> > -    {
> > +    {
> >         setUploadParameters( "1.0", null,
> >                              new File( getBasedir(),
> >
>  "target/test-classes/upload-artifact-test/artifact-to-be-uploaded.jar" ),
> null,
> >                              true );
> > -
> > +
> >         ManagedRepositoryContent content = new
> ManagedDefaultRepositoryContent();
> >         ManagedRepositoryConfiguration repoConfig =
> config.findManagedRepositoryById( REPOSITORY_ID );
> > -        repoConfig.setBlockRedeployments( false );
> > -        content.setRepository( repoConfig );
> > -
> > +        repoConfig.setBlockRedeployments( false );
> > +        content.setRepository( repoConfig );
> > +
> >         archivaConfigControl.expectAndReturn(
> archivaConfig.getConfiguration(), config, 2 );
> >         repoFactoryControl.expectAndReturn(
> repoFactory.getManagedRepositoryContent( REPOSITORY_ID ), content, 2 );
> >         auditLogsDaoControl.expectAndReturn( auditLogsDao.saveAuditLogs(
> new ArchivaAuditLogs() ), null, 2 );
> > -
> > +
> >         archivaConfigControl.replay();
> >         repoFactoryControl.replay();
> >         auditLogsDaoControl.replay();
> > -
> > +
> >         String returnString = uploadAction.doUpload();
> >         assertEquals( Action.SUCCESS, returnString );
> > -
> > +
> >         setUploadParameters( "1.0", null,
> >                              new File( getBasedir(),
> >
>  "target/test-classes/upload-artifact-test/artifact-to-be-uploaded.jar" ),
> null,
> >                              true );
> > -
> > +
> >         returnString = uploadAction.doUpload();
> >         assertEquals( Action.SUCCESS, returnString );
> > -
> > +
> >         archivaConfigControl.verify();
> >         repoFactoryControl.verify();
> >         auditLogsDaoControl.verify();
> > -
> > +
> >         String repoLocation = config.findManagedRepositoryById(
> REPOSITORY_ID ).getLocation();
> > -        assertAllArtifactsIncludingSupportArtifactsArePresent(
> repoLocation );
> > -
> > -        verifyChecksums( repoLocation );
> > +        assertAllArtifactsIncludingSupportArtifactsArePresent(
> repoLocation, "artifact-upload-1.0", "1.0" );
> > +
> > +        verifyArtifactChecksums( repoLocation, "artifact-upload-1.0",
> "1.0" );
> > +        verifyPomChecksums( repoLocation, "artifact-upload-1.0", "1.0"
> );
> > +        verifyProjectMetadataChecksums( repoLocation );
> >     }
> > -}
> > +}
> > \ No newline at end of file
> >
> >
>
> --
> Brett Porter
> brett@apache.org
> http://brettporter.wordpress.com/
>
>
>
>
>

Re: svn commit: r930528 - in /archiva/branches/archiva-1.3.x/archiva-modules/archiva-web/archiva-webapp/src: main/java/org/apache/maven/archiva/web/action/UploadAction.java test/java/org/apache/maven/archiva/web/action/UploadActionTest.java

Posted by Brett Porter <br...@apache.org>.
Does this need to be merged to trunk? I thought you said it wasn't working there.

That said, I was quite sure I tackled this specific issue already :) Should we have a Selenium test to confirm?

- Brett

On 04/04/2010, at 2:01 AM, oching@apache.org wrote:

> Author: oching
> Date: Sat Apr  3 15:01:22 2010
> New Revision: 930528
> 
> URL: http://svn.apache.org/viewvc?rev=930528&view=rev
> Log:
> [MRM-1353] Build number is always 1 for SNAPSHOT artifacts uploaded via web upload form
> o get latest build number from version-level metadata when deploying artifacts from webapp
> o for snapshot artifacts deployed, generate or update the version-level metadata
> o added unit test for this scenario
> o refactored some parts of the tests for upload artifact
> 
> Modified:
>    archiva/branches/archiva-1.3.x/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/UploadAction.java
>    archiva/branches/archiva-1.3.x/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/action/UploadActionTest.java
> 
> Modified: archiva/branches/archiva-1.3.x/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/UploadAction.java
> URL: http://svn.apache.org/viewvc/archiva/branches/archiva-1.3.x/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/UploadAction.java?rev=930528&r1=930527&r2=930528&view=diff
> ==============================================================================
> --- archiva/branches/archiva-1.3.x/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/UploadAction.java (original)
> +++ archiva/branches/archiva-1.3.x/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/UploadAction.java Sat Apr  3 15:01:22 2010
> @@ -76,6 +76,7 @@ import com.opensymphony.xwork2.Validatea
>  *
>  * @plexus.component role="com.opensymphony.xwork2.Action" role-hint="uploadAction" instantiation-strategy="per-lookup"
>  */
> +@SuppressWarnings( "serial" )
> public class UploadAction
>     extends PlexusActionSupport
>     implements Validateable, Preparable, Auditable
> @@ -307,17 +308,15 @@ public class UploadAction
>             ManagedRepositoryContent repository = repositoryFactory.getManagedRepositoryContent( repositoryId );
> 
>             String artifactPath = repository.toPath( artifactReference );
> -
>             int lastIndex = artifactPath.lastIndexOf( '/' );
> -
>             File targetPath = new File( repoConfig.getLocation(), artifactPath.substring( 0, lastIndex ) );
> -
> +            
>             Date lastUpdatedTimestamp = Calendar.getInstance().getTime();
>             int newBuildNumber = -1;
>             String timestamp = null;
> 
> -            File metadataFile = getMetadata( targetPath.getAbsolutePath() );
> -            ArchivaRepositoryMetadata metadata = getMetadata( metadataFile );
> +            File versionMetadataFile = getMetadata( targetPath.getAbsolutePath() );
> +            ArchivaRepositoryMetadata versionMetadata = getMetadata( versionMetadataFile );
> 
>             if ( VersionUtil.isSnapshot( version ) )
>             {
> @@ -325,13 +324,13 @@ public class UploadAction
>                 DateFormat fmt = new SimpleDateFormat( "yyyyMMdd.HHmmss" );
>                 fmt.setTimeZone( timezone );
>                 timestamp = fmt.format( lastUpdatedTimestamp );
> -                if ( metadata.getSnapshotVersion() != null )
> +
> +                if ( versionMetadata.getSnapshotVersion() != null )
>                 {
> -                    newBuildNumber = metadata.getSnapshotVersion().getBuildNumber() + 1;
> +                    newBuildNumber = versionMetadata.getSnapshotVersion().getBuildNumber() + 1;
>                 }
>                 else
>                 {
> -                    metadata.setSnapshotVersion( new SnapshotVersion() );
>                     newBuildNumber = 1;
>                 }
>             }
> @@ -346,7 +345,7 @@ public class UploadAction
>             {
>                 filename = filename.replaceAll( "SNAPSHOT", timestamp + "-" + newBuildNumber );
>             }
> -
> +            
>             boolean fixChecksums = !( config.getRepositoryScanning().getKnownContentConsumers().contains( "create-missing-checksums" ) );
> 
>             try
> @@ -411,13 +410,19 @@ public class UploadAction
>                     addActionError( "Error encountered while uploading pom file: " + ie.getMessage() );
>                     return ERROR;
>                 }
> -
>             }
> 
>             // explicitly update only if metadata-updater consumer is not enabled!
> -            if( !config.getRepositoryScanning().getKnownContentConsumers().contains( "metadata-updater" ) )
> +            if ( !config.getRepositoryScanning().getKnownContentConsumers().contains( "metadata-updater" ) )
>             {
> -                updateMetadata( metadata, metadataFile, lastUpdatedTimestamp, timestamp, newBuildNumber, fixChecksums );
> +                updateProjectMetadata( targetPath.getAbsolutePath(), lastUpdatedTimestamp, timestamp, newBuildNumber,
> +                                       fixChecksums );
> +
> +                if ( VersionUtil.isSnapshot( version ) )
> +                {
> +                    updateVersionMetadata( versionMetadata, versionMetadataFile, lastUpdatedTimestamp, timestamp,
> +                                           newBuildNumber, fixChecksums );
> +                }
>             }
> 
>             String msg = "Artifact \'" + groupId + ":" + artifactId + ":" + version +
> @@ -492,9 +497,7 @@ public class UploadAction
> 
>     private File getMetadata( String targetPath )
>     {
> -        String artifactPath = targetPath.substring( 0, targetPath.lastIndexOf( File.separatorChar ) );
> -
> -        return new File( artifactPath, MetadataTools.MAVEN_METADATA );
> +        return new File( targetPath, MetadataTools.MAVEN_METADATA );
>     }
> 
>     private ArchivaRepositoryMetadata getMetadata( File metadataFile )
> @@ -507,21 +510,57 @@ public class UploadAction
>         }
>         return metadata;
>     }
> +    
> +    /**
> +     * Update version level metadata for snapshot artifacts. If it does not exist, create the metadata and fix checksums
> +     * if necessary.
> +     */
> +    private void updateVersionMetadata( ArchivaRepositoryMetadata metadata, File metadataFile,
> +                                        Date lastUpdatedTimestamp, String timestamp, int buildNumber,
> +                                        boolean fixChecksums )
> +        throws RepositoryMetadataException
> +    {
> +        if ( !metadataFile.exists() )
> +        {
> +            metadata.setGroupId( groupId );
> +            metadata.setArtifactId( artifactId );
> +            metadata.setVersion( version );
> +        }
> +
> +        if ( metadata.getSnapshotVersion() == null )
> +        {
> +            metadata.setSnapshotVersion( new SnapshotVersion() );
> +        }
> +
> +        metadata.getSnapshotVersion().setBuildNumber( buildNumber );
> +        metadata.getSnapshotVersion().setTimestamp( timestamp );
> +        metadata.setLastUpdatedTimestamp( lastUpdatedTimestamp );
> +
> +        RepositoryMetadataWriter.write( metadata, metadataFile );
> +
> +        if ( fixChecksums )
> +        {
> +            fixChecksums( metadataFile );
> +        }
> +    }
> 
>     /**
> -     * Update artifact level metadata. If it does not exist, create the metadata and 
> -     * fix checksums if necessary.
> +     * Update artifact level metadata. If it does not exist, create the metadata and fix checksums if necessary.
>      */
> -    private void updateMetadata( ArchivaRepositoryMetadata metadata, File metadataFile, Date lastUpdatedTimestamp,
> -                                 String timestamp, int buildNumber, boolean fixChecksums )
> +    private void updateProjectMetadata( String targetPath, Date lastUpdatedTimestamp, String timestamp,
> +                                        int buildNumber, boolean fixChecksums )
>         throws RepositoryMetadataException
>     {
>         List<String> availableVersions = new ArrayList<String>();
>         String latestVersion = version;
> 
> -        if ( metadataFile.exists() )
> +        String projectPath = targetPath.substring( 0, targetPath.lastIndexOf( File.separatorChar ) );
> +        File projectMetadataFile = getMetadata( projectPath );
> +        ArchivaRepositoryMetadata projectMetadata = getMetadata( projectMetadataFile );
> +
> +        if ( projectMetadataFile.exists() )
>         {
> -            availableVersions = metadata.getAvailableVersions();
> +            availableVersions = projectMetadata.getAvailableVersions();
> 
>             Collections.sort( availableVersions, VersionComparator.getInstance() );
> 
> @@ -536,39 +575,34 @@ public class UploadAction
>         {
>             availableVersions.add( version );
> 
> -            metadata.setGroupId( groupId );
> -            metadata.setArtifactId( artifactId );
> +            projectMetadata.setGroupId( groupId );
> +            projectMetadata.setArtifactId( artifactId );
>         }
> 
> -        if ( metadata.getGroupId() == null )
> +        if ( projectMetadata.getGroupId() == null )
>         {
> -            metadata.setGroupId( groupId );
> +            projectMetadata.setGroupId( groupId );
>         }
> -        if ( metadata.getArtifactId() == null )
> +        
> +        if ( projectMetadata.getArtifactId() == null )
>         {
> -            metadata.setArtifactId( artifactId );
> +            projectMetadata.setArtifactId( artifactId );
>         }
> 
> -        metadata.setLatestVersion( latestVersion );
> -        metadata.setLastUpdatedTimestamp( lastUpdatedTimestamp );
> -        metadata.setAvailableVersions( availableVersions );
> +        projectMetadata.setLatestVersion( latestVersion );
> +        projectMetadata.setLastUpdatedTimestamp( lastUpdatedTimestamp );
> +        projectMetadata.setAvailableVersions( availableVersions );
> 
>         if ( !VersionUtil.isSnapshot( version ) )
>         {
> -            metadata.setReleasedVersion( latestVersion );
> +            projectMetadata.setReleasedVersion( latestVersion );
>         }
> -        else
> -        {
> -            metadata.getSnapshotVersion().setBuildNumber( buildNumber );
> 
> -            metadata.getSnapshotVersion().setTimestamp( timestamp );
> -        }
> +        RepositoryMetadataWriter.write( projectMetadata, projectMetadataFile );
> 
> -        RepositoryMetadataWriter.write( metadata, metadataFile );
> -        
> -        if( fixChecksums )
> +        if ( fixChecksums )
>         {
> -            fixChecksums( metadataFile );
> +            fixChecksums( projectMetadataFile );
>         }
>     }
> 
> 
> Modified: archiva/branches/archiva-1.3.x/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/action/UploadActionTest.java
> URL: http://svn.apache.org/viewvc/archiva/branches/archiva-1.3.x/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/action/UploadActionTest.java?rev=930528&r1=930527&r2=930528&view=diff
> ==============================================================================
> --- archiva/branches/archiva-1.3.x/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/action/UploadActionTest.java (original)
> +++ archiva/branches/archiva-1.3.x/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/action/UploadActionTest.java Sat Apr  3 15:01:22 2010
> @@ -33,11 +33,14 @@ import org.apache.maven.archiva.configur
> import org.apache.maven.archiva.configuration.RepositoryScanningConfiguration;
> import org.apache.maven.archiva.database.ArchivaAuditLogsDao;
> import org.apache.maven.archiva.model.ArchivaAuditLogs;
> +import org.apache.maven.archiva.model.ArchivaRepositoryMetadata;
> +import org.apache.maven.archiva.model.SnapshotVersion;
> import org.apache.maven.archiva.repository.ManagedRepositoryContent;
> import org.apache.maven.archiva.repository.RepositoryContentFactory;
> import org.apache.maven.archiva.repository.RepositoryNotFoundException;
> import org.apache.maven.archiva.repository.content.ManagedDefaultRepositoryContent;
> import org.apache.maven.archiva.repository.metadata.MetadataTools;
> +import org.apache.maven.archiva.repository.metadata.RepositoryMetadataReader;
> import org.apache.maven.archiva.scheduled.ArchivaTaskScheduler;
> import org.codehaus.plexus.spring.PlexusInSpringTestCase;
> import org.easymock.MockControl;
> @@ -64,14 +67,14 @@ public class UploadActionTest
>     private RepositoryContentFactory repoFactory;
> 
>     private MockControl repoFactoryControl;
> -    
> +
>     private ArchivaAuditLogsDao auditLogsDao;
> 
>     private MockControl auditLogsDaoControl;
> 
>     private static final String REPOSITORY_ID = "test-repo";
> 
> -    private Configuration config;    
> +    private Configuration config;
> 
>     public void setUp()
>         throws Exception
> @@ -86,7 +89,7 @@ public class UploadActionTest
> 
>         repoFactoryControl = MockClassControl.createControl( RepositoryContentFactory.class );
>         repoFactory = (RepositoryContentFactory) repoFactoryControl.getMock();
> -        
> +
>         auditLogsDaoControl = MockControl.createControl( ArchivaAuditLogsDao.class );
>         auditLogsDaoControl.setDefaultMatcher( MockControl.ALWAYS_MATCHER );
>         auditLogsDao = (ArchivaAuditLogsDao) auditLogsDaoControl.getMock();
> @@ -99,9 +102,9 @@ public class UploadActionTest
> 
>         File testRepo = new File( getBasedir(), "target/test-classes/test-repo" );
>         testRepo.mkdirs();
> -        
> +
>         assertTrue( testRepo.exists() );
> -        
> +
>         config = new Configuration();
>         ManagedRepositoryConfiguration repoConfig = new ManagedRepositoryConfiguration();
>         repoConfig.setId( REPOSITORY_ID );
> @@ -110,7 +113,7 @@ public class UploadActionTest
>         repoConfig.setName( REPOSITORY_ID );
>         repoConfig.setBlockRedeployments( true );
>         config.addManagedRepository( repoConfig );
> -        
> +
>         RepositoryScanningConfiguration repoScanning = new RepositoryScanningConfiguration();
>         repoScanning.setKnownContentConsumers( new ArrayList<String>() );
>         config.setRepositoryScanning( repoScanning );
> @@ -142,78 +145,131 @@ public class UploadActionTest
>         uploadAction.setGeneratePom( generatePom );
>     }
> 
> -    private void assertAllArtifactsIncludingSupportArtifactsArePresent( String repoLocation )
> +    private void assertAllArtifactsIncludingSupportArtifactsArePresent( String repoLocation, String artifact,
> +                                                                        String version )
>     {
> -        assertTrue( new File( repoLocation, "/org/apache/archiva/artifact-upload/1.0/artifact-upload-1.0.jar" ).exists() );
> -        assertTrue( new File( repoLocation, "/org/apache/archiva/artifact-upload/1.0/artifact-upload-1.0.jar.sha1" ).exists() );
> -        assertTrue( new File( repoLocation, "/org/apache/archiva/artifact-upload/1.0/artifact-upload-1.0.jar.md5" ).exists() );
> -
> -        assertTrue( new File( repoLocation, "/org/apache/archiva/artifact-upload/1.0/artifact-upload-1.0.pom" ).exists() );
> -        assertTrue( new File( repoLocation, "/org/apache/archiva/artifact-upload/1.0/artifact-upload-1.0.pom.sha1" ).exists() );
> -        assertTrue( new File( repoLocation, "/org/apache/archiva/artifact-upload/1.0/artifact-upload-1.0.pom.md5" ).exists() );
> +        assertTrue( new File( repoLocation, "/org/apache/archiva/artifact-upload/" + version + "/" + artifact + ".jar" ).exists() );
> +        assertTrue( new File( repoLocation, "/org/apache/archiva/artifact-upload/" + version + "/" + artifact
> +            + ".jar.sha1" ).exists() );
> +        assertTrue( new File( repoLocation, "/org/apache/archiva/artifact-upload/" + version + "/" + artifact
> +            + ".jar.md5" ).exists() );
> +
> +        assertTrue( new File( repoLocation, "/org/apache/archiva/artifact-upload/" + version + "/" + artifact + ".pom" ).exists() );
> +        assertTrue( new File( repoLocation, "/org/apache/archiva/artifact-upload/" + version + "/" + artifact
> +            + ".pom.sha1" ).exists() );
> +        assertTrue( new File( repoLocation, "/org/apache/archiva/artifact-upload/" + version + "/" + artifact
> +            + ".pom.md5" ).exists() );
> 
>         assertTrue( new File( repoLocation, "/org/apache/archiva/artifact-upload/" + MetadataTools.MAVEN_METADATA ).exists() );
> -        assertTrue( new File( repoLocation, "/org/apache/archiva/artifact-upload/" + MetadataTools.MAVEN_METADATA +
> -            ".sha1" ).exists() );
> -        assertTrue( new File( repoLocation, "/org/apache/archiva/artifact-upload/" + MetadataTools.MAVEN_METADATA +
> -            ".md5" ).exists() );
> +        assertTrue( new File( repoLocation, "/org/apache/archiva/artifact-upload/" + MetadataTools.MAVEN_METADATA
> +            + ".sha1" ).exists() );
> +        assertTrue( new File( repoLocation, "/org/apache/archiva/artifact-upload/" + MetadataTools.MAVEN_METADATA
> +            + ".md5" ).exists() );
>     }
> 
> -    private void verifyChecksums( String repoLocation )
> +    private void verifyVersionMetadataChecksums( String repoLocation, String version )
>         throws IOException
>     {
> -        // verify checksums of jar file
>         ChecksummedFile checksum =
> -            new ChecksummedFile( new File( repoLocation,
> -                                           "/org/apache/archiva/artifact-upload/1.0/artifact-upload-1.0.jar" ) );
> +            new ChecksummedFile( new File( repoLocation, "/org/apache/archiva/artifact-upload/" + version + "/"
> +                + MetadataTools.MAVEN_METADATA ) );
>         String sha1 = checksum.calculateChecksum( ChecksumAlgorithm.SHA1 );
>         String md5 = checksum.calculateChecksum( ChecksumAlgorithm.MD5 );
> 
>         String contents =
> -            FileUtils.readFileToString( new File( repoLocation,
> -                                                  "/org/apache/archiva/artifact-upload/1.0/artifact-upload-1.0.jar.sha1" ) );
> +            FileUtils.readFileToString( new File( repoLocation, "/org/apache/archiva/artifact-upload/" + version + "/"
> +                + MetadataTools.MAVEN_METADATA + ".sha1" ) );
>         assertTrue( StringUtils.contains( contents, sha1 ) );
> 
>         contents =
> -            FileUtils.readFileToString( new File( repoLocation,
> -                                                  "/org/apache/archiva/artifact-upload/1.0/artifact-upload-1.0.jar.md5" ) );
> +            FileUtils.readFileToString( new File( repoLocation, "/org/apache/archiva/artifact-upload/" + version + "/"
> +                + MetadataTools.MAVEN_METADATA + ".md5" ) );
>         assertTrue( StringUtils.contains( contents, md5 ) );
> +    }
> 
> -        // verify checksums of pom file
> -        checksum =
> -            new ChecksummedFile( new File( repoLocation,
> -                                           "/org/apache/archiva/artifact-upload/1.0/artifact-upload-1.0.pom" ) );
> -        sha1 = checksum.calculateChecksum( ChecksumAlgorithm.SHA1 );
> -        md5 = checksum.calculateChecksum( ChecksumAlgorithm.MD5 );
> +    private void verifyProjectMetadataChecksums( String repoLocation )
> +        throws IOException
> +    {
> +        ChecksummedFile checksum =
> +            new ChecksummedFile( new File( repoLocation, "/org/apache/archiva/artifact-upload/"
> +                + MetadataTools.MAVEN_METADATA ) );
> +        String sha1 = checksum.calculateChecksum( ChecksumAlgorithm.SHA1 );
> +        String md5 = checksum.calculateChecksum( ChecksumAlgorithm.MD5 );
> 
> -        contents =
> -            FileUtils.readFileToString( new File( repoLocation,
> -                                                  "/org/apache/archiva/artifact-upload/1.0/artifact-upload-1.0.pom.sha1" ) );
> +        String contents =
> +            FileUtils.readFileToString( new File( repoLocation, "/org/apache/archiva/artifact-upload/"
> +                + MetadataTools.MAVEN_METADATA + ".sha1" ) );
>         assertTrue( StringUtils.contains( contents, sha1 ) );
> 
>         contents =
> -            FileUtils.readFileToString( new File( repoLocation,
> -                                                  "/org/apache/archiva/artifact-upload/1.0/artifact-upload-1.0.pom.md5" ) );
> +            FileUtils.readFileToString( new File( repoLocation, "/org/apache/archiva/artifact-upload/"
> +                + MetadataTools.MAVEN_METADATA + ".md5" ) );
>         assertTrue( StringUtils.contains( contents, md5 ) );
> +    }
> 
> -        // verify checksums of metadata file
> +    private void verifyPomChecksums( String repoLocation, String artifact, String version )
> +        throws IOException
> +    {
> +        ChecksummedFile checksum;
> +        String sha1;
> +        String md5;
> +        String contents;
>         checksum =
> -            new ChecksummedFile( new File( repoLocation, "/org/apache/archiva/artifact-upload/" +
> -                MetadataTools.MAVEN_METADATA ) );
> +            new ChecksummedFile( new File( repoLocation, "/org/apache/archiva/artifact-upload/" + version + "/"
> +                + artifact + ".pom" ) );
>         sha1 = checksum.calculateChecksum( ChecksumAlgorithm.SHA1 );
>         md5 = checksum.calculateChecksum( ChecksumAlgorithm.MD5 );
> 
>         contents =
> -            FileUtils.readFileToString( new File( repoLocation, "/org/apache/archiva/artifact-upload/" +
> -                MetadataTools.MAVEN_METADATA + ".sha1" ) );
> +            FileUtils.readFileToString( new File( repoLocation, "/org/apache/archiva/artifact-upload/" + version + "/"
> +                + artifact + ".pom.sha1" ) );
>         assertTrue( StringUtils.contains( contents, sha1 ) );
> 
>         contents =
> -            FileUtils.readFileToString( new File( repoLocation, "/org/apache/archiva/artifact-upload/" +
> -                MetadataTools.MAVEN_METADATA + ".md5" ) );
> +            FileUtils.readFileToString( new File( repoLocation, "/org/apache/archiva/artifact-upload/" + version + "/"
> +                + artifact + ".pom.md5" ) );
>         assertTrue( StringUtils.contains( contents, md5 ) );
>     }
> 
> +    private void verifyArtifactChecksums( String repoLocation, String artifact, String version )
> +        throws IOException
> +    {
> +        ChecksummedFile checksum =
> +            new ChecksummedFile( new File( repoLocation, "/org/apache/archiva/artifact-upload/" + version + "/"
> +                + artifact + ".jar" ) );
> +        String sha1 = checksum.calculateChecksum( ChecksumAlgorithm.SHA1 );
> +        String md5 = checksum.calculateChecksum( ChecksumAlgorithm.MD5 );
> +
> +        String contents =
> +            FileUtils.readFileToString( new File( repoLocation, "/org/apache/archiva/artifact-upload/" + version + "/"
> +                + artifact + ".jar.sha1" ) );
> +        assertTrue( StringUtils.contains( contents, sha1 ) );
> +
> +        contents =
> +            FileUtils.readFileToString( new File( repoLocation, "/org/apache/archiva/artifact-upload/" + version + "/"
> +                + artifact + ".jar.md5" ) );
> +        assertTrue( StringUtils.contains( contents, md5 ) );
> +    }
> +
> +    private String getTimestamp( String[] artifactsList, int startIndex, int index )
> +    {
> +        int endIndex = -1;
> +        String timestamp;
> +
> +        if ( artifactsList[index].contains( "jar" ) )
> +        {
> +            endIndex = artifactsList[index].indexOf( ".jar" );
> +        }
> +        else
> +        {
> +            endIndex = artifactsList[index].indexOf( ".pom" );
> +        }
> +
> +        timestamp = artifactsList[index].substring( startIndex, endIndex );
> +
> +        return timestamp;
> +    }
> +
>     public void testArtifactUploadWithPomSuccessful()
>         throws Exception
>     {
> @@ -239,11 +295,13 @@ public class UploadActionTest
>         archivaConfigControl.verify();
>         repoFactoryControl.verify();
>         auditLogsDaoControl.verify();
> -        
> +
>         String repoLocation = config.findManagedRepositoryById( REPOSITORY_ID ).getLocation();
> -        assertAllArtifactsIncludingSupportArtifactsArePresent( repoLocation );
> +        assertAllArtifactsIncludingSupportArtifactsArePresent( repoLocation, "artifact-upload-1.0", "1.0" );
> 
> -        verifyChecksums( repoLocation );
> +        verifyArtifactChecksums( repoLocation, "artifact-upload-1.0", "1.0" );
> +        verifyPomChecksums( repoLocation, "artifact-upload-1.0", "1.0" );
> +        verifyProjectMetadataChecksums( repoLocation );
>     }
> 
>     public void testArtifactUploadWithClassifier()
> @@ -264,7 +322,7 @@ public class UploadActionTest
>         archivaConfigControl.replay();
>         repoFactoryControl.replay();
>         auditLogsDaoControl.replay();
> -        
> +
>         String returnString = uploadAction.doUpload();
>         assertEquals( Action.SUCCESS, returnString );
> 
> @@ -283,44 +341,13 @@ public class UploadActionTest
>         assertFalse( new File( repoLocation, "/org/apache/archiva/artifact-upload/1.0/artifact-upload-1.0.pom.md5" ).exists() );
> 
>         assertTrue( new File( repoLocation, "/org/apache/archiva/artifact-upload/" + MetadataTools.MAVEN_METADATA ).exists() );
> -        assertTrue( new File( repoLocation, "/org/apache/archiva/artifact-upload/" + MetadataTools.MAVEN_METADATA +
> -            ".sha1" ).exists() );
> -        assertTrue( new File( repoLocation, "/org/apache/archiva/artifact-upload/" + MetadataTools.MAVEN_METADATA +
> -            ".md5" ).exists() );
> -
> -        // verify checksums of jar file
> -        ChecksummedFile checksum =
> -            new ChecksummedFile( new File( repoLocation,
> -                                           "/org/apache/archiva/artifact-upload/1.0/artifact-upload-1.0-tests.jar" ) );
> -        String sha1 = checksum.calculateChecksum( ChecksumAlgorithm.SHA1 );
> -        String md5 = checksum.calculateChecksum( ChecksumAlgorithm.MD5 );
> +        assertTrue( new File( repoLocation, "/org/apache/archiva/artifact-upload/" + MetadataTools.MAVEN_METADATA
> +            + ".sha1" ).exists() );
> +        assertTrue( new File( repoLocation, "/org/apache/archiva/artifact-upload/" + MetadataTools.MAVEN_METADATA
> +            + ".md5" ).exists() );
> 
> -        String contents =
> -            FileUtils.readFileToString( new File( repoLocation,
> -                                                  "/org/apache/archiva/artifact-upload/1.0/artifact-upload-1.0-tests.jar.sha1" ) );
> -        assertTrue( StringUtils.contains( contents, sha1 ) );
> -
> -        contents =
> -            FileUtils.readFileToString( new File( repoLocation,
> -                                                  "/org/apache/archiva/artifact-upload/1.0/artifact-upload-1.0-tests.jar.md5" ) );
> -        assertTrue( StringUtils.contains( contents, md5 ) );
> -
> -        // verify checksums of metadata file
> -        checksum =
> -            new ChecksummedFile( new File( repoLocation, "/org/apache/archiva/artifact-upload/" +
> -                MetadataTools.MAVEN_METADATA ) );
> -        sha1 = checksum.calculateChecksum( ChecksumAlgorithm.SHA1 );
> -        md5 = checksum.calculateChecksum( ChecksumAlgorithm.MD5 );
> -
> -        contents =
> -            FileUtils.readFileToString( new File( repoLocation, "/org/apache/archiva/artifact-upload/" +
> -                MetadataTools.MAVEN_METADATA + ".sha1" ) );
> -        assertTrue( StringUtils.contains( contents, sha1 ) );
> -
> -        contents =
> -            FileUtils.readFileToString( new File( repoLocation, "/org/apache/archiva/artifact-upload/" +
> -                MetadataTools.MAVEN_METADATA + ".md5" ) );
> -        assertTrue( StringUtils.contains( contents, md5 ) );
> +        verifyArtifactChecksums( repoLocation, "artifact-upload-1.0-tests", "1.0" );
> +        verifyProjectMetadataChecksums( repoLocation );
>     }
> 
>     public void testArtifactUploadGeneratePomSuccessful()
> @@ -350,14 +377,16 @@ public class UploadActionTest
>         auditLogsDaoControl.verify();
> 
>         String repoLocation = config.findManagedRepositoryById( REPOSITORY_ID ).getLocation();
> -        assertAllArtifactsIncludingSupportArtifactsArePresent( repoLocation );
> +        assertAllArtifactsIncludingSupportArtifactsArePresent( repoLocation, "artifact-upload-1.0", "1.0" );
> 
> -        verifyChecksums( repoLocation );
> +        verifyArtifactChecksums( repoLocation, "artifact-upload-1.0", "1.0" );
> +        verifyPomChecksums( repoLocation, "artifact-upload-1.0", "1.0" );
> +        verifyProjectMetadataChecksums( repoLocation );
>     }
> 
>     public void testArtifactUploadFailedRepositoryNotFound()
>         throws Exception
> -    {        
> +    {
>         setUploadParameters( "1.0", null,
>                              new File( getBasedir(),
>                                        "target/test-classes/upload-artifact-test/artifact-to-be-uploaded.jar" ), null,
> @@ -398,11 +427,11 @@ public class UploadActionTest
>         archivaConfigControl.expectAndReturn( archivaConfig.getConfiguration(), config );
>         repoFactoryControl.expectAndReturn( repoFactory.getManagedRepositoryContent( REPOSITORY_ID ), content );
>         auditLogsDaoControl.expectAndReturn( auditLogsDao.saveAuditLogs( new ArchivaAuditLogs() ), null );
> -        
> +
>         archivaConfigControl.replay();
>         repoFactoryControl.replay();
>         auditLogsDaoControl.replay();
> -       
> +
>         String returnString = uploadAction.doUpload();
>         assertEquals( Action.SUCCESS, returnString );
> 
> @@ -413,86 +442,92 @@ public class UploadActionTest
>         String repoLocation = config.findManagedRepositoryById( REPOSITORY_ID ).getLocation();
>         String[] artifactsList = new File( repoLocation, "/org/apache/archiva/artifact-upload/1.0-SNAPSHOT/" ).list();
> 
> -        assertEquals( 6, artifactsList.length );
> -
> -        assertTrue( new File( repoLocation, "/org/apache/archiva/artifact-upload/" + MetadataTools.MAVEN_METADATA ).exists() );
> -        assertTrue( new File( repoLocation, "/org/apache/archiva/artifact-upload/" + MetadataTools.MAVEN_METADATA +
> -            ".sha1" ).exists() );
> -        assertTrue( new File( repoLocation, "/org/apache/archiva/artifact-upload/" + MetadataTools.MAVEN_METADATA +
> -            ".md5" ).exists() );
> +        assertEquals( 9, artifactsList.length );
> +        assertTrue( new File( repoLocation, "/org/apache/archiva/artifact-upload/1.0-SNAPSHOT/"
> +            + MetadataTools.MAVEN_METADATA ).exists() );
> +        assertTrue( new File( repoLocation, "/org/apache/archiva/artifact-upload/1.0-SNAPSHOT/"
> +            + MetadataTools.MAVEN_METADATA + ".sha1" ).exists() );
> +        assertTrue( new File( repoLocation, "/org/apache/archiva/artifact-upload/1.0-SNAPSHOT/"
> +            + MetadataTools.MAVEN_METADATA + ".md5" ).exists() );
> 
>         int startIndex = "artifact-upload-1.0-".length();
> -        int endIndex = -1; 
> +        String timestamp = getTimestamp( artifactsList, startIndex, 0 );
> 
> -        if ( artifactsList[0].contains( "jar" ) )
> -        {
> -            endIndex = artifactsList[0].indexOf( ".jar" );
> -        }
> -        else
> -        {
> -            endIndex = artifactsList[0].indexOf( ".pom" );
> -        }
> +        assertAllArtifactsIncludingSupportArtifactsArePresent( repoLocation, "artifact-upload-1.0-" + timestamp,
> +                                                               "1.0-SNAPSHOT" );
> +        verifyArtifactChecksums( repoLocation, "artifact-upload-1.0-" + timestamp, "1.0-SNAPSHOT" );
> +        verifyPomChecksums( repoLocation, "artifact-upload-1.0-" + timestamp, "1.0-SNAPSHOT" );
> +        verifyProjectMetadataChecksums( repoLocation );
> +        verifyVersionMetadataChecksums( repoLocation, "1.0-SNAPSHOT" );
> +
> +        // verify build number
> +        File metadataFile =
> +            new File( repoLocation, "/org/apache/archiva/artifact-upload/1.0-SNAPSHOT/" + MetadataTools.MAVEN_METADATA );
> +        ArchivaRepositoryMetadata artifactMetadata = RepositoryMetadataReader.read( metadataFile );
> 
> -        String timestamp = artifactsList[0].substring( startIndex, endIndex );
> +        SnapshotVersion snapshotVersion = artifactMetadata.getSnapshotVersion();
> +        assertEquals( "Incorrect build number set in artifact metadata.", 1, snapshotVersion.getBuildNumber() );
> 
> -        assertTrue( new File( repoLocation, "/org/apache/archiva/artifact-upload/1.0-SNAPSHOT/artifact-upload-1.0-" + timestamp + ".jar" ).exists()  );
> -        assertTrue( new File( repoLocation, "/org/apache/archiva/artifact-upload/1.0-SNAPSHOT/artifact-upload-1.0-" + timestamp + ".jar.md5" ).exists()  );
> -        assertTrue( new File( repoLocation, "/org/apache/archiva/artifact-upload/1.0-SNAPSHOT/artifact-upload-1.0-" + timestamp + ".jar.sha1" ).exists()  );
> -        assertTrue( new File( repoLocation, "/org/apache/archiva/artifact-upload/1.0-SNAPSHOT/artifact-upload-1.0-" + timestamp + ".pom" ).exists()  );
> -        assertTrue( new File( repoLocation, "/org/apache/archiva/artifact-upload/1.0-SNAPSHOT/artifact-upload-1.0-" + timestamp + ".pom.md5" ).exists()  );
> -        assertTrue( new File( repoLocation, "/org/apache/archiva/artifact-upload/1.0-SNAPSHOT/artifact-upload-1.0-" + timestamp + ".pom.sha1" ).exists()  );
> +        String timestampPart = StringUtils.substringBeforeLast( timestamp, "-" );
> +        assertEquals( "Incorrect timestamp set in artifact metadata.", timestampPart, snapshotVersion.getTimestamp() );
> 
> -        // verify checksums of jar file
> -        ChecksummedFile checksum =
> -            new ChecksummedFile( new File( repoLocation,
> -                                           "/org/apache/archiva/artifact-upload/1.0-SNAPSHOT/artifact-upload-1.0-" + timestamp + ".jar" ) );
> -        String sha1 = checksum.calculateChecksum( ChecksumAlgorithm.SHA1 );
> -        String md5 = checksum.calculateChecksum( ChecksumAlgorithm.MD5 );
> +        String buildnumber = StringUtils.substringAfterLast( timestamp, "-" );
> +        assertEquals( "Incorrect build number in filename.", "1", buildnumber );
> 
> -        String contents =
> -            FileUtils.readFileToString( new File( repoLocation,
> -                                                  "/org/apache/archiva/artifact-upload/1.0-SNAPSHOT/artifact-upload-1.0-" + timestamp + ".jar.sha1" ) );
> -        assertTrue( StringUtils.contains( contents, sha1 ) );
> +        archivaConfigControl.reset();
> +        repoFactoryControl.reset();
> +        auditLogsDaoControl.reset();
> 
> -        contents =
> -            FileUtils.readFileToString( new File( repoLocation,
> -                                                  "/org/apache/archiva/artifact-upload/1.0-SNAPSHOT/artifact-upload-1.0-" + timestamp + ".jar.md5" ) );
> -        assertTrue( StringUtils.contains( contents, md5 ) );
> +        auditLogsDaoControl.setDefaultMatcher( MockControl.ALWAYS_MATCHER );
> 
> -        // verify checksums of pom file
> -        checksum =
> -            new ChecksummedFile( new File( repoLocation,
> -                                           "/org/apache/archiva/artifact-upload/1.0-SNAPSHOT/artifact-upload-1.0-" + timestamp + ".pom" ) );
> -        sha1 = checksum.calculateChecksum( ChecksumAlgorithm.SHA1 );
> -        md5 = checksum.calculateChecksum( ChecksumAlgorithm.MD5 );
> +        // MRM-1353
> +        // upload snapshot artifact again and check if build number was incremented
> +        setUploadParameters( "1.0-SNAPSHOT", null,
> +                             new File( getBasedir(),
> +                                       "target/test-classes/upload-artifact-test/artifact-to-be-uploaded.jar" ), null,
> +                             true );
> 
> -        contents =
> -            FileUtils.readFileToString( new File( repoLocation,
> -                                                  "/org/apache/archiva/artifact-upload/1.0-SNAPSHOT/artifact-upload-1.0-" + timestamp + ".pom.sha1" ) );
> -        assertTrue( StringUtils.contains( contents, sha1 ) );
> +        archivaConfigControl.expectAndReturn( archivaConfig.getConfiguration(), config );
> +        repoFactoryControl.expectAndReturn( repoFactory.getManagedRepositoryContent( REPOSITORY_ID ), content );
> +        auditLogsDaoControl.expectAndReturn( auditLogsDao.saveAuditLogs( new ArchivaAuditLogs() ), null );
> 
> -        contents =
> -            FileUtils.readFileToString( new File( repoLocation,
> -                                                  "/org/apache/archiva/artifact-upload/1.0-SNAPSHOT/artifact-upload-1.0-" + timestamp + ".pom.md5" ) );
> -        assertTrue( StringUtils.contains( contents, md5 ) );
> +        archivaConfigControl.replay();
> +        repoFactoryControl.replay();
> +        auditLogsDaoControl.replay();
> 
> -        
> -        // verify checksums of metadata file
> -        checksum =
> -            new ChecksummedFile( new File( repoLocation, "/org/apache/archiva/artifact-upload/" +
> -                MetadataTools.MAVEN_METADATA ) );
> -        sha1 = checksum.calculateChecksum( ChecksumAlgorithm.SHA1 );
> -        md5 = checksum.calculateChecksum( ChecksumAlgorithm.MD5 );
> +        returnString = uploadAction.doUpload();
> +        assertEquals( Action.SUCCESS, returnString );
> 
> -        contents =
> -            FileUtils.readFileToString( new File( repoLocation, "/org/apache/archiva/artifact-upload/" +
> -                MetadataTools.MAVEN_METADATA + ".sha1" ) );
> -        assertTrue( StringUtils.contains( contents, sha1 ) );
> +        archivaConfigControl.verify();
> +        repoFactoryControl.verify();
> +        auditLogsDaoControl.verify();
> 
> -        contents =
> -            FileUtils.readFileToString( new File( repoLocation, "/org/apache/archiva/artifact-upload/" +
> -                MetadataTools.MAVEN_METADATA + ".md5" ) );
> -        assertTrue( StringUtils.contains( contents, md5 ) );
> +        artifactsList = new File( repoLocation, "/org/apache/archiva/artifact-upload/1.0-SNAPSHOT/" ).list();
> +
> +        assertEquals( 15, artifactsList.length );
> +
> +        timestamp = getTimestamp( artifactsList, startIndex, 6 );
> +
> +        assertAllArtifactsIncludingSupportArtifactsArePresent( repoLocation, "artifact-upload-1.0-" + timestamp,
> +                                                               "1.0-SNAPSHOT" );
> +        verifyArtifactChecksums( repoLocation, "artifact-upload-1.0-" + timestamp, "1.0-SNAPSHOT" );
> +        verifyPomChecksums( repoLocation, "artifact-upload-1.0-" + timestamp, "1.0-SNAPSHOT" );
> +        verifyProjectMetadataChecksums( repoLocation );
> +        verifyVersionMetadataChecksums( repoLocation, "1.0-SNAPSHOT" );
> +
> +        // verify build number set in metadata and in filename
> +        metadataFile =
> +            new File( repoLocation, "/org/apache/archiva/artifact-upload/1.0-SNAPSHOT/" + MetadataTools.MAVEN_METADATA );
> +        artifactMetadata = RepositoryMetadataReader.read( metadataFile );
> +
> +        snapshotVersion = artifactMetadata.getSnapshotVersion();
> +        assertEquals( "Incorrect build number set in artifact metadata.", 2, snapshotVersion.getBuildNumber() );
> +
> +        timestampPart = StringUtils.substringBeforeLast( timestamp, "-" );
> +        assertEquals( "Incorrect timestamp set in artifact metadata.", timestampPart, snapshotVersion.getTimestamp() );
> +
> +        buildnumber = StringUtils.substringAfterLast( timestamp, "-" );
> +        assertEquals( "Incorrect build number in filename.", "2", buildnumber );
>     }
> 
>     public void testChecksumIsCorrectWhenArtifactIsReUploaded()
> @@ -505,13 +540,13 @@ public class UploadActionTest
> 
>         ManagedRepositoryContent content = new ManagedDefaultRepositoryContent();
>         ManagedRepositoryConfiguration repoConfig = config.findManagedRepositoryById( REPOSITORY_ID );
> -        repoConfig.setBlockRedeployments( false );        
> -        content.setRepository( repoConfig );      
> -        
> +        repoConfig.setBlockRedeployments( false );
> +        content.setRepository( repoConfig );
> +
>         archivaConfigControl.expectAndReturn( archivaConfig.getConfiguration(), config );
>         repoFactoryControl.expectAndReturn( repoFactory.getManagedRepositoryContent( REPOSITORY_ID ), content );
>         auditLogsDaoControl.expectAndReturn( auditLogsDao.saveAuditLogs( new ArchivaAuditLogs() ), null );
> -        
> +
>         archivaConfigControl.replay();
>         repoFactoryControl.replay();
>         auditLogsDaoControl.replay();
> @@ -529,9 +564,11 @@ public class UploadActionTest
>         auditLogsDaoControl.setDefaultMatcher( MockControl.ALWAYS_MATCHER );
> 
>         String repoLocation = config.findManagedRepositoryById( REPOSITORY_ID ).getLocation();
> -        assertAllArtifactsIncludingSupportArtifactsArePresent( repoLocation );
> +        assertAllArtifactsIncludingSupportArtifactsArePresent( repoLocation, "artifact-upload-1.0", "1.0" );
> 
> -        verifyChecksums( repoLocation );
> +        verifyArtifactChecksums( repoLocation, "artifact-upload-1.0", "1.0" );
> +        verifyPomChecksums( repoLocation, "artifact-upload-1.0", "1.0" );
> +        verifyProjectMetadataChecksums( repoLocation );
> 
>         // RE-upload artifact
>         setUploadParameters( "1.0", null,
> @@ -542,7 +579,7 @@ public class UploadActionTest
>         archivaConfigControl.expectAndReturn( archivaConfig.getConfiguration(), config );
>         repoFactoryControl.expectAndReturn( repoFactory.getManagedRepositoryContent( REPOSITORY_ID ), content );
>         auditLogsDaoControl.expectAndReturn( auditLogsDao.saveAuditLogs( new ArchivaAuditLogs() ), null );
> -        
> +
>         archivaConfigControl.replay();
>         repoFactoryControl.replay();
>         auditLogsDaoControl.replay();
> @@ -555,14 +592,16 @@ public class UploadActionTest
>         auditLogsDaoControl.verify();
> 
>         repoLocation = config.findManagedRepositoryById( REPOSITORY_ID ).getLocation();
> -        assertAllArtifactsIncludingSupportArtifactsArePresent( repoLocation );
> +        assertAllArtifactsIncludingSupportArtifactsArePresent( repoLocation, "artifact-upload-1.0", "1.0" );
> 
> -        verifyChecksums( repoLocation );
> +        verifyArtifactChecksums( repoLocation, "artifact-upload-1.0", "1.0" );
> +        verifyPomChecksums( repoLocation, "artifact-upload-1.0", "1.0" );
> +        verifyProjectMetadataChecksums( repoLocation );
>     }
> -    
> +
>     public void testUploadArtifactAlreadyExistingRedeploymentsBlocked()
>         throws Exception
> -    {   
> +    {
>         setUploadParameters( "1.0", null,
>                              new File( getBasedir(),
>                                        "target/test-classes/upload-artifact-test/artifact-to-be-uploaded.jar" ), null,
> @@ -574,19 +613,19 @@ public class UploadActionTest
>         archivaConfigControl.expectAndReturn( archivaConfig.getConfiguration(), config, 2 );
>         repoFactoryControl.expectAndReturn( repoFactory.getManagedRepositoryContent( REPOSITORY_ID ), content, 2 );
>         auditLogsDaoControl.expectAndReturn( auditLogsDao.saveAuditLogs( new ArchivaAuditLogs() ), null );
> -        
> +
>         archivaConfigControl.replay();
>         repoFactoryControl.replay();
>         auditLogsDaoControl.replay();
> 
>         String returnString = uploadAction.doUpload();
>         assertEquals( Action.SUCCESS, returnString );
> -        
> +
>         setUploadParameters( "1.0", null,
>                              new File( getBasedir(),
>                                        "target/test-classes/upload-artifact-test/artifact-to-be-uploaded.jar" ), null,
>                              true );
> -        
> +
>         returnString = uploadAction.doUpload();
>         assertEquals( Action.ERROR, returnString );
> 
> @@ -595,50 +634,54 @@ public class UploadActionTest
>         auditLogsDaoControl.verify();
> 
>         String repoLocation = config.findManagedRepositoryById( REPOSITORY_ID ).getLocation();
> -        assertAllArtifactsIncludingSupportArtifactsArePresent( repoLocation );
> +        assertAllArtifactsIncludingSupportArtifactsArePresent( repoLocation, "artifact-upload-1.0", "1.0" );
> 
> -        verifyChecksums( repoLocation );
> +        verifyArtifactChecksums( repoLocation, "artifact-upload-1.0", "1.0" );
> +        verifyPomChecksums( repoLocation, "artifact-upload-1.0", "1.0" );
> +        verifyProjectMetadataChecksums( repoLocation );
>     }
> -    
> +
>     public void testUploadArtifactAlreadyExistingRedeploymentsAllowed()
>         throws Exception
> -    {                
> +    {
>         setUploadParameters( "1.0", null,
>                              new File( getBasedir(),
>                                        "target/test-classes/upload-artifact-test/artifact-to-be-uploaded.jar" ), null,
>                              true );
> -    
> +
>         ManagedRepositoryContent content = new ManagedDefaultRepositoryContent();
>         ManagedRepositoryConfiguration repoConfig = config.findManagedRepositoryById( REPOSITORY_ID );
> -        repoConfig.setBlockRedeployments( false );        
> -        content.setRepository( repoConfig );        
> -    
> +        repoConfig.setBlockRedeployments( false );
> +        content.setRepository( repoConfig );
> +
>         archivaConfigControl.expectAndReturn( archivaConfig.getConfiguration(), config, 2 );
>         repoFactoryControl.expectAndReturn( repoFactory.getManagedRepositoryContent( REPOSITORY_ID ), content, 2 );
>         auditLogsDaoControl.expectAndReturn( auditLogsDao.saveAuditLogs( new ArchivaAuditLogs() ), null, 2 );
> -    
> +
>         archivaConfigControl.replay();
>         repoFactoryControl.replay();
>         auditLogsDaoControl.replay();
> -    
> +
>         String returnString = uploadAction.doUpload();
>         assertEquals( Action.SUCCESS, returnString );
> -    
> +
>         setUploadParameters( "1.0", null,
>                              new File( getBasedir(),
>                                        "target/test-classes/upload-artifact-test/artifact-to-be-uploaded.jar" ), null,
>                              true );
> -        
> +
>         returnString = uploadAction.doUpload();
>         assertEquals( Action.SUCCESS, returnString );
> -        
> +
>         archivaConfigControl.verify();
>         repoFactoryControl.verify();
>         auditLogsDaoControl.verify();
> -    
> +
>         String repoLocation = config.findManagedRepositoryById( REPOSITORY_ID ).getLocation();
> -        assertAllArtifactsIncludingSupportArtifactsArePresent( repoLocation );
> -    
> -        verifyChecksums( repoLocation );
> +        assertAllArtifactsIncludingSupportArtifactsArePresent( repoLocation, "artifact-upload-1.0", "1.0" );
> +
> +        verifyArtifactChecksums( repoLocation, "artifact-upload-1.0", "1.0" );
> +        verifyPomChecksums( repoLocation, "artifact-upload-1.0", "1.0" );
> +        verifyProjectMetadataChecksums( repoLocation );
>     }
> -}
> +}
> \ No newline at end of file
> 
> 

--
Brett Porter
brett@apache.org
http://brettporter.wordpress.com/