This is an automated email from the ASF dual-hosted git repository. lgoldstein pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/mina-sshd.git
The following commit(s) were added to refs/heads/master by this push: new bba62d6 Expose more public APIs in SftpClient for obtaining an SftpExtension instance bba62d6 is described below commit bba62d683ab7398c885b5e1ddfff2f3ae7f0a958 Author: Lyor Goldstein <lgoldst...@apache.org> AuthorDate: Tue Sep 29 20:09:33 2020 +0300 Expose more public APIs in SftpClient for obtaining an SftpExtension instance --- .../org/apache/sshd/sftp/client/SftpClient.java | 24 ++++++++++++++++++++-- .../sshd/sftp/client/impl/AbstractSftpClient.java | 6 +----- 2 files changed, 23 insertions(+), 7 deletions(-) diff --git a/sshd-sftp/src/main/java/org/apache/sshd/sftp/client/SftpClient.java b/sshd-sftp/src/main/java/org/apache/sshd/sftp/client/SftpClient.java index 28ebef2..47bafb3 100644 --- a/sshd-sftp/src/main/java/org/apache/sshd/sftp/client/SftpClient.java +++ b/sshd-sftp/src/main/java/org/apache/sshd/sftp/client/SftpClient.java @@ -48,7 +48,9 @@ import org.apache.sshd.common.util.GenericUtils; import org.apache.sshd.common.util.ValidateUtils; import org.apache.sshd.common.util.buffer.BufferUtils; import org.apache.sshd.sftp.SftpModuleProperties; +import org.apache.sshd.sftp.client.extensions.BuiltinSftpClientExtensions; import org.apache.sshd.sftp.client.extensions.SftpClientExtension; +import org.apache.sshd.sftp.client.extensions.SftpClientExtensionFactory; import org.apache.sshd.sftp.common.SftpConstants; import org.apache.sshd.sftp.common.SftpHelper; @@ -968,7 +970,14 @@ public interface SftpClient extends SubsystemClient { * implemented by the client * @see #getServerExtensions() */ - <E extends SftpClientExtension> E getExtension(Class<? extends E> extensionType); + default <E extends SftpClientExtension> E getExtension(Class<? extends E> extensionType) { + Object instance = getExtension(BuiltinSftpClientExtensions.fromType(extensionType)); + if (instance == null) { + return null; + } else { + return extensionType.cast(instance); + } + } /** * @param extensionName The extension name @@ -977,7 +986,18 @@ public interface SftpClient extends SubsystemClient { * implemented by the client * @see #getServerExtensions() */ - SftpClientExtension getExtension(String extensionName); + default SftpClientExtension getExtension(String extensionName) { + return getExtension(BuiltinSftpClientExtensions.fromName(extensionName)); + } + + /** + * + * @param factory The {@link SftpClientExtensionFactory} instance to use - ignored if {@code null} + * @return The extension instance - <B>Note:</B> it is up to the caller to invoke + * {@link SftpClientExtension#isSupported()} - {@code null} if this extension type is not + * implemented by the client + */ + SftpClientExtension getExtension(SftpClientExtensionFactory factory); /** * Creates an {@link SftpClient} instance that also closes the underlying {@link #getClientSession() client session} diff --git a/sshd-sftp/src/main/java/org/apache/sshd/sftp/client/impl/AbstractSftpClient.java b/sshd-sftp/src/main/java/org/apache/sshd/sftp/client/impl/AbstractSftpClient.java index c36049e..89df6f5 100644 --- a/sshd-sftp/src/main/java/org/apache/sshd/sftp/client/impl/AbstractSftpClient.java +++ b/sshd-sftp/src/main/java/org/apache/sshd/sftp/client/impl/AbstractSftpClient.java @@ -82,11 +82,7 @@ public abstract class AbstractSftpClient extends AbstractSubsystemClient impleme } @Override - public SftpClientExtension getExtension(String extensionName) { - return getExtension(BuiltinSftpClientExtensions.fromName(extensionName)); - } - - protected SftpClientExtension getExtension(SftpClientExtensionFactory factory) { + public SftpClientExtension getExtension(SftpClientExtensionFactory factory) { if (factory == null) { return null; }