You are viewing a plain text version of this content. The canonical link for it is here.
Posted to wagon-commits@maven.apache.org by br...@apache.org on 2008/05/20 06:03:43 UTC

svn commit: r658096 - in /maven/wagon/branches/WAGON-109: wagon-provider-api/src/main/java/org/apache/maven/wagon/ wagon-provider-api/src/main/java/org/apache/maven/wagon/events/ wagon-provider-api/src/main/java/org/apache/maven/wagon/resource/ wagon-p...

Author: brett
Date: Mon May 19 21:03:43 2008
New Revision: 658096

URL: http://svn.apache.org/viewvc?rev=658096&view=rev
Log:
[WAGON-109] added tests for correct usage of listeners, and corrected problems in the http/webdav wagons

Modified:
    maven/wagon/branches/WAGON-109/wagon-provider-api/src/main/java/org/apache/maven/wagon/AbstractWagon.java
    maven/wagon/branches/WAGON-109/wagon-provider-api/src/main/java/org/apache/maven/wagon/events/SessionEvent.java
    maven/wagon/branches/WAGON-109/wagon-provider-api/src/main/java/org/apache/maven/wagon/events/TransferEvent.java
    maven/wagon/branches/WAGON-109/wagon-provider-api/src/main/java/org/apache/maven/wagon/events/WagonEvent.java
    maven/wagon/branches/WAGON-109/wagon-provider-api/src/main/java/org/apache/maven/wagon/resource/Resource.java
    maven/wagon/branches/WAGON-109/wagon-provider-test/pom.xml
    maven/wagon/branches/WAGON-109/wagon-provider-test/src/main/java/org/apache/maven/wagon/WagonTestCase.java
    maven/wagon/branches/WAGON-109/wagon-providers/wagon-ftp/src/test/java/org/apache/maven/wagon/providers/ftp/FtpWagonTest.java
    maven/wagon/branches/WAGON-109/wagon-providers/wagon-http-shared/src/main/java/org/apache/maven/wagon/shared/http/AbstractHttpClientWagon.java
    maven/wagon/branches/WAGON-109/wagon-providers/wagon-webdav/src/main/java/org/apache/maven/wagon/providers/webdav/WebDavWagon.java

Modified: maven/wagon/branches/WAGON-109/wagon-provider-api/src/main/java/org/apache/maven/wagon/AbstractWagon.java
URL: http://svn.apache.org/viewvc/maven/wagon/branches/WAGON-109/wagon-provider-api/src/main/java/org/apache/maven/wagon/AbstractWagon.java?rev=658096&r1=658095&r2=658096&view=diff
==============================================================================
--- maven/wagon/branches/WAGON-109/wagon-provider-api/src/main/java/org/apache/maven/wagon/AbstractWagon.java (original)
+++ maven/wagon/branches/WAGON-109/wagon-provider-api/src/main/java/org/apache/maven/wagon/AbstractWagon.java Mon May 19 21:03:43 2008
@@ -257,6 +257,10 @@
     protected void putTransfer( Resource resource, File source, OutputStream output, boolean closeOutput )
         throws TransferFailedException
     {
+        resource.setContentLength( source.length() );
+
+        resource.setLastModified( source.lastModified() );
+
         firePutStarted( resource, source );
 
         transfer( resource, source, output, closeOutput );
@@ -278,10 +282,6 @@
     protected void transfer( Resource resource, File source, OutputStream output, boolean closeOutput )
         throws TransferFailedException
     {
-        resource.setContentLength( source.length() );
-
-        resource.setLastModified( source.lastModified() );
-
         InputStream input = null;
 
         try
@@ -346,6 +346,7 @@
         byte[] buffer = new byte[DEFAULT_BUFFER_SIZE];
 
         TransferEvent transferEvent = new TransferEvent( this, resource, TransferEvent.TRANSFER_PROGRESS, requestType );
+        transferEvent.setTimestamp( System.currentTimeMillis() );
 
         int remaining = maxSize;
         while ( remaining > 0 )
@@ -626,6 +627,8 @@
         byte[] buffer = new byte[DEFAULT_BUFFER_SIZE];
 
         TransferEvent transferEvent = new TransferEvent( this, resource, TransferEvent.TRANSFER_PROGRESS, requestType );
+        transferEvent.setTimestamp( System.currentTimeMillis() );
+        transferEvent.setLocalFile( source );
 
         try
         {

Modified: maven/wagon/branches/WAGON-109/wagon-provider-api/src/main/java/org/apache/maven/wagon/events/SessionEvent.java
URL: http://svn.apache.org/viewvc/maven/wagon/branches/WAGON-109/wagon-provider-api/src/main/java/org/apache/maven/wagon/events/SessionEvent.java?rev=658096&r1=658095&r2=658096&view=diff
==============================================================================
--- maven/wagon/branches/WAGON-109/wagon-provider-api/src/main/java/org/apache/maven/wagon/events/SessionEvent.java (original)
+++ maven/wagon/branches/WAGON-109/wagon-provider-api/src/main/java/org/apache/maven/wagon/events/SessionEvent.java Mon May 19 21:03:43 2008
@@ -218,7 +218,7 @@
         }
         sb.append( "|" );
 
-        sb.append( this.repository ).append( "|" );
+        sb.append( this.getWagon().getRepository() ).append( "|" );
         sb.append( this.source );
 
         if ( exception != null )

Modified: maven/wagon/branches/WAGON-109/wagon-provider-api/src/main/java/org/apache/maven/wagon/events/TransferEvent.java
URL: http://svn.apache.org/viewvc/maven/wagon/branches/WAGON-109/wagon-provider-api/src/main/java/org/apache/maven/wagon/events/TransferEvent.java?rev=658096&r1=658095&r2=658096&view=diff
==============================================================================
--- maven/wagon/branches/WAGON-109/wagon-provider-api/src/main/java/org/apache/maven/wagon/events/TransferEvent.java (original)
+++ maven/wagon/branches/WAGON-109/wagon-provider-api/src/main/java/org/apache/maven/wagon/events/TransferEvent.java Mon May 19 21:03:43 2008
@@ -252,11 +252,56 @@
 
         sb.append( "|" );
 
-        sb.append( this.repository ).append( "|" );
+        sb.append( this.getWagon().getRepository() ).append( "|" );
         sb.append( this.getLocalFile() ).append( "|" );
         sb.append( this.getResource() );
         sb.append( "]" );
 
         return sb.toString();
     }
+
+    public int hashCode()
+    {
+        final int prime = 31;
+        int result = 1;
+        result = prime * result + eventType;
+        result = prime * result + ( ( exception == null ) ? 0 : exception.hashCode() );
+        result = prime * result + ( ( localFile == null ) ? 0 : localFile.hashCode() );
+        result = prime * result + requestType;
+        result = prime * result + ( ( resource == null ) ? 0 : resource.hashCode() );
+        return result;
+    }
+
+    public boolean equals( Object obj )
+    {
+        if ( this == obj )
+            return true;
+        if ( obj == null )
+            return false;
+        if ( getClass() != obj.getClass() )
+            return false;
+        final TransferEvent other = (TransferEvent) obj;
+        if ( eventType != other.eventType )
+            return false;
+        if ( exception == null )
+        {
+            if ( other.exception != null )
+                return false;
+        }
+        else if ( !exception.equals( other.exception ) )
+            return false;
+        if ( requestType != other.requestType )
+            return false;
+        if ( resource == null )
+        {
+            if ( other.resource != null )
+                return false;
+        }
+        else if ( !resource.equals( other.resource ) )
+            return false;
+        else if ( !source.equals( other.source ) )
+            return false;
+        return true;
+    }
+    
 }

Modified: maven/wagon/branches/WAGON-109/wagon-provider-api/src/main/java/org/apache/maven/wagon/events/WagonEvent.java
URL: http://svn.apache.org/viewvc/maven/wagon/branches/WAGON-109/wagon-provider-api/src/main/java/org/apache/maven/wagon/events/WagonEvent.java?rev=658096&r1=658095&r2=658096&view=diff
==============================================================================
--- maven/wagon/branches/WAGON-109/wagon-provider-api/src/main/java/org/apache/maven/wagon/events/WagonEvent.java (original)
+++ maven/wagon/branches/WAGON-109/wagon-provider-api/src/main/java/org/apache/maven/wagon/events/WagonEvent.java Mon May 19 21:03:43 2008
@@ -34,12 +34,6 @@
     extends EventObject
 {
     /**
-     * Repository to which the Wagon
-     * object which emitted this event is connected
-     */
-    protected Repository repository;
-
-    /**
      * The time when event occured
      */
     protected long timestamp;

Modified: maven/wagon/branches/WAGON-109/wagon-provider-api/src/main/java/org/apache/maven/wagon/resource/Resource.java
URL: http://svn.apache.org/viewvc/maven/wagon/branches/WAGON-109/wagon-provider-api/src/main/java/org/apache/maven/wagon/resource/Resource.java?rev=658096&r1=658095&r2=658096&view=diff
==============================================================================
--- maven/wagon/branches/WAGON-109/wagon-provider-api/src/main/java/org/apache/maven/wagon/resource/Resource.java (original)
+++ maven/wagon/branches/WAGON-109/wagon-provider-api/src/main/java/org/apache/maven/wagon/resource/Resource.java Mon May 19 21:03:43 2008
@@ -91,4 +91,37 @@
     {
         return name;
     }
+
+    public int hashCode()
+    {
+        final int prime = 31;
+        int result = 1;
+        result = prime * result + (int) ( contentLength ^ ( contentLength >>> 32 ) );
+        result = prime * result + (int) ( lastModified ^ ( lastModified >>> 32 ) );
+        result = prime * result + ( ( name == null ) ? 0 : name.hashCode() );
+        return result;
+    }
+
+    public boolean equals( Object obj )
+    {
+        if ( this == obj )
+            return true;
+        if ( obj == null )
+            return false;
+        if ( getClass() != obj.getClass() )
+            return false;
+        final Resource other = (Resource) obj;
+        if ( contentLength != other.contentLength )
+            return false;
+        if ( lastModified != other.lastModified )
+            return false;
+        if ( name == null )
+        {
+            if ( other.name != null )
+                return false;
+        }
+        else if ( !name.equals( other.name ) )
+            return false;
+        return true;
+    }
 }

Modified: maven/wagon/branches/WAGON-109/wagon-provider-test/pom.xml
URL: http://svn.apache.org/viewvc/maven/wagon/branches/WAGON-109/wagon-provider-test/pom.xml?rev=658096&r1=658095&r2=658096&view=diff
==============================================================================
--- maven/wagon/branches/WAGON-109/wagon-provider-test/pom.xml (original)
+++ maven/wagon/branches/WAGON-109/wagon-provider-test/pom.xml Mon May 19 21:03:43 2008
@@ -45,5 +45,10 @@
       <artifactId>plexus-container-default</artifactId>
       <scope>compile</scope>
     </dependency>
+    <dependency>
+      <groupId>easymock</groupId>
+      <artifactId>easymock</artifactId>
+      <version>1.2_Java1.3</version>
+    </dependency>
   </dependencies>
 </project>

Modified: maven/wagon/branches/WAGON-109/wagon-provider-test/src/main/java/org/apache/maven/wagon/WagonTestCase.java
URL: http://svn.apache.org/viewvc/maven/wagon/branches/WAGON-109/wagon-provider-test/src/main/java/org/apache/maven/wagon/WagonTestCase.java?rev=658096&r1=658095&r2=658096&view=diff
==============================================================================
--- maven/wagon/branches/WAGON-109/wagon-provider-test/src/main/java/org/apache/maven/wagon/WagonTestCase.java (original)
+++ maven/wagon/branches/WAGON-109/wagon-provider-test/src/main/java/org/apache/maven/wagon/WagonTestCase.java Mon May 19 21:03:43 2008
@@ -21,12 +21,18 @@
 
 import org.apache.maven.wagon.authentication.AuthenticationInfo;
 import org.apache.maven.wagon.authorization.AuthorizationException;
+import org.apache.maven.wagon.events.TransferEvent;
+import org.apache.maven.wagon.events.TransferListener;
 import org.apache.maven.wagon.observers.ChecksumObserver;
 import org.apache.maven.wagon.observers.Debug;
 import org.apache.maven.wagon.repository.Repository;
 import org.apache.maven.wagon.repository.RepositoryPermissions;
+import org.apache.maven.wagon.resource.Resource;
 import org.codehaus.plexus.PlexusTestCase;
 import org.codehaus.plexus.util.FileUtils;
+import org.easymock.AbstractMatcher;
+import org.easymock.ArgumentsMatcher;
+import org.easymock.MockControl;
 
 import java.io.File;
 import java.io.IOException;
@@ -41,6 +47,31 @@
 public abstract class WagonTestCase
     extends PlexusTestCase
 {
+    private static final class ProgressArgumentMatcher
+        extends AbstractMatcher
+    {
+        private int size;
+
+        protected boolean argumentMatches( Object expected, Object actual )
+        {
+            if ( actual instanceof byte[] )
+            {
+                return true;
+            }
+            if ( actual instanceof Integer )
+            {
+                size += ((Integer) actual).intValue();
+                return true;
+            }
+            return super.argumentMatches( expected, actual );
+        }
+        
+        public int getSize()
+        {
+            return size;
+        }
+    }
+
     protected static String POM = "pom.xml";
 
     protected Repository localRepository;
@@ -60,6 +91,10 @@
     protected File artifactDestFile;
 
     protected ChecksumObserver checksumObserver;
+    
+    protected TransferListener mockTransferListener;
+    
+    protected MockControl mockTransferListenerControl;
 
     // ----------------------------------------------------------------------
     // Constructors
@@ -69,6 +104,9 @@
         throws Exception
     {
         checksumObserver = new ChecksumObserver();
+        
+        mockTransferListenerControl = MockControl.createControl( TransferListener.class ); 
+        mockTransferListener = (TransferListener) mockTransferListenerControl.getMock();
 
         super.setUp();
     }
@@ -593,51 +631,130 @@
     protected void putFile( String resourceName, String testFileName, String content )
         throws Exception
     {
-        message( "Putting test artifact: " + resourceName + " into test repository " + testRepository );
+        sourceFile = new File( FileTestUtils.getTestOutputDir(), testFileName );
+        sourceFile.getParentFile().mkdirs();
+        FileUtils.fileWrite( sourceFile.getAbsolutePath(), content );
 
         Wagon wagon = getWagon();
 
+        Resource resource = new Resource( resourceName );
+        mockTransferListener.transferInitiated( createTransferEvent( wagon, resource, TransferEvent.TRANSFER_INITIATED,
+                                                                     TransferEvent.REQUEST_PUT, sourceFile ) );
+        resource = new Resource( resourceName );
+        resource.setContentLength( content.length() );
+        resource.setLastModified( sourceFile.lastModified() );
+        mockTransferListener.transferStarted( createTransferEvent( wagon, resource, TransferEvent.TRANSFER_STARTED,
+                                                                   TransferEvent.REQUEST_PUT, sourceFile ) );
+        mockTransferListener.transferProgress( createTransferEvent( wagon, resource, TransferEvent.TRANSFER_PROGRESS,
+                                                                    TransferEvent.REQUEST_PUT, sourceFile ),
+                                               new byte[] {}, 0 );
+        ProgressArgumentMatcher progressArgumentMatcher = new ProgressArgumentMatcher();
+        mockTransferListenerControl.setMatcher( progressArgumentMatcher );
+
+        mockTransferListener.debug( null );
+        mockTransferListenerControl.setMatcher( MockControl.ALWAYS_MATCHER );
+        mockTransferListenerControl.setVoidCallable( MockControl.ZERO_OR_MORE );
+        
+        mockTransferListener.transferCompleted( createTransferEvent( wagon, resource, TransferEvent.TRANSFER_COMPLETED,
+                                                                     TransferEvent.REQUEST_PUT, sourceFile ) );
+        
+        mockTransferListenerControl.replay();
+        
+        message( "Putting test artifact: " + resourceName + " into test repository " + testRepository );
+
         wagon.addTransferListener( checksumObserver );
 
-        wagon.connect( testRepository, getAuthInfo() );
+        wagon.addTransferListener( mockTransferListener );
 
-        sourceFile = new File( FileTestUtils.getTestOutputDir(), testFileName );
-        sourceFile.getParentFile().mkdirs();
-        FileUtils.fileWrite( sourceFile.getAbsolutePath(), content );
+        wagon.connect( testRepository, getAuthInfo() );
 
         wagon.put( sourceFile, resourceName );
 
+        wagon.removeTransferListener( mockTransferListener );
+        
         wagon.removeTransferListener( checksumObserver );
 
         wagon.disconnect();
+        
+        mockTransferListenerControl.verify();
+        
+        assertEquals( content.length(), progressArgumentMatcher.getSize() );
+        
+        mockTransferListenerControl.reset();
+    }
+
+    private TransferEvent createTransferEvent( Wagon wagon, Resource resource, int eventType, int requestType,
+                                               File file )
+    {
+        TransferEvent transferEvent = new TransferEvent( wagon, resource, eventType, requestType );
+        transferEvent.setLocalFile( file );
+        return transferEvent;
     }
 
-    protected void putFile()
+    protected int putFile()
         throws Exception
     {
-        putFile( resource, "test-resource", "test-resource.txt\n" );
+        String content = "test-resource.txt\n";
+        putFile( resource, "test-resource", content );
+        return content.length();
     }
 
-    protected void getFile()
+    protected void getFile(int expectedSize)
         throws Exception
     {
-        message( "Getting test artifact from test repository " + testRepository );
+        destFile = FileTestUtils.createUniqueFile( getName(), getName() );
+        destFile.deleteOnExit();
 
         Wagon wagon = getWagon();
 
+        Resource resource = new Resource( this.resource );
+        mockTransferListener.transferInitiated( createTransferEvent( wagon, resource, TransferEvent.TRANSFER_INITIATED,
+                                                                     TransferEvent.REQUEST_GET, destFile ) );
+        resource = new Resource( this.resource );
+        resource.setContentLength( expectedSize );
+        resource.setLastModified( getExpectedLastModifiedOnGet() );
+        mockTransferListener.transferStarted( createTransferEvent( wagon, resource, TransferEvent.TRANSFER_STARTED,
+                                                                   TransferEvent.REQUEST_GET, destFile ) );
+        mockTransferListener.transferProgress( new TransferEvent( wagon, resource, TransferEvent.TRANSFER_PROGRESS,
+                                                                  TransferEvent.REQUEST_GET ), new byte[] {}, 0 );
+        ProgressArgumentMatcher progressArgumentMatcher = new ProgressArgumentMatcher();
+        mockTransferListenerControl.setMatcher( progressArgumentMatcher );
+        
+        mockTransferListener.debug( null );
+        mockTransferListenerControl.setMatcher( MockControl.ALWAYS_MATCHER );
+        mockTransferListenerControl.setVoidCallable( MockControl.ZERO_OR_MORE );
+        
+        mockTransferListener.transferCompleted( createTransferEvent( wagon, resource, TransferEvent.TRANSFER_COMPLETED,
+                                                                     TransferEvent.REQUEST_GET, destFile ) );
+        
+        mockTransferListenerControl.replay();
+        
+        message( "Getting test artifact from test repository " + testRepository );
+
         wagon.addTransferListener( checksumObserver );
+        
+        wagon.addTransferListener( mockTransferListener );
 
         wagon.connect( testRepository, getAuthInfo() );
 
-        destFile = FileTestUtils.createUniqueFile( getName(), getName() );
-
-        destFile.deleteOnExit();
-
-        wagon.get( resource, destFile );
+        wagon.get( this.resource, destFile );
 
+        wagon.removeTransferListener( mockTransferListener );
+        
         wagon.removeTransferListener( checksumObserver );
 
         wagon.disconnect();
+        
+        mockTransferListenerControl.verify();
+        
+        assertEquals( expectedSize, progressArgumentMatcher.getSize() );
+        
+        mockTransferListenerControl.reset();
+    }
+
+    protected long getExpectedLastModifiedOnGet()
+    {
+        return sourceFile.lastModified();
     }
 
     protected void fileRoundTripTesting()
@@ -645,7 +762,7 @@
     {
         message( "File round trip testing ..." );
 
-        putFile();
+        int expectedSize = putFile();
 
         assertNotNull( "check checksum is not null", checksumObserver.getActualChecksum() );
 
@@ -653,7 +770,7 @@
 
         checksumObserver = new ChecksumObserver();
 
-        getFile();
+        getFile( expectedSize );
 
         assertNotNull( "check checksum is not null", checksumObserver.getActualChecksum() );
 

Modified: maven/wagon/branches/WAGON-109/wagon-providers/wagon-ftp/src/test/java/org/apache/maven/wagon/providers/ftp/FtpWagonTest.java
URL: http://svn.apache.org/viewvc/maven/wagon/branches/WAGON-109/wagon-providers/wagon-ftp/src/test/java/org/apache/maven/wagon/providers/ftp/FtpWagonTest.java?rev=658096&r1=658095&r2=658096&view=diff
==============================================================================
--- maven/wagon/branches/WAGON-109/wagon-providers/wagon-ftp/src/test/java/org/apache/maven/wagon/providers/ftp/FtpWagonTest.java (original)
+++ maven/wagon/branches/WAGON-109/wagon-providers/wagon-ftp/src/test/java/org/apache/maven/wagon/providers/ftp/FtpWagonTest.java Mon May 19 21:03:43 2008
@@ -37,6 +37,12 @@
         return "ftp";
     }
 
+    protected long getExpectedLastModifiedOnGet()
+    {
+        // granularity for FTP is minutes
+        return ( sourceFile.lastModified() / 60000 ) * 60000;
+    }
+
     protected void setupWagonTestingFixtures()
         throws Exception
     {

Modified: maven/wagon/branches/WAGON-109/wagon-providers/wagon-http-shared/src/main/java/org/apache/maven/wagon/shared/http/AbstractHttpClientWagon.java
URL: http://svn.apache.org/viewvc/maven/wagon/branches/WAGON-109/wagon-providers/wagon-http-shared/src/main/java/org/apache/maven/wagon/shared/http/AbstractHttpClientWagon.java?rev=658096&r1=658095&r2=658096&view=diff
==============================================================================
--- maven/wagon/branches/WAGON-109/wagon-providers/wagon-http-shared/src/main/java/org/apache/maven/wagon/shared/http/AbstractHttpClientWagon.java (original)
+++ maven/wagon/branches/WAGON-109/wagon-providers/wagon-http-shared/src/main/java/org/apache/maven/wagon/shared/http/AbstractHttpClientWagon.java Mon May 19 21:03:43 2008
@@ -19,31 +19,39 @@
  * under the License.
  */
 
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.io.InputStream;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.Locale;
+import java.util.TimeZone;
+import java.util.zip.GZIPInputStream;
+
+import org.apache.commons.httpclient.Credentials;
+import org.apache.commons.httpclient.Header;
+import org.apache.commons.httpclient.HostConfiguration;
+import org.apache.commons.httpclient.HttpClient;
+import org.apache.commons.httpclient.HttpConnectionManager;
+import org.apache.commons.httpclient.HttpMethod;
+import org.apache.commons.httpclient.HttpStatus;
+import org.apache.commons.httpclient.NTCredentials;
+import org.apache.commons.httpclient.UsernamePasswordCredentials;
+import org.apache.commons.httpclient.methods.GetMethod;
+import org.apache.commons.httpclient.methods.HeadMethod;
+import org.apache.commons.httpclient.methods.PutMethod;
+import org.apache.commons.httpclient.util.DateParseException;
+import org.apache.commons.httpclient.util.DateParser;
 import org.apache.maven.wagon.AbstractWagon;
-import org.apache.maven.wagon.TransferFailedException;
 import org.apache.maven.wagon.ResourceDoesNotExistException;
-import org.apache.maven.wagon.repository.Repository;
+import org.apache.maven.wagon.TransferFailedException;
+import org.apache.maven.wagon.authorization.AuthorizationException;
 import org.apache.maven.wagon.events.TransferEvent;
+import org.apache.maven.wagon.repository.Repository;
 import org.apache.maven.wagon.resource.Resource;
-import org.apache.maven.wagon.authorization.AuthorizationException;
-import org.apache.commons.httpclient.*;
-import org.apache.commons.httpclient.util.DateParser;
-import org.apache.commons.httpclient.util.DateParseException;
-import org.apache.commons.httpclient.methods.GetMethod;
-import org.apache.commons.httpclient.methods.HeadMethod;
-import org.apache.commons.httpclient.methods.PutMethod;
-import org.codehaus.plexus.util.StringUtils;
 import org.codehaus.plexus.util.IOUtil;
-
-import java.util.TimeZone;
-import java.util.Locale;
-import java.util.Date;
-import java.util.zip.GZIPInputStream;
-import java.io.File;
-import java.io.InputStream;
-import java.io.IOException;
-import java.io.FileNotFoundException;
-import java.text.SimpleDateFormat;
+import org.codehaus.plexus.util.StringUtils;
 
 /**
  * @author <a href="michal.maczka@dimatics.com">Michal Maczka</a>
@@ -228,6 +236,8 @@
                 try
                 {
                     lastModified = DateParser.parseDate( lastModifiedHeader.getValue() ).getTime();
+                    
+                    resource.setLastModified( lastModified );
                 }
                 catch ( DateParseException e )
                 {
@@ -299,19 +309,21 @@
     public void put( File source, String resourceName )
         throws TransferFailedException, ResourceDoesNotExistException, AuthorizationException
     {
-        put(source, resourceName, true);
+        Resource resource = new Resource( resourceName );
+        
+        firePutInitiated( resource, source );
+
+        put(source, resource);
     }
 
-    protected void put( File source, String resourceName, boolean firePutInitiated )
+    protected void put( File source, Resource resource )
         throws TransferFailedException, ResourceDoesNotExistException, AuthorizationException
     {
-        String url = getRepository().getUrl() + "/" + resourceName;
-        Resource resource = new Resource( resourceName );
-
-        if (firePutInitiated)
-        {
-            firePutInitiated( resource, source );
-        }
+        resource.setContentLength( source.length() );
+        
+        resource.setLastModified( source.lastModified() );
+        
+        String url = getRepository().getUrl() + "/" + resource.getName();
 
         PutMethod putMethod = new PutMethod( url );
         InputStream is = null;
@@ -329,6 +341,8 @@
 
         try
         {
+            firePutStarted( resource, source );
+            
             int statusCode = execute( putMethod );
 
             fireTransferDebug( url + " - Status code: " + statusCode );

Modified: maven/wagon/branches/WAGON-109/wagon-providers/wagon-webdav/src/main/java/org/apache/maven/wagon/providers/webdav/WebDavWagon.java
URL: http://svn.apache.org/viewvc/maven/wagon/branches/WAGON-109/wagon-providers/wagon-webdav/src/main/java/org/apache/maven/wagon/providers/webdav/WebDavWagon.java?rev=658096&r1=658095&r2=658096&view=diff
==============================================================================
--- maven/wagon/branches/WAGON-109/wagon-providers/wagon-webdav/src/main/java/org/apache/maven/wagon/providers/webdav/WebDavWagon.java (original)
+++ maven/wagon/branches/WAGON-109/wagon-providers/wagon-webdav/src/main/java/org/apache/maven/wagon/providers/webdav/WebDavWagon.java Mon May 19 21:03:43 2008
@@ -94,7 +94,7 @@
         //Parent directories need to be created before posting
         mkdirs( dir );
 
-        super.put(source, resourceName, false);
+        super.put(source, resource);
     }
 
     /**



---------------------------------------------------------------------
To unsubscribe, e-mail: wagon-commits-unsubscribe@maven.apache.org
For additional commands, e-mail: wagon-commits-help@maven.apache.org