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 <[email protected]>
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;
}