You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@mina.apache.org by "Lyor Goldstein (Jira)" <ji...@apache.org> on 2023/09/19 15:46:00 UTC

[jira] [Comment Edited] (SSHD-1333) Adding java.nio.file.CopyOption to SCP transfer methods

    [ https://issues.apache.org/jira/browse/SSHD-1333?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17766857#comment-17766857 ] 

Lyor Goldstein edited comment on SSHD-1333 at 9/19/23 3:45 PM:
---------------------------------------------------------------

I understand that - my question was what would be the +semantics+ of the extra supported options. Please note that any other option makes no sense. Please note that we can only support what SCP protocol allows - adding a bunch of options that have no meaning only muddle the API. If you need to call {{FileSystemProvider#copy(Path, Path, CopyOption...)}} then do so after translating the SCP options to {{CopyOption}}-s - if such translation is even possible
{code:java|title=StandardCopyOption(s)}
package java.nio.file;

/**
 * Defines the standard copy options.
 *
 * @since 1.7
 */

public enum StandardCopyOption implements CopyOption {
    /**
     * Replace an existing file if it exists.
     */
    REPLACE_EXISTING,
    /**
     * Copy attributes to the new file.
     */
    COPY_ATTRIBUTES,
    /**
     * Move the file as an atomic file system operation.
     */
    ATOMIC_MOVE;
}
{code}

{code:java|title=SCP options}
public interface ScpClient extends SessionHolder<ClientSession>, ClientSessionHolder {
    enum Option {
        Recursive("-r"),
        PreserveAttributes("-p"),
        TargetIsDirectory("-d"),
        ;

        private final String optionValue;

        Option(String optionValue) {
            this.optionValue = optionValue;
        }

        /**
         * @return The option value to use in the issued SCP command
         */
        public String getOptionValue() {
            return optionValue;
        }
    }
{code}


was (Author: lgoldstein):
I understand that - my question was what would be the +semantics+ of the extra supported options. Please note that any other option makes no sense.

> Adding java.nio.file.CopyOption to SCP transfer methods
> -------------------------------------------------------
>
>                 Key: SSHD-1333
>                 URL: https://issues.apache.org/jira/browse/SSHD-1333
>             Project: MINA SSHD
>          Issue Type: New Feature
>            Reporter: dgü
>            Priority: Major
>
> Hello!
> remote-to-remote file transfer is available in SCP protocol. If I'm not wrong, it is not available in SFTP protocol.
> I'm trying to use the following code to handle remote-to-remote file transfer.
> {code:java}
>  public class SSHDFileSystemProvider extends SftpFileSystemProvider {
>     private final static String URI_SCHEME = "ssh";
>     
>     private final static boolean PRESERVE_ATTRIBUTES = true;
>     @Override
>     public String getScheme() {
>         return URI_SCHEME;
>     }
>     @Override
>     public void copy(Path sourcePath, Path targetPath, CopyOption... options)
>             throws IOException {
>         ClientSession sourceClientSession = ((SftpFileSystem) (sourcePath.getFileSystem())).getClientSession();
>         ClientSession targetClientSession = ((SftpFileSystem) (targetPath.getFileSystem())).getClientSession();
>         ScpRemote2RemoteTransferHelper helper = new ScpRemote2RemoteTransferHelper(sourceClientSession, targetClientSession);
>         helper.transferFile(sourcePath.toString(), targetPath.toString(), PRESERVE_ATTRIBUTES);
>     }
> }
> {code}
> _ScpRemote2RemoteTransferHelper.transferFile(String,String,boolean)_ accepts preserve attributes only as the copy option.
> My request:
>  - is it possible to add java.nio.file.CopyOption to SCP transfer methods? 
> Thanks in advance?



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@mina.apache.org
For additional commands, e-mail: dev-help@mina.apache.org