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/27 12:52:47 UTC

svn commit: r660462 - in /maven/wagon/trunk: wagon-provider-test/src/main/java/org/apache/maven/wagon/ wagon-providers/wagon-ftp/src/test/java/org/apache/maven/wagon/providers/ftp/ wagon-providers/wagon-ssh/src/main/java/org/apache/maven/wagon/provider...

Author: brett
Date: Tue May 27 03:52:46 2008
New Revision: 660462

URL: http://svn.apache.org/viewvc?rev=660462&view=rev
Log:
[WAGON-179] fix SFTP as used by site plugin

Modified:
    maven/wagon/trunk/wagon-provider-test/src/main/java/org/apache/maven/wagon/WagonTestCase.java
    maven/wagon/trunk/wagon-providers/wagon-ftp/src/test/java/org/apache/maven/wagon/providers/ftp/FtpWagonTest.java
    maven/wagon/trunk/wagon-providers/wagon-ssh/src/main/java/org/apache/maven/wagon/providers/ssh/jsch/SftpWagon.java

Modified: maven/wagon/trunk/wagon-provider-test/src/main/java/org/apache/maven/wagon/WagonTestCase.java
URL: http://svn.apache.org/viewvc/maven/wagon/trunk/wagon-provider-test/src/main/java/org/apache/maven/wagon/WagonTestCase.java?rev=660462&r1=660461&r2=660462&view=diff
==============================================================================
--- maven/wagon/trunk/wagon-provider-test/src/main/java/org/apache/maven/wagon/WagonTestCase.java (original)
+++ maven/wagon/trunk/wagon-provider-test/src/main/java/org/apache/maven/wagon/WagonTestCase.java Tue May 27 03:52:46 2008
@@ -381,6 +381,58 @@
     }
 
     /**
+     * Test that when putting a directory that already exists new files get also copied and destination is "."
+     *
+     * @throws Exception
+     * @since 1.0-beta-1
+     */
+    public void testWagonPutDirectoryForDot()
+        throws Exception
+    {
+        final String resourceToCreate = "test-resource-1.txt";
+
+        final String[] resources = {"a/test-resource-2.txt", "a/b/test-resource-3.txt", "c/test-resource-4.txt"};
+
+        setupRepositories();
+
+        setupWagonTestingFixtures();
+
+        Wagon wagon = getWagon();
+
+        if ( wagon.supportsDirectoryCopy() )
+        {
+            sourceFile = new File( FileTestUtils.getTestOutputDir(), "dot-repo" );
+            
+            FileUtils.deleteDirectory( sourceFile );
+
+            createDirectory( wagon, resourceToCreate, "." );
+
+            for ( int i = 0; i < resources.length; i++ )
+            {
+                writeTestFile( resources[i] );
+            }
+
+            wagon.connect( testRepository, getAuthInfo() );
+
+            wagon.putDirectory( sourceFile, "." );
+
+            List resourceNames = new ArrayList( resources.length + 1 );
+
+            resourceNames.add( resourceToCreate );
+            for ( int i = 0; i < resources.length; i++ )
+            {
+                resourceNames.add( resources[i] );
+            }
+
+            assertResourcesAreInRemoteSide( wagon, resourceNames );
+
+            wagon.disconnect();
+        }
+
+        tearDownWagonTestingFixtures();
+    }
+
+    /**
      * Create a directory with a resource and check that the other ones don't exist
      *
      * @param wagon
@@ -392,12 +444,6 @@
         throws Exception
     {
         writeTestFile( resourceToCreate );
-
-        wagon.connect( testRepository, getAuthInfo() );
-
-        wagon.putDirectory( sourceFile, dirName );
-
-        wagon.disconnect();
     }
 
     protected void assertResourcesAreInRemoteSide( Wagon wagon, List resourceNames )

Modified: maven/wagon/trunk/wagon-providers/wagon-ftp/src/test/java/org/apache/maven/wagon/providers/ftp/FtpWagonTest.java
URL: http://svn.apache.org/viewvc/maven/wagon/trunk/wagon-providers/wagon-ftp/src/test/java/org/apache/maven/wagon/providers/ftp/FtpWagonTest.java?rev=660462&r1=660461&r2=660462&view=diff
==============================================================================
--- maven/wagon/trunk/wagon-providers/wagon-ftp/src/test/java/org/apache/maven/wagon/providers/ftp/FtpWagonTest.java (original)
+++ maven/wagon/trunk/wagon-providers/wagon-ftp/src/test/java/org/apache/maven/wagon/providers/ftp/FtpWagonTest.java Tue May 27 03:52:46 2008
@@ -22,6 +22,7 @@
 import java.io.File;
 
 import org.apache.ftpserver.interfaces.FtpServerInterface;
+import org.apache.maven.wagon.Wagon;
 import org.apache.maven.wagon.WagonTestCase;
 import org.apache.maven.wagon.authentication.AuthenticationInfo;
 import org.apache.maven.wagon.repository.Repository;
@@ -47,7 +48,14 @@
         super.setUp();
 
         server = (FtpServerInterface) lookup( FtpServerInterface.ROLE );
-
+    }
+    
+    protected void createDirectory( Wagon wagon, String resourceToCreate, String dirName )
+        throws Exception
+    {
+        super.createDirectory( wagon, resourceToCreate, dirName );
+        
+        getRepositoryDirectory().mkdirs();
     }
 
     protected void tearDownWagonTestingFixtures()
@@ -74,9 +82,14 @@
 
     protected long getExpectedLastModifiedOnGet( Repository repository, Resource resource )
     {
-        File file = getTestFile( "target/test-output/local-repository", resource.getName() );
+        File file = new File( getRepositoryDirectory(), resource.getName() );
         
         // granularity for FTP is minutes
         return ( file.lastModified() / 60000 ) * 60000;
     }
+
+    private File getRepositoryDirectory()
+    {
+        return getTestFile( "target/test-output/local-repository" );
+    }
 }

Modified: maven/wagon/trunk/wagon-providers/wagon-ssh/src/main/java/org/apache/maven/wagon/providers/ssh/jsch/SftpWagon.java
URL: http://svn.apache.org/viewvc/maven/wagon/trunk/wagon-providers/wagon-ssh/src/main/java/org/apache/maven/wagon/providers/ssh/jsch/SftpWagon.java?rev=660462&r1=660461&r2=660462&view=diff
==============================================================================
--- maven/wagon/trunk/wagon-providers/wagon-ssh/src/main/java/org/apache/maven/wagon/providers/ssh/jsch/SftpWagon.java (original)
+++ maven/wagon/trunk/wagon-providers/wagon-ssh/src/main/java/org/apache/maven/wagon/providers/ssh/jsch/SftpWagon.java Tue May 27 03:52:46 2008
@@ -76,9 +76,9 @@
 
             int directoryMode = getDirectoryMode( permissions );
 
-            mkdir( channel, basedir, directoryMode );
+            channel.cd( "/" );
             
-            channel.cd( basedir );
+            mkdirs( channel, basedir + "/", directoryMode );
             
             mkdirs( channel, resourceName, directoryMode );
 
@@ -360,11 +360,16 @@
 
             channel.cd( "/" );
             
-            mkdirs( channel, getRepository().getBasedir(), getDirectoryMode( permissions ) );
-
+            String basedir = getRepository().getBasedir();
+            int directoryMode = getDirectoryMode( permissions );
+            
+            mkdirs( channel, basedir + "/", directoryMode );
+            
             fireTransferDebug( "Recursively uploading directory " + sourceDirectory.getAbsolutePath() + " as "
                 + destinationDirectory );
-            ftpRecursivePut( channel, sourceDirectory, destinationDirectory );
+            
+            mkdirs( channel, destinationDirectory, directoryMode );
+            ftpRecursivePut( channel, sourceDirectory, null, getResourceFilename( destinationDirectory ), directoryMode );
         }
         catch ( SftpException e )
         {
@@ -391,7 +396,7 @@
         }
     }
 
-    private void ftpRecursivePut( ChannelSftp channel, File sourceFile, String fileName )
+    private void ftpRecursivePut( ChannelSftp channel, File sourceFile, String prefix, String fileName, int directoryMode )
         throws TransferFailedException, SftpException
     {
         final RepositoryPermissions permissions = repository.getPermissions();
@@ -400,7 +405,9 @@
         {
             if ( !fileName.equals( "." ) )
             {
-                mkdirs( channel, fileName, getDirectoryMode( permissions ) );
+                prefix = getFileName( prefix, fileName );
+                mkdir( channel, fileName, directoryMode );
+                channel.cd( fileName );
             }
 
             File[] files = sourceFile.listFiles();
@@ -411,30 +418,42 @@
                 {
                     if ( files[i].isDirectory() )
                     {
-                        ftpRecursivePut( channel, files[i], fileName + "/" + files[i].getName() );
+                        ftpRecursivePut( channel, files[i], prefix, files[i].getName(), directoryMode );
                     }
                 }
                 for ( int i = 0; i < files.length; i++ )
                 {
                     if ( !files[i].isDirectory() )
                     {
-                        ftpRecursivePut( channel, files[i], fileName + "/" + files[i].getName() );
+                        ftpRecursivePut( channel, files[i], prefix, files[i].getName(), directoryMode );
                     }
                 }
             }
-
-            // Step back up a directory once we're done with the contents of this one.
+            
             channel.cd( ".." );
         }
         else
         {
-            Resource resource = getResource( fileName );
+            Resource resource = getResource( getFileName( prefix, fileName ) );
 
             firePutInitiated( resource, sourceFile );
 
             putFile( channel, sourceFile, resource, permissions );
         }
     }
+
+    private String getFileName( String prefix, String fileName )
+    {
+        if ( prefix != null )
+        {
+            prefix = prefix + "/" + fileName;
+        }
+        else
+        {
+            prefix = fileName;
+        }
+        return prefix;
+    }
     
     public List getFileList( String destinationDirectory )
         throws TransferFailedException, ResourceDoesNotExistException, AuthorizationException



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