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