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 2015/05/06 14:58:54 UTC

mina-sshd git commit: [SSHD-453] Make all interfaces that have a close() method implement Closeable

Repository: mina-sshd
Updated Branches:
  refs/heads/master 7067dd335 -> abec3d815


[SSHD-453] Make all interfaces that have a close() method implement Closeable


Project: http://git-wip-us.apache.org/repos/asf/mina-sshd/repo
Commit: http://git-wip-us.apache.org/repos/asf/mina-sshd/commit/abec3d81
Tree: http://git-wip-us.apache.org/repos/asf/mina-sshd/tree/abec3d81
Diff: http://git-wip-us.apache.org/repos/asf/mina-sshd/diff/abec3d81

Branch: refs/heads/master
Commit: abec3d815336fc5311014cd6bd43edc38f89c1d8
Parents: 7067dd3
Author: Lyor Goldstein <lg...@vmware.com>
Authored: Wed May 6 15:58:43 2015 +0300
Committer: Lyor Goldstein <lg...@vmware.com>
Committed: Wed May 6 15:58:43 2015 +0300

----------------------------------------------------------------------
 .../java/org/apache/sshd/ClientChannel.java     |   5 +-
 .../java/org/apache/sshd/agent/SshAgent.java    |   7 +-
 .../org/apache/sshd/agent/SshAgentServer.java   |   9 +-
 .../sshd/agent/common/AbstractAgentProxy.java   |   4 +-
 .../apache/sshd/agent/common/AgentDelegate.java |   4 +-
 .../sshd/agent/common/AgentForwardSupport.java  |   8 +-
 .../sshd/agent/local/AgentForwardedChannel.java |   3 +-
 .../org/apache/sshd/agent/local/AgentImpl.java  |   3 +-
 .../sshd/agent/local/AgentServerProxy.java      |   5 +-
 .../sshd/agent/local/ProxyAgentFactory.java     |   5 +-
 .../org/apache/sshd/agent/unix/AgentClient.java |  10 +-
 .../org/apache/sshd/agent/unix/AgentServer.java |   6 +-
 .../sshd/agent/unix/AgentServerProxy.java       |   5 +-
 .../sshd/client/auth/UserAuthPublicKey.java     |   7 +-
 .../client/channel/AbstractClientChannel.java   |   6 +-
 .../apache/sshd/common/forward/SocksProxy.java  |   6 +-
 .../apache/sshd/common/util/CloseableUtils.java |   7 +
 .../sshd/common/util/DirectoryScanner.java      |   3 +-
 .../sshd/server/x11/X11ForwardSupport.java      |   5 +-
 .../test/java/org/apache/sshd/AgentTest.java    |  71 ++--
 .../org/apache/sshd/PortForwardingLoadTest.java |  44 +--
 .../org/apache/sshd/PortForwardingTest.java     | 324 +++++++++----------
 .../test/java/org/apache/sshd/ProxyTest.java    |  71 ++--
 23 files changed, 324 insertions(+), 294 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/abec3d81/sshd-core/src/main/java/org/apache/sshd/ClientChannel.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/ClientChannel.java b/sshd-core/src/main/java/org/apache/sshd/ClientChannel.java
index 653f490..5e8211e 100644
--- a/sshd-core/src/main/java/org/apache/sshd/ClientChannel.java
+++ b/sshd-core/src/main/java/org/apache/sshd/ClientChannel.java
@@ -18,14 +18,15 @@
  */
 package org.apache.sshd;
 
+import java.io.Closeable;
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.OutputStream;
 
 import org.apache.sshd.client.future.OpenFuture;
+import org.apache.sshd.common.future.CloseFuture;
 import org.apache.sshd.common.io.IoInputStream;
 import org.apache.sshd.common.io.IoOutputStream;
-import org.apache.sshd.common.future.CloseFuture;
 
 /**
  * A client channel used to communicate with
@@ -34,7 +35,7 @@ import org.apache.sshd.common.future.CloseFuture;
  *
  * @author <a href="mailto:dev@mina.apache.org">Apache MINA SSHD Project</a>
  */
-public interface ClientChannel {
+public interface ClientChannel extends Closeable {
 
     String CHANNEL_EXEC = "exec";
     String CHANNEL_SHELL = "shell";

http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/abec3d81/sshd-core/src/main/java/org/apache/sshd/agent/SshAgent.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/agent/SshAgent.java b/sshd-core/src/main/java/org/apache/sshd/agent/SshAgent.java
index 2a791b9..b3b2ff5 100644
--- a/sshd-core/src/main/java/org/apache/sshd/agent/SshAgent.java
+++ b/sshd-core/src/main/java/org/apache/sshd/agent/SshAgent.java
@@ -18,6 +18,7 @@
  */
 package org.apache.sshd.agent;
 
+import java.io.Closeable;
 import java.io.IOException;
 import java.security.KeyPair;
 import java.security.PublicKey;
@@ -26,7 +27,7 @@ import java.util.List;
 /**
  * SSH key agent server
  */
-public interface SshAgent {
+public interface SshAgent extends Closeable {
 
     public static final String SSH_AUTHSOCKET_ENV_NAME = "SSH_AUTH_SOCK";
 
@@ -57,8 +58,4 @@ public interface SshAgent {
     void removeIdentity(PublicKey key) throws IOException;
 
     void removeAllIdentities() throws IOException;
-
-    void close();
-
-
 }

http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/abec3d81/sshd-core/src/main/java/org/apache/sshd/agent/SshAgentServer.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/agent/SshAgentServer.java b/sshd-core/src/main/java/org/apache/sshd/agent/SshAgentServer.java
index bf2089a..233930e 100644
--- a/sshd-core/src/main/java/org/apache/sshd/agent/SshAgentServer.java
+++ b/sshd-core/src/main/java/org/apache/sshd/agent/SshAgentServer.java
@@ -18,10 +18,11 @@
  */
 package org.apache.sshd.agent;
 
-public interface SshAgentServer {
+import java.io.Closeable;
 
+public interface SshAgentServer extends Closeable {
+    /**
+     * @return Agent server identifier
+     */
     String getId();
-
-    void close();
-
 }

http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/abec3d81/sshd-core/src/main/java/org/apache/sshd/agent/common/AbstractAgentProxy.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/agent/common/AbstractAgentProxy.java b/sshd-core/src/main/java/org/apache/sshd/agent/common/AbstractAgentProxy.java
index 498c46f..9960c0d 100644
--- a/sshd-core/src/main/java/org/apache/sshd/agent/common/AbstractAgentProxy.java
+++ b/sshd-core/src/main/java/org/apache/sshd/agent/common/AbstractAgentProxy.java
@@ -99,7 +99,9 @@ public abstract class AbstractAgentProxy implements SshAgent {
         }
     }
 
-    public void close() {
+    @Override
+    public void close() throws IOException {
+        // nothing
     }
 
     protected Buffer createBuffer(byte cmd) {

http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/abec3d81/sshd-core/src/main/java/org/apache/sshd/agent/common/AgentDelegate.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/agent/common/AgentDelegate.java b/sshd-core/src/main/java/org/apache/sshd/agent/common/AgentDelegate.java
index b7daa32..c3ef510 100644
--- a/sshd-core/src/main/java/org/apache/sshd/agent/common/AgentDelegate.java
+++ b/sshd-core/src/main/java/org/apache/sshd/agent/common/AgentDelegate.java
@@ -33,7 +33,9 @@ public class AgentDelegate implements SshAgent {
         this.agent = agent;
     }
 
-    public void close() {
+    @Override
+    public void close() throws IOException {
+        // ignored
     }
 
     public List<Pair<PublicKey, String>> getIdentities() throws IOException {

http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/abec3d81/sshd-core/src/main/java/org/apache/sshd/agent/common/AgentForwardSupport.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/agent/common/AgentForwardSupport.java b/sshd-core/src/main/java/org/apache/sshd/agent/common/AgentForwardSupport.java
index c1a775f..38d75ce 100644
--- a/sshd-core/src/main/java/org/apache/sshd/agent/common/AgentForwardSupport.java
+++ b/sshd-core/src/main/java/org/apache/sshd/agent/common/AgentForwardSupport.java
@@ -52,7 +52,7 @@ public class AgentForwardSupport extends CloseableUtils.AbstractCloseable {
         }
     }
 
-    public synchronized void close() {
+    public synchronized void close() throws IOException {
         if (agentId != null) {
             agentId = null;
             agentServer.close();
@@ -62,7 +62,11 @@ public class AgentForwardSupport extends CloseableUtils.AbstractCloseable {
 
     @Override
     protected void doCloseImmediately() {
-        close();
+        try {
+            close();
+        } catch(IOException e) {
+            throw new RuntimeException("Failed (" + e.getClass().getSimpleName() + ") to close agent: " + e.getMessage(), e); 
+        }
         super.doCloseImmediately();
     }
 

http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/abec3d81/sshd-core/src/main/java/org/apache/sshd/agent/local/AgentForwardedChannel.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/agent/local/AgentForwardedChannel.java b/sshd-core/src/main/java/org/apache/sshd/agent/local/AgentForwardedChannel.java
index 7abf714..4f05443 100644
--- a/sshd-core/src/main/java/org/apache/sshd/agent/local/AgentForwardedChannel.java
+++ b/sshd-core/src/main/java/org/apache/sshd/agent/local/AgentForwardedChannel.java
@@ -45,7 +45,8 @@ public class AgentForwardedChannel extends AbstractClientChannel {
             protected Buffer request(Buffer buffer) throws IOException {
                 return AgentForwardedChannel.this.request(buffer);
             }
-            public void close() {
+            @Override
+            public void close() throws IOException {
                 AgentForwardedChannel.this.close(false);
             }
 

http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/abec3d81/sshd-core/src/main/java/org/apache/sshd/agent/local/AgentImpl.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/agent/local/AgentImpl.java b/sshd-core/src/main/java/org/apache/sshd/agent/local/AgentImpl.java
index dc1694c..6385d9a 100644
--- a/sshd-core/src/main/java/org/apache/sshd/agent/local/AgentImpl.java
+++ b/sshd-core/src/main/java/org/apache/sshd/agent/local/AgentImpl.java
@@ -108,7 +108,8 @@ public class AgentImpl implements SshAgent {
         keys.clear();
     }
 
-    public void close() {
+    @Override
+    public void close() throws IOException {
         closed = true;
         keys.clear();
     }

http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/abec3d81/sshd-core/src/main/java/org/apache/sshd/agent/local/AgentServerProxy.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/agent/local/AgentServerProxy.java b/sshd-core/src/main/java/org/apache/sshd/agent/local/AgentServerProxy.java
index 15c23b2..78cb8ce 100644
--- a/sshd-core/src/main/java/org/apache/sshd/agent/local/AgentServerProxy.java
+++ b/sshd-core/src/main/java/org/apache/sshd/agent/local/AgentServerProxy.java
@@ -63,11 +63,14 @@ public class AgentServerProxy implements SshAgentServer {
         }
     }
 
+    @Override
     public String getId() {
         return id;
     }
 
-    public void close() {
+    @Override
+    public void close() throws IOException {
+        // nothing
     }
 
 }

http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/abec3d81/sshd-core/src/main/java/org/apache/sshd/agent/local/ProxyAgentFactory.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/agent/local/ProxyAgentFactory.java b/sshd-core/src/main/java/org/apache/sshd/agent/local/ProxyAgentFactory.java
index 197d04d..817934a 100644
--- a/sshd-core/src/main/java/org/apache/sshd/agent/local/ProxyAgentFactory.java
+++ b/sshd-core/src/main/java/org/apache/sshd/agent/local/ProxyAgentFactory.java
@@ -65,11 +65,14 @@ public class ProxyAgentFactory implements SshAgentFactory {
         final AgentServerProxy proxy = new AgentServerProxy(service);
         proxies.put(proxy.getId(), proxy);
         return new SshAgentServer() {
+            @Override
             public String getId() {
                 return proxy.getId();
             }
 
-            public void close() {
+            @SuppressWarnings("synthetic-access")
+            @Override
+            public void close() throws IOException {
                 proxies.remove(proxy.getId());
                 proxy.close();
             }

http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/abec3d81/sshd-core/src/main/java/org/apache/sshd/agent/unix/AgentClient.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/agent/unix/AgentClient.java b/sshd-core/src/main/java/org/apache/sshd/agent/unix/AgentClient.java
index e00689a..87f9a26 100644
--- a/sshd-core/src/main/java/org/apache/sshd/agent/unix/AgentClient.java
+++ b/sshd-core/src/main/java/org/apache/sshd/agent/unix/AgentClient.java
@@ -77,7 +77,11 @@ public class AgentClient extends AbstractAgentProxy implements Runnable {
                 e.printStackTrace();
             }
         } finally {
-            close();
+            try {
+                close();
+            } catch(IOException e) {
+                e.printStackTrace();
+            }
         }
     }
 
@@ -103,12 +107,14 @@ public class AgentClient extends AbstractAgentProxy implements Runnable {
         }
     }
 
-    public void close() {
+    @Override
+    public void close() throws IOException {
         if (!closed) {
             closed = true;
             Socket.close(handle);
         }
     }
+
     protected synchronized Buffer request(Buffer buffer) throws IOException {
         int wpos = buffer.wpos();
         buffer.wpos(0);

http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/abec3d81/sshd-core/src/main/java/org/apache/sshd/agent/unix/AgentServer.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/agent/unix/AgentServer.java b/sshd-core/src/main/java/org/apache/sshd/agent/unix/AgentServer.java
index fa5847c..d38b0b2 100644
--- a/sshd-core/src/main/java/org/apache/sshd/agent/unix/AgentServer.java
+++ b/sshd-core/src/main/java/org/apache/sshd/agent/unix/AgentServer.java
@@ -18,6 +18,7 @@
  */
 package org.apache.sshd.agent.unix;
 
+import java.io.Closeable;
 import java.io.IOException;
 
 import org.apache.sshd.agent.SshAgent;
@@ -33,7 +34,7 @@ import org.apache.tomcat.jni.Status;
 /**
  * A server for an SSH Agent
  */
-public class AgentServer {
+public class AgentServer implements Closeable {
 
     private final SshAgent agent;
     private String authSocket;
@@ -83,7 +84,8 @@ public class AgentServer {
         return authSocket;
     }
 
-    public void close() {
+    @Override
+    public void close() throws IOException {
         agent.close();
         Socket.close(handle);
     }

http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/abec3d81/sshd-core/src/main/java/org/apache/sshd/agent/unix/AgentServerProxy.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/agent/unix/AgentServerProxy.java b/sshd-core/src/main/java/org/apache/sshd/agent/unix/AgentServerProxy.java
index 69322f6..993c174 100644
--- a/sshd-core/src/main/java/org/apache/sshd/agent/unix/AgentServerProxy.java
+++ b/sshd-core/src/main/java/org/apache/sshd/agent/unix/AgentServerProxy.java
@@ -71,6 +71,7 @@ public class AgentServerProxy implements SshAgentServer {
                 throwException(result);
             }
             thread = new Thread("sshd-AgentServerProxy-PIPE-" + authSocket) {
+                @SuppressWarnings("synthetic-access")
                 @Override
                 public void run() {
                     try {
@@ -110,11 +111,13 @@ public class AgentServerProxy implements SshAgentServer {
         }
     }
 
+    @Override
     public String getId() {
         return authSocket;
     }
 
-    public synchronized void close() {
+    @Override
+    public synchronized void close() throws IOException {
         if (closed) {
             return;
         }

http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/abec3d81/sshd-core/src/main/java/org/apache/sshd/client/auth/UserAuthPublicKey.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/client/auth/UserAuthPublicKey.java b/sshd-core/src/main/java/org/apache/sshd/client/auth/UserAuthPublicKey.java
index 9ff8487..d58f7be 100644
--- a/sshd-core/src/main/java/org/apache/sshd/client/auth/UserAuthPublicKey.java
+++ b/sshd-core/src/main/java/org/apache/sshd/client/auth/UserAuthPublicKey.java
@@ -18,6 +18,7 @@
  */
 package org.apache.sshd.client.auth;
 
+import java.io.IOException;
 import java.security.KeyPair;
 import java.security.PublicKey;
 import java.util.ArrayList;
@@ -148,7 +149,11 @@ public class UserAuthPublicKey implements UserAuth {
 
     public void destroy() {
         if (agent != null) {
-            agent.close();
+            try {
+                agent.close();  
+            } catch(IOException e) {
+                throw new RuntimeException("Failed (" + e.getClass().getSimpleName() + ") to close agent: " + e.getMessage(), e); 
+            }
         }
     }
 

http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/abec3d81/sshd-core/src/main/java/org/apache/sshd/client/channel/AbstractClientChannel.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/client/channel/AbstractClientChannel.java b/sshd-core/src/main/java/org/apache/sshd/client/channel/AbstractClientChannel.java
index 382e8af..5eb907d 100644
--- a/sshd-core/src/main/java/org/apache/sshd/client/channel/AbstractClientChannel.java
+++ b/sshd-core/src/main/java/org/apache/sshd/client/channel/AbstractClientChannel.java
@@ -21,6 +21,7 @@ package org.apache.sshd.client.channel;
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.OutputStream;
+import java.util.concurrent.atomic.AtomicBoolean;
 
 import org.apache.sshd.ClientChannel;
 import org.apache.sshd.client.future.DefaultOpenFuture;
@@ -45,7 +46,7 @@ import org.apache.sshd.common.util.IoUtils;
  */
 public abstract class AbstractClientChannel extends AbstractChannel implements ClientChannel {
 
-    protected volatile boolean opened;
+    protected final AtomicBoolean opened=new AtomicBoolean();
     protected final String type;
 
     protected Streaming streaming;
@@ -66,6 +67,7 @@ public abstract class AbstractClientChannel extends AbstractChannel implements C
     protected String openFailureMsg;
     protected OpenFuture openFuture;
 
+    @SuppressWarnings("synthetic-access")
     protected AbstractClientChannel(String type) {
         this.type = type;
         this.streaming = Streaming.Sync;
@@ -229,7 +231,7 @@ public abstract class AbstractClientChannel extends AbstractChannel implements C
         this.remoteWindow.init(rwsize, rmpsize);
         try {
             doOpen();
-            this.opened = true;
+            this.opened.set(true);
             this.openFuture.setOpened();
         } catch (Exception e) {
             this.openFuture.setException(e);

http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/abec3d81/sshd-core/src/main/java/org/apache/sshd/common/forward/SocksProxy.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/common/forward/SocksProxy.java b/sshd-core/src/main/java/org/apache/sshd/common/forward/SocksProxy.java
index 3f61908..bbe4fe7 100644
--- a/sshd-core/src/main/java/org/apache/sshd/common/forward/SocksProxy.java
+++ b/sshd-core/src/main/java/org/apache/sshd/common/forward/SocksProxy.java
@@ -18,6 +18,7 @@
  */
 package org.apache.sshd.common.forward;
 
+import java.io.Closeable;
 import java.io.IOException;
 import java.util.Map;
 import java.util.concurrent.ConcurrentHashMap;
@@ -84,7 +85,7 @@ public class SocksProxy extends CloseableUtils.AbstractCloseable implements IoHa
         ioSession.close(false);
     }
 
-    public abstract class Proxy {
+    public abstract class Proxy implements Closeable {
 
         IoSession session;
         TcpipClientChannel channel;
@@ -98,7 +99,8 @@ public class SocksProxy extends CloseableUtils.AbstractCloseable implements IoHa
             channel.getInvertedIn().flush();
         }
 
-        public void close() {
+        @Override
+        public void close() throws IOException {
             if (channel != null) {
                 channel.close(false);
             }

http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/abec3d81/sshd-core/src/main/java/org/apache/sshd/common/util/CloseableUtils.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/common/util/CloseableUtils.java b/sshd-core/src/main/java/org/apache/sshd/common/util/CloseableUtils.java
index 85c3c9f..243d227 100644
--- a/sshd-core/src/main/java/org/apache/sshd/common/util/CloseableUtils.java
+++ b/sshd-core/src/main/java/org/apache/sshd/common/util/CloseableUtils.java
@@ -125,6 +125,7 @@ public class CloseableUtils {
             return this;
         }
 
+        @SuppressWarnings("synthetic-access")
         public Builder parallel(Iterable<? extends Closeable> closeables) {
             return close(new ParallelCloseable(lock, closeables));
         }
@@ -150,6 +151,7 @@ public class CloseableUtils {
 
     public static abstract class IoBaseCloseable implements Closeable {
         // TODO once JDK 8+ becomes the minimum for this project, make it a default method instead of this class
+        @Override
         public void close() throws IOException {
             CloseableUtils.close(this);
         }
@@ -343,6 +345,7 @@ public class CloseableUtils {
          * When preClose() is called, isClosing() == true
          */
         protected void preClose() {
+            // nothing
         }
 
         protected CloseFuture doCloseGracefully() {
@@ -361,6 +364,7 @@ public class CloseableUtils {
             state.set(State.Closed);
         }
 
+        @SuppressWarnings("synthetic-access")
         protected Builder builder() {
             return new Builder(lock);
         }
@@ -379,6 +383,8 @@ public class CloseableUtils {
         @Override
         protected void doCloseImmediately() {
             getInnerCloseable().close(true).addListener(new SshFutureListener<CloseFuture>() {
+                @Override
+                @SuppressWarnings("synthetic-access")
                 public void operationComplete(CloseFuture future) {
                     AbstractInnerCloseable.super.doCloseImmediately();
                 }
@@ -387,5 +393,6 @@ public class CloseableUtils {
     }
 
     private CloseableUtils() {
+        throw new UnsupportedOperationException("No instance allowed");
     }
 }

http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/abec3d81/sshd-core/src/main/java/org/apache/sshd/common/util/DirectoryScanner.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/common/util/DirectoryScanner.java b/sshd-core/src/main/java/org/apache/sshd/common/util/DirectoryScanner.java
index e559628..4375caa 100644
--- a/sshd-core/src/main/java/org/apache/sshd/common/util/DirectoryScanner.java
+++ b/sshd-core/src/main/java/org/apache/sshd/common/util/DirectoryScanner.java
@@ -19,7 +19,6 @@
 package org.apache.sshd.common.util;
 
 import java.io.File;
-import java.io.IOException;
 import java.util.ArrayList;
 import java.util.List;
 
@@ -229,7 +228,7 @@ public class DirectoryScanner {
             throw new IllegalStateException("No includes set ");
         }
 
-        filesIncluded = new ArrayList();
+        filesIncluded = new ArrayList<String>();
 
         scandir(basedir, "");
 

http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/abec3d81/sshd-core/src/main/java/org/apache/sshd/server/x11/X11ForwardSupport.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/server/x11/X11ForwardSupport.java b/sshd-core/src/main/java/org/apache/sshd/server/x11/X11ForwardSupport.java
index ba8eb36..992d5b4 100644
--- a/sshd-core/src/main/java/org/apache/sshd/server/x11/X11ForwardSupport.java
+++ b/sshd-core/src/main/java/org/apache/sshd/server/x11/X11ForwardSupport.java
@@ -40,7 +40,7 @@ import org.apache.sshd.common.util.Readable;
 /**
  * @author <a href="mailto:dev@mina.apache.org">Apache MINA SSHD Project</a>
  */
-public class X11ForwardSupport extends CloseableUtils.AbstractInnerCloseable implements IoHandler, Closeable {
+public class X11ForwardSupport extends CloseableUtils.AbstractInnerCloseable implements IoHandler {
 
     private static String xauthCommand = System.getProperty("sshd.xauthCommand", "xauth");
 
@@ -60,7 +60,8 @@ public class X11ForwardSupport extends CloseableUtils.AbstractInnerCloseable imp
         this.service = service;
     }
 
-    public void close() {
+    @Override
+    public void close() throws IOException {
         close(true);
     }
 

http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/abec3d81/sshd-core/src/test/java/org/apache/sshd/AgentTest.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/test/java/org/apache/sshd/AgentTest.java b/sshd-core/src/test/java/org/apache/sshd/AgentTest.java
index c268d76..d4549aa 100644
--- a/sshd-core/src/test/java/org/apache/sshd/AgentTest.java
+++ b/sshd-core/src/test/java/org/apache/sshd/AgentTest.java
@@ -18,6 +18,12 @@
  */
 package org.apache.sshd;
 
+import static org.apache.sshd.util.Utils.createTestKeyPairProvider;
+import static org.hamcrest.CoreMatchers.notNullValue;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assume.assumeThat;
+
 import java.io.ByteArrayOutputStream;
 import java.io.IOException;
 import java.io.OutputStream;
@@ -42,13 +48,6 @@ import org.apache.sshd.util.EchoShellFactory;
 import org.apache.sshd.util.Utils;
 import org.junit.Test;
 
-import static org.apache.sshd.util.Utils.createTestKeyPairProvider;
-import static org.hamcrest.CoreMatchers.notNullValue;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assume.assumeThat;
-
 public class AgentTest extends BaseTest {
 
     @Test
@@ -58,37 +57,35 @@ public class AgentTest extends BaseTest {
             return;
         }
 
-        AgentServer agent = new AgentServer();
-        String authSocket;
-        try {
-            authSocket = agent.start();
-        } catch (UnsatisfiedLinkError e) {
-            // the native library is not available, so these tests should be skipped
-            authSocket = null;
+        try(AgentServer agent = new AgentServer()) {
+            String authSocket;
+            try {
+                authSocket = agent.start();
+            } catch (UnsatisfiedLinkError e) {
+                // the native library is not available, so these tests should be skipped
+                authSocket = null;
+            }
+            assumeThat(authSocket, notNullValue());
+    
+            try(SshAgent client = new AgentClient(authSocket)) {
+                List<SshAgent.Pair<PublicKey, String>> keys = client.getIdentities();
+                assertNotNull(keys);
+                assertEquals(0, keys.size());
+        
+                KeyPair k = Utils.createTestHostKeyProvider().loadKey(KeyPairProvider.SSH_RSA);
+                client.addIdentity(k, "");
+                keys = client.getIdentities();
+                assertNotNull(keys);
+                assertEquals(1, keys.size());
+        
+                client.removeIdentity(k.getPublic());
+                keys = client.getIdentities();
+                assertNotNull(keys);
+                assertEquals(0, keys.size());
+        
+                client.removeAllIdentities();
+            }    
         }
-        assumeThat(authSocket, notNullValue());
-
-        SshAgent client = new AgentClient(authSocket);
-        List<SshAgent.Pair<PublicKey, String>> keys = client.getIdentities();
-        assertNotNull(keys);
-        assertEquals(0, keys.size());
-
-        KeyPair k = Utils.createTestHostKeyProvider().loadKey(KeyPairProvider.SSH_RSA);
-        client.addIdentity(k, "");
-        keys = client.getIdentities();
-        assertNotNull(keys);
-        assertEquals(1, keys.size());
-
-        client.removeIdentity(k.getPublic());
-        keys = client.getIdentities();
-        assertNotNull(keys);
-        assertEquals(0, keys.size());
-
-        client.removeAllIdentities();
-
-        client.close();
-
-        agent.close();
     }
 
     @Test

http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/abec3d81/sshd-core/src/test/java/org/apache/sshd/PortForwardingLoadTest.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/test/java/org/apache/sshd/PortForwardingLoadTest.java b/sshd-core/src/test/java/org/apache/sshd/PortForwardingLoadTest.java
index bee776c..af63b0c 100644
--- a/sshd-core/src/test/java/org/apache/sshd/PortForwardingLoadTest.java
+++ b/sshd-core/src/test/java/org/apache/sshd/PortForwardingLoadTest.java
@@ -139,24 +139,24 @@ public class PortForwardingLoadTest extends BaseTest {
             public void run() {
                 try {
                     for (int i = 0; i < NUM_ITERATIONS; ++i) {
-                        Socket s = ss.accept();
-                        conCount.incrementAndGet();
-                        InputStream is = s.getInputStream();
-                        ByteArrayOutputStream baos = new ByteArrayOutputStream();
-                        byte[] buf = new byte[8192];
-                        int l;
-                        while (baos.size() < PAYLOAD.length() && (l = is.read(buf)) > 0) {
-                            baos.write(buf, 0, l);
-                        }
-                        if (!PAYLOAD.equals(baos.toString())) {
-                            assertEquals(PAYLOAD, baos.toString());
-                        }
-                        is = new ByteArrayInputStream(baos.toByteArray());
-                        OutputStream os = s.getOutputStream();
-                        while ((l = is.read(buf)) > 0) {
-                            os.write(buf, 0, l);
+                        try(Socket s = ss.accept()) {
+                            conCount.incrementAndGet();
+                            InputStream is = s.getInputStream();
+                            ByteArrayOutputStream baos = new ByteArrayOutputStream();
+                            byte[] buf = new byte[8192];
+                            int l;
+                            while (baos.size() < PAYLOAD.length() && (l = is.read(buf)) > 0) {
+                                baos.write(buf, 0, l);
+                            }
+                            if (!PAYLOAD.equals(baos.toString())) {
+                                assertEquals(PAYLOAD, baos.toString());
+                            }
+                            is = new ByteArrayInputStream(baos.toByteArray());
+                            OutputStream os = s.getOutputStream();
+                            while ((l = is.read(buf)) > 0) {
+                                os.write(buf, 0, l);
+                            }
                         }
-                        s.close();
                     }
                 } catch (Exception e) {
                     e.printStackTrace();
@@ -216,11 +216,11 @@ public class PortForwardingLoadTest extends BaseTest {
                 started[0] = true;
                 try {
                     for (int i = 0; i < NUM_ITERATIONS; ++i) {
-                        Socket s = ss.accept();
-                        conCount.incrementAndGet();
-                        s.getOutputStream().write(PAYLOAD.getBytes());
-                        s.getOutputStream().flush();
-                        s.close();
+                        try(Socket s = ss.accept()) {
+                            conCount.incrementAndGet();
+                            s.getOutputStream().write(PAYLOAD.getBytes());
+                            s.getOutputStream().flush();
+                        }
                     }
                 } catch (Exception e) {
                     e.printStackTrace();

http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/abec3d81/sshd-core/src/test/java/org/apache/sshd/PortForwardingTest.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/test/java/org/apache/sshd/PortForwardingTest.java b/sshd-core/src/test/java/org/apache/sshd/PortForwardingTest.java
index cd21784..5905340 100644
--- a/sshd-core/src/test/java/org/apache/sshd/PortForwardingTest.java
+++ b/sshd-core/src/test/java/org/apache/sshd/PortForwardingTest.java
@@ -18,21 +18,22 @@
  */
 package org.apache.sshd;
 
+import static org.apache.sshd.util.Utils.getFreePort;
+import static org.junit.Assert.assertEquals;
+
 import java.lang.reflect.Field;
 import java.net.InetSocketAddress;
 import java.net.Socket;
 import java.util.HashSet;
 import java.util.Set;
 
-import com.jcraft.jsch.JSch;
-import com.jcraft.jsch.JSchException;
-import com.jcraft.jsch.Session;
 import org.apache.mina.core.buffer.IoBuffer;
 import org.apache.mina.core.service.IoAcceptor;
 import org.apache.mina.core.service.IoHandlerAdapter;
 import org.apache.mina.core.session.IoSession;
 import org.apache.mina.transport.socket.nio.NioSocketAcceptor;
 import org.apache.sshd.client.channel.ChannelDirectTcpip;
+import org.apache.sshd.common.FactoryManager;
 import org.apache.sshd.common.SshdSocketAddress;
 import org.apache.sshd.util.BaseTest;
 import org.apache.sshd.util.BogusForwardingFilter;
@@ -47,8 +48,9 @@ import org.junit.Before;
 import org.junit.Test;
 import org.slf4j.LoggerFactory;
 
-import static org.apache.sshd.util.Utils.getFreePort;
-import static org.junit.Assert.assertEquals;
+import com.jcraft.jsch.JSch;
+import com.jcraft.jsch.JSchException;
+import com.jcraft.jsch.Session;
 
 /**
  * Port forwarding tests
@@ -66,8 +68,8 @@ public class PortForwardingTest extends BaseTest {
     @Before
     public void setUp() throws Exception {
         sshd = SshServer.setUpDefaultServer();
-        sshd.getProperties().put(SshServer.WINDOW_SIZE, "2048");
-        sshd.getProperties().put(SshServer.MAX_PACKET_SIZE, "256");
+        sshd.getProperties().put(FactoryManager.WINDOW_SIZE, "2048");
+        sshd.getProperties().put(FactoryManager.MAX_PACKET_SIZE, "256");
         sshd.setKeyPairProvider(Utils.createTestHostKeyProvider());
         sshd.setShellFactory(new EchoShellFactory());
         sshd.setPasswordAuthenticator(new BogusPasswordAuthenticator());
@@ -114,14 +116,14 @@ public class PortForwardingTest extends BaseTest {
         session.setPortForwardingR(forwardedPort, "localhost", echoPort);
         Thread.sleep(100);
 
-        Socket s = new Socket("localhost", forwardedPort);
-        s.getOutputStream().write("Hello".getBytes());
-        s.getOutputStream().flush();
-        byte[] buf = new byte[1024];
-        int n = s.getInputStream().read(buf);
-        String res = new String(buf, 0, n);
-        assertEquals("Hello", res);
-        s.close();
+        try(Socket s = new Socket("localhost", forwardedPort)) {
+            s.getOutputStream().write("Hello".getBytes());
+            s.getOutputStream().flush();
+            byte[] buf = new byte[1024];
+            int n = s.getInputStream().read(buf);
+            String res = new String(buf, 0, n);
+            assertEquals("Hello", res);
+        }
 
         session.delPortForwardingR(forwardedPort);
         session.disconnect();
@@ -129,49 +131,47 @@ public class PortForwardingTest extends BaseTest {
 
     @Test
     public void testRemoteForwardingNative() throws Exception {
-        ClientSession session = createNativeSession();
-
-        SshdSocketAddress remote = new SshdSocketAddress("", 0);
-        SshdSocketAddress local = new SshdSocketAddress("localhost", echoPort);
-
-        SshdSocketAddress bound = session.startRemotePortForwarding(remote, local);
-
-        Socket s = new Socket(bound.getHostName(), bound.getPort());
-        s.getOutputStream().write("Hello".getBytes());
-        s.getOutputStream().flush();
-        byte[] buf = new byte[1024];
-        int n = s.getInputStream().read(buf);
-        String res = new String(buf, 0, n);
-        assertEquals("Hello", res);
-        s.close();
+        try(ClientSession session = createNativeSession()) {
+            SshdSocketAddress remote = new SshdSocketAddress("", 0);
+            SshdSocketAddress local = new SshdSocketAddress("localhost", echoPort);
+            SshdSocketAddress bound = session.startRemotePortForwarding(remote, local);
+    
+            try(Socket s = new Socket(bound.getHostName(), bound.getPort())) {
+                s.getOutputStream().write("Hello".getBytes());
+                s.getOutputStream().flush();
+                byte[] buf = new byte[1024];
+                int n = s.getInputStream().read(buf);
+                String res = new String(buf, 0, n);
+                assertEquals("Hello", res);
+            }
 
-        session.stopRemotePortForwarding(remote);
-        session.close(false).await();
+            session.stopRemotePortForwarding(remote);
+            session.close(false).await();
+        }
     }
 
     @Test
     public void testRemoteForwardingNativeBigPayload() throws Exception {
-        ClientSession session = createNativeSession();
-
-        SshdSocketAddress remote = new SshdSocketAddress("", 0);
-        SshdSocketAddress local = new SshdSocketAddress("localhost", echoPort);
-
-        SshdSocketAddress bound = session.startRemotePortForwarding(remote, local);
-
-        byte[] buf = new byte[1024];
-
-        Socket s = new Socket(bound.getHostName(), bound.getPort());
-        for (int i = 0; i < 1000; i++) {
-            s.getOutputStream().write("0123456789".getBytes());
-            s.getOutputStream().flush();
-            int n = s.getInputStream().read(buf);
-            String res = new String(buf, 0, n);
-            assertEquals("0123456789", res);
+        try(ClientSession session = createNativeSession()) {
+            SshdSocketAddress remote = new SshdSocketAddress("", 0);
+            SshdSocketAddress local = new SshdSocketAddress("localhost", echoPort);
+            SshdSocketAddress bound = session.startRemotePortForwarding(remote, local);
+
+            byte[] buf = new byte[1024];
+    
+            try(Socket s = new Socket(bound.getHostName(), bound.getPort())) {
+                for (int i = 0; i < 1000; i++) {
+                    s.getOutputStream().write("0123456789".getBytes());
+                    s.getOutputStream().flush();
+                    int n = s.getInputStream().read(buf);
+                    String res = new String(buf, 0, n);
+                    assertEquals("0123456789", res);
+                }
+            }
+    
+            session.stopRemotePortForwarding(remote);
+            session.close(false).await();
         }
-        s.close();
-
-        session.stopRemotePortForwarding(remote);
-        session.close(false).await();
     }
 
     @Test
@@ -181,14 +181,14 @@ public class PortForwardingTest extends BaseTest {
         int forwardedPort = getFreePort();
         session.setPortForwardingL(forwardedPort, "localhost", echoPort);
 
-        Socket s = new Socket("localhost", forwardedPort);
-        s.getOutputStream().write("Hello".getBytes());
-        s.getOutputStream().flush();
-        byte[] buf = new byte[1024];
-        int n = s.getInputStream().read(buf);
-        String res = new String(buf, 0, n);
-        assertEquals("Hello", res);
-        s.close();
+        try(Socket s = new Socket("localhost", forwardedPort)) {
+            s.getOutputStream().write("Hello".getBytes());
+            s.getOutputStream().flush();
+            byte[] buf = new byte[1024];
+            int n = s.getInputStream().read(buf);
+            String res = new String(buf, 0, n);
+            assertEquals("Hello", res);
+        }
 
         session.delPortForwardingL(forwardedPort);
         session.disconnect();
@@ -196,85 +196,84 @@ public class PortForwardingTest extends BaseTest {
 
     @Test
     public void testLocalForwardingNative() throws Exception {
-        ClientSession session = createNativeSession();
-
-        SshdSocketAddress local = new SshdSocketAddress("", 0);
-        SshdSocketAddress remote = new SshdSocketAddress("localhost", echoPort);
-
-        SshdSocketAddress bound = session.startLocalPortForwarding(local, remote);
-
-        Socket s = new Socket(bound.getHostName(), bound.getPort());
-        s.getOutputStream().write("Hello".getBytes());
-        s.getOutputStream().flush();
-        byte[] buf = new byte[1024];
-        int n = s.getInputStream().read(buf);
-        String res = new String(buf, 0, n);
-        assertEquals("Hello", res);
-        s.close();
+        try(ClientSession session = createNativeSession()) {
+            SshdSocketAddress local = new SshdSocketAddress("", 0);
+            SshdSocketAddress remote = new SshdSocketAddress("localhost", echoPort);
+            SshdSocketAddress bound = session.startLocalPortForwarding(local, remote);
+
+            try(Socket s = new Socket(bound.getHostName(), bound.getPort())) {
+                s.getOutputStream().write("Hello".getBytes());
+                s.getOutputStream().flush();
+                byte[] buf = new byte[1024];
+                int n = s.getInputStream().read(buf);
+                String res = new String(buf, 0, n);
+                assertEquals("Hello", res);
+            }
 
-        session.stopLocalPortForwarding(bound);
-        session.close(false).await();
+            session.stopLocalPortForwarding(bound);
+            session.close(false).await();
+        }
     }
 
     @Test
     public void testLocalForwardingNativeReuse() throws Exception {
-        ClientSession session = createNativeSession();
-
-        SshdSocketAddress local = new SshdSocketAddress("", 0);
-        SshdSocketAddress remote = new SshdSocketAddress("localhost", echoPort);
-
-        SshdSocketAddress bound = session.startLocalPortForwarding(local, remote);
-        session.stopLocalPortForwarding(bound);
-
-        SshdSocketAddress bound2 = session.startLocalPortForwarding(local, remote);
-        session.stopLocalPortForwarding(bound2);
-
-        session.close(false).await();
+        try(ClientSession session = createNativeSession()) {
+            SshdSocketAddress local = new SshdSocketAddress("", 0);
+            SshdSocketAddress remote = new SshdSocketAddress("localhost", echoPort);
+            SshdSocketAddress bound = session.startLocalPortForwarding(local, remote);
+
+            session.stopLocalPortForwarding(bound);
+    
+            SshdSocketAddress bound2 = session.startLocalPortForwarding(local, remote);
+            session.stopLocalPortForwarding(bound2);
+    
+            session.close(false).await();
+        }
     }
 
     @Test
     public void testLocalForwardingNativeBigPayload() throws Exception {
-        ClientSession session = createNativeSession();
-
-        SshdSocketAddress local = new SshdSocketAddress("", 0);
-        SshdSocketAddress remote = new SshdSocketAddress("localhost", echoPort);
-
-        SshdSocketAddress bound = session.startLocalPortForwarding(local, remote);
-
-        byte[] buf = new byte[1024];
-        Socket s = new Socket(bound.getHostName(), bound.getPort());
-        for (int i = 0; i < 1000; i++) {
-            s.getOutputStream().write("Hello".getBytes());
-            s.getOutputStream().flush();
-            int n = s.getInputStream().read(buf);
-            String res = new String(buf, 0, n);
-            assertEquals("Hello", res);
+        try(ClientSession session = createNativeSession()) {
+            SshdSocketAddress local = new SshdSocketAddress("", 0);
+            SshdSocketAddress remote = new SshdSocketAddress("localhost", echoPort);
+            SshdSocketAddress bound = session.startLocalPortForwarding(local, remote);
+
+            byte[] buf = new byte[1024];
+            try(Socket s = new Socket(bound.getHostName(), bound.getPort())) {
+                for (int i = 0; i < 1000; i++) {
+                    s.getOutputStream().write("Hello".getBytes());
+                    s.getOutputStream().flush();
+                    int n = s.getInputStream().read(buf);
+                    String res = new String(buf, 0, n);
+                    assertEquals("Hello", res);
+                }
+            }
+    
+            session.stopLocalPortForwarding(bound);
+            session.close(false).await();
         }
-        s.close();
-
-        session.stopLocalPortForwarding(bound);
-        session.close(false).await();
     }
 
     @Test
     public void testForwardingChannel() throws Exception {
-        ClientSession session = createNativeSession();
-
-        SshdSocketAddress local = new SshdSocketAddress("", 0);
-        SshdSocketAddress remote = new SshdSocketAddress("localhost", echoPort);
-
-        ChannelDirectTcpip channel = session.createDirectTcpipChannel(local, remote);
-        channel.open().await();
-
-        channel.getInvertedIn().write("Hello".getBytes());
-        channel.getInvertedIn().flush();
-        byte[] buf = new byte[1024];
-        int n = channel.getInvertedOut().read(buf);
-        String res = new String(buf, 0, n);
-        assertEquals("Hello", res);
-        channel.close(false);
+        try(ClientSession session = createNativeSession()) {
+            SshdSocketAddress local = new SshdSocketAddress("", 0);
+            SshdSocketAddress remote = new SshdSocketAddress("localhost", echoPort);
+
+            try(ChannelDirectTcpip channel = session.createDirectTcpipChannel(local, remote)) {
+                channel.open().await();
+        
+                channel.getInvertedIn().write("Hello".getBytes());
+                channel.getInvertedIn().flush();
+                byte[] buf = new byte[1024];
+                int n = channel.getInvertedOut().read(buf);
+                String res = new String(buf, 0, n);
+                assertEquals("Hello", res);
+                channel.close(false);
+            }
 
-        session.close(false).await();
+            session.close(false).await();
+        }
     }
 
     @Test(timeout = 20000)
@@ -286,39 +285,37 @@ public class PortForwardingTest extends BaseTest {
         session.setPortForwardingR(forwardedPort, "localhost", echoPort);
 
         // 2. Establish a connection through it
-        Socket s = new Socket("localhost", forwardedPort);
-
-        // 3. Simulate the client going away
-        rudelyDisconnectJschSession(session);
-
-        // 4. Make sure the NIOprocessor is not stuck
-        {
-            Thread.sleep(1000);
-            // from here, we need to check all the threads running and find a
-            // "NioProcessor-"
-            // that is stuck on a PortForward.dispose
-            ThreadGroup root = Thread.currentThread().getThreadGroup().getParent();
-            while (root.getParent() != null) {
-                root = root.getParent();
-            }
-            boolean stuck;
-            do {
-                stuck = false;
-                for (Thread t : findThreads(root, "NioProcessor-")) {
-                    stuck = true;
-                }
-                try {
-                    Thread.sleep(1000);
-                } catch (InterruptedException e) {
-
+        try(Socket s = new Socket("localhost", forwardedPort)) {
+            // 3. Simulate the client going away
+            rudelyDisconnectJschSession(session);
+    
+            // 4. Make sure the NIOprocessor is not stuck
+            {
+                Thread.sleep(1000);
+                // from here, we need to check all the threads running and find a
+                // "NioProcessor-"
+                // that is stuck on a PortForward.dispose
+                ThreadGroup root = Thread.currentThread().getThreadGroup().getParent();
+                while (root.getParent() != null) {
+                    root = root.getParent();
                 }
-            } while (stuck);
+                boolean stuck;
+                do {
+                    stuck = false;
+                    for (Thread t : findThreads(root, "NioProcessor-")) {
+                        stuck = true;
+                    }
+                    try {
+                        Thread.sleep(1000);
+                    } catch (InterruptedException e) {
+                        // ignored
+                    }
+                } while (stuck);
+            }
+    
+            session.delPortForwardingR(forwardedPort);
+            session.disconnect();
         }
-
-        session.delPortForwardingR(forwardedPort);
-        session.disconnect();
-
-        s.close();
     }
 
     /**
@@ -332,12 +329,13 @@ public class PortForwardingTest extends BaseTest {
     private void rudelyDisconnectJschSession(Session session) throws Exception {
         Field fSocket = session.getClass().getDeclaredField("socket");
         fSocket.setAccessible(true);
-        Socket socket = (Socket) fSocket.get(session);
-
-        Assert.assertTrue("socket is not connected", socket.isConnected());
-        Assert.assertFalse("socket should not be closed", socket.isClosed());
-        socket.close();
-        Assert.assertTrue("socket has not closed", socket.isClosed());
+        
+        try(Socket socket = (Socket) fSocket.get(session)) {
+            Assert.assertTrue("socket is not connected", socket.isConnected());
+            Assert.assertFalse("socket should not be closed", socket.isClosed());
+            socket.close();
+            Assert.assertTrue("socket has not closed", socket.isClosed());
+        }
     }
 
     private Set<Thread> findThreads(ThreadGroup group, String name) {
@@ -406,8 +404,8 @@ public class PortForwardingTest extends BaseTest {
 
     protected ClientSession createNativeSession() throws Exception {
         client = SshClient.setUpDefaultClient();
-        client.getProperties().put(SshServer.WINDOW_SIZE, "2048");
-        client.getProperties().put(SshServer.MAX_PACKET_SIZE, "256");
+        client.getProperties().put(FactoryManager.WINDOW_SIZE, "2048");
+        client.getProperties().put(FactoryManager.MAX_PACKET_SIZE, "256");
         client.setTcpipForwardingFilter(new BogusForwardingFilter());
         client.start();
 

http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/abec3d81/sshd-core/src/test/java/org/apache/sshd/ProxyTest.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/test/java/org/apache/sshd/ProxyTest.java b/sshd-core/src/test/java/org/apache/sshd/ProxyTest.java
index 0bb3dba..f597b09 100644
--- a/sshd-core/src/test/java/org/apache/sshd/ProxyTest.java
+++ b/sshd-core/src/test/java/org/apache/sshd/ProxyTest.java
@@ -18,19 +18,20 @@
  */
 package org.apache.sshd;
 
-import java.io.IOError;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.fail;
+
 import java.io.IOException;
 import java.net.InetSocketAddress;
 import java.net.Proxy;
 import java.net.Socket;
-import java.net.URL;
-import java.net.URLConnection;
 
 import org.apache.mina.core.buffer.IoBuffer;
 import org.apache.mina.core.service.IoAcceptor;
 import org.apache.mina.core.service.IoHandlerAdapter;
 import org.apache.mina.core.session.IoSession;
 import org.apache.mina.transport.socket.nio.NioSocketAcceptor;
+import org.apache.sshd.common.FactoryManager;
 import org.apache.sshd.common.SshdSocketAddress;
 import org.apache.sshd.util.BaseTest;
 import org.apache.sshd.util.BogusForwardingFilter;
@@ -40,18 +41,11 @@ import org.apache.sshd.util.Utils;
 import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
-import org.slf4j.LoggerFactory;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.fail;
 
 /**
  * Port forwarding tests
  */
 public class ProxyTest extends BaseTest {
-
-    private final org.slf4j.Logger log = LoggerFactory.getLogger(getClass());
-
     private SshServer sshd;
     private int sshPort;
     private int echoPort;
@@ -61,8 +55,8 @@ public class ProxyTest extends BaseTest {
     @Before
     public void setUp() throws Exception {
         sshd = SshServer.setUpDefaultServer();
-        sshd.getProperties().put(SshServer.WINDOW_SIZE, "2048");
-        sshd.getProperties().put(SshServer.MAX_PACKET_SIZE, "256");
+        sshd.getProperties().put(FactoryManager.WINDOW_SIZE, "2048");
+        sshd.getProperties().put(FactoryManager.MAX_PACKET_SIZE, "256");
         sshd.setKeyPairProvider(Utils.createTestHostKeyProvider());
         sshd.setShellFactory(new EchoShellFactory());
         sshd.setPasswordAuthenticator(new BogusPasswordAuthenticator());
@@ -103,39 +97,40 @@ public class ProxyTest extends BaseTest {
 
     @Test
     public void testSocksProxy() throws Exception {
-        ClientSession session = createNativeSession();
+        try(ClientSession session = createNativeSession()) {
+            SshdSocketAddress dynamic = session.startDynamicPortForwarding(new SshdSocketAddress("localhost", 0));
 
-        SshdSocketAddress dynamic = session.startDynamicPortForwarding(new SshdSocketAddress("localhost", 0));
-
-        for (int i = 0; i < 10; i++) {
-            Socket s = new Socket(new Proxy(Proxy.Type.SOCKS, new InetSocketAddress("localhost", dynamic.getPort())));
-            s.connect(new InetSocketAddress("localhost", echoPort));
-            s.getOutputStream().write("foo".getBytes());
-            s.getOutputStream().flush();
             byte[] buf = new byte[1024];
-            int l = s.getInputStream().read(buf);
-            s.close();
-            assertEquals("foo", new String(buf, 0, l));
-        }
-
-        session.stopDynamicPortForwarding(dynamic);
+            for (int i = 0, l = 0; i < 10; i++) {
+                try(Socket s = new Socket(new Proxy(Proxy.Type.SOCKS, new InetSocketAddress("localhost", dynamic.getPort())))) {
+                    s.connect(new InetSocketAddress("localhost", echoPort));
+                    s.getOutputStream().write("foo".getBytes());
+                    s.getOutputStream().flush();
+                    l = s.getInputStream().read(buf);
+                }
+                assertEquals("foo", new String(buf, 0, l));
+            }
 
-        try {
-            Socket s = new Socket(new Proxy(Proxy.Type.SOCKS, new InetSocketAddress("localhost", dynamic.getPort())));
-            s.connect(new InetSocketAddress("localhost", echoPort));
-            s.getOutputStream().write("foo".getBytes());
-            fail("Expected IOException");
-        } catch (IOException e) {
-            // expected
+            session.stopDynamicPortForwarding(dynamic);
+    
+            try {
+                try(Socket s = new Socket(new Proxy(Proxy.Type.SOCKS, new InetSocketAddress("localhost", dynamic.getPort())))) {
+                    s.connect(new InetSocketAddress("localhost", echoPort));
+                    s.getOutputStream().write("foo".getBytes());
+                    fail("Expected IOException");
+                }
+            } catch (IOException e) {
+                // expected
+            }
+    
+            session.close(false).await();
         }
-
-        session.close(false).await();
     }
 
     protected ClientSession createNativeSession() throws Exception {
         client = SshClient.setUpDefaultClient();
-        client.getProperties().put(SshServer.WINDOW_SIZE, "2048");
-        client.getProperties().put(SshServer.MAX_PACKET_SIZE, "256");
+        client.getProperties().put(FactoryManager.WINDOW_SIZE, "2048");
+        client.getProperties().put(FactoryManager.MAX_PACKET_SIZE, "256");
         client.setTcpipForwardingFilter(new BogusForwardingFilter());
         client.start();
 
@@ -144,8 +139,6 @@ public class ProxyTest extends BaseTest {
         session.auth().verify();
         return session;
     }
-
-
 }