You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mina.apache.org by lg...@apache.org on 2020/04/08 14:18:20 UTC
[mina-sshd] branch master updated: [SSHD-975] Use target
interface's class loader for proxies
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 60bdb04 [SSHD-975] Use target interface's class loader for proxies
60bdb04 is described below
commit 60bdb04642cbcb82501841b9f25601c5532d537b
Author: Robert Varga <ro...@pantheon.tech>
AuthorDate: Wed Apr 8 17:17:45 2020 +0300
[SSHD-975] Use target interface's class loader for proxies
---
.../main/java/org/apache/sshd/common/channel/AbstractChannel.java | 3 +--
.../org/apache/sshd/common/forward/DefaultForwarderFactory.java | 2 +-
.../org/apache/sshd/common/forward/DefaultForwardingFilter.java | 2 +-
.../org/apache/sshd/common/helpers/AbstractFactoryManager.java | 7 +++----
.../sshd/common/session/AbstractConnectionServiceFactory.java | 2 +-
.../sshd/common/session/helpers/AbstractConnectionService.java | 3 +--
.../org/apache/sshd/common/session/helpers/AbstractSession.java | 7 +++----
.../main/java/org/apache/sshd/client/scp/SimpleScpClientImpl.java | 2 +-
.../main/java/org/apache/sshd/server/scp/ScpCommandFactory.java | 6 ++----
.../sshd/client/subsystem/sftp/impl/SimpleSftpClientImpl.java | 2 +-
.../server/subsystem/sftp/AbstractSftpEventListenerManager.java | 2 +-
.../sshd/server/subsystem/sftp/AbstractSftpSubsystemHelper.java | 2 +-
12 files changed, 17 insertions(+), 23 deletions(-)
diff --git a/sshd-core/src/main/java/org/apache/sshd/common/channel/AbstractChannel.java b/sshd-core/src/main/java/org/apache/sshd/common/channel/AbstractChannel.java
index d8ebe09..4a393b0 100644
--- a/sshd-core/src/main/java/org/apache/sshd/common/channel/AbstractChannel.java
+++ b/sshd-core/src/main/java/org/apache/sshd/common/channel/AbstractChannel.java
@@ -130,8 +130,7 @@ public abstract class AbstractChannel
gracefulFuture = new DefaultCloseFuture(discriminator, futureLock);
localWindow = new Window(this, null, client, true);
remoteWindow = new Window(this, null, client, false);
- channelListenerProxy = EventListenerUtils.proxyWrapper(
- ChannelListener.class, getClass().getClassLoader(), channelListeners);
+ channelListenerProxy = EventListenerUtils.proxyWrapper(ChannelListener.class, channelListeners);
executor = executorService;
addRequestHandlers(handlers);
}
diff --git a/sshd-core/src/main/java/org/apache/sshd/common/forward/DefaultForwarderFactory.java b/sshd-core/src/main/java/org/apache/sshd/common/forward/DefaultForwarderFactory.java
index ace0562..6c6e042 100644
--- a/sshd-core/src/main/java/org/apache/sshd/common/forward/DefaultForwarderFactory.java
+++ b/sshd-core/src/main/java/org/apache/sshd/common/forward/DefaultForwarderFactory.java
@@ -51,7 +51,7 @@ public class DefaultForwarderFactory implements ForwardingFilterFactory, PortFor
private final PortForwardingEventListener listenerProxy;
public DefaultForwarderFactory() {
- listenerProxy = EventListenerUtils.proxyWrapper(PortForwardingEventListener.class, getClass().getClassLoader(), listeners);
+ listenerProxy = EventListenerUtils.proxyWrapper(PortForwardingEventListener.class, listeners);
}
@Override
diff --git a/sshd-core/src/main/java/org/apache/sshd/common/forward/DefaultForwardingFilter.java b/sshd-core/src/main/java/org/apache/sshd/common/forward/DefaultForwardingFilter.java
index 7673920..5be03e1 100644
--- a/sshd-core/src/main/java/org/apache/sshd/common/forward/DefaultForwardingFilter.java
+++ b/sshd-core/src/main/java/org/apache/sshd/common/forward/DefaultForwardingFilter.java
@@ -117,7 +117,7 @@ public class DefaultForwardingFilter
public DefaultForwardingFilter(ConnectionService service) {
this.service = Objects.requireNonNull(service, "No connection service");
this.sessionInstance = Objects.requireNonNull(service.getSession(), "No session");
- this.listenerProxy = EventListenerUtils.proxyWrapper(PortForwardingEventListener.class, getClass().getClassLoader(), listeners);
+ this.listenerProxy = EventListenerUtils.proxyWrapper(PortForwardingEventListener.class, listeners);
}
@Override
diff --git a/sshd-core/src/main/java/org/apache/sshd/common/helpers/AbstractFactoryManager.java b/sshd-core/src/main/java/org/apache/sshd/common/helpers/AbstractFactoryManager.java
index 65306eb..32e745b 100644
--- a/sshd-core/src/main/java/org/apache/sshd/common/helpers/AbstractFactoryManager.java
+++ b/sshd-core/src/main/java/org/apache/sshd/common/helpers/AbstractFactoryManager.java
@@ -100,13 +100,12 @@ public abstract class AbstractFactoryManager extends AbstractKexFactoryManager i
private IoServiceEventListener eventListener;
protected AbstractFactoryManager() {
- ClassLoader loader = getClass().getClassLoader();
sessionListenerProxy =
- EventListenerUtils.proxyWrapper(SessionListener.class, loader, sessionListeners);
+ EventListenerUtils.proxyWrapper(SessionListener.class, sessionListeners);
channelListenerProxy =
- EventListenerUtils.proxyWrapper(ChannelListener.class, loader, channelListeners);
+ EventListenerUtils.proxyWrapper(ChannelListener.class, channelListeners);
tunnelListenerProxy =
- EventListenerUtils.proxyWrapper(PortForwardingEventListener.class, loader, tunnelListeners);
+ EventListenerUtils.proxyWrapper(PortForwardingEventListener.class, tunnelListeners);
}
@Override
diff --git a/sshd-core/src/main/java/org/apache/sshd/common/session/AbstractConnectionServiceFactory.java b/sshd-core/src/main/java/org/apache/sshd/common/session/AbstractConnectionServiceFactory.java
index 1d80778..ae9e2aa 100644
--- a/sshd-core/src/main/java/org/apache/sshd/common/session/AbstractConnectionServiceFactory.java
+++ b/sshd-core/src/main/java/org/apache/sshd/common/session/AbstractConnectionServiceFactory.java
@@ -36,7 +36,7 @@ public abstract class AbstractConnectionServiceFactory extends AbstractLoggingBe
private final PortForwardingEventListener listenerProxy;
protected AbstractConnectionServiceFactory() {
- listenerProxy = EventListenerUtils.proxyWrapper(PortForwardingEventListener.class, getClass().getClassLoader(), listeners);
+ listenerProxy = EventListenerUtils.proxyWrapper(PortForwardingEventListener.class, listeners);
}
@Override
diff --git a/sshd-core/src/main/java/org/apache/sshd/common/session/helpers/AbstractConnectionService.java b/sshd-core/src/main/java/org/apache/sshd/common/session/helpers/AbstractConnectionService.java
index 5bcae35..6f8233e 100644
--- a/sshd-core/src/main/java/org/apache/sshd/common/session/helpers/AbstractConnectionService.java
+++ b/sshd-core/src/main/java/org/apache/sshd/common/session/helpers/AbstractConnectionService.java
@@ -120,8 +120,7 @@ public abstract class AbstractConnectionService
protected AbstractConnectionService(AbstractSession session) {
sessionInstance = Objects.requireNonNull(session, "No session");
- listenerProxy = EventListenerUtils.proxyWrapper(
- PortForwardingEventListener.class, getClass().getClassLoader(), listeners);
+ listenerProxy = EventListenerUtils.proxyWrapper(PortForwardingEventListener.class, listeners);
}
@Override
diff --git a/sshd-core/src/main/java/org/apache/sshd/common/session/helpers/AbstractSession.java b/sshd-core/src/main/java/org/apache/sshd/common/session/helpers/AbstractSession.java
index d654844..5c95ab3 100644
--- a/sshd-core/src/main/java/org/apache/sshd/common/session/helpers/AbstractSession.java
+++ b/sshd-core/src/main/java/org/apache/sshd/common/session/helpers/AbstractSession.java
@@ -238,13 +238,12 @@ public abstract class AbstractSession extends SessionHelper {
refreshConfiguration();
- ClassLoader loader = getClass().getClassLoader();
sessionListenerProxy = EventListenerUtils.proxyWrapper(
- SessionListener.class, loader, sessionListeners);
+ SessionListener.class, sessionListeners);
channelListenerProxy = EventListenerUtils.proxyWrapper(
- ChannelListener.class, loader, channelListeners);
+ ChannelListener.class, channelListeners);
tunnelListenerProxy = EventListenerUtils.proxyWrapper(
- PortForwardingEventListener.class, loader, tunnelListeners);
+ PortForwardingEventListener.class, tunnelListeners);
try {
signalSessionEstablished(ioSession);
diff --git a/sshd-scp/src/main/java/org/apache/sshd/client/scp/SimpleScpClientImpl.java b/sshd-scp/src/main/java/org/apache/sshd/client/scp/SimpleScpClientImpl.java
index c863c6c..82040b5 100644
--- a/sshd-scp/src/main/java/org/apache/sshd/client/scp/SimpleScpClientImpl.java
+++ b/sshd-scp/src/main/java/org/apache/sshd/client/scp/SimpleScpClientImpl.java
@@ -120,7 +120,7 @@ public class SimpleScpClientImpl extends AbstractLoggingBean implements SimpleSc
}
protected CloseableScpClient createScpClient(ClientSession session, ScpClient client) throws IOException {
- ClassLoader loader = getClass().getClassLoader();
+ ClassLoader loader = CloseableScpClient.class.getClassLoader();
Class<?>[] interfaces = {CloseableScpClient.class};
return (CloseableScpClient) Proxy.newProxyInstance(loader, interfaces, (proxy, method, args) -> {
String name = method.getName();
diff --git a/sshd-scp/src/main/java/org/apache/sshd/server/scp/ScpCommandFactory.java b/sshd-scp/src/main/java/org/apache/sshd/server/scp/ScpCommandFactory.java
index 6a18102..37a46c2 100644
--- a/sshd-scp/src/main/java/org/apache/sshd/server/scp/ScpCommandFactory.java
+++ b/sshd-scp/src/main/java/org/apache/sshd/server/scp/ScpCommandFactory.java
@@ -110,8 +110,7 @@ public class ScpCommandFactory
public ScpCommandFactory() {
super(SCP_FACTORY_NAME);
- listenerProxy = EventListenerUtils.proxyWrapper(
- ScpTransferEventListener.class, getClass().getClassLoader(), listeners);
+ listenerProxy = EventListenerUtils.proxyWrapper(ScpTransferEventListener.class, listeners);
}
@Override
@@ -222,8 +221,7 @@ public class ScpCommandFactory
ScpCommandFactory other = getClass().cast(super.clone());
// clone the listeners set as well
other.listeners = new CopyOnWriteArraySet<>(this.listeners);
- other.listenerProxy = EventListenerUtils.proxyWrapper(
- ScpTransferEventListener.class, getClass().getClassLoader(), other.listeners);
+ other.listenerProxy = EventListenerUtils.proxyWrapper(ScpTransferEventListener.class, other.listeners);
return other;
} catch (CloneNotSupportedException e) {
throw new RuntimeException(e); // un-expected...
diff --git a/sshd-sftp/src/main/java/org/apache/sshd/client/subsystem/sftp/impl/SimpleSftpClientImpl.java b/sshd-sftp/src/main/java/org/apache/sshd/client/subsystem/sftp/impl/SimpleSftpClientImpl.java
index 30b4a8b..468610a 100644
--- a/sshd-sftp/src/main/java/org/apache/sshd/client/subsystem/sftp/impl/SimpleSftpClientImpl.java
+++ b/sshd-sftp/src/main/java/org/apache/sshd/client/subsystem/sftp/impl/SimpleSftpClientImpl.java
@@ -143,7 +143,7 @@ public class SimpleSftpClientImpl extends AbstractLoggingBean implements SimpleS
}
protected SftpClient createSftpClient(ClientSession session, SftpClient client) throws IOException {
- ClassLoader loader = getClass().getClassLoader();
+ ClassLoader loader = SftpClient.class.getClassLoader();
Class<?>[] interfaces = {SftpClient.class};
return (SftpClient) Proxy.newProxyInstance(loader, interfaces, (proxy, method, args) -> {
Throwable err = null;
diff --git a/sshd-sftp/src/main/java/org/apache/sshd/server/subsystem/sftp/AbstractSftpEventListenerManager.java b/sshd-sftp/src/main/java/org/apache/sshd/server/subsystem/sftp/AbstractSftpEventListenerManager.java
index 11508b3..92d3ded 100644
--- a/sshd-sftp/src/main/java/org/apache/sshd/server/subsystem/sftp/AbstractSftpEventListenerManager.java
+++ b/sshd-sftp/src/main/java/org/apache/sshd/server/subsystem/sftp/AbstractSftpEventListenerManager.java
@@ -32,7 +32,7 @@ public abstract class AbstractSftpEventListenerManager implements SftpEventListe
private final SftpEventListener sftpEventListenerProxy;
protected AbstractSftpEventListenerManager() {
- sftpEventListenerProxy = EventListenerUtils.proxyWrapper(SftpEventListener.class, getClass().getClassLoader(), sftpEventListeners);
+ sftpEventListenerProxy = EventListenerUtils.proxyWrapper(SftpEventListener.class, sftpEventListeners);
}
public Collection<SftpEventListener> getRegisteredListeners() {
diff --git a/sshd-sftp/src/main/java/org/apache/sshd/server/subsystem/sftp/AbstractSftpSubsystemHelper.java b/sshd-sftp/src/main/java/org/apache/sshd/server/subsystem/sftp/AbstractSftpSubsystemHelper.java
index b171d1b..1380251 100644
--- a/sshd-sftp/src/main/java/org/apache/sshd/server/subsystem/sftp/AbstractSftpSubsystemHelper.java
+++ b/sshd-sftp/src/main/java/org/apache/sshd/server/subsystem/sftp/AbstractSftpSubsystemHelper.java
@@ -211,7 +211,7 @@ public abstract class AbstractSftpSubsystemHelper
fileSystemAccessor =
Objects.requireNonNull(accessor, "No file system accessor");
sftpEventListenerProxy =
- EventListenerUtils.proxyWrapper(SftpEventListener.class, getClass().getClassLoader(), sftpEventListeners);
+ EventListenerUtils.proxyWrapper(SftpEventListener.class, sftpEventListeners);
errorStatusDataHandler =
Objects.requireNonNull(handler, "No error status data handler");
}