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:52 UTC

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

Repository: mina-sshd
Updated Branches:
  refs/heads/master a7e2e3fa7 -> e2f7ff720


http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/e2f7ff72/sshd-core/src/main/java/org/apache/sshd/common/future/DefaultCloseFuture.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/common/future/DefaultCloseFuture.java b/sshd-core/src/main/java/org/apache/sshd/common/future/DefaultCloseFuture.java
index 4d5aff7..0092033 100644
--- a/sshd-core/src/main/java/org/apache/sshd/common/future/DefaultCloseFuture.java
+++ b/sshd-core/src/main/java/org/apache/sshd/common/future/DefaultCloseFuture.java
@@ -32,14 +32,16 @@ public class DefaultCloseFuture extends DefaultSshFuture<CloseFuture> implements
         super(lock);
     }
 
+    @Override
     public boolean isClosed() {
         if (isDone()) {
-            return (Boolean) getValue();
+            return ((Boolean) getValue()).booleanValue();
         } else {
             return false;
         }
     }
 
+    @Override
     public void setClosed() {
         setValue(Boolean.TRUE);
     }

http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/e2f7ff72/sshd-core/src/main/java/org/apache/sshd/common/io/IoSession.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/common/io/IoSession.java b/sshd-core/src/main/java/org/apache/sshd/common/io/IoSession.java
index 0158064..699e83e 100644
--- a/sshd-core/src/main/java/org/apache/sshd/common/io/IoSession.java
+++ b/sshd-core/src/main/java/org/apache/sshd/common/io/IoSession.java
@@ -77,6 +77,7 @@ public interface IoSession extends Closeable {
      *                    {@code false} to close this session after all queued
      *                    write requests are flushed.
      */
+    @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/io/mina/MinaAcceptor.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/common/io/mina/MinaAcceptor.java b/sshd-core/src/main/java/org/apache/sshd/common/io/mina/MinaAcceptor.java
index 2e92590..f6a9936 100644
--- a/sshd-core/src/main/java/org/apache/sshd/common/io/mina/MinaAcceptor.java
+++ b/sshd-core/src/main/java/org/apache/sshd/common/io/mina/MinaAcceptor.java
@@ -76,26 +76,32 @@ public class MinaAcceptor extends MinaService implements org.apache.sshd.common.
         return getAcceptor();
     }
 
+    @Override
     public void bind(Collection<? extends SocketAddress> addresses) throws IOException {
         getAcceptor().bind(addresses);
     }
 
+    @Override
     public void bind(SocketAddress address) throws IOException {
         getAcceptor().bind(address);
     }
 
+    @Override
     public void unbind() {
         getAcceptor().unbind();
     }
 
+    @Override
     public void unbind(Collection<? extends SocketAddress> addresses) {
         getAcceptor().unbind(addresses);
     }
 
+    @Override
     public void unbind(SocketAddress address) {
         getAcceptor().unbind(address);
     }
 
+    @Override
     public Set<SocketAddress> getBoundAddresses() {
         return getAcceptor().getLocalAddresses();
     }

http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/e2f7ff72/sshd-core/src/main/java/org/apache/sshd/common/io/mina/MinaConnector.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/common/io/mina/MinaConnector.java b/sshd-core/src/main/java/org/apache/sshd/common/io/mina/MinaConnector.java
index 6e4e368..7623fce 100644
--- a/sshd-core/src/main/java/org/apache/sshd/common/io/mina/MinaConnector.java
+++ b/sshd-core/src/main/java/org/apache/sshd/common/io/mina/MinaConnector.java
@@ -64,36 +64,43 @@ public class MinaConnector extends MinaService implements org.apache.sshd.common
         return getConnector();
     }
 
+    @Override
     public IoConnectFuture connect(SocketAddress address) {
         class Future extends DefaultSshFuture<IoConnectFuture> implements IoConnectFuture {
             Future(Object lock) {
                 super(lock);
             }
 
+            @Override
             public org.apache.sshd.common.io.IoSession getSession() {
                 Object v = getValue();
                 return v instanceof org.apache.sshd.common.io.IoSession ? (org.apache.sshd.common.io.IoSession) v : null;
             }
 
+            @Override
             public Throwable getException() {
                 Object v = getValue();
                 return v instanceof Throwable ? (Throwable) v : null;
             }
 
+            @Override
             public boolean isConnected() {
                 return getValue() instanceof org.apache.sshd.common.io.IoSession;
             }
 
+            @Override
             public void setSession(org.apache.sshd.common.io.IoSession session) {
                 setValue(session);
             }
 
+            @Override
             public void setException(Throwable exception) {
                 setValue(exception);
             }
         }
         final IoConnectFuture future = new Future(null);
         getConnector().connect(address).addListener(new IoFutureListener<ConnectFuture>() {
+            @Override
             public void operationComplete(ConnectFuture cf) {
                 if (cf.getException() != null) {
                     future.setException(cf.getException());

http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/e2f7ff72/sshd-core/src/main/java/org/apache/sshd/common/io/mina/MinaService.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/common/io/mina/MinaService.java b/sshd-core/src/main/java/org/apache/sshd/common/io/mina/MinaService.java
index 0d0cdc8..cbf0ef8 100644
--- a/sshd-core/src/main/java/org/apache/sshd/common/io/mina/MinaService.java
+++ b/sshd-core/src/main/java/org/apache/sshd/common/io/mina/MinaService.java
@@ -61,6 +61,7 @@ public abstract class MinaService extends CloseableUtils.AbstractCloseable imple
         super.doCloseImmediately();
     }
 
+    @Override
     public Map<Long, org.apache.sshd.common.io.IoSession> getManagedSessions() {
         Map<Long, IoSession> mina = new HashMap<Long, IoSession>(getIoService().getManagedSessions());
         Map<Long, org.apache.sshd.common.io.IoSession> sessions = new HashMap<Long, org.apache.sshd.common.io.IoSession>();
@@ -74,36 +75,44 @@ public abstract class MinaService extends CloseableUtils.AbstractCloseable imple
         return sessions;
     }
 
+    @Override
     public void sessionOpened(IoSession session) throws Exception {
         // Empty handler
     }
 
+    @Override
     public void sessionIdle(IoSession session, IdleStatus status) throws Exception {
         // Empty handler
     }
 
+    @Override
     public void messageSent(IoSession session, Object message) throws Exception {
         // Empty handler
     }
 
+    @Override
     public void inputClosed(IoSession session) throws Exception {
         session.close(true);
     }
 
+    @Override
     public void sessionCreated(IoSession session) throws Exception {
         org.apache.sshd.common.io.IoSession ioSession = new MinaSession(this, session);
         session.setAttribute(org.apache.sshd.common.io.IoSession.class, ioSession);
         handler.sessionCreated(ioSession);
     }
 
+    @Override
     public void sessionClosed(IoSession session) throws Exception {
         handler.sessionClosed(getSession(session));
     }
 
+    @Override
     public void exceptionCaught(IoSession session, Throwable cause) throws Exception {
         handler.exceptionCaught(getSession(session), cause);
     }
 
+    @Override
     public void messageReceived(IoSession session, Object message) throws Exception {
         handler.messageReceived(getSession(session), MinaSupport.asReadable((IoBuffer) message));
     }
@@ -117,19 +126,19 @@ public abstract class MinaService extends CloseableUtils.AbstractCloseable imple
         Integer intVal;
         Boolean boolVal;
         if ((boolVal = getBoolean(FactoryManager.SOCKET_KEEPALIVE)) != null) {
-            config.setKeepAlive(boolVal);
+            config.setKeepAlive(boolVal.booleanValue());
         }
         if ((intVal = getInteger(FactoryManager.SOCKET_SNDBUF)) != null) {
-            config.setSendBufferSize(intVal);
+            config.setSendBufferSize(intVal.intValue());
         }
         if ((intVal = getInteger(FactoryManager.SOCKET_RCVBUF)) != null) {
-            config.setReceiveBufferSize(intVal);
+            config.setReceiveBufferSize(intVal.intValue());
         }
         if ((intVal = getInteger(FactoryManager.SOCKET_LINGER)) != null) {
-            config.setSoLinger(intVal);
+            config.setSoLinger(intVal.intValue());
         }
         if ((boolVal = getBoolean(FactoryManager.SOCKET_LINGER)) != null) {
-            config.setTcpNoDelay(boolVal);
+            config.setTcpNoDelay(boolVal.booleanValue());
         }
         if (sessionConfig != null) {
             config.setAll(sessionConfig);

http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/e2f7ff72/sshd-core/src/main/java/org/apache/sshd/common/io/mina/MinaSession.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/common/io/mina/MinaSession.java b/sshd-core/src/main/java/org/apache/sshd/common/io/mina/MinaSession.java
index 64d245c..2dae76c 100644
--- a/sshd-core/src/main/java/org/apache/sshd/common/io/mina/MinaSession.java
+++ b/sshd-core/src/main/java/org/apache/sshd/common/io/mina/MinaSession.java
@@ -55,22 +55,27 @@ public class MinaSession extends CloseableUtils.AbstractInnerCloseable implement
         session.suspendWrite();
     }
 
+    @Override
     public Object getAttribute(Object key) {
         return session.getAttribute(key);
     }
 
+    @Override
     public Object setAttribute(Object key, Object value) {
         return session.setAttribute(key, value);
     }
 
+    @Override
     public SocketAddress getRemoteAddress() {
         return session.getRemoteAddress();
     }
 
+    @Override
     public SocketAddress getLocalAddress() {
         return session.getLocalAddress();
     }
 
+    @Override
     public long getId() {
         return session.getId();
     }
@@ -83,17 +88,24 @@ public class MinaSession extends CloseableUtils.AbstractInnerCloseable implement
     @Override
     protected Closeable getInnerCloseable() {
         return new CloseableUtils.IoBaseCloseable() {
+            @SuppressWarnings("synthetic-access")
+            @Override
             public boolean isClosing() {
                 return session.isClosing();
             }
+            @SuppressWarnings("synthetic-access")
+            @Override
             public boolean isClosed() {
                 return !session.isConnected();
             }
+            @SuppressWarnings("synthetic-access")
+            @Override
             public org.apache.sshd.common.future.CloseFuture close(boolean immediately) {
                 final DefaultCloseFuture future = new DefaultCloseFuture(lock);
                 session.close(false).addListener(new IoFutureListener<IoFuture>() {
+                    @Override
                     public void operationComplete(IoFuture f) {
-                        future.setValue(true);
+                        future.setValue(Boolean.TRUE);
                     }
                 });
                 return future;
@@ -101,12 +113,14 @@ public class MinaSession extends CloseableUtils.AbstractInnerCloseable implement
         };
     }
 
+    @Override
     public IoWriteFuture write(Buffer buffer) {
         class Future extends DefaultSshFuture<IoWriteFuture> implements IoWriteFuture {
             Future(Object lock) {
                 super(lock);
             }
 
+            @Override
             public void verify() throws SshException {
                 try {
                     await();
@@ -119,6 +133,7 @@ public class MinaSession extends CloseableUtils.AbstractInnerCloseable implement
                 }
             }
 
+            @Override
             public boolean isWritten() {
                 return getValue() instanceof Boolean;
             }
@@ -127,6 +142,7 @@ public class MinaSession extends CloseableUtils.AbstractInnerCloseable implement
                 setValue(Boolean.TRUE);
             }
 
+            @Override
             public Throwable getException() {
                 Object v = getValue();
                 return v instanceof Throwable ? (Throwable) v : null;
@@ -141,6 +157,7 @@ public class MinaSession extends CloseableUtils.AbstractInnerCloseable implement
         }
         final Future future = new Future(null);
         session.write(MinaSupport.asIoBuffer(buffer)).addListener(new IoFutureListener<WriteFuture>() {
+            @Override
             public void operationComplete(WriteFuture cf) {
                 if (cf.getException() != null) {
                     future.setException(cf.getException());
@@ -152,10 +169,12 @@ public class MinaSession extends CloseableUtils.AbstractInnerCloseable implement
         return future;
     }
 
+    @Override
     public IoService getService() {
         return service;
     }
 
+    @Override
     public String toString() {
         return getClass().getSimpleName() + "[local=" + session.getLocalAddress() + ", remote=" + session.getRemoteAddress() + "]";
     }

http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/e2f7ff72/sshd-core/src/main/java/org/apache/sshd/common/io/mina/MinaSupport.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/common/io/mina/MinaSupport.java b/sshd-core/src/main/java/org/apache/sshd/common/io/mina/MinaSupport.java
index 9b623e5..86ace1b 100644
--- a/sshd-core/src/main/java/org/apache/sshd/common/io/mina/MinaSupport.java
+++ b/sshd-core/src/main/java/org/apache/sshd/common/io/mina/MinaSupport.java
@@ -26,10 +26,12 @@ public class MinaSupport {
 
     public static Readable asReadable(final IoBuffer buffer) {
         return new Readable() {
+            @Override
             public int available() {
                 return buffer.remaining();
             }
 
+            @Override
             public void getRawBytes(byte[] data, int offset, int len) {
                 buffer.get(data, offset, len);
             }

http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/e2f7ff72/sshd-core/src/main/java/org/apache/sshd/common/kex/DHG.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/common/kex/DHG.java b/sshd-core/src/main/java/org/apache/sshd/common/kex/DHG.java
index 2658eb1..15602cf 100644
--- a/sshd-core/src/main/java/org/apache/sshd/common/kex/DHG.java
+++ b/sshd-core/src/main/java/org/apache/sshd/common/kex/DHG.java
@@ -60,6 +60,7 @@ public class DHG extends AbstractDH {
         g = gValue;
     }
 
+    @Override
     public byte[] getE() throws Exception {
         if (e == null) {
             DHParameterSpec dhSkipParamSpec = new DHParameterSpec(p, g);
@@ -72,6 +73,7 @@ public class DHG extends AbstractDH {
         return e_array;
     }
 
+    @Override
     protected byte[] calculateK() throws Exception {
         KeyFactory myKeyFac = SecurityUtils.getKeyFactory("DH");
         DHPublicKeySpec keySpec = new DHPublicKeySpec(f, p, g);
@@ -88,6 +90,7 @@ public class DHG extends AbstractDH {
         setG(new BigInteger(g));
     }
 
+    @Override
     public void setF(byte[] f) {
         setF(new BigInteger(f));
     }

http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/e2f7ff72/sshd-core/src/main/java/org/apache/sshd/common/kex/dh/AbstractDHKeyExchange.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/common/kex/dh/AbstractDHKeyExchange.java b/sshd-core/src/main/java/org/apache/sshd/common/kex/dh/AbstractDHKeyExchange.java
index 0629e8c..55fc735 100644
--- a/sshd-core/src/main/java/org/apache/sshd/common/kex/dh/AbstractDHKeyExchange.java
+++ b/sshd-core/src/main/java/org/apache/sshd/common/kex/dh/AbstractDHKeyExchange.java
@@ -42,6 +42,7 @@ public abstract class AbstractDHKeyExchange extends AbstractLoggingBean implemen
         super();
     }
 
+    @Override
     public void init(AbstractSession s, byte[] V_S, byte[] V_C, byte[] I_S, byte[] I_C) throws Exception {
         this.V_S = V_S;
         this.V_C = V_C;
@@ -49,14 +50,17 @@ public abstract class AbstractDHKeyExchange extends AbstractLoggingBean implemen
         this.I_C = I_C;
     }
 
+    @Override
     public Digest getHash() {
         return hash;
     }
 
+    @Override
     public byte[] getH() {
         return H;
     }
 
+    @Override
     public byte[] getK() {
         return K;
     }

http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/e2f7ff72/sshd-core/src/main/java/org/apache/sshd/common/session/AbstractConnectionService.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/common/session/AbstractConnectionService.java b/sshd-core/src/main/java/org/apache/sshd/common/session/AbstractConnectionService.java
index 26f589e..efab024 100644
--- a/sshd-core/src/main/java/org/apache/sshd/common/session/AbstractConnectionService.java
+++ b/sshd-core/src/main/java/org/apache/sshd/common/session/AbstractConnectionService.java
@@ -87,13 +87,17 @@ public abstract class AbstractConnectionService extends CloseableUtils.AbstractI
         return channels.values();
     }
 
+    @Override
     public AbstractSession getSession() {
         return (AbstractSession) session;
     }
 
+    @Override
     public void start() {
+        // do nothing
     }
 
+    @Override
     public TcpipForwarder getTcpipForwarder() {
         return tcpipForwarder;
     }
@@ -117,6 +121,7 @@ public abstract class AbstractConnectionService extends CloseableUtils.AbstractI
      * @return the id of this channel
      * @throws IOException
      */
+    @Override
     public int registerChannel(Channel channel) throws IOException {
         int channelId = getNextChannelId();
         channel.init(this, session, channelId);
@@ -124,7 +129,7 @@ public abstract class AbstractConnectionService extends CloseableUtils.AbstractI
             if (isClosing()) {
                 throw new IllegalStateException("Session is being closed");
             }
-            channels.put(channelId, channel);
+            channels.put(Integer.valueOf(channelId), channel);
         }
         return channelId;
     }
@@ -134,10 +139,12 @@ public abstract class AbstractConnectionService extends CloseableUtils.AbstractI
      *
      * @param channel the channel
      */
+    @Override
     public void unregisterChannel(Channel channel) {
-        channels.remove(channel.getId());
+        channels.remove(Integer.valueOf(channel.getId()));
     }
 
+    @Override
     public void process(byte cmd, Buffer buffer) throws Exception {
         switch (cmd) {
             case SSH_MSG_CHANNEL_OPEN:
@@ -184,13 +191,16 @@ public abstract class AbstractConnectionService extends CloseableUtils.AbstractI
         }
     }
 
+    @Override
     public void setAllowMoreSessions(boolean allow) {
         allowMoreSessions = allow;
     }
 
     public void channelOpenConfirmation(Buffer buffer) throws IOException {
         Channel channel = getChannel(buffer);
-        log.debug("Received SSH_MSG_CHANNEL_OPEN_CONFIRMATION on channel {}", channel.getId());
+        if (log.isDebugEnabled()) {
+            log.debug("Received SSH_MSG_CHANNEL_OPEN_CONFIRMATION on channel {}", Integer.valueOf(channel.getId()));
+        }
         int recipient = buffer.getInt();
         int rwsize = buffer.getInt();
         int rmpsize = buffer.getInt();
@@ -199,8 +209,11 @@ public abstract class AbstractConnectionService extends CloseableUtils.AbstractI
 
     public void channelOpenFailure(Buffer buffer) throws IOException {
         AbstractClientChannel channel = (AbstractClientChannel) getChannel(buffer);
-        log.debug("Received SSH_MSG_CHANNEL_OPEN_FAILURE on channel {}", channel.getId());
-        channels.remove(channel.getId());
+        Integer id = Integer.valueOf(channel.getId());
+        if (log.isDebugEnabled()) {
+            log.debug("Received SSH_MSG_CHANNEL_OPEN_FAILURE on channel {}", id);
+        }
+        channels.remove(id);
         channel.handleOpenFailure(buffer);
     }
 
@@ -237,7 +250,7 @@ public abstract class AbstractConnectionService extends CloseableUtils.AbstractI
             Channel channel = getChannel(buffer);
             channel.handleWindowAdjust(buffer);
         } catch (SshException e) {
-            log.info(e.getMessage());
+            log.info("channelWindowAdjust error: {}", e.getMessage());
         }
     }
 
@@ -294,7 +307,7 @@ public abstract class AbstractConnectionService extends CloseableUtils.AbstractI
      */
     protected Channel getChannel(Buffer buffer) throws IOException {
         int recipient = buffer.getInt();
-        Channel channel = channels.get(recipient);
+        Channel channel = channels.get(Integer.valueOf(recipient));
         if (channel == null) {
             buffer.rpos(buffer.rpos() - 5);
             byte cmd = buffer.getByte();
@@ -343,6 +356,7 @@ public abstract class AbstractConnectionService extends CloseableUtils.AbstractI
 
         final int channelId = registerChannel(channel);
         channel.open(id, rwsize, rmpsize, buffer).addListener(new SshFutureListener<OpenFuture>() {
+            @Override
             public void operationComplete(OpenFuture future) {
                 try {
                     if (future.isOpened()) {
@@ -410,6 +424,10 @@ public abstract class AbstractConnectionService extends CloseableUtils.AbstractI
                             session.writePacket(buffer);
                         }
                         return;
+                    default:
+                        if (log.isTraceEnabled()) {
+                            log.trace("globalRequest({}) {}#process: {}", req, handler.getClass().getSimpleName(), result);
+                        }
                 }
             }
         }
@@ -428,6 +446,7 @@ public abstract class AbstractConnectionService extends CloseableUtils.AbstractI
         ((AbstractSession) session).requestFailure(buffer);
     }
 
+    @Override
     public String toString() {
         return getClass().getSimpleName() + "[" + session + "]";
     }

http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/e2f7ff72/sshd-core/src/main/java/org/apache/sshd/common/session/ConnectionService.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/common/session/ConnectionService.java b/sshd-core/src/main/java/org/apache/sshd/common/session/ConnectionService.java
index 244b522..58cb0f9 100644
--- a/sshd-core/src/main/java/org/apache/sshd/common/session/ConnectionService.java
+++ b/sshd-core/src/main/java/org/apache/sshd/common/session/ConnectionService.java
@@ -20,10 +20,8 @@ package org.apache.sshd.common.session;
 
 import java.io.IOException;
 
-import org.apache.sshd.agent.local.AgentForwardedChannel;
 import org.apache.sshd.common.Channel;
 import org.apache.sshd.common.Service;
-import org.apache.sshd.common.Session;
 import org.apache.sshd.common.TcpipForwarder;
 
 /**

http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/e2f7ff72/sshd-core/src/main/java/org/apache/sshd/common/util/EventListenerUtils.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/common/util/EventListenerUtils.java b/sshd-core/src/main/java/org/apache/sshd/common/util/EventListenerUtils.java
index f951a91..b89774f 100644
--- a/sshd-core/src/main/java/org/apache/sshd/common/util/EventListenerUtils.java
+++ b/sshd-core/src/main/java/org/apache/sshd/common/util/EventListenerUtils.java
@@ -90,6 +90,7 @@ public class EventListenerUtils {
         }
 
         Object wrapper = Proxy.newProxyInstance(loader, new Class<?>[]{listenerType}, new InvocationHandler() {
+            @Override
             public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
                 for (T l : listeners) {
                     method.invoke(l, args);

http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/e2f7ff72/sshd-core/src/main/java/org/apache/sshd/common/util/SecurityUtils.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/common/util/SecurityUtils.java b/sshd-core/src/main/java/org/apache/sshd/common/util/SecurityUtils.java
index 30bd0ac..1a8bd7e 100644
--- a/sshd-core/src/main/java/org/apache/sshd/common/util/SecurityUtils.java
+++ b/sshd-core/src/main/java/org/apache/sshd/common/util/SecurityUtils.java
@@ -83,6 +83,7 @@ public class SecurityUtils {
         return BOUNCY_CASTLE.equals(securityProvider);
     }
 
+    @SuppressWarnings("synthetic-access")
     private static void register() {
         if (!registrationDone) {
             if (registerBouncyCastle == null) {
@@ -109,6 +110,7 @@ public class SecurityUtils {
     }
 
     private static class BouncyCastleRegistration implements Callable<Void> {
+        @SuppressWarnings("synthetic-access")
         @Override
         public Void call() throws Exception {
             if (java.security.Security.getProvider(BOUNCY_CASTLE) == null) {

http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/e2f7ff72/sshd-core/src/main/java/org/apache/sshd/common/util/SelectorUtils.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/common/util/SelectorUtils.java b/sshd-core/src/main/java/org/apache/sshd/common/util/SelectorUtils.java
index 0203eed..a075759 100644
--- a/sshd-core/src/main/java/org/apache/sshd/common/util/SelectorUtils.java
+++ b/sshd-core/src/main/java/org/apache/sshd/common/util/SelectorUtils.java
@@ -223,11 +223,11 @@ public final class SelectorUtils {
 
         // up to first '**'
         while (patIdxStart <= patIdxEnd && strIdxStart <= strIdxEnd) {
-            String patDir = (String) patDirs.get(patIdxStart);
+            String patDir = patDirs.get(patIdxStart);
             if (patDir.equals("**")) {
                 break;
             }
-            if (!match(patDir, (String) strDirs.get(strIdxStart),
+            if (!match(patDir, strDirs.get(strIdxStart),
                     isCaseSensitive)) {
                 patDirs = null;
                 strDirs = null;
@@ -257,11 +257,11 @@ public final class SelectorUtils {
 
         // up to last '**'
         while (patIdxStart <= patIdxEnd && strIdxStart <= strIdxEnd) {
-            String patDir = (String) patDirs.get(patIdxEnd);
+            String patDir = patDirs.get(patIdxEnd);
             if (patDir.equals("**")) {
                 break;
             }
-            if (!match(patDir, (String) strDirs.get(strIdxEnd),
+            if (!match(patDir, strDirs.get(strIdxEnd),
                     isCaseSensitive)) {
                 patDirs = null;
                 strDirs = null;
@@ -303,8 +303,8 @@ public final class SelectorUtils {
             strLoop:
             for (int i = 0; i <= strLength - patLength; i++) {
                 for (int j = 0; j < patLength; j++) {
-                    String subPat = (String) patDirs.get(patIdxStart + j + 1);
-                    String subStr = (String) strDirs.get(strIdxStart + i + j);
+                    String subPat = patDirs.get(patIdxStart + j + 1);
+                    String subStr = strDirs.get(strIdxStart + i + j);
                     if (!match(subPat, subStr, isCaseSensitive)) {
                         continue strLoop;
                     }

http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/e2f7ff72/sshd-core/src/main/java/org/apache/sshd/common/util/SttySupport.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/common/util/SttySupport.java b/sshd-core/src/main/java/org/apache/sshd/common/util/SttySupport.java
index 3340360..537a16f 100644
--- a/sshd-core/src/main/java/org/apache/sshd/common/util/SttySupport.java
+++ b/sshd-core/src/main/java/org/apache/sshd/common/util/SttySupport.java
@@ -46,7 +46,7 @@ public class SttySupport {
         Map<PtyMode, Integer> modes = new TreeMap<PtyMode, Integer>();
         for (PtyMode mode : PtyMode.values()) {
             if (mode == PtyMode.TTY_OP_ISPEED || mode == PtyMode.TTY_OP_OSPEED) {
-
+                // TODO ...
             } else {
                 String str = mode.name().toLowerCase();
                 // Are we looking for a character?
@@ -57,12 +57,12 @@ public class SttySupport {
                         v = findChar(stty, "rprnt");
                     }
                     if (v >= 0) {
-                        modes.put(mode, v);
+                        modes.put(mode, Integer.valueOf(v));
                     }
                 } else {
                     int v = findFlag(stty, str);
                     if (v >= 0) {
-                        modes.put(mode, v);
+                        modes.put(mode, Integer.valueOf(v));
                     }
                 }
             }
@@ -136,6 +136,7 @@ public class SttySupport {
         try {
             val = getTerminalProperty("columns");
         } catch (Exception e) {
+            // ignored
         }
 
         if (val == -1) {
@@ -159,6 +160,7 @@ public class SttySupport {
         try {
             val = getTerminalProperty("rows");
         } catch (Exception e) {
+            // ignored
         }
 
         if (val == -1) {

http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/e2f7ff72/sshd-core/src/main/java/org/apache/sshd/server/AsyncCommand.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/server/AsyncCommand.java b/sshd-core/src/main/java/org/apache/sshd/server/AsyncCommand.java
index 8654dce..55337ab 100644
--- a/sshd-core/src/main/java/org/apache/sshd/server/AsyncCommand.java
+++ b/sshd-core/src/main/java/org/apache/sshd/server/AsyncCommand.java
@@ -18,10 +18,6 @@
  */
 package org.apache.sshd.server;
 
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
-
 import org.apache.sshd.common.io.IoInputStream;
 import org.apache.sshd.common.io.IoOutputStream;
 

http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/e2f7ff72/sshd-core/src/main/java/org/apache/sshd/server/auth/CachingPublicKeyAuthenticator.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/server/auth/CachingPublicKeyAuthenticator.java b/sshd-core/src/main/java/org/apache/sshd/server/auth/CachingPublicKeyAuthenticator.java
index 9ce9284..d836f4e 100644
--- a/sshd-core/src/main/java/org/apache/sshd/server/auth/CachingPublicKeyAuthenticator.java
+++ b/sshd-core/src/main/java/org/apache/sshd/server/auth/CachingPublicKeyAuthenticator.java
@@ -19,7 +19,6 @@
 package org.apache.sshd.server.auth;
 
 import java.security.PublicKey;
-import java.util.HashMap;
 import java.util.Map;
 import java.util.concurrent.ConcurrentHashMap;
 
@@ -42,27 +41,35 @@ public class CachingPublicKeyAuthenticator implements PublickeyAuthenticator, Se
         this.authenticator = authenticator;
     }
 
+    @Override
     public boolean authenticate(String username, PublicKey key, ServerSession session) {
         Map<PublicKey, Boolean> map = cache.get(session);
         if (map == null) {
-            map = new HashMap<PublicKey, Boolean>();
+            map = new ConcurrentHashMap<PublicKey, Boolean>();
             cache.put(session, map);
             session.addListener(this);
         }
-        if (map.containsKey(key)) {
-            return map.get(key);
+        
+        Boolean result = map.get(key);
+        if (result == null) {
+            result = Boolean.valueOf(authenticator.authenticate(username, key, session));
+            map.put(key, result);
         }
-        boolean result = authenticator.authenticate(username, key, session);
-        map.put(key, result);
-        return result;
+
+        return result.booleanValue();
     }
 
+    @Override
     public void sessionCreated(Session session) {
+        // ignored
     }
 
+    @Override
     public void sessionEvent(Session session, Event event) {
+        // ignored
     }
 
+    @Override
     public void sessionClosed(Session session) {
         cache.remove(session);
     }

http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/e2f7ff72/sshd-core/src/main/java/org/apache/sshd/server/auth/gss/CredentialHelper.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/server/auth/gss/CredentialHelper.java b/sshd-core/src/main/java/org/apache/sshd/server/auth/gss/CredentialHelper.java
index 37ce5d3..3a0d4d7 100644
--- a/sshd-core/src/main/java/org/apache/sshd/server/auth/gss/CredentialHelper.java
+++ b/sshd-core/src/main/java/org/apache/sshd/server/auth/gss/CredentialHelper.java
@@ -40,13 +40,13 @@ import org.ietf.jgss.GSSManager;
 
 public class CredentialHelper {
 
+    @SuppressWarnings("synthetic-access")
     public static GSSCredential creds(GSSManager mgr, String spn, String keytab) throws LoginException, GSSException {
         LoginContext lc = new LoginContext("x", null, null, new FixedLoginConfiguration(spn, keytab));
-
         lc.login();
 
         try {
-            return (GSSCredential) Subject.doAs(lc.getSubject(), new G(mgr));
+            return Subject.doAs(lc.getSubject(), new G(mgr));
         } catch (PrivilegedActionException e) {
             throw (GSSException) e.getCause();
         }
@@ -88,6 +88,7 @@ public class CredentialHelper {
          * @return The entries, or <code>null</code> if the name is not known
          */
 
+        @Override
         public AppConfigurationEntry[] getAppConfigurationEntry(String name) {
             return new AppConfigurationEntry[]{entry};
         }
@@ -96,7 +97,9 @@ public class CredentialHelper {
          * Refresh the configuration.  Nothing to do here.
          */
 
+        @Override
         public void refresh() {
+            // ignored
         }
     }
 
@@ -123,6 +126,7 @@ public class CredentialHelper {
          * @throws GSSException If an error occurred
          */
 
+        @Override
         public GSSCredential run() throws GSSException {
             return mgr.createCredential(null, GSSCredential.INDEFINITE_LIFETIME, UserAuthGSS.KRB5_MECH, GSSCredential.ACCEPT_ONLY);
         }

http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/e2f7ff72/sshd-core/src/main/java/org/apache/sshd/server/channel/ChannelDataReceiver.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/server/channel/ChannelDataReceiver.java b/sshd-core/src/main/java/org/apache/sshd/server/channel/ChannelDataReceiver.java
index d832b61..67e709f 100644
--- a/sshd-core/src/main/java/org/apache/sshd/server/channel/ChannelDataReceiver.java
+++ b/sshd-core/src/main/java/org/apache/sshd/server/channel/ChannelDataReceiver.java
@@ -106,5 +106,6 @@ public interface ChannelDataReceiver extends Closeable {
      *
      * The client will no longer send us any more data.
      */
+    @Override
     void close() throws IOException;
 }

http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/e2f7ff72/sshd-core/src/main/java/org/apache/sshd/server/channel/OpenChannelException.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/server/channel/OpenChannelException.java b/sshd-core/src/main/java/org/apache/sshd/server/channel/OpenChannelException.java
index afc16b9..84d6677 100644
--- a/sshd-core/src/main/java/org/apache/sshd/server/channel/OpenChannelException.java
+++ b/sshd-core/src/main/java/org/apache/sshd/server/channel/OpenChannelException.java
@@ -26,6 +26,7 @@ import org.apache.sshd.common.SshConstants;
  * @author <a href="mailto:dev@mina.apache.org">Apache MINA SSHD Project</a>
  */
 public class OpenChannelException extends Exception {
+    private static final long serialVersionUID = 3861183351970782341L;
     private final int code;
 
     public OpenChannelException(int code, String message) {

http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/e2f7ff72/sshd-core/src/main/java/org/apache/sshd/server/command/UnknownCommand.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/server/command/UnknownCommand.java b/sshd-core/src/main/java/org/apache/sshd/server/command/UnknownCommand.java
index 95c0fda..f4f0387 100644
--- a/sshd-core/src/main/java/org/apache/sshd/server/command/UnknownCommand.java
+++ b/sshd-core/src/main/java/org/apache/sshd/server/command/UnknownCommand.java
@@ -45,22 +45,27 @@ public class UnknownCommand implements Command {
         this.command = command;
     }
 
+    @Override
     public void setInputStream(InputStream in) {
         this.in = in;
     }
 
+    @Override
     public void setOutputStream(OutputStream out) {
         this.out = out;
     }
 
+    @Override
     public void setErrorStream(OutputStream err) {
         this.err = err;
     }
 
+    @Override
     public void setExitCallback(ExitCallback callback) {
         this.callback = callback;
     }
 
+    @Override
     public void start(Environment env) throws IOException {
         err.write(("Unknown command: " + command + "\n").getBytes());
         err.flush();
@@ -69,7 +74,8 @@ public class UnknownCommand implements Command {
         }
     }
 
+    @Override
     public void destroy() {
+        // ignored
     }
-
 }

http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/e2f7ff72/sshd-core/src/main/java/org/apache/sshd/server/global/CancelTcpipForwardHandler.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/server/global/CancelTcpipForwardHandler.java b/sshd-core/src/main/java/org/apache/sshd/server/global/CancelTcpipForwardHandler.java
index 189f328..f21c027 100644
--- a/sshd-core/src/main/java/org/apache/sshd/server/global/CancelTcpipForwardHandler.java
+++ b/sshd-core/src/main/java/org/apache/sshd/server/global/CancelTcpipForwardHandler.java
@@ -31,6 +31,7 @@ import org.apache.sshd.common.util.buffer.Buffer;
  */
 public class CancelTcpipForwardHandler implements RequestHandler<ConnectionService> {
 
+    @Override
     public Result process(ConnectionService connectionService, String request, boolean wantReply, Buffer buffer) throws Exception {
         if (request.equals("cancel-tcpip-forward")) {
             String address = buffer.getString();

http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/e2f7ff72/sshd-core/src/main/java/org/apache/sshd/server/global/KeepAliveHandler.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/server/global/KeepAliveHandler.java b/sshd-core/src/main/java/org/apache/sshd/server/global/KeepAliveHandler.java
index c6881d0..7c3b07e 100644
--- a/sshd-core/src/main/java/org/apache/sshd/server/global/KeepAliveHandler.java
+++ b/sshd-core/src/main/java/org/apache/sshd/server/global/KeepAliveHandler.java
@@ -19,7 +19,6 @@
 package org.apache.sshd.server.global;
 
 import org.apache.sshd.common.RequestHandler;
-import org.apache.sshd.common.SshConstants;
 import org.apache.sshd.common.session.ConnectionService;
 import org.apache.sshd.common.util.buffer.Buffer;
 
@@ -30,6 +29,7 @@ import org.apache.sshd.common.util.buffer.Buffer;
  */
 public class KeepAliveHandler implements RequestHandler<ConnectionService> {
 
+    @Override
     public Result process(ConnectionService connectionService, String request, boolean wantReply, Buffer buffer) throws Exception {
         if (request.startsWith("keepalive@")) {
             return Result.ReplyFailure;

http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/e2f7ff72/sshd-core/src/main/java/org/apache/sshd/server/global/NoMoreSessionsHandler.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/server/global/NoMoreSessionsHandler.java b/sshd-core/src/main/java/org/apache/sshd/server/global/NoMoreSessionsHandler.java
index 38bf122..14da738 100644
--- a/sshd-core/src/main/java/org/apache/sshd/server/global/NoMoreSessionsHandler.java
+++ b/sshd-core/src/main/java/org/apache/sshd/server/global/NoMoreSessionsHandler.java
@@ -19,7 +19,6 @@
 package org.apache.sshd.server.global;
 
 import org.apache.sshd.common.RequestHandler;
-import org.apache.sshd.common.SshConstants;
 import org.apache.sshd.common.session.ConnectionService;
 import org.apache.sshd.common.util.buffer.Buffer;
 
@@ -30,6 +29,7 @@ import org.apache.sshd.common.util.buffer.Buffer;
  */
 public class NoMoreSessionsHandler implements RequestHandler<ConnectionService> {
 
+    @Override
     public Result process(ConnectionService connectionService, String request, boolean wantReply, Buffer buffer) throws Exception {
         if (request.startsWith("no-more-sessions@")) {
             connectionService.setAllowMoreSessions(false);

http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/e2f7ff72/sshd-core/src/main/java/org/apache/sshd/server/global/TcpipForwardHandler.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/server/global/TcpipForwardHandler.java b/sshd-core/src/main/java/org/apache/sshd/server/global/TcpipForwardHandler.java
index 7151e4b..c453101 100644
--- a/sshd-core/src/main/java/org/apache/sshd/server/global/TcpipForwardHandler.java
+++ b/sshd-core/src/main/java/org/apache/sshd/server/global/TcpipForwardHandler.java
@@ -31,6 +31,7 @@ import org.apache.sshd.common.util.buffer.Buffer;
  */
 public class TcpipForwardHandler implements RequestHandler<ConnectionService> {
 
+    @Override
     public Result process(ConnectionService connectionService, String request, boolean wantReply, Buffer buffer) throws Exception {
         if (request.equals("tcpip-forward")) {
             String address = buffer.getString();

http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/e2f7ff72/sshd-core/src/main/java/org/apache/sshd/server/jaas/JaasPasswordAuthenticator.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/server/jaas/JaasPasswordAuthenticator.java b/sshd-core/src/main/java/org/apache/sshd/server/jaas/JaasPasswordAuthenticator.java
index aba2c5c..7200083 100644
--- a/sshd-core/src/main/java/org/apache/sshd/server/jaas/JaasPasswordAuthenticator.java
+++ b/sshd-core/src/main/java/org/apache/sshd/server/jaas/JaasPasswordAuthenticator.java
@@ -31,8 +31,6 @@ import javax.security.auth.login.LoginContext;
 import org.apache.sshd.common.util.AbstractLoggingBean;
 import org.apache.sshd.server.PasswordAuthenticator;
 import org.apache.sshd.server.session.ServerSession;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 
 /**
  * TODO Add javadoc

http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/e2f7ff72/sshd-core/src/main/java/org/apache/sshd/server/kex/AbstractDHServerKeyExchange.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/server/kex/AbstractDHServerKeyExchange.java b/sshd-core/src/main/java/org/apache/sshd/server/kex/AbstractDHServerKeyExchange.java
index 6d1172b..169efe6 100644
--- a/sshd-core/src/main/java/org/apache/sshd/server/kex/AbstractDHServerKeyExchange.java
+++ b/sshd-core/src/main/java/org/apache/sshd/server/kex/AbstractDHServerKeyExchange.java
@@ -36,6 +36,7 @@ public abstract class AbstractDHServerKeyExchange extends AbstractDHKeyExchange
         super();
     }
 
+    @Override
     public void init(AbstractSession s, byte[] V_S, byte[] V_C, byte[] I_S, byte[] I_C) throws Exception {
         super.init(s, V_S, V_C, I_S, I_C);
         if (!(s instanceof ServerSession)) {
@@ -44,6 +45,7 @@ public abstract class AbstractDHServerKeyExchange extends AbstractDHKeyExchange
         session = (ServerSession) s;
     }
 
+    @Override
     public PublicKey getServerKey() {
         return session.getHostKey().getPublic();
     }

http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/e2f7ff72/sshd-core/src/main/java/org/apache/sshd/server/session/ServerConnectionService.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/server/session/ServerConnectionService.java b/sshd-core/src/main/java/org/apache/sshd/server/session/ServerConnectionService.java
index 101b5a5..776ce8a 100644
--- a/sshd-core/src/main/java/org/apache/sshd/server/session/ServerConnectionService.java
+++ b/sshd-core/src/main/java/org/apache/sshd/server/session/ServerConnectionService.java
@@ -35,10 +35,12 @@ public class ServerConnectionService 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 ServerConnectionService(session);
         }
@@ -56,10 +58,12 @@ public class ServerConnectionService extends AbstractConnectionService {
         }
     }
 
+    @Override
     public String initAgentForward() throws IOException {
         return agentForward.initialize();
     }
 
+    @Override
     public String createX11Display(boolean singleConnection, String authenticationProtocol, String authenticationCookie, int screen) throws IOException {
         return x11Forward.createDisplay(singleConnection, authenticationProtocol, authenticationCookie, screen);
     }

http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/e2f7ff72/sshd-core/src/main/java/org/apache/sshd/server/session/ServerUserAuthService.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/server/session/ServerUserAuthService.java b/sshd-core/src/main/java/org/apache/sshd/server/session/ServerUserAuthService.java
index c0ec866..1e5ad3d 100644
--- a/sshd-core/src/main/java/org/apache/sshd/server/session/ServerUserAuthService.java
+++ b/sshd-core/src/main/java/org/apache/sshd/server/session/ServerUserAuthService.java
@@ -24,7 +24,6 @@ import java.util.Arrays;
 import java.util.Collections;
 import java.util.List;
 
-import org.apache.sshd.SshServer;
 import org.apache.sshd.common.FactoryManager;
 import org.apache.sshd.common.FactoryManagerUtils;
 import org.apache.sshd.common.NamedFactory;
@@ -47,10 +46,12 @@ public class ServerUserAuthService 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 ServerUserAuthService(session);
         }
@@ -106,14 +107,17 @@ public class ServerUserAuthService extends CloseableUtils.AbstractCloseable impl
         }
     }
 
+    @Override
     public void start() {
         // do nothing
     }
 
+    @Override
     public ServerSession getSession() {
         return session;
     }
 
+    @Override
     public void process(byte cmd, Buffer buffer) throws Exception {
         Boolean authed = Boolean.FALSE;
 
@@ -144,8 +148,7 @@ public class ServerUserAuthService extends CloseableUtils.AbstractCloseable impl
             }
 
             if (log.isDebugEnabled()) {
-                log.debug("Authenticating user '{}' with service '{}' and method '{}'",
-                          new Object[] { username, service, method });
+                log.debug("Authenticating user '{}' with service '{}' and method '{}'", username, service, method);
             }
             NamedFactory<UserAuth> factory = NamedFactory.Utils.get(userAuthFactories, method);
             if (factory != null) {
@@ -162,7 +165,9 @@ public class ServerUserAuthService extends CloseableUtils.AbstractCloseable impl
                 // This should not happen
                 throw new IllegalStateException();
             }
-            log.debug("Received authentication message {}", cmd);
+            if (log.isDebugEnabled()) {
+                log.debug("Received authentication message {}", Integer.valueOf(cmd & 0xFF));
+            }
             buffer.rpos(buffer.rpos() - 1);
             try {
                 authed = currentAuth.next(buffer);
@@ -175,7 +180,7 @@ public class ServerUserAuthService extends CloseableUtils.AbstractCloseable impl
         if (authed == null) {
             // authentication is still ongoing
             log.debug("Authentication not finished");
-        } else if (authed) {
+        } else if (authed.booleanValue()) {
             log.debug("Authentication succeeded");
             String username = currentAuth.getUserName();
 
@@ -192,7 +197,7 @@ public class ServerUserAuthService extends CloseableUtils.AbstractCloseable impl
                 Integer maxSessionCount = FactoryManagerUtils.getInteger(manager, ServerFactoryManager.MAX_CONCURRENT_SESSIONS);
                 if (maxSessionCount != null) {
                     int currentSessionCount = session.getActiveSessionCountForUser(username);
-                    if (currentSessionCount >= maxSessionCount) {
+                    if (currentSessionCount >= maxSessionCount.intValue()) {
                         session.disconnect(SshConstants.SSH2_DISCONNECT_SERVICE_NOT_AVAILABLE,
                                 "Too many concurrent connections (" + currentSessionCount + ") - max. allowed: " + maxSessionCount);
                         return;

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

http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/e2f7ff72/sshd-core/src/main/java/org/apache/sshd/server/shell/InvertedShellWrapper.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/server/shell/InvertedShellWrapper.java b/sshd-core/src/main/java/org/apache/sshd/server/shell/InvertedShellWrapper.java
index 69d9379..849afd1 100644
--- a/sshd-core/src/main/java/org/apache/sshd/server/shell/InvertedShellWrapper.java
+++ b/sshd-core/src/main/java/org/apache/sshd/server/shell/InvertedShellWrapper.java
@@ -83,28 +83,34 @@ public class InvertedShellWrapper implements Command, SessionAware {
         this.shutdownExecutor = shutdownExecutor;
     }
 
+    @Override
     public void setInputStream(InputStream in) {
         this.in = in;
     }
 
+    @Override
     public void setOutputStream(OutputStream out) {
         this.out = out;
     }
 
+    @Override
     public void setErrorStream(OutputStream err) {
         this.err = err;
     }
 
+    @Override
     public void setExitCallback(ExitCallback callback) {
         this.callback = callback;
     }
 
+    @Override
     public void setSession(ServerSession session) {
         if (shell instanceof SessionAware) {
             ((SessionAware) shell).setSession(session);
         }
     }
 
+    @Override
     public synchronized void start(Environment env) throws IOException {
         // TODO propagate the Environment itself and support signal sending.
         shell.start(env.getEnv());
@@ -112,12 +118,14 @@ public class InvertedShellWrapper implements Command, SessionAware {
         shellOut = shell.getOutputStream();
         shellErr = shell.getErrorStream();
         executor.execute(new Runnable() {
+            @Override
             public void run() {
                 pumpStreams();
             }
         });
     }
 
+    @Override
     public synchronized void destroy() {
         shell.destroy();
         if (shutdownExecutor && executor instanceof ExecutorService) {

http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/e2f7ff72/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 a04ff11..cff5849 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
@@ -181,7 +181,9 @@ public class X11ForwardSupport extends CloseableUtils.AbstractInnerCloseable imp
                 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/test/java/org/apache/sshd/deprecated/ClientUserAuthServiceOld.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/test/java/org/apache/sshd/deprecated/ClientUserAuthServiceOld.java b/sshd-core/src/test/java/org/apache/sshd/deprecated/ClientUserAuthServiceOld.java
index e752132..9c51182 100644
--- a/sshd-core/src/test/java/org/apache/sshd/deprecated/ClientUserAuthServiceOld.java
+++ b/sshd-core/src/test/java/org/apache/sshd/deprecated/ClientUserAuthServiceOld.java
@@ -31,6 +31,7 @@ import org.apache.sshd.common.SshConstants;
 import org.apache.sshd.common.SshException;
 import org.apache.sshd.common.util.CloseableUtils;
 import org.apache.sshd.common.util.buffer.Buffer;
+import org.apache.sshd.deprecated.UserAuth.Result;
 
 /**
  * Client side <code>ssh-auth</code> service.
@@ -99,7 +100,7 @@ public class ClientUserAuthServiceOld extends CloseableUtils.AbstractCloseable i
         } else if (cmd == SshConstants.SSH_MSG_USERAUTH_BANNER) {
             String welcome = buffer.getString();
             String lang = buffer.getString();
-            log.debug("Welcome banner: {}", welcome);
+            log.debug("Welcome banner[{}]: {}", lang, welcome);
             UserInteraction ui = session.getFactoryManager().getUserInteraction();
             if (ui != null) {
                 ui.welcome(welcome);
@@ -156,7 +157,8 @@ public class ClientUserAuthServiceOld extends CloseableUtils.AbstractCloseable i
      */
     private void processUserAuth(Buffer buffer) throws IOException {
         log.debug("processing {}", userAuth);
-        switch (userAuth.next(buffer)) {
+        Result  result = userAuth.next(buffer);
+        switch(result) {
             case Success:
                 log.debug("succeeded with {}", userAuth);
                 session.setAuthenticated();
@@ -174,6 +176,8 @@ public class ClientUserAuthServiceOld extends CloseableUtils.AbstractCloseable i
                 // Will wake up anyone sitting in waitFor
                 log.debug("continuing with {}", userAuth);
                 break;
+            default:
+                log.debug("ignored result={} for {}", result, userAuth);
         }
     }
 

http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/e2f7ff72/sshd-core/src/test/java/org/apache/sshd/deprecated/UserAuthPassword.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/test/java/org/apache/sshd/deprecated/UserAuthPassword.java b/sshd-core/src/test/java/org/apache/sshd/deprecated/UserAuthPassword.java
index 3da08b0..4d6fbd5 100644
--- a/sshd-core/src/test/java/org/apache/sshd/deprecated/UserAuthPassword.java
+++ b/sshd-core/src/test/java/org/apache/sshd/deprecated/UserAuthPassword.java
@@ -58,7 +58,9 @@ public class UserAuthPassword extends AbstractUserAuth {
                 log.debug("Received SSH_MSG_USERAUTH_FAILURE");
                 return Result.Failure;
             } else {
-                log.debug("Received unkown packet {}", cmd);
+                if (log.isDebugEnabled()) {
+                    log.debug("Received unkown packet {}", Integer.valueOf(cmd & 0xFF));
+                }
                 // TODO: check packets
                 return Result.Continued;
             }


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

Posted by lg...@apache.org.
[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);