private void ftpRecursivePut()

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


    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);
        }
    }