Author: brett
Date: Sat Jun  4 22:49:18 2005
New Revision: 180069

URL: http://svn.apache.org/viewcvs?rev=180069&view=rev
Log:
correctly deploy checksums

Modified:
    
maven/maven-1/plugins/trunk/artifact/src/main/org/apache/maven/artifact/deployer/DefaultArtifactDeployer.java

Modified: 
maven/maven-1/plugins/trunk/artifact/src/main/org/apache/maven/artifact/deployer/DefaultArtifactDeployer.java
URL: 
http://svn.apache.org/viewcvs/maven/maven-1/plugins/trunk/artifact/src/main/org/apache/maven/artifact/deployer/DefaultArtifactDeployer.java?rev=180069&r1=180068&r2=180069&view=diff
==============================================================================
--- 
maven/maven-1/plugins/trunk/artifact/src/main/org/apache/maven/artifact/deployer/DefaultArtifactDeployer.java
 (original)
+++ 
maven/maven-1/plugins/trunk/artifact/src/main/org/apache/maven/artifact/deployer/DefaultArtifactDeployer.java
 Sat Jun  4 22:49:18 2005
@@ -41,6 +41,7 @@
 import org.apache.maven.wagon.authentication.AuthenticationException;
 import org.apache.maven.wagon.authentication.AuthenticationInfo;
 import org.apache.maven.wagon.authorization.AuthorizationException;
+import org.apache.maven.wagon.events.TransferListener;
 import org.apache.maven.wagon.observers.ChecksumObserver;
 import org.apache.maven.wagon.providers.file.FileWagon;
 import org.apache.maven.wagon.providers.ftp.FtpWagon;
@@ -65,8 +66,10 @@
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.Date;
+import java.util.HashMap;
 import java.util.Iterator;
 import java.util.List;
+import java.util.Map;
 import java.util.TimeZone;
 
 /**
@@ -437,7 +440,7 @@
 
     private void deployFile( Repository repository, File src, String dest, 
Project project )
         throws ResourceDoesNotExistException, MalformedURLException, 
NoSuchAlgorithmException, TransferFailedException,
-        ConnectionException, AuthenticationException, AuthorizationException
+        ConnectionException, AuthenticationException, AuthorizationException, 
MavenException
     {
         deployFiles( repository, Collections.singletonList( src ), 
Collections.singletonList( dest ), null, project );
     }
@@ -445,7 +448,7 @@
     private void deployFiles( Repository repository, List srcFiles, List 
destFiles,
                               AuthenticationInfo authenticationInfo, Project 
project )
         throws ConnectionException, AuthenticationException, 
ResourceDoesNotExistException, TransferFailedException,
-        AuthorizationException, MalformedURLException, NoSuchAlgorithmException
+        AuthorizationException, MalformedURLException, 
NoSuchAlgorithmException, MavenException
     {
 
         if ( srcFiles.size() != destFiles.size() )
@@ -455,9 +458,17 @@
         }
 
         Wagon wagon = getWagon( repository.getProtocol(), project, 
repository.getId() );
-        wagon.addTransferListener( new UploadMeter() );
-        wagon.addTransferListener( new ChecksumObserver() );
-        wagon.addTransferListener( new ChecksumObserver( "SHA-1" ) );
+
+        TransferListener uploadMonitor = new UploadMeter();
+
+        Map checksums = new HashMap( 2 );
+
+        ChecksumObserver observer = new ChecksumObserver( "MD5" );
+        checksums.put( "md5", observer );
+        wagon.addTransferListener( observer );
+        observer = new ChecksumObserver( "SHA-1" );
+        checksums.put( "sha1", observer );
+        wagon.addTransferListener( observer );
 
         try
         {
@@ -466,10 +477,40 @@
             Iterator destIterator = destFiles.iterator();
             while ( srcIterator.hasNext() )
             {
+                wagon.addTransferListener( uploadMonitor );
+ 
                 File srcFile = (File) srcIterator.next();
                 String destFile = (String) destIterator.next();
                 wagon.put( srcFile, destFile );
+
+                wagon.removeTransferListener( uploadMonitor );
+
+                Map sums = new HashMap( 2 );
+                for ( Iterator i = checksums.keySet().iterator(); i.hasNext(); 
)
+                {
+                    // store first - a later put will modify them
+                    String extension = (String) i.next();
+                    observer = (ChecksumObserver) checksums.get( extension );
+                    sums.put( extension, observer.getActualChecksum() );
+                }
+
+                for ( Iterator i = checksums.keySet().iterator(); i.hasNext(); 
)
+                {
+                    String extension = (String) i.next();
+                    observer = (ChecksumObserver) checksums.get( extension );
+    
+                    // TODO: shouldn't need a file intermediatary - improve 
wagon to take a stream
+                    File temp = File.createTempFile( "maven-artifact", null );
+                    temp.deleteOnExit();
+                    FileUtils.fileWrite( temp.getAbsolutePath(), (String) 
sums.get( extension ) );
+    
+                    wagon.put( temp, destFile + "." + extension );
+                }
             }
+        }
+        catch ( IOException e )
+        {
+            throw new MavenException( "Error creating temporary file to 
transfer checksums", e );
         }
         finally
         {



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to