in wagon-providers/wagon-ssh/src/main/java/org/apache/maven/wagon/providers/ssh/jsch/SftpWagon.java [348:406]
public List<String> getFileList( String destinationDirectory )
throws TransferFailedException, ResourceDoesNotExistException, AuthorizationException
{
if ( destinationDirectory.length() == 0 )
{
destinationDirectory = ".";
}
String filename = ScpHelper.getResourceFilename( destinationDirectory );
String dir = ScpHelper.getResourceDirectory( destinationDirectory );
// we already setuped the root directory. Ignore beginning /
if ( dir.length() > 0 && dir.charAt( 0 ) == ScpHelper.PATH_SEPARATOR )
{
dir = dir.substring( 1 );
}
try
{
SftpATTRS attrs = changeToRepositoryDirectory( dir, filename );
if ( ( attrs.getPermissions() & S_IFDIR ) == 0 )
{
throw new TransferFailedException( "Remote path is not a directory:" + dir );
}
@SuppressWarnings( "unchecked" )
List<ChannelSftp.LsEntry> fileList = channel.ls( filename );
List<String> files = new ArrayList<String>( fileList.size() );
for ( ChannelSftp.LsEntry entry : fileList )
{
String name = entry.getFilename();
if ( entry.getAttrs().isDir() )
{
if ( !name.equals( "." ) && !name.equals( ".." ) )
{
if ( !name.endsWith( "/" ) )
{
name += "/";
}
files.add( name );
}
}
else
{
files.add( name );
}
}
return files;
}
catch ( SftpException e )
{
String msg =
"Error occurred while listing '" + destinationDirectory + "' " + "on remote repository: "
+ getRepository().getUrl() + ": " + e.getMessage();
throw new TransferFailedException( msg, e );
}
}