Adjust to yangtools-2.0.0/odlparent-3.0.0 changes
[netconf.git] / netconf / callhome-protocol / src / main / java / org / opendaylight / netconf / callhome / protocol / NetconfCallHomeServer.java
index 723273a763577bd1b7aee25840a106e72ca21586..6b88df398755205c4e82c16ef3e41b2798f3602b 100644 (file)
@@ -13,20 +13,20 @@ import java.io.IOException;
 import java.net.InetSocketAddress;
 import java.net.SocketAddress;
 import java.security.PublicKey;
-import org.apache.sshd.ClientSession;
-import org.apache.sshd.SshClient;
-import org.apache.sshd.client.ServerKeyVerifier;
-import org.apache.sshd.client.SessionFactory;
+import org.apache.sshd.client.SshClient;
 import org.apache.sshd.client.future.AuthFuture;
+import org.apache.sshd.client.keyverifier.ServerKeyVerifier;
+import org.apache.sshd.client.session.ClientSession;
 import org.apache.sshd.client.session.ClientSessionImpl;
-import org.apache.sshd.common.KeyExchange;
-import org.apache.sshd.common.Session;
-import org.apache.sshd.common.SessionListener;
+import org.apache.sshd.client.session.SessionFactory;
 import org.apache.sshd.common.future.SshFutureListener;
 import org.apache.sshd.common.io.IoAcceptor;
 import org.apache.sshd.common.io.IoServiceFactory;
 import org.apache.sshd.common.io.mina.MinaServiceFactory;
 import org.apache.sshd.common.io.nio2.Nio2ServiceFactory;
+import org.apache.sshd.common.kex.KeyExchange;
+import org.apache.sshd.common.session.Session;
+import org.apache.sshd.common.session.SessionListener;
 import org.opendaylight.netconf.callhome.protocol.CallHomeSessionContext.Factory;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -42,8 +42,8 @@ public class NetconfCallHomeServer implements AutoCloseable, ServerKeyVerifier {
     private final InetSocketAddress bindAddress;
     private final StatusRecorder recorder;
 
-    NetconfCallHomeServer(SshClient sshClient, CallHomeAuthorizationProvider authProvider, Factory factory,
-                          InetSocketAddress socketAddress, StatusRecorder recorder) {
+    NetconfCallHomeServer(final SshClient sshClient, final CallHomeAuthorizationProvider authProvider,
+            final Factory factory, final InetSocketAddress socketAddress, final StatusRecorder recorder) {
         this.client = Preconditions.checkNotNull(sshClient);
         this.authProvider = Preconditions.checkNotNull(authProvider);
         this.sessionFactory = Preconditions.checkNotNull(factory);
@@ -51,32 +51,28 @@ public class NetconfCallHomeServer implements AutoCloseable, ServerKeyVerifier {
         this.recorder = recorder;
 
         sshClient.setServerKeyVerifier(this);
+        sshClient.addSessionListener(createSessionListener());
 
-        SessionFactory clientSessions = new SessionFactory();
-        clientSessions.setClient(sshClient);
-        clientSessions.addListener(createSessionListener());
-
-        IoServiceFactory minaFactory = createServiceFactory(sshClient);
-        this.acceptor = minaFactory.createAcceptor(clientSessions);
+        this.acceptor = createServiceFactory(sshClient).createAcceptor(new SessionFactory(sshClient));
     }
 
-    private IoServiceFactory createServiceFactory(SshClient sshClient) {
+    private IoServiceFactory createServiceFactory(final SshClient sshClient) {
         try {
             return createMinaServiceFactory(sshClient);
         } catch (NoClassDefFoundError e) {
             LOG.warn("Mina is not available, defaulting to NIO.");
-            return new Nio2ServiceFactory(sshClient);
+            return new Nio2ServiceFactory(sshClient, sshClient.getScheduledExecutorService(), false);
         }
     }
 
-    protected IoServiceFactory createMinaServiceFactory(SshClient sshClient) {
-        return new MinaServiceFactory(sshClient);
+    protected IoServiceFactory createMinaServiceFactory(final SshClient sshClient) {
+        return new MinaServiceFactory(sshClient, sshClient.getScheduledExecutorService(), false);
     }
 
     SessionListener createSessionListener() {
         return new SessionListener() {
             @Override
-            public void sessionEvent(Session session, Event event) {
+            public void sessionEvent(final Session session, final Event event) {
                 ClientSession clientSession = (ClientSession) session;
                 LOG.debug("SSH session {} event {}", session, event);
                 switch (event) {
@@ -92,12 +88,12 @@ public class NetconfCallHomeServer implements AutoCloseable, ServerKeyVerifier {
             }
 
             @Override
-            public void sessionCreated(Session session) {
+            public void sessionCreated(final Session session) {
                 LOG.debug("SSH session {} created", session);
             }
 
             @Override
-            public void sessionClosed(Session session) {
+            public void sessionClosed(final Session session) {
                 CallHomeSessionContext ctx = CallHomeSessionContext.getFrom((ClientSession) session);
                 if (ctx != null) {
                     ctx.removeSelf();
@@ -107,7 +103,7 @@ public class NetconfCallHomeServer implements AutoCloseable, ServerKeyVerifier {
         };
     }
 
-    private void doPostAuth(final ClientSession session) {
+    private static void doPostAuth(final ClientSession session) {
         CallHomeSessionContext.getFrom(session).openNetconfChannel();
     }
 
@@ -123,7 +119,7 @@ public class NetconfCallHomeServer implements AutoCloseable, ServerKeyVerifier {
     private SshFutureListener<AuthFuture> newAuthSshFutureListener(final ClientSession session) {
         return new SshFutureListener<AuthFuture>() {
             @Override
-            public void operationComplete(AuthFuture authFuture) {
+            public void operationComplete(final AuthFuture authFuture) {
                 if (authFuture.isSuccess()) {
                     onSuccess();
                 } else if (authFuture.isFailure()) {
@@ -138,7 +134,7 @@ public class NetconfCallHomeServer implements AutoCloseable, ServerKeyVerifier {
                 LOG.debug("Authorize success");
             }
 
-            private void onFailure(Throwable throwable) {
+            private void onFailure(final Throwable throwable) {
                 ClientSessionImpl impl = (ClientSessionImpl) session;
                 LOG.error("Authorize failed for session {}", session, throwable);
 
@@ -157,7 +153,8 @@ public class NetconfCallHomeServer implements AutoCloseable, ServerKeyVerifier {
     }
 
     @Override
-    public boolean verifyServerKey(ClientSession sshClientSession, SocketAddress remoteAddress, PublicKey serverKey) {
+    public boolean verifyServerKey(final ClientSession sshClientSession, final SocketAddress remoteAddress,
+            final PublicKey serverKey) {
         final CallHomeAuthorization authorization = authProvider.provideAuth(remoteAddress, serverKey);
         // server is not authorized
         if (!authorization.isServerAllowed()) {