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/20 11:11:53 UTC

[2/2] mina-sshd git commit: [SSHD-414] Make the source code (including tests) truly 1.5 compatible

[SSHD-414] Make the source code (including tests) truly 1.5 compatible


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

Branch: refs/heads/master
Commit: e2f7ff7206284b8d0e1b217a8975b9c61775b178
Parents: a7e2e3f
Author: Lyor Goldstein <lg...@vmware.com>
Authored: Wed May 20 12:11:40 2015 +0300
Committer: Lyor Goldstein <lg...@vmware.com>
Committed: Wed May 20 12:11:40 2015 +0300

----------------------------------------------------------------------
 .../java/org/apache/sshd/ClientSession.java     |   2 +
 .../org/apache/sshd/agent/SshAgentFactory.java  |   1 -
 .../sshd/agent/common/AbstractAgentClient.java  |   3 +-
 .../apache/sshd/agent/common/AgentDelegate.java |   5 +
 .../sshd/agent/common/AgentForwardSupport.java  |   2 +
 .../org/apache/sshd/agent/local/AgentImpl.java  |   5 +
 .../agent/local/ChannelAgentForwarding.java     |   4 +-
 .../sshd/agent/local/ProxyAgentFactory.java     |   3 +
 .../sshd/agent/unix/AgentForwardedChannel.java  |   2 +
 .../org/apache/sshd/agent/unix/AgentServer.java |  10 +-
 .../sshd/agent/unix/ChannelAgentForwarding.java |   2 +
 .../sshd/client/ClientFactoryManager.java       |   1 +
 .../org/apache/sshd/client/SessionFactory.java  |   1 +
 .../org/apache/sshd/client/SftpException.java   |   2 +-
 .../auth/UserAuthKeyboardInteractive.java       |   4 +-
 .../sshd/client/channel/ChannelDirectTcpip.java |   7 +-
 .../sshd/client/channel/ChannelSession.java     |   3 +-
 .../sshd/client/channel/ChannelShell.java       |   1 +
 .../sshd/client/channel/ChannelSubsystem.java   |   2 +
 .../channel/PtyCapableChannelSession.java       |  34 ++--
 .../client/future/DefaultConnectFuture.java     |   5 +
 .../client/kex/AbstractDHClientKeyExchange.java |   1 +
 .../sshd/client/scp/DefaultScpClient.java       |   4 +-
 .../client/session/ClientConnectionService.java |   9 +-
 .../sshd/client/session/ClientSessionImpl.java  |   2 +-
 .../client/session/ClientUserAuthService.java   |   6 +
 .../client/sftp/SftpFileSystemProvider.java     | 195 +++++++++++--------
 .../org/apache/sshd/client/sftp/SftpPath.java   |   2 +
 .../sshd/common/AbstractSessionIoHandler.java   |   4 +
 .../java/org/apache/sshd/common/Channel.java    |   1 +
 .../org/apache/sshd/common/KeyPairProvider.java |   1 -
 .../java/org/apache/sshd/common/PtyMode.java    |   4 +-
 .../org/apache/sshd/common/RequestHandler.java  |   1 -
 .../apache/sshd/common/RuntimeSshException.java |   1 +
 .../java/org/apache/sshd/common/Service.java    |   3 +-
 .../java/org/apache/sshd/common/Session.java    |   3 +
 .../org/apache/sshd/common/SshConstants.java    |   4 -
 .../apache/sshd/common/SshdSocketAddress.java   |   2 +-
 .../apache/sshd/common/digest/BaseDigest.java   |   4 +
 .../sshd/common/file/root/RootedFileSystem.java |   2 +-
 .../sshd/common/file/root/RootedPath.java       |   2 +
 .../apache/sshd/common/file/util/BasePath.java  |  24 +++
 .../virtualfs/VirtualFileSystemFactory.java     |   1 +
 .../common/forward/DefaultTcpipForwarder.java   |  20 +-
 .../forward/DefaultTcpipForwarderFactory.java   |   4 +-
 .../apache/sshd/common/forward/SocksProxy.java  |  13 +-
 .../sshd/common/forward/TcpipClientChannel.java |   7 +-
 .../sshd/common/forward/TcpipServerChannel.java |  20 +-
 .../sshd/common/future/DefaultCloseFuture.java  |   4 +-
 .../org/apache/sshd/common/io/IoSession.java    |   1 +
 .../sshd/common/io/mina/MinaAcceptor.java       |   6 +
 .../sshd/common/io/mina/MinaConnector.java      |   7 +
 .../apache/sshd/common/io/mina/MinaService.java |  19 +-
 .../apache/sshd/common/io/mina/MinaSession.java |  21 +-
 .../apache/sshd/common/io/mina/MinaSupport.java |   2 +
 .../java/org/apache/sshd/common/kex/DHG.java    |   3 +
 .../common/kex/dh/AbstractDHKeyExchange.java    |   4 +
 .../session/AbstractConnectionService.java      |  33 +++-
 .../sshd/common/session/ConnectionService.java  |   2 -
 .../sshd/common/util/EventListenerUtils.java    |   1 +
 .../apache/sshd/common/util/SecurityUtils.java  |   2 +
 .../apache/sshd/common/util/SelectorUtils.java  |  12 +-
 .../apache/sshd/common/util/SttySupport.java    |   8 +-
 .../org/apache/sshd/server/AsyncCommand.java    |   4 -
 .../auth/CachingPublicKeyAuthenticator.java     |  21 +-
 .../sshd/server/auth/gss/CredentialHelper.java  |   8 +-
 .../server/channel/ChannelDataReceiver.java     |   1 +
 .../server/channel/OpenChannelException.java    |   1 +
 .../sshd/server/command/UnknownCommand.java     |   8 +-
 .../global/CancelTcpipForwardHandler.java       |   1 +
 .../sshd/server/global/KeepAliveHandler.java    |   2 +-
 .../server/global/NoMoreSessionsHandler.java    |   2 +-
 .../sshd/server/global/TcpipForwardHandler.java |   1 +
 .../server/jaas/JaasPasswordAuthenticator.java  |   2 -
 .../server/kex/AbstractDHServerKeyExchange.java |   2 +
 .../server/session/ServerConnectionService.java |   4 +
 .../server/session/ServerUserAuthService.java   |  17 +-
 .../sshd/server/session/SessionFactory.java     |   1 +
 .../sshd/server/shell/InvertedShellWrapper.java |   8 +
 .../sshd/server/x11/X11ForwardSupport.java      |   4 +-
 .../deprecated/ClientUserAuthServiceOld.java    |   8 +-
 .../sshd/deprecated/UserAuthPassword.java       |   4 +-
 82 files changed, 465 insertions(+), 198 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/e2f7ff72/sshd-core/src/main/java/org/apache/sshd/ClientSession.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/ClientSession.java b/sshd-core/src/main/java/org/apache/sshd/ClientSession.java
index e1d587c..fca6b4a 100644
--- a/sshd-core/src/main/java/org/apache/sshd/ClientSession.java
+++ b/sshd-core/src/main/java/org/apache/sshd/ClientSession.java
@@ -214,6 +214,7 @@ public interface ClientSession extends Session {
     /**
      * Close this session.
      */
+    @Override
     CloseFuture close(boolean immediately);
 
     /**
@@ -224,6 +225,7 @@ public interface ClientSession extends Session {
     /**
      * Return ClientFactoryManager for this session.
      */
+    @Override
     ClientFactoryManager getFactoryManager();
 
     /**

http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/e2f7ff72/sshd-core/src/main/java/org/apache/sshd/agent/SshAgentFactory.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/agent/SshAgentFactory.java b/sshd-core/src/main/java/org/apache/sshd/agent/SshAgentFactory.java
index ff50ac5..7fb8ebc 100644
--- a/sshd-core/src/main/java/org/apache/sshd/agent/SshAgentFactory.java
+++ b/sshd-core/src/main/java/org/apache/sshd/agent/SshAgentFactory.java
@@ -23,7 +23,6 @@ import java.io.IOException;
 import org.apache.sshd.common.Channel;
 import org.apache.sshd.common.FactoryManager;
 import org.apache.sshd.common.NamedFactory;
-import org.apache.sshd.common.Session;
 import org.apache.sshd.common.session.ConnectionService;
 
 /**

http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/e2f7ff72/sshd-core/src/main/java/org/apache/sshd/agent/common/AbstractAgentClient.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/agent/common/AbstractAgentClient.java b/sshd-core/src/main/java/org/apache/sshd/agent/common/AbstractAgentClient.java
index 6f68856..44d6c23 100644
--- a/sshd-core/src/main/java/org/apache/sshd/agent/common/AbstractAgentClient.java
+++ b/sshd-core/src/main/java/org/apache/sshd/agent/common/AbstractAgentClient.java
@@ -33,11 +33,12 @@ import java.security.PublicKey;
 import java.util.List;
 
 import org.apache.sshd.agent.SshAgent;
+import org.apache.sshd.common.util.AbstractLoggingBean;
 import org.apache.sshd.common.util.KeyUtils;
 import org.apache.sshd.common.util.buffer.Buffer;
 import org.apache.sshd.common.util.buffer.ByteArrayBuffer;
 
-public abstract class AbstractAgentClient {
+public abstract class AbstractAgentClient extends AbstractLoggingBean {
 
     private final Buffer buffer = new ByteArrayBuffer();
     private final SshAgent agent;

http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/e2f7ff72/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 c3ef510..26df439 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
@@ -38,22 +38,27 @@ public class AgentDelegate implements SshAgent {
         // ignored
     }
 
+    @Override
     public List<Pair<PublicKey, String>> getIdentities() throws IOException {
         return agent.getIdentities();
     }
 
+    @Override
     public byte[] sign(PublicKey key, byte[] data) throws IOException {
         return agent.sign(key, data);
     }
 
+    @Override
     public void addIdentity(KeyPair key, String comment) throws IOException {
         agent.addIdentity(key, comment);
     }
 
+    @Override
     public void removeIdentity(PublicKey key) throws IOException {
         agent.removeIdentity(key);
     }
 
+    @Override
     public void removeAllIdentities() throws IOException {
         agent.removeAllIdentities();
     }

http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/e2f7ff72/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 38d75ce..8184498 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,6 +52,7 @@ public class AgentForwardSupport extends CloseableUtils.AbstractCloseable {
         }
     }
 
+    @Override
     public synchronized void close() throws IOException {
         if (agentId != null) {
             agentId = null;
@@ -70,6 +71,7 @@ public class AgentForwardSupport extends CloseableUtils.AbstractCloseable {
         super.doCloseImmediately();
     }
 
+    @Override
     public String toString() {
         return getClass().getSimpleName() + "[" + service.getSession() + "]";
     }

http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/e2f7ff72/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 6385d9a..d4c6850 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
@@ -42,6 +42,7 @@ public class AgentImpl implements SshAgent {
     private final List<Pair<KeyPair, String>> keys = new ArrayList<Pair<KeyPair, String>>();
     private boolean closed;
 
+    @Override
     public List<Pair<PublicKey, String>> getIdentities() throws IOException {
         if (closed) {
             throw new SshException("Agent closed");
@@ -53,6 +54,7 @@ public class AgentImpl implements SshAgent {
         return pks;
     }
 
+    @Override
     public byte[] sign(PublicKey key, byte[] data) throws IOException {
         if (closed) {
             throw new SshException("Agent closed");
@@ -83,6 +85,7 @@ public class AgentImpl implements SshAgent {
         }
     }
 
+    @Override
     public void addIdentity(KeyPair key, String comment) throws IOException {
         if (closed) {
             throw new SshException("Agent closed");
@@ -90,6 +93,7 @@ public class AgentImpl implements SshAgent {
         keys.add(new Pair<KeyPair, String>(key, comment));
     }
 
+    @Override
     public void removeIdentity(PublicKey key) throws IOException {
         if (closed) {
             throw new SshException("Agent closed");
@@ -101,6 +105,7 @@ public class AgentImpl implements SshAgent {
         keys.remove(kp);
     }
 
+    @Override
     public void removeAllIdentities() throws IOException {
         if (closed) {
             throw new SshException("Agent closed");

http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/e2f7ff72/sshd-core/src/main/java/org/apache/sshd/agent/local/ChannelAgentForwarding.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/agent/local/ChannelAgentForwarding.java b/sshd-core/src/main/java/org/apache/sshd/agent/local/ChannelAgentForwarding.java
index e06298c..5b59be4 100644
--- a/sshd-core/src/main/java/org/apache/sshd/agent/local/ChannelAgentForwarding.java
+++ b/sshd-core/src/main/java/org/apache/sshd/agent/local/ChannelAgentForwarding.java
@@ -67,6 +67,7 @@ public class ChannelAgentForwarding extends AbstractServerChannel {
     private AgentClient client;
 
     public ChannelAgentForwarding() {
+        super();
     }
 
     @Override
@@ -101,6 +102,7 @@ public class ChannelAgentForwarding extends AbstractServerChannel {
     public CloseFuture close(boolean immediately) {
         return super.close(immediately).addListener(new SshFutureListener<CloseFuture>() {
             @Override
+            @SuppressWarnings("synthetic-access")
             public void operationComplete(CloseFuture sshFuture) {
                 closeImmediately0();
             }
@@ -123,8 +125,8 @@ public class ChannelAgentForwarding extends AbstractServerChannel {
         throw new UnsupportedOperationException("AgentForward channel does not support extended data");
     }
 
+    @SuppressWarnings("synthetic-access")
     protected class AgentClient extends AbstractAgentClient {
-
         public AgentClient() {
             super(agent);
         }

http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/e2f7ff72/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 ec93844..6f5e307 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
@@ -38,10 +38,12 @@ public class ProxyAgentFactory implements SshAgentFactory {
 
     private final Map<String, AgentServerProxy> proxies = new ConcurrentHashMap<String, AgentServerProxy>();
 
+    @Override
     public NamedFactory<Channel> getChannelForwardingFactory() {
         return new ChannelAgentForwarding.ChannelAgentForwardingFactory();
     }
 
+    @Override
     public SshAgent createClient(FactoryManager manager) throws IOException {
         String proxyId = FactoryManagerUtils.getString(manager, SshAgent.SSH_AUTHSOCKET_ENV_NAME);
         if (GenericUtils.isEmpty(proxyId)) {
@@ -56,6 +58,7 @@ public class ProxyAgentFactory implements SshAgentFactory {
         return proxy.createClient();
     }
 
+    @Override
     public SshAgentServer createServer(ConnectionService service) throws IOException {
         Session session = service.getSession();
         if (!(session instanceof ServerSession)) {

http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/e2f7ff72/sshd-core/src/main/java/org/apache/sshd/agent/unix/AgentForwardedChannel.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/agent/unix/AgentForwardedChannel.java b/sshd-core/src/main/java/org/apache/sshd/agent/unix/AgentForwardedChannel.java
index 486c837..418b05d 100644
--- a/sshd-core/src/main/java/org/apache/sshd/agent/unix/AgentForwardedChannel.java
+++ b/sshd-core/src/main/java/org/apache/sshd/agent/unix/AgentForwardedChannel.java
@@ -35,6 +35,7 @@ public class AgentForwardedChannel extends AbstractClientChannel implements Runn
         this.socket = socket;
     }
 
+    @Override
     public void run() {
         try {
             byte[] buf = new byte[1024];
@@ -69,6 +70,7 @@ public class AgentForwardedChannel extends AbstractClientChannel implements Runn
         super.doCloseImmediately();
     }
 
+    @Override
     protected synchronized void doWriteData(byte[] data, int off, int len) throws IOException {
         localWindow.consumeAndCheck(len);
         int result = Socket.send(socket, data, off, len);

http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/e2f7ff72/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 4536df0..52146da 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
@@ -24,6 +24,7 @@ import java.io.IOException;
 import org.apache.sshd.agent.SshAgent;
 import org.apache.sshd.agent.common.AbstractAgentClient;
 import org.apache.sshd.agent.local.AgentImpl;
+import org.apache.sshd.common.util.AbstractLoggingBean;
 import org.apache.sshd.common.util.buffer.Buffer;
 import org.apache.sshd.common.util.buffer.ByteArrayBuffer;
 import org.apache.tomcat.jni.Local;
@@ -35,7 +36,7 @@ import org.apache.tomcat.jni.Status;
 /**
  * A server for an SSH Agent
  */
-public class AgentServer implements Closeable {
+public class AgentServer extends AbstractLoggingBean implements Closeable {
 
     private final SshAgent agent;
     private String authSocket;
@@ -69,6 +70,7 @@ public class AgentServer implements Closeable {
             throwException(result);
         }
         thread = new Thread() {
+            @SuppressWarnings("synthetic-access")
             @Override
             public void run() {
                 try {
@@ -78,7 +80,7 @@ public class AgentServer implements Closeable {
                         new SshAgentSession(clientSock, agent);
                     }
                 } catch (Exception e) {
-                    e.printStackTrace();
+                    log.error("Failed to run session", e);
                 }
             }
         };
@@ -102,6 +104,7 @@ public class AgentServer implements Closeable {
             new Thread(this).start();
         }
 
+        @SuppressWarnings("synthetic-access")
         @Override
         public void run() {
             try {
@@ -116,12 +119,13 @@ public class AgentServer implements Closeable {
                     messageReceived(new ByteArrayBuffer(buf, 0, result));
                 }
             } catch (Exception e) {
-                e.printStackTrace();
+                log.error("Failed to process", e);
             } finally {
                 Socket.close(socket);
             }
         }
 
+        @SuppressWarnings("synthetic-access")
         @Override
         protected void reply(Buffer buf) throws IOException {
             int result = Socket.send(socket, buf.array(), buf.rpos(), buf.available());

http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/e2f7ff72/sshd-core/src/main/java/org/apache/sshd/agent/unix/ChannelAgentForwarding.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/agent/unix/ChannelAgentForwarding.java b/sshd-core/src/main/java/org/apache/sshd/agent/unix/ChannelAgentForwarding.java
index decd46c..1913652 100644
--- a/sshd-core/src/main/java/org/apache/sshd/agent/unix/ChannelAgentForwarding.java
+++ b/sshd-core/src/main/java/org/apache/sshd/agent/unix/ChannelAgentForwarding.java
@@ -83,6 +83,7 @@ public class ChannelAgentForwarding extends AbstractServerChannel {
                 throwException(result);
             }
             thread = new Thread() {
+                @SuppressWarnings("synthetic-access")
                 @Override
                 public void run() {
                     try {
@@ -124,6 +125,7 @@ public class ChannelAgentForwarding extends AbstractServerChannel {
     @Override
     public CloseFuture close(boolean immediately) {
         return super.close(immediately).addListener(new SshFutureListener<CloseFuture>() {
+            @SuppressWarnings("synthetic-access")
             @Override
             public void operationComplete(CloseFuture sshFuture) {
                 closeImmediately0();

http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/e2f7ff72/sshd-core/src/main/java/org/apache/sshd/client/ClientFactoryManager.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/client/ClientFactoryManager.java b/sshd-core/src/main/java/org/apache/sshd/client/ClientFactoryManager.java
index 2121ae7..a9014ed 100644
--- a/sshd-core/src/main/java/org/apache/sshd/client/ClientFactoryManager.java
+++ b/sshd-core/src/main/java/org/apache/sshd/client/ClientFactoryManager.java
@@ -68,6 +68,7 @@ public interface ClientFactoryManager extends FactoryManager {
      *
      * @return A <code>TcpipForwarderFactory</code>
      */
+    @Override
     TcpipForwarderFactory getTcpipForwarderFactory();
 
     /**

http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/e2f7ff72/sshd-core/src/main/java/org/apache/sshd/client/SessionFactory.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/client/SessionFactory.java b/sshd-core/src/main/java/org/apache/sshd/client/SessionFactory.java
index c5b3885..c5d011a 100644
--- a/sshd-core/src/main/java/org/apache/sshd/client/SessionFactory.java
+++ b/sshd-core/src/main/java/org/apache/sshd/client/SessionFactory.java
@@ -39,6 +39,7 @@ public class SessionFactory extends AbstractSessionFactory {
         this.client = client;
     }
 
+    @Override
     protected AbstractSession doCreateSession(IoSession ioSession) throws Exception {
         return new ClientSessionImpl(client, ioSession);
     }

http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/e2f7ff72/sshd-core/src/main/java/org/apache/sshd/client/SftpException.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/client/SftpException.java b/sshd-core/src/main/java/org/apache/sshd/client/SftpException.java
index 80e9064..f06d406 100644
--- a/sshd-core/src/main/java/org/apache/sshd/client/SftpException.java
+++ b/sshd-core/src/main/java/org/apache/sshd/client/SftpException.java
@@ -24,7 +24,7 @@ import java.io.IOException;
  * @author <a href="http://mina.apache.org">Apache MINA Project</a>
  */
 public class SftpException extends IOException {
-
+    private static final long serialVersionUID = 8096963562429466995L;
     private final int status;
 
     public SftpException(int status, String msg) {

http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/e2f7ff72/sshd-core/src/main/java/org/apache/sshd/client/auth/UserAuthKeyboardInteractive.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/client/auth/UserAuthKeyboardInteractive.java b/sshd-core/src/main/java/org/apache/sshd/client/auth/UserAuthKeyboardInteractive.java
index b27b182..241381b 100644
--- a/sshd-core/src/main/java/org/apache/sshd/client/auth/UserAuthKeyboardInteractive.java
+++ b/sshd-core/src/main/java/org/apache/sshd/client/auth/UserAuthKeyboardInteractive.java
@@ -111,7 +111,9 @@ public class UserAuthKeyboardInteractive extends AbstractLoggingBean implements
             String name = buffer.getString();
             String instruction = buffer.getString();
             String language_tag = buffer.getString();
-            log.info("Received {} {} {}", new Object[]{name, instruction, language_tag});
+            if (log.isDebugEnabled()) {
+                log.debug("SSH_MSG_USERAUTH_INFO_REQUEST {} {} {}", name, instruction, language_tag);
+            }
             int num = buffer.getInt();
             String[] prompt = new String[num];
             boolean[] echo = new boolean[num];

http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/e2f7ff72/sshd-core/src/main/java/org/apache/sshd/client/channel/ChannelDirectTcpip.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/client/channel/ChannelDirectTcpip.java b/sshd-core/src/main/java/org/apache/sshd/client/channel/ChannelDirectTcpip.java
index bb3c94f..da3f0ad 100644
--- a/sshd-core/src/main/java/org/apache/sshd/client/channel/ChannelDirectTcpip.java
+++ b/sshd-core/src/main/java/org/apache/sshd/client/channel/ChannelDirectTcpip.java
@@ -19,8 +19,6 @@
 package org.apache.sshd.client.channel;
 
 import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
 import java.net.InetAddress;
 import java.net.UnknownHostException;
 
@@ -69,7 +67,10 @@ public class ChannelDirectTcpip extends AbstractClientChannel {
             throw new SshException("Session has been closed");
         }
         openFuture = new DefaultOpenFuture(lock);
-        log.info("Send SSH_MSG_CHANNEL_OPEN on channel {}", id);
+        if (log.isDebugEnabled()) {
+            log.debug("Send SSH_MSG_CHANNEL_OPEN on channel {}", Integer.valueOf(id));
+        }
+
         Buffer buffer = session.createBuffer(SshConstants.SSH_MSG_CHANNEL_OPEN);
         buffer.putString(type);
         buffer.putInt(id);

http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/e2f7ff72/sshd-core/src/main/java/org/apache/sshd/client/channel/ChannelSession.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/client/channel/ChannelSession.java b/sshd-core/src/main/java/org/apache/sshd/client/channel/ChannelSession.java
index fe254fc..91d6153 100644
--- a/sshd-core/src/main/java/org/apache/sshd/client/channel/ChannelSession.java
+++ b/sshd-core/src/main/java/org/apache/sshd/client/channel/ChannelSession.java
@@ -46,6 +46,7 @@ public class ChannelSession extends AbstractClientChannel {
     protected void doOpen() throws IOException {
         if (streaming == Streaming.Async) {
             asyncIn = new ChannelAsyncOutputStream(this, SshConstants.SSH_MSG_CHANNEL_DATA) {
+                @SuppressWarnings("synthetic-access")
                 @Override
                 protected CloseFuture doCloseGracefully() {
                     try {
@@ -113,7 +114,7 @@ public class ChannelSession extends AbstractClientChannel {
             }
         } catch (Exception e) {
             if (!isClosing()) {
-                log.info("Caught exception", e);
+                log.debug("Caught exception", e);
                 close(false);
             }
         }

http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/e2f7ff72/sshd-core/src/main/java/org/apache/sshd/client/channel/ChannelShell.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/client/channel/ChannelShell.java b/sshd-core/src/main/java/org/apache/sshd/client/channel/ChannelShell.java
index f9a1c25..f7d24e7 100644
--- a/sshd-core/src/main/java/org/apache/sshd/client/channel/ChannelShell.java
+++ b/sshd-core/src/main/java/org/apache/sshd/client/channel/ChannelShell.java
@@ -34,6 +34,7 @@ public class ChannelShell extends PtyCapableChannelSession {
         super(true);
     }
 
+    @Override
     protected void doOpen() throws IOException {
         doOpenPty();
 

http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/e2f7ff72/sshd-core/src/main/java/org/apache/sshd/client/channel/ChannelSubsystem.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/client/channel/ChannelSubsystem.java b/sshd-core/src/main/java/org/apache/sshd/client/channel/ChannelSubsystem.java
index 1073b05..9250847 100644
--- a/sshd-core/src/main/java/org/apache/sshd/client/channel/ChannelSubsystem.java
+++ b/sshd-core/src/main/java/org/apache/sshd/client/channel/ChannelSubsystem.java
@@ -41,6 +41,7 @@ public class ChannelSubsystem extends ChannelSession {
         this.subsystem = subsystem;
     }
 
+    @Override
     protected void doOpen() throws IOException {
         log.debug("Send SSH_MSG_CHANNEL_REQUEST exec");
         Buffer buffer = session.createBuffer(SshConstants.SSH_MSG_CHANNEL_REQUEST);
@@ -55,6 +56,7 @@ public class ChannelSubsystem extends ChannelSession {
 
     public void onClose(final Runnable run) {
         closeFuture.addListener(new SshFutureListener<CloseFuture>() {
+            @Override
             public void operationComplete(CloseFuture future) {
                 run.run();
             }

http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/e2f7ff72/sshd-core/src/main/java/org/apache/sshd/client/channel/PtyCapableChannelSession.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/client/channel/PtyCapableChannelSession.java b/sshd-core/src/main/java/org/apache/sshd/client/channel/PtyCapableChannelSession.java
index 2c7448b..a345b8b 100644
--- a/sshd-core/src/main/java/org/apache/sshd/client/channel/PtyCapableChannelSession.java
+++ b/sshd-core/src/main/java/org/apache/sshd/client/channel/PtyCapableChannelSession.java
@@ -58,13 +58,13 @@ public class PtyCapableChannelSession extends ChannelSession {
         ptyHeight = 480;
         // Set up default pty modes
         ptyModes = new HashMap<PtyMode, Integer>();
-        ptyModes.put(PtyMode.ISIG, 1);
-        ptyModes.put(PtyMode.ICANON, 1);
-        ptyModes.put(PtyMode.ECHO, 1);
-        ptyModes.put(PtyMode.ECHOE, 1);
-        ptyModes.put(PtyMode.ECHOK, 1);
-        ptyModes.put(PtyMode.ECHONL, 0);
-        ptyModes.put(PtyMode.NOFLSH, 0);
+        ptyModes.put(PtyMode.ISIG, Integer.valueOf(1));
+        ptyModes.put(PtyMode.ICANON, Integer.valueOf(1));
+        ptyModes.put(PtyMode.ECHO, Integer.valueOf(1));
+        ptyModes.put(PtyMode.ECHOE, Integer.valueOf(1));
+        ptyModes.put(PtyMode.ECHOK, Integer.valueOf(1));
+        ptyModes.put(PtyMode.ECHONL, Integer.valueOf(0));
+        ptyModes.put(PtyMode.NOFLSH, Integer.valueOf(0));
     }
 
     public void setupSensibleDefaultPty() {
@@ -153,7 +153,9 @@ public class PtyCapableChannelSession extends ChannelSession {
         Buffer buffer;
 
         if (agentForwarding) {
-            log.debug("Send agent forwarding request");
+            if (log.isDebugEnabled()) {
+                log.debug("Send agent forwarding request - recipient={}", Integer.valueOf(recipient));
+            }
             buffer = session.createBuffer(SshConstants.SSH_MSG_CHANNEL_REQUEST);
             buffer.putInt(recipient);
             buffer.putString("auth-agent-req@openssh.com");
@@ -162,7 +164,12 @@ public class PtyCapableChannelSession extends ChannelSession {
         }
 
         if (usePty) {
-            log.debug("Send SSH_MSG_CHANNEL_REQUEST pty-req");
+            if (log.isDebugEnabled()) {
+                log.debug("Send SSH_MSG_CHANNEL_REQUEST pty-req: type={}, cols={}, lines={}, height={}, width={}, modes={}",
+                          ptyType, Integer.valueOf(ptyColumns), Integer.valueOf(ptyLines),
+                          Integer.valueOf(ptyHeight), Integer.valueOf(ptyWidth), ptyModes);
+            }
+
             buffer = session.createBuffer(SshConstants.SSH_MSG_CHANNEL_REQUEST);
             buffer.putInt(recipient);
             buffer.putString("pty-req");
@@ -172,10 +179,13 @@ public class PtyCapableChannelSession extends ChannelSession {
             buffer.putInt(ptyLines);
             buffer.putInt(ptyHeight);
             buffer.putInt(ptyWidth);
+
             Buffer modes = new ByteArrayBuffer();
-            for (PtyMode mode : ptyModes.keySet()) {
+            for (Map.Entry<PtyMode,? extends Number> modeEntry : ptyModes.entrySet()) {
+                PtyMode mode = modeEntry.getKey();
+                Number value = modeEntry.getValue();
                 modes.putByte((byte) mode.toInt());
-                modes.putInt(ptyModes.get(mode));
+                modes.putInt(value.longValue());
             }
             modes.putByte((byte) 0);
             buffer.putBytes(modes.getCompactData());
@@ -183,7 +193,7 @@ public class PtyCapableChannelSession extends ChannelSession {
         }
 
         if (!env.isEmpty()) {
-            log.debug("Send SSH_MSG_CHANNEL_REQUEST env");
+            log.debug("Send SSH_MSG_CHANNEL_REQUEST env: {}", env);
             for (Map.Entry<String, String> entry : env.entrySet()) {
                 buffer = session.createBuffer(SshConstants.SSH_MSG_CHANNEL_REQUEST);
                 buffer.putInt(recipient);

http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/e2f7ff72/sshd-core/src/main/java/org/apache/sshd/client/future/DefaultConnectFuture.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/client/future/DefaultConnectFuture.java b/sshd-core/src/main/java/org/apache/sshd/client/future/DefaultConnectFuture.java
index 34819f4..547890c 100644
--- a/sshd-core/src/main/java/org/apache/sshd/client/future/DefaultConnectFuture.java
+++ b/sshd-core/src/main/java/org/apache/sshd/client/future/DefaultConnectFuture.java
@@ -33,6 +33,7 @@ public class DefaultConnectFuture extends DefaultSshFuture<ConnectFuture> implem
         super(lock);
     }
 
+    @Override
     public ClientSession getSession() {
         Object v = getValue();
         if (v instanceof RuntimeException) {
@@ -48,6 +49,7 @@ public class DefaultConnectFuture extends DefaultSshFuture<ConnectFuture> implem
         }
     }
 
+    @Override
     public Throwable getException() {
         Object v = getValue();
         if (v instanceof Throwable) {
@@ -57,10 +59,12 @@ public class DefaultConnectFuture extends DefaultSshFuture<ConnectFuture> implem
         }
     }
 
+    @Override
     public boolean isConnected() {
         return getValue() instanceof ClientSession;
     }
 
+    @Override
     public void setSession(ClientSession session) {
         if (session == null) {
             throw new NullPointerException("session");
@@ -68,6 +72,7 @@ public class DefaultConnectFuture extends DefaultSshFuture<ConnectFuture> implem
         setValue(session);
     }
 
+    @Override
     public void setException(Throwable exception) {
         if (exception == null) {
             throw new NullPointerException("exception");

http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/e2f7ff72/sshd-core/src/main/java/org/apache/sshd/client/kex/AbstractDHClientKeyExchange.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/client/kex/AbstractDHClientKeyExchange.java b/sshd-core/src/main/java/org/apache/sshd/client/kex/AbstractDHClientKeyExchange.java
index 077f159..f55943f 100644
--- a/sshd-core/src/main/java/org/apache/sshd/client/kex/AbstractDHClientKeyExchange.java
+++ b/sshd-core/src/main/java/org/apache/sshd/client/kex/AbstractDHClientKeyExchange.java
@@ -46,6 +46,7 @@ public abstract class AbstractDHClientKeyExchange extends AbstractDHKeyExchange
         session = (ClientSessionImpl) s;
     }
 
+    @Override
     public PublicKey getServerKey() {
         return serverKey;
     }

http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/e2f7ff72/sshd-core/src/main/java/org/apache/sshd/client/scp/DefaultScpClient.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/client/scp/DefaultScpClient.java b/sshd-core/src/main/java/org/apache/sshd/client/scp/DefaultScpClient.java
index e42cf80..9c72dda 100644
--- a/sshd-core/src/main/java/org/apache/sshd/client/scp/DefaultScpClient.java
+++ b/sshd-core/src/main/java/org/apache/sshd/client/scp/DefaultScpClient.java
@@ -135,6 +135,7 @@ public class DefaultScpClient extends AbstractScpClient {
     public void upload(String[] local, String remote, Collection<Option> options) throws IOException {
         final Collection<String>    paths=Arrays.asList(ValidateUtils.checkNotNullAndNotEmpty(local, "Invalid argument local: %s", (Object) local));
         runUpload(remote, options, paths, new ScpOperationExecutor<String>() {
+            @Override
             public void execute(ScpHelper helper, Collection<String> local, Collection<Option> options) throws IOException {
                 helper.send(local,
                         options.contains(Option.Recursive),
@@ -146,8 +147,9 @@ public class DefaultScpClient extends AbstractScpClient {
 
     @Override
     public void upload(Path[] local, String remote, Collection<Option> options) throws IOException {
-        final Collection<Path>    paths=Arrays.asList(ValidateUtils.checkNotNullAndNotEmpty(local, "Invalid argument local: %s", local));
+        final Collection<Path>    paths=Arrays.asList(ValidateUtils.checkNotNullAndNotEmpty(local, "Invalid argument local: %s", (Object) local));
         runUpload(remote, options, paths, new ScpOperationExecutor<Path>() {
+            @Override
             public void execute(ScpHelper helper, Collection<Path> local, Collection<Option> options) throws IOException {
                 helper.sendPaths(local,
                         options.contains(Option.Recursive),

http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/e2f7ff72/sshd-core/src/main/java/org/apache/sshd/client/session/ClientConnectionService.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/client/session/ClientConnectionService.java b/sshd-core/src/main/java/org/apache/sshd/client/session/ClientConnectionService.java
index d9988f2..10654d8 100644
--- a/sshd-core/src/main/java/org/apache/sshd/client/session/ClientConnectionService.java
+++ b/sshd-core/src/main/java/org/apache/sshd/client/session/ClientConnectionService.java
@@ -45,10 +45,12 @@ public class ClientConnectionService extends AbstractConnectionService {
 
     public static class Factory implements ServiceFactory {
 
+        @Override
         public String getName() {
             return "ssh-connection";
         }
 
+        @Override
         public Service create(Session session) throws IOException {
             return new ClientConnectionService(session);
         }
@@ -75,11 +77,14 @@ public class ClientConnectionService extends AbstractConnectionService {
             FactoryManager manager = session.getFactoryManager();
             ScheduledExecutorService service = manager.getScheduledExecutorService();
             service.scheduleAtFixedRate(new Runnable() {
+                @Override
                 public void run() {
                     sendHeartBeat();
                 }
             }, interval, interval, TimeUnit.MILLISECONDS);
-            log.debug("startHeartbeat - started at interval={}", interval);
+            if (log.isDebugEnabled()) {
+                log.debug("startHeartbeat - started at interval={}", Long.valueOf(interval));
+            }
         }
     }
 
@@ -96,11 +101,13 @@ public class ClientConnectionService extends AbstractConnectionService {
     }
 
     // TODO: remove from interface
+    @Override
     public String initAgentForward() throws IOException {
         throw new IllegalStateException("Server side operation");
     }
 
     // TODO: remove from interface
+    @Override
     public String createX11Display(boolean singleConnection, String authenticationProtocol, String authenticationCookie, int screen) throws IOException {
         throw new IllegalStateException("Server side operation");
     }

http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/e2f7ff72/sshd-core/src/main/java/org/apache/sshd/client/session/ClientSessionImpl.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/client/session/ClientSessionImpl.java b/sshd-core/src/main/java/org/apache/sshd/client/session/ClientSessionImpl.java
index beac954..6761a88 100644
--- a/sshd-core/src/main/java/org/apache/sshd/client/session/ClientSessionImpl.java
+++ b/sshd-core/src/main/java/org/apache/sshd/client/session/ClientSessionImpl.java
@@ -86,7 +86,7 @@ public class ClientSessionImpl extends AbstractSession implements ClientSession
 
     public ClientSessionImpl(ClientFactoryManager client, IoSession session) throws Exception {
         super(false, client, session);
-        log.info("Client session created");
+        log.info("Client session created: {}", session);
         // Need to set the initial service early as calling code likes to start trying to
         // manipulate it before the connection has even been established.  For instance, to
         // set the authPassword.

http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/e2f7ff72/sshd-core/src/main/java/org/apache/sshd/client/session/ClientUserAuthService.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/client/session/ClientUserAuthService.java b/sshd-core/src/main/java/org/apache/sshd/client/session/ClientUserAuthService.java
index 3e8d64d..d36251f 100644
--- a/sshd-core/src/main/java/org/apache/sshd/client/session/ClientUserAuthService.java
+++ b/sshd-core/src/main/java/org/apache/sshd/client/session/ClientUserAuthService.java
@@ -48,10 +48,12 @@ public class ClientUserAuthService extends CloseableUtils.AbstractCloseable impl
 
     public static class Factory implements ServiceFactory {
 
+        @Override
         public String getName() {
             return "ssh-userauth";
         }
 
+        @Override
         public Service create(Session session) throws IOException {
             return new ClientUserAuthService(session);
         }
@@ -98,11 +100,14 @@ public class ClientUserAuthService extends CloseableUtils.AbstractCloseable impl
         }
     }
 
+    @Override
     public ClientSessionImpl getSession() {
         return session;
     }
 
+    @Override
     public void start() {
+        // ignored
     }
 
     public AuthFuture auth(List<Object> identities, String service) throws IOException {
@@ -120,6 +125,7 @@ public class ClientUserAuthService extends CloseableUtils.AbstractCloseable impl
         return authFuture;
     }
 
+    @Override
     public void process(byte cmd, Buffer buffer) throws Exception {
         if (this.authFuture.isSuccess()) {
             throw new IllegalStateException("UserAuth message delivered to authenticated client");

http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/e2f7ff72/sshd-core/src/main/java/org/apache/sshd/client/sftp/SftpFileSystemProvider.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/client/sftp/SftpFileSystemProvider.java b/sshd-core/src/main/java/org/apache/sshd/client/sftp/SftpFileSystemProvider.java
index c765712..ec3c2f3 100644
--- a/sshd-core/src/main/java/org/apache/sshd/client/sftp/SftpFileSystemProvider.java
+++ b/sshd-core/src/main/java/org/apache/sshd/client/sftp/SftpFileSystemProvider.java
@@ -18,6 +18,17 @@
  */
 package org.apache.sshd.client.sftp;
 
+import static org.apache.sshd.common.sftp.SftpConstants.SFTP_V3;
+import static org.apache.sshd.common.sftp.SftpConstants.S_IRGRP;
+import static org.apache.sshd.common.sftp.SftpConstants.S_IROTH;
+import static org.apache.sshd.common.sftp.SftpConstants.S_IRUSR;
+import static org.apache.sshd.common.sftp.SftpConstants.S_IWGRP;
+import static org.apache.sshd.common.sftp.SftpConstants.S_IWOTH;
+import static org.apache.sshd.common.sftp.SftpConstants.S_IWUSR;
+import static org.apache.sshd.common.sftp.SftpConstants.S_IXGRP;
+import static org.apache.sshd.common.sftp.SftpConstants.S_IXOTH;
+import static org.apache.sshd.common.sftp.SftpConstants.S_IXUSR;
+
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.InterruptedIOException;
@@ -34,7 +45,6 @@ import java.nio.file.FileStore;
 import java.nio.file.FileSystem;
 import java.nio.file.FileSystemAlreadyExistsException;
 import java.nio.file.FileSystemNotFoundException;
-import java.nio.file.Files;
 import java.nio.file.LinkOption;
 import java.nio.file.NoSuchFileException;
 import java.nio.file.OpenOption;
@@ -53,6 +63,7 @@ import java.nio.file.attribute.PosixFileAttributes;
 import java.nio.file.attribute.PosixFilePermission;
 import java.nio.file.attribute.UserPrincipal;
 import java.nio.file.spi.FileSystemProvider;
+import java.util.Collection;
 import java.util.EnumSet;
 import java.util.HashMap;
 import java.util.HashSet;
@@ -70,29 +81,22 @@ import org.apache.sshd.client.SftpException;
 import org.apache.sshd.common.SshException;
 import org.apache.sshd.common.config.SshConfigFileReader;
 import org.apache.sshd.common.sftp.SftpConstants;
+import org.apache.sshd.common.util.GenericUtils;
 import org.apache.sshd.common.util.IoUtils;
-
-import static org.apache.sshd.common.sftp.SftpConstants.SFTP_V3;
-import static org.apache.sshd.common.sftp.SftpConstants.S_IRGRP;
-import static org.apache.sshd.common.sftp.SftpConstants.S_IROTH;
-import static org.apache.sshd.common.sftp.SftpConstants.S_IRUSR;
-import static org.apache.sshd.common.sftp.SftpConstants.S_IWGRP;
-import static org.apache.sshd.common.sftp.SftpConstants.S_IWOTH;
-import static org.apache.sshd.common.sftp.SftpConstants.S_IWUSR;
-import static org.apache.sshd.common.sftp.SftpConstants.S_IXGRP;
-import static org.apache.sshd.common.sftp.SftpConstants.S_IXOTH;
-import static org.apache.sshd.common.sftp.SftpConstants.S_IXUSR;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 public class SftpFileSystemProvider extends FileSystemProvider {
-
-    final SshClient client;
-    final Map<String, SftpFileSystem> fileSystems = new HashMap<String, SftpFileSystem>();
+    private final SshClient client;
+    private final Map<String, SftpFileSystem> fileSystems = new HashMap<String, SftpFileSystem>();
+    protected final Logger log;
 
     public SftpFileSystemProvider() {
         this(null);
     }
 
     public SftpFileSystemProvider(SshClient client) {
+        this.log = LoggerFactory.getLogger(getClass());
         if (client == null) {
             // TODO: make this configurable using system properties
             client = SshBuilder.client().build();
@@ -477,6 +481,7 @@ public class SftpFileSystemProvider extends FileSystemProvider {
                     return "view";
                 }
 
+                @SuppressWarnings("synthetic-access")
                 @Override
                 public PosixFileAttributes readAttributes() throws IOException {
                     SftpPath p = toSftpPath(path);
@@ -600,9 +605,10 @@ public class SftpFileSystemProvider extends FileSystemProvider {
     @Override
     public <A extends BasicFileAttributes> A readAttributes(Path path, Class<A> type, LinkOption... options) throws IOException {
         if (type.isAssignableFrom(PosixFileAttributes.class)) {
-            return (A) getFileAttributeView(path, PosixFileAttributeView.class, options).readAttributes();
+            return type.cast(getFileAttributeView(path, PosixFileAttributeView.class, options).readAttributes());
         }
-        throw new UnsupportedOperationException();
+
+        throw new UnsupportedOperationException("readAttributes(" + path + ")[" + type.getSimpleName() + "] N/A");
     }
 
     @Override
@@ -628,42 +634,46 @@ public class SftpFileSystemProvider extends FileSystemProvider {
         Map<String, Object> map = new HashMap<>();
         for (String attr : attrs.split(",")) {
             switch (attr) {
-            case "lastModifiedTime":
-                map.put(attr, v.lastModifiedTime());
-                break;
-            case "lastAccessTime":
-                map.put(attr, v.lastAccessTime());
-                break;
-            case "creationTime":
-                map.put(attr, v.creationTime());
-                break;
-            case "size":
-                map.put(attr, v.size());
-                break;
-            case "isRegularFile":
-                map.put(attr, v.isRegularFile());
-                break;
-            case "isDirectory":
-                map.put(attr, v.isDirectory());
-                break;
-            case "isSymbolicLink":
-                map.put(attr, v.isSymbolicLink());
-                break;
-            case "isOther":
-                map.put(attr, v.isOther());
-                break;
-            case "fileKey":
-                map.put(attr, v.fileKey());
-                break;
-            case "owner":
-                map.put(attr, v.owner());
-                break;
-            case "permissions":
-                map.put(attr, v.permissions());
-                break;
-            case "group":
-                map.put(attr, v.group());
-                break;
+                case "lastModifiedTime":
+                    map.put(attr, v.lastModifiedTime());
+                    break;
+                case "lastAccessTime":
+                    map.put(attr, v.lastAccessTime());
+                    break;
+                case "creationTime":
+                    map.put(attr, v.creationTime());
+                    break;
+                case "size":
+                    map.put(attr, Long.valueOf(v.size()));
+                    break;
+                case "isRegularFile":
+                    map.put(attr, Boolean.valueOf(v.isRegularFile()));
+                    break;
+                case "isDirectory":
+                    map.put(attr, Boolean.valueOf(v.isDirectory()));
+                    break;
+                case "isSymbolicLink":
+                    map.put(attr, Boolean.valueOf(v.isSymbolicLink()));
+                    break;
+                case "isOther":
+                    map.put(attr, Boolean.valueOf(v.isOther()));
+                    break;
+                case "fileKey":
+                    map.put(attr, v.fileKey());
+                    break;
+                case "owner":
+                    map.put(attr, v.owner());
+                    break;
+                case "permissions":
+                    map.put(attr, v.permissions());
+                    break;
+                case "group":
+                    map.put(attr, v.group());
+                    break;
+                default:
+                    if (log.isTraceEnabled()) {
+                        log.trace("readAttributes({})[{}] ignored {}={}", path, attributes, attr, v);
+                    }
             }
         }
         return map;
@@ -687,34 +697,42 @@ public class SftpFileSystemProvider extends FileSystemProvider {
         }
         SftpClient.Attributes attributes = new SftpClient.Attributes();
         switch (attr) {
-        case "lastModifiedTime":
-            attributes.mtime((int) ((FileTime) value).to(TimeUnit.SECONDS));
-            break;
-        case "lastAccessTime":
-            attributes.atime((int) ((FileTime) value).to(TimeUnit.SECONDS));
-            break;
-        case "creationTime":
-            attributes.ctime((int) ((FileTime) value).to(TimeUnit.SECONDS));
-            break;
-        case "size":
-            attributes.size((long) value);
-            break;
-        case "permissions":
-            attributes.perms(attributesToPermissions((Set<PosixFilePermission>) value));
-            break;
-        case "owner":
-            attributes.owner(((UserPrincipal) value).getName());
-            break;
-        case "group":
-            attributes.group(((GroupPrincipal) value).getName());
-            break;
-        case "isRegularFile":
-        case "isDirectory":
-        case "isSymbolicLink":
-        case "isOther":
-        case "fileKey":
-            throw new IllegalArgumentException(attr);
+            case "lastModifiedTime":
+                attributes.mtime((int) ((FileTime) value).to(TimeUnit.SECONDS));
+                break;
+            case "lastAccessTime":
+                attributes.atime((int) ((FileTime) value).to(TimeUnit.SECONDS));
+                break;
+            case "creationTime":
+                attributes.ctime((int) ((FileTime) value).to(TimeUnit.SECONDS));
+                break;
+            case "size":
+                attributes.size(((Number) value).longValue());
+                break;
+            case "permissions": {
+                @SuppressWarnings("unchecked")
+                Set<PosixFilePermission>    attrSet = (Set<PosixFilePermission>) value;
+                attributes.perms(attributesToPermissions(path, attrSet));
+                }
+                break;
+            case "owner":
+                attributes.owner(((UserPrincipal) value).getName());
+                break;
+            case "group":
+                attributes.group(((GroupPrincipal) value).getName());
+                break;
+            case "isRegularFile":
+            case "isDirectory":
+            case "isSymbolicLink":
+            case "isOther":
+            case "fileKey":
+                throw new UnsupportedOperationException("setAttribute(" + path + ")[" + attribute + "] unknown view attribute: " + attr);
+            default:
+                if (log.isTraceEnabled()) {
+                    log.trace("setAttribute({})[{}] ignore {}={}", path, attribute, attr, value);
+                }
         }
+
         try (SftpClient client = p.getFileSystem().getClient()) {
             client.setStat(p.toString(), attributes);
         }
@@ -772,11 +790,14 @@ public class SftpFileSystemProvider extends FileSystemProvider {
         return p;
     }
 
-    protected int attributesToPermissions(Set<PosixFilePermission> perms) {
+    protected int attributesToPermissions(Path path, Collection<PosixFilePermission> perms) {
+        if (GenericUtils.isEmpty(perms)) {
+            return 0;
+        }
+
         int pf = 0;
-        if (perms != null) {
-            for (PosixFilePermission p : perms) {
-                switch (p) {
+        for (PosixFilePermission p : perms) {
+            switch (p) {
                 case OWNER_READ:
                     pf |= S_IRUSR;
                     break;
@@ -804,9 +825,13 @@ public class SftpFileSystemProvider extends FileSystemProvider {
                 case OTHERS_EXECUTE:
                     pf |= S_IXOTH;
                     break;
-                }
+                default:
+                    if (log.isTraceEnabled()) {
+                        log.trace("attributesToPermissions(" + path + ") ignored " + p);
+                    }
             }
         }
+
         return pf;
     }
 

http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/e2f7ff72/sshd-core/src/main/java/org/apache/sshd/client/sftp/SftpPath.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/client/sftp/SftpPath.java b/sshd-core/src/main/java/org/apache/sshd/client/sftp/SftpPath.java
index 8e70c62..a1afbd8 100644
--- a/sshd-core/src/main/java/org/apache/sshd/client/sftp/SftpPath.java
+++ b/sshd-core/src/main/java/org/apache/sshd/client/sftp/SftpPath.java
@@ -31,11 +31,13 @@ public class SftpPath extends BasePath<SftpPath, SftpFileSystem> {
         super(fileSystem, root, names);
     }
 
+    @Override
     public URI toUri() {
         // TODO
         return null;
     }
 
+    @Override
     public SftpPath toRealPath(LinkOption... options) throws IOException {
 //        try (SftpClient client = fileSystem.getClient()) {
 //            client.realP

http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/e2f7ff72/sshd-core/src/main/java/org/apache/sshd/common/AbstractSessionIoHandler.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/common/AbstractSessionIoHandler.java b/sshd-core/src/main/java/org/apache/sshd/common/AbstractSessionIoHandler.java
index 80f14d2..2ca762a 100644
--- a/sshd-core/src/main/java/org/apache/sshd/common/AbstractSessionIoHandler.java
+++ b/sshd-core/src/main/java/org/apache/sshd/common/AbstractSessionIoHandler.java
@@ -32,15 +32,18 @@ public abstract class AbstractSessionIoHandler implements IoHandler {
 
     protected abstract AbstractSession createSession(IoSession ioSession) throws Exception;
 
+    @Override
     public void sessionCreated(IoSession ioSession) throws Exception {
         AbstractSession session = createSession(ioSession);
         AbstractSession.attachSession(ioSession, session);
     }
 
+    @Override
     public void sessionClosed(IoSession ioSession) throws Exception {
         AbstractSession.getSession(ioSession).close(true);
     }
 
+    @Override
     public void exceptionCaught(IoSession ioSession, Throwable cause) throws Exception {
         AbstractSession session = AbstractSession.getSession(ioSession, true);
         if (session != null) {
@@ -50,6 +53,7 @@ public abstract class AbstractSessionIoHandler implements IoHandler {
         }
     }
 
+    @Override
     public void messageReceived(IoSession ioSession, Readable message) throws Exception {
         AbstractSession.getSession(ioSession).messageReceived(message);
     }

http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/e2f7ff72/sshd-core/src/main/java/org/apache/sshd/common/Channel.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/common/Channel.java b/sshd-core/src/main/java/org/apache/sshd/common/Channel.java
index e353b38..f343686 100644
--- a/sshd-core/src/main/java/org/apache/sshd/common/Channel.java
+++ b/sshd-core/src/main/java/org/apache/sshd/common/Channel.java
@@ -57,6 +57,7 @@ public interface Channel extends Closeable {
 
     void handleFailure() throws IOException;
 
+    @Override
     CloseFuture close(boolean immediately);
 
     void init(ConnectionService service, Session session, int id) throws IOException;

http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/e2f7ff72/sshd-core/src/main/java/org/apache/sshd/common/KeyPairProvider.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/common/KeyPairProvider.java b/sshd-core/src/main/java/org/apache/sshd/common/KeyPairProvider.java
index 15b7941..52a8553 100644
--- a/sshd-core/src/main/java/org/apache/sshd/common/KeyPairProvider.java
+++ b/sshd-core/src/main/java/org/apache/sshd/common/KeyPairProvider.java
@@ -19,7 +19,6 @@
 package org.apache.sshd.common;
 
 import java.security.KeyPair;
-import java.util.List;
 
 /**
  * Provider for key pairs.  This provider is used on the server side to provide

http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/e2f7ff72/sshd-core/src/main/java/org/apache/sshd/common/PtyMode.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/common/PtyMode.java b/sshd-core/src/main/java/org/apache/sshd/common/PtyMode.java
index 47ec123..5b06714 100644
--- a/sshd-core/src/main/java/org/apache/sshd/common/PtyMode.java
+++ b/sshd-core/src/main/java/org/apache/sshd/common/PtyMode.java
@@ -65,11 +65,11 @@ public enum PtyMode {
     static {
         commands = new HashMap<Integer, PtyMode>();
         for (PtyMode c : PtyMode.values()) {
-            commands.put(c.toInt(), c);
+            commands.put(Integer.valueOf(c.toInt()), c);
         }
     }
 
     public static PtyMode fromInt(int b) {
-        return commands.get(0x00FF & (b + 256));
+        return commands.get(Integer.valueOf(0x00FF & (b + 256)));
     }
 }

http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/e2f7ff72/sshd-core/src/main/java/org/apache/sshd/common/RequestHandler.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/common/RequestHandler.java b/sshd-core/src/main/java/org/apache/sshd/common/RequestHandler.java
index 0a78f45..db688eb 100644
--- a/sshd-core/src/main/java/org/apache/sshd/common/RequestHandler.java
+++ b/sshd-core/src/main/java/org/apache/sshd/common/RequestHandler.java
@@ -18,7 +18,6 @@
  */
 package org.apache.sshd.common;
 
-import org.apache.sshd.common.session.ConnectionService;
 import org.apache.sshd.common.util.buffer.Buffer;
 
 /**

http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/e2f7ff72/sshd-core/src/main/java/org/apache/sshd/common/RuntimeSshException.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/common/RuntimeSshException.java b/sshd-core/src/main/java/org/apache/sshd/common/RuntimeSshException.java
index 11ae5e5..9ff4246 100644
--- a/sshd-core/src/main/java/org/apache/sshd/common/RuntimeSshException.java
+++ b/sshd-core/src/main/java/org/apache/sshd/common/RuntimeSshException.java
@@ -24,6 +24,7 @@ package org.apache.sshd.common;
  * @author <a href="mailto:dev@mina.apache.org">Apache MINA SSHD Project</a>
  */
 public class RuntimeSshException extends RuntimeException {
+    private static final long serialVersionUID = -2423550196146939503L;
 
     public RuntimeSshException() {
         this(null, null);

http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/e2f7ff72/sshd-core/src/main/java/org/apache/sshd/common/Service.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/common/Service.java b/sshd-core/src/main/java/org/apache/sshd/common/Service.java
index fabdac0..b62a905 100644
--- a/sshd-core/src/main/java/org/apache/sshd/common/Service.java
+++ b/sshd-core/src/main/java/org/apache/sshd/common/Service.java
@@ -18,8 +18,6 @@
  */
 package org.apache.sshd.common;
 
-import java.io.IOException;
-
 import org.apache.sshd.common.future.CloseFuture;
 import org.apache.sshd.common.util.buffer.Buffer;
 
@@ -48,6 +46,7 @@ public interface Service extends Closeable {
      * @param immediately
      *
      */
+    @Override
     CloseFuture close(boolean immediately);
 
 }

http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/e2f7ff72/sshd-core/src/main/java/org/apache/sshd/common/Session.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/common/Session.java b/sshd-core/src/main/java/org/apache/sshd/common/Session.java
index 6ec08d1..50f7144 100644
--- a/sshd-core/src/main/java/org/apache/sshd/common/Session.java
+++ b/sshd-core/src/main/java/org/apache/sshd/common/Session.java
@@ -227,6 +227,9 @@ public interface Session extends Closeable {
      * @author <a href="mailto:dev@mina.apache.org">Apache MINA SSHD Project</a>
      */
     public class AttributeKey<T> {
+        public AttributeKey() {
+            super();
+        }
     }
 
     public void resetIdleTimeout();

http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/e2f7ff72/sshd-core/src/main/java/org/apache/sshd/common/SshConstants.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/common/SshConstants.java b/sshd-core/src/main/java/org/apache/sshd/common/SshConstants.java
index 648ec88..eebd1b1 100644
--- a/sshd-core/src/main/java/org/apache/sshd/common/SshConstants.java
+++ b/sshd-core/src/main/java/org/apache/sshd/common/SshConstants.java
@@ -18,10 +18,6 @@
  */
 package org.apache.sshd.common;
 
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.List;
-
 /**
  * This interface defines constants for the SSH protocol.
  *

http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/e2f7ff72/sshd-core/src/main/java/org/apache/sshd/common/SshdSocketAddress.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/common/SshdSocketAddress.java b/sshd-core/src/main/java/org/apache/sshd/common/SshdSocketAddress.java
index caa2a96..eb2e53d 100644
--- a/sshd-core/src/main/java/org/apache/sshd/common/SshdSocketAddress.java
+++ b/sshd-core/src/main/java/org/apache/sshd/common/SshdSocketAddress.java
@@ -27,7 +27,7 @@ import java.net.SocketAddress;
  * @author <a href="mailto:dev@mina.apache.org">Apache MINA SSHD Project</a>
  */
 public class SshdSocketAddress extends SocketAddress {
-
+    private static final long serialVersionUID = 6461645947151952729L;
     private final String hostName;
     private final int port;
 

http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/e2f7ff72/sshd-core/src/main/java/org/apache/sshd/common/digest/BaseDigest.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/common/digest/BaseDigest.java b/sshd-core/src/main/java/org/apache/sshd/common/digest/BaseDigest.java
index 52e583b..a540c8c 100644
--- a/sshd-core/src/main/java/org/apache/sshd/common/digest/BaseDigest.java
+++ b/sshd-core/src/main/java/org/apache/sshd/common/digest/BaseDigest.java
@@ -47,18 +47,22 @@ public class BaseDigest implements Digest {
         this.bsize = bsize;
     }
 
+    @Override
     public int getBlockSize() {
         return bsize;
     }
 
+    @Override
     public void init() throws Exception {
         this.md = SecurityUtils.getMessageDigest(algorithm);
     }
 
+    @Override
     public void update(byte[] foo, int start, int len) throws Exception {
         md.update(foo, start, len);
     }
 
+    @Override
     public byte[] digest() throws Exception {
         return md.digest();
     }

http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/e2f7ff72/sshd-core/src/main/java/org/apache/sshd/common/file/root/RootedFileSystem.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/common/file/root/RootedFileSystem.java b/sshd-core/src/main/java/org/apache/sshd/common/file/root/RootedFileSystem.java
index 293d054..fa24a39 100644
--- a/sshd-core/src/main/java/org/apache/sshd/common/file/root/RootedFileSystem.java
+++ b/sshd-core/src/main/java/org/apache/sshd/common/file/root/RootedFileSystem.java
@@ -20,7 +20,6 @@ package org.apache.sshd.common.file.root;
 
 import java.io.IOException;
 import java.nio.file.Path;
-import java.nio.file.WatchService;
 import java.nio.file.attribute.UserPrincipalLookupService;
 import java.util.Map;
 import java.util.Set;
@@ -46,6 +45,7 @@ public class RootedFileSystem extends BaseFileSystem<RootedPath> {
 
     @Override
     public void close() throws IOException {
+        // ignored
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/e2f7ff72/sshd-core/src/main/java/org/apache/sshd/common/file/root/RootedPath.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/common/file/root/RootedPath.java b/sshd-core/src/main/java/org/apache/sshd/common/file/root/RootedPath.java
index e7be13e..8b06584 100644
--- a/sshd-core/src/main/java/org/apache/sshd/common/file/root/RootedPath.java
+++ b/sshd-core/src/main/java/org/apache/sshd/common/file/root/RootedPath.java
@@ -34,11 +34,13 @@ public class RootedPath extends BasePath<RootedPath, RootedFileSystem> {
         super(fileSystem, root, names);
     }
 
+    @Override
     public URI toUri() {
         // TODO
         return null;
     }
 
+    @Override
     public RootedPath toRealPath(LinkOption... options) throws IOException {
         RootedPath absolute = toAbsolutePath();
         fileSystem.provider().checkAccess(absolute);

http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/e2f7ff72/sshd-core/src/main/java/org/apache/sshd/common/file/util/BasePath.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/common/file/util/BasePath.java b/sshd-core/src/main/java/org/apache/sshd/common/file/util/BasePath.java
index a5fde82..2bc3542 100644
--- a/sshd-core/src/main/java/org/apache/sshd/common/file/util/BasePath.java
+++ b/sshd-core/src/main/java/org/apache/sshd/common/file/util/BasePath.java
@@ -63,14 +63,17 @@ public abstract class BasePath<T extends BasePath<T, FS>, FS extends BaseFileSys
         return fileSystem.create(root, names);
     }
 
+    @Override
     public FS getFileSystem() {
         return fileSystem;
     }
 
+    @Override
     public boolean isAbsolute() {
         return root != null;
     }
 
+    @Override
     public T getRoot() {
         if (isAbsolute()) {
             return create(root);
@@ -78,6 +81,7 @@ public abstract class BasePath<T extends BasePath<T, FS>, FS extends BaseFileSys
         return null;
     }
 
+    @Override
     public T getFileName() {
         if (!names.isEmpty()) {
             return create(null, names.get(names.size() - 1));
@@ -85,6 +89,7 @@ public abstract class BasePath<T extends BasePath<T, FS>, FS extends BaseFileSys
         return null;
     }
 
+    @Override
     public T getParent() {
         if (names.isEmpty() || names.size() == 1 && root == null) {
             return null;
@@ -92,10 +97,12 @@ public abstract class BasePath<T extends BasePath<T, FS>, FS extends BaseFileSys
         return create(root, names.subList(0, names.size() - 1));
     }
 
+    @Override
     public int getNameCount() {
         return names.size();
     }
 
+    @Override
     public T getName(int index) {
         if (index < 0 || index >= names.size()) {
             throw new IllegalArgumentException();
@@ -103,6 +110,7 @@ public abstract class BasePath<T extends BasePath<T, FS>, FS extends BaseFileSys
         return create(null, names.subList(index, index + 1));
     }
 
+    @Override
     public T subpath(int beginIndex, int endIndex) {
         if ((beginIndex < 0) || (beginIndex >= names.size()) || (endIndex > names.size()) || (beginIndex >= endIndex)) {
             throw new IllegalArgumentException();
@@ -114,6 +122,7 @@ public abstract class BasePath<T extends BasePath<T, FS>, FS extends BaseFileSys
         return list.size() >= other.size() && list.subList(0, other.size()).equals(other);
     }
 
+    @Override
     public boolean startsWith(Path other) {
         T p1 = asT();
         T p2 = checkPath(other);
@@ -122,6 +131,7 @@ public abstract class BasePath<T extends BasePath<T, FS>, FS extends BaseFileSys
                 && startsWith(p1.names, p2.names);
     }
 
+    @Override
     public boolean startsWith(String other) {
         return startsWith(getFileSystem().getPath(other));
     }
@@ -130,6 +140,7 @@ public abstract class BasePath<T extends BasePath<T, FS>, FS extends BaseFileSys
         return other.size() <= list.size() && list.subList(list.size() - other.size(), list.size()).equals(other);
     }
 
+    @Override
     public boolean endsWith(Path other) {
         T p1 = asT();
         T p2 = checkPath(other);
@@ -139,6 +150,7 @@ public abstract class BasePath<T extends BasePath<T, FS>, FS extends BaseFileSys
         return endsWith(p1.names, p2.names);
     }
 
+    @Override
     public boolean endsWith(String other) {
         return endsWith(getFileSystem().getPath(other));
     }
@@ -166,6 +178,7 @@ public abstract class BasePath<T extends BasePath<T, FS>, FS extends BaseFileSys
         return normal;
     }
 
+    @Override
     public T normalize() {
         if (isNormal()) {
             return asT();
@@ -189,6 +202,7 @@ public abstract class BasePath<T extends BasePath<T, FS>, FS extends BaseFileSys
         return newNames.equals(names) ? asT() : create(root, newNames);
     }
 
+    @Override
     public T resolve(Path other) {
         T p1 = asT();
         T p2 = checkPath(other);
@@ -209,10 +223,12 @@ public abstract class BasePath<T extends BasePath<T, FS>, FS extends BaseFileSys
         return create(p1.root, names);
     }
 
+    @Override
     public T resolve(String other) {
         return resolve(getFileSystem().getPath(other));
     }
 
+    @Override
     public Path resolveSibling(Path other) {
         if (other == null) {
             throw new NullPointerException();
@@ -221,10 +237,12 @@ public abstract class BasePath<T extends BasePath<T, FS>, FS extends BaseFileSys
         return parent == null ? other : parent.resolve(other);
     }
 
+    @Override
     public Path resolveSibling(String other) {
         return resolveSibling(getFileSystem().getPath(other));
     }
 
+    @Override
     public T relativize(Path other) {
         T p1 = asT();
         T p2 = checkPath(other);
@@ -258,6 +276,7 @@ public abstract class BasePath<T extends BasePath<T, FS>, FS extends BaseFileSys
         return create(null, parts);
     }
 
+    @Override
     public T toAbsolutePath() {
         if (isAbsolute()) {
             return asT();
@@ -265,18 +284,22 @@ public abstract class BasePath<T extends BasePath<T, FS>, FS extends BaseFileSys
         return fileSystem.getDefaultDir().resolve(this);
     }
 
+    @Override
     public File toFile() {
         throw new UnsupportedOperationException();
     }
 
+    @Override
     public WatchKey register(WatchService watcher, WatchEvent.Kind<?>[] events, WatchEvent.Modifier... modifiers) throws IOException {
         throw new UnsupportedOperationException();
     }
 
+    @Override
     public WatchKey register(WatchService watcher, WatchEvent.Kind<?>... events) throws IOException {
         throw new UnsupportedOperationException();
     }
 
+    @Override
     public Iterator<Path> iterator() {
         return new AbstractList<Path>() {
             @Override
@@ -291,6 +314,7 @@ public abstract class BasePath<T extends BasePath<T, FS>, FS extends BaseFileSys
         }.iterator();
     }
 
+    @Override
     public int compareTo(Path paramPath) {
         T p1 = asT();
         T p2 = checkPath(paramPath);

http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/e2f7ff72/sshd-core/src/main/java/org/apache/sshd/common/file/virtualfs/VirtualFileSystemFactory.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/common/file/virtualfs/VirtualFileSystemFactory.java b/sshd-core/src/main/java/org/apache/sshd/common/file/virtualfs/VirtualFileSystemFactory.java
index 2d74509..7b60d65 100644
--- a/sshd-core/src/main/java/org/apache/sshd/common/file/virtualfs/VirtualFileSystemFactory.java
+++ b/sshd-core/src/main/java/org/apache/sshd/common/file/virtualfs/VirtualFileSystemFactory.java
@@ -70,6 +70,7 @@ public class VirtualFileSystemFactory implements FileSystemFactory {
         return homeDir;
     }
 
+    @Override
     public FileSystem createFileSystem(Session session) throws IOException {
         String dir = computeRootDir(session.getUsername());
         return new RootedFileSystemProvider().newFileSystem(Paths.get(dir), null);

http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/e2f7ff72/sshd-core/src/main/java/org/apache/sshd/common/forward/DefaultTcpipForwarder.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/common/forward/DefaultTcpipForwarder.java b/sshd-core/src/main/java/org/apache/sshd/common/forward/DefaultTcpipForwarder.java
index 458b483..d85da03 100644
--- a/sshd-core/src/main/java/org/apache/sshd/common/forward/DefaultTcpipForwarder.java
+++ b/sshd-core/src/main/java/org/apache/sshd/common/forward/DefaultTcpipForwarder.java
@@ -87,13 +87,13 @@ public class DefaultTcpipForwarder extends CloseableUtils.AbstractInnerCloseable
             throw new IllegalStateException("TcpipForwarder is closing");
         }
         SshdSocketAddress bound = doBind(local, new StaticIoHandler());
-        localToRemote.put(bound.getPort(), remote);
+        localToRemote.put(Integer.valueOf(bound.getPort()), remote);
         return bound;
     }
 
     @Override
     public synchronized void stopLocalPortForwarding(SshdSocketAddress local) throws IOException {
-        if (localToRemote.remove(local.getPort()) != null && acceptor != null) {
+        if (localToRemote.remove(Integer.valueOf(local.getPort())) != null && acceptor != null) {
             acceptor.unbind(local.toInetSocketAddress());
         }
     }
@@ -111,13 +111,13 @@ public class DefaultTcpipForwarder extends CloseableUtils.AbstractInnerCloseable
         }
         int port = remote.getPort() == 0 ? result.getInt() : remote.getPort();
         // TODO: Is it really safe to only store the local address after the request ?
-        remoteToLocal.put(port, local);
+        remoteToLocal.put(Integer.valueOf(port), local);
         return new SshdSocketAddress(remote.getHostName(), port);
     }
 
     @Override
     public synchronized void stopRemotePortForwarding(SshdSocketAddress remote) throws IOException {
-        if (remoteToLocal.remove(remote.getPort()) != null) {
+        if (remoteToLocal.remove(Integer.valueOf(remote.getPort())) != null) {
             Buffer buffer = session.createBuffer(SshConstants.SSH_MSG_GLOBAL_REQUEST);
             buffer.putString("cancel-tcpip-forward");
             buffer.putBoolean(false);
@@ -143,13 +143,13 @@ public class DefaultTcpipForwarder extends CloseableUtils.AbstractInnerCloseable
         }
         SocksProxy socksProxy = new SocksProxy(service);
         SshdSocketAddress bound = doBind(local, new SocksProxy(service));
-        dynamicLocal.put(bound.getPort(), socksProxy);
+        dynamicLocal.put(Integer.valueOf(bound.getPort()), socksProxy);
         return bound;
     }
 
     @Override
     public synchronized void stopDynamicPortForwarding(SshdSocketAddress local) throws IOException {
-        Closeable obj = dynamicLocal.remove(local.getPort());
+        Closeable obj = dynamicLocal.remove(Integer.valueOf(local.getPort()));
         if (obj != null) {
             obj.close(true);
             acceptor.unbind(local.toInetSocketAddress());
@@ -158,7 +158,7 @@ public class DefaultTcpipForwarder extends CloseableUtils.AbstractInnerCloseable
 
     @Override
     public synchronized SshdSocketAddress getForwardedPort(int remotePort) {
-        return remoteToLocal.get(remotePort);
+        return remoteToLocal.get(Integer.valueOf(remotePort));
     }
 
     @Override
@@ -230,12 +230,13 @@ public class DefaultTcpipForwarder extends CloseableUtils.AbstractInnerCloseable
 
     class StaticIoHandler implements IoHandler {
 
+        @SuppressWarnings("synthetic-access")
         @Override
         public void sessionCreated(final IoSession session) throws Exception {
             final TcpipClientChannel channel;
             int localPort = ((InetSocketAddress) session.getLocalAddress()).getPort();
-            if (localToRemote.containsKey(localPort)) {
-                SshdSocketAddress remote = localToRemote.get(localPort);
+            SshdSocketAddress remote = localToRemote.get(Integer.valueOf(localPort));
+            if (remote != null) {
                 channel = new TcpipClientChannel(TcpipClientChannel.Type.Direct, session, remote);
             } else {
                 channel = new TcpipClientChannel(TcpipClientChannel.Type.Forwarded, session, null);
@@ -254,6 +255,7 @@ public class DefaultTcpipForwarder extends CloseableUtils.AbstractInnerCloseable
             });
         }
 
+        @SuppressWarnings("synthetic-access")
         @Override
         public void sessionClosed(IoSession session) throws Exception {
             TcpipClientChannel channel = (TcpipClientChannel) session.getAttribute(TcpipClientChannel.class);

http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/e2f7ff72/sshd-core/src/main/java/org/apache/sshd/common/forward/DefaultTcpipForwarderFactory.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/common/forward/DefaultTcpipForwarderFactory.java b/sshd-core/src/main/java/org/apache/sshd/common/forward/DefaultTcpipForwarderFactory.java
index a732d7e..62acbf8 100644
--- a/sshd-core/src/main/java/org/apache/sshd/common/forward/DefaultTcpipForwarderFactory.java
+++ b/sshd-core/src/main/java/org/apache/sshd/common/forward/DefaultTcpipForwarderFactory.java
@@ -18,7 +18,6 @@
  */
 package org.apache.sshd.common.forward;
 
-import org.apache.sshd.common.Session;
 import org.apache.sshd.common.TcpipForwarder;
 import org.apache.sshd.common.TcpipForwarderFactory;
 import org.apache.sshd.common.session.ConnectionService;
@@ -31,7 +30,8 @@ import org.apache.sshd.common.session.ConnectionService;
  */
 public class DefaultTcpipForwarderFactory implements TcpipForwarderFactory
 {
-   public TcpipForwarder create( ConnectionService service )
+   @Override
+public TcpipForwarder create( ConnectionService service )
    {
       return new DefaultTcpipForwarder( service );
    }

http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/e2f7ff72/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 a009144..21df217 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
@@ -125,6 +125,7 @@ public class SocksProxy extends CloseableUtils.AbstractCloseable implements IoHa
             super(session);
         }
 
+        @SuppressWarnings("synthetic-access")
         @Override
         protected void onMessage(Buffer buffer) throws IOException {
             if (channel == null) {
@@ -142,7 +143,10 @@ public class SocksProxy extends CloseableUtils.AbstractCloseable implements IoHa
                 if (host.startsWith("0.0.0.")) {
                     host = getNTString(buffer);
                 }
-                log.debug("Received socks4 connection request to {}:{}", host, port);
+                if (log.isDebugEnabled()) {
+                    log.debug("Received socks4 connection request for {} to {}:{}", userId, host, Integer.valueOf(port));
+                }
+
                 SshdSocketAddress remote = new SshdSocketAddress(host, port);
                 channel = new TcpipClientChannel(TcpipClientChannel.Type.Direct, session, remote);
                 service.registerChannel(channel);
@@ -157,6 +161,7 @@ public class SocksProxy extends CloseableUtils.AbstractCloseable implements IoHa
             }
         }
 
+        @SuppressWarnings("synthetic-access")
         protected void onChannelOpened(OpenFuture future) {
             Buffer buffer = new ByteArrayBuffer(8);
             buffer.putByte((byte) 0x00);
@@ -197,6 +202,7 @@ public class SocksProxy extends CloseableUtils.AbstractCloseable implements IoHa
             super(session);
         }
 
+        @SuppressWarnings("synthetic-access")
         @Override
         protected void onMessage(Buffer buffer) throws IOException {
             if (authMethods == null) {
@@ -249,7 +255,9 @@ public class SocksProxy extends CloseableUtils.AbstractCloseable implements IoHa
                     throw new IllegalStateException("Unsupported address type: " + type);
                 }
                 int port = getUShort(buffer);
-                log.debug("Received socks5 connection request to {}:{}", host, port);
+                if (log.isDebugEnabled()) {
+                    log.debug("Received socks5 connection request to {}:{}", host, Integer.valueOf(port));
+                }
                 SshdSocketAddress remote = new SshdSocketAddress(host, port);
                 channel = new TcpipClientChannel(TcpipClientChannel.Type.Direct, session, remote);
                 service.registerChannel(channel);
@@ -265,6 +273,7 @@ public class SocksProxy extends CloseableUtils.AbstractCloseable implements IoHa
             }
         }
 
+        @SuppressWarnings("synthetic-access")
         protected void onChannelOpened(OpenFuture future) {
             int wpos = response.wpos();
             response.rpos(0);

http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/e2f7ff72/sshd-core/src/main/java/org/apache/sshd/common/forward/TcpipClientChannel.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/common/forward/TcpipClientChannel.java b/sshd-core/src/main/java/org/apache/sshd/common/forward/TcpipClientChannel.java
index cb93049..0f4d89a 100644
--- a/sshd-core/src/main/java/org/apache/sshd/common/forward/TcpipClientChannel.java
+++ b/sshd-core/src/main/java/org/apache/sshd/common/forward/TcpipClientChannel.java
@@ -63,7 +63,7 @@ public class TcpipClientChannel extends AbstractClientChannel {
 
     @Override
     public synchronized OpenFuture open() throws IOException {
-        InetSocketAddress src = null, dst = null;
+        final InetSocketAddress src, dst;
         switch (typeEnum) {
             case Direct:
                 src = (InetSocketAddress) serverSession.getRemoteAddress();
@@ -73,12 +73,15 @@ public class TcpipClientChannel extends AbstractClientChannel {
                 src = (InetSocketAddress) serverSession.getRemoteAddress();
                 dst = (InetSocketAddress) serverSession.getLocalAddress();
                 break;
+            default:
+                throw new SshException("Unknown client channel type: " + typeEnum);
         }
         if (closeFuture.isClosed()) {
             throw new SshException("Session has been closed");
         }
         openFuture = new DefaultOpenFuture(lock);
-        log.info("Send SSH_MSG_CHANNEL_OPEN on channel {}", this);
+        log.debug("Send SSH_MSG_CHANNEL_OPEN on channel {}", this);
+
         Buffer buffer = session.createBuffer(SshConstants.SSH_MSG_CHANNEL_OPEN);
         buffer.putString(type);
         buffer.putInt(id);

http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/e2f7ff72/sshd-core/src/main/java/org/apache/sshd/common/forward/TcpipServerChannel.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/common/forward/TcpipServerChannel.java b/sshd-core/src/main/java/org/apache/sshd/common/forward/TcpipServerChannel.java
index 8d43156..21e60df 100644
--- a/sshd-core/src/main/java/org/apache/sshd/common/forward/TcpipServerChannel.java
+++ b/sshd-core/src/main/java/org/apache/sshd/common/forward/TcpipServerChannel.java
@@ -114,15 +114,23 @@ public class TcpipServerChannel extends AbstractServerChannel {
         int portToConnect = buffer.getInt();
         String originatorIpAddress = buffer.getString();
         int originatorPort = buffer.getInt();
-        log.info("Receiving request for direct tcpip: hostToConnect={}, portToConnect={}, originatorIpAddress={}, originatorPort={}",
-                new Object[] { hostToConnect, Integer.valueOf(portToConnect), originatorIpAddress, Integer.valueOf(originatorPort) });
-
+        if (log.isDebugEnabled()) {
+            log.debug("Receiving request for direct tcpip: hostToConnect={}, portToConnect={}, originatorIpAddress={}, originatorPort={}",
+                      hostToConnect, Integer.valueOf(portToConnect), originatorIpAddress, Integer.valueOf(originatorPort));
+        }
 
-        SshdSocketAddress address = null;
+        final SshdSocketAddress address;
         switch (type) {
-            case Direct:    address = new SshdSocketAddress(hostToConnect, portToConnect); break;
-            case Forwarded: address = service.getTcpipForwarder().getForwardedPort(portToConnect); break;
+            case Direct:
+                address = new SshdSocketAddress(hostToConnect, portToConnect);
+                break;
+            case Forwarded:
+                address = service.getTcpipForwarder().getForwardedPort(portToConnect);
+                break;
+            default:
+                throw new IllegalStateException("Unknown server channel type: " + type);
         }
+
         final ForwardingFilter filter = getSession().getFactoryManager().getTcpipForwardingFilter();
         if (address == null || filter == null || !filter.canConnect(address, getSession())) {
             super.close(true);