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

Reply via email to