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 <robert.va...@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");
     }

Reply via email to