private void ftpRecursivePut()

in wagon-providers/wagon-ssh/src/main/java/org/apache/maven/wagon/providers/ssh/jsch/SftpWagon.java [288:333]


    private void ftpRecursivePut( File sourceFile, String prefix, String fileName, int directoryMode )
        throws TransferFailedException, SftpException
    {
        final RepositoryPermissions permissions = repository.getPermissions();

        if ( sourceFile.isDirectory() )
        {
            // ScpHelper.getResourceFilename( destinationDirectory ) - could return empty string
            if ( !fileName.equals( "." ) && !fileName.equals( "" ) )
            {
                prefix = getFileName( prefix, fileName );
                mkdir( fileName, directoryMode );
                channel.cd( fileName );
            }

            File[] files = sourceFile.listFiles();
            if ( files != null && files.length > 0 )
            {
                // Directories first, then files. Let's go deep early.
                for ( File file : files )
                {
                    if ( file.isDirectory() )
                    {
                        ftpRecursivePut( file, prefix, file.getName(), directoryMode );
                    }
                }
                for ( File file : files )
                {
                    if ( !file.isDirectory() )
                    {
                        ftpRecursivePut( file, prefix, file.getName(), directoryMode );
                    }
                }
            }
            
            channel.cd( ".." );
        }
        else
        {
            Resource resource = ScpHelper.getResource( getFileName( prefix, fileName ) );

            firePutInitiated( resource, sourceFile );

            putFile( sourceFile, resource, permissions );
        }
    }