You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mina.apache.org by gn...@apache.org on 2013/07/18 12:53:17 UTC

[1/2] git commit: Fix multithreading support in AbstractSessionFactory

Updated Branches:
  refs/heads/master a0cb511cc -> 6daaea9b3


Fix multithreading support in AbstractSessionFactory

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

Branch: refs/heads/master
Commit: 3e1afdaab8919aeea5013d0856b040a2798bb6cb
Parents: a0cb511
Author: Guillaume Nodet <gn...@apache.org>
Authored: Thu Jul 18 12:49:44 2013 +0200
Committer: Guillaume Nodet <gn...@apache.org>
Committed: Thu Jul 18 12:49:44 2013 +0200

----------------------------------------------------------------------
 .../sshd/common/session/AbstractSessionFactory.java  | 15 +++++----------
 1 file changed, 5 insertions(+), 10 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/3e1afdaa/sshd-core/src/main/java/org/apache/sshd/common/session/AbstractSessionFactory.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/common/session/AbstractSessionFactory.java b/sshd-core/src/main/java/org/apache/sshd/common/session/AbstractSessionFactory.java
index 8184ed9..9ecf340 100644
--- a/sshd-core/src/main/java/org/apache/sshd/common/session/AbstractSessionFactory.java
+++ b/sshd-core/src/main/java/org/apache/sshd/common/session/AbstractSessionFactory.java
@@ -20,6 +20,7 @@ package org.apache.sshd.common.session;
 
 import java.util.ArrayList;
 import java.util.List;
+import java.util.concurrent.CopyOnWriteArrayList;
 
 import org.apache.mina.core.session.IoSession;
 import org.apache.sshd.common.AbstractSessionIoHandler;
@@ -32,13 +33,12 @@ import org.apache.sshd.common.SessionListener;
  */
 public abstract class AbstractSessionFactory extends AbstractSessionIoHandler {
 
-    protected final List<SessionListener> listeners = new ArrayList<SessionListener>();
+    protected final List<SessionListener> listeners = new CopyOnWriteArrayList<SessionListener>();
 
     protected AbstractSession createSession(IoSession ioSession) throws Exception {
         AbstractSession session = doCreateSession(ioSession);
-        List<SessionListener> sl = new ArrayList<SessionListener>(this.listeners);
 
-        for (SessionListener l : sl) {
+        for (SessionListener l : listeners) {
             l.sessionCreated(session);
             session.addListener(l);
         }
@@ -57,10 +57,7 @@ public abstract class AbstractSessionFactory extends AbstractSessionIoHandler {
         if (listener == null) {
             throw new IllegalArgumentException();
         }
-
-        synchronized (this.listeners) {
-            this.listeners.add(listener);
-        }
+        this.listeners.add(listener);
     }
 
     /**
@@ -69,9 +66,7 @@ public abstract class AbstractSessionFactory extends AbstractSessionIoHandler {
      * @param listener the session listener to remove
      */
     public void removeListener(SessionListener listener) {
-        synchronized (this.listeners) {
-            this.listeners.remove(listener);
-        }
+        this.listeners.remove(listener);
     }
 
 }


[2/2] git commit: [SSHD-198] SessionFactory should not rely on SshServer

Posted by gn...@apache.org.
[SSHD-198] SessionFactory should not rely on SshServer

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

Branch: refs/heads/master
Commit: 6daaea9b30f37ee887ae4e573a3979da38b82fc0
Parents: 3e1afda
Author: Guillaume Nodet <gn...@apache.org>
Authored: Thu Jul 18 12:50:04 2013 +0200
Committer: Guillaume Nodet <gn...@apache.org>
Committed: Thu Jul 18 12:53:10 2013 +0200

----------------------------------------------------------------------
 .../org/apache/sshd/client/SessionFactory.java  |  7 ++--
 .../sshd/server/session/ServerSession.java      |  2 +-
 .../sshd/server/session/SessionFactory.java     |  8 ++---
 .../org/apache/sshd/AuthenticationTest.java     | 34 +++-----------------
 4 files changed, 13 insertions(+), 38 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/6daaea9b/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 723a4de..37abcb2 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
@@ -19,7 +19,6 @@
 package org.apache.sshd.client;
 
 import org.apache.mina.core.session.IoSession;
-import org.apache.sshd.SshClient;
 import org.apache.sshd.client.session.ClientSessionImpl;
 import org.apache.sshd.common.session.AbstractSession;
 import org.apache.sshd.common.session.AbstractSessionFactory;
@@ -28,15 +27,15 @@ import org.apache.sshd.common.session.AbstractSessionFactory;
  * A factory of client sessions.
  * This class can be used as a way to customize the creation of client sessions.
  *
- * @see SshClient#setSessionFactory(SessionFactory)
+ * @see org.apache.sshd.SshClient#setSessionFactory(SessionFactory)
  *
  * @author <a href="mailto:dev@mina.apache.org">Apache MINA SSHD Project</a>
  */
 public class SessionFactory extends AbstractSessionFactory {
 
-    protected SshClient client;
+    protected ClientFactoryManager client;
 
-    public void setClient(SshClient client) {
+    public void setClient(ClientFactoryManager client) {
         this.client = client;
     }
 

http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/6daaea9b/sshd-core/src/main/java/org/apache/sshd/server/session/ServerSession.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/server/session/ServerSession.java b/sshd-core/src/main/java/org/apache/sshd/server/session/ServerSession.java
index ef3254d..9b16a00 100644
--- a/sshd-core/src/main/java/org/apache/sshd/server/session/ServerSession.java
+++ b/sshd-core/src/main/java/org/apache/sshd/server/session/ServerSession.java
@@ -80,7 +80,7 @@ public class ServerSession extends AbstractSession {
     private String authService;
     private UserAuth currentAuth;
 
-    public ServerSession(FactoryManager server, IoSession ioSession) throws Exception {
+    public ServerSession(ServerFactoryManager server, IoSession ioSession) throws Exception {
         super(server, ioSession);
         maxAuthRequests = getIntProperty(ServerFactoryManager.MAX_AUTH_REQUESTS, maxAuthRequests);
         authTimeout = getIntProperty(ServerFactoryManager.AUTH_TIMEOUT, authTimeout);

http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/6daaea9b/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 f0e2173..af0e6a2 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
@@ -19,23 +19,23 @@
 package org.apache.sshd.server.session;
 
 import org.apache.mina.core.session.IoSession;
-import org.apache.sshd.SshServer;
 import org.apache.sshd.common.session.AbstractSession;
 import org.apache.sshd.common.session.AbstractSessionFactory;
+import org.apache.sshd.server.ServerFactoryManager;
 
 /**
  * A factory of server sessions.
  * This class can be used as a way to customize the creation of server sessions.
  *
- * @see SshServer#setSessionFactory(SessionFactory) 
+ * @see org.apache.sshd.SshServer#setSessionFactory(SessionFactory)
  *
  * @author <a href="mailto:dev@mina.apache.org">Apache MINA SSHD Project</a>
  */
 public class SessionFactory extends AbstractSessionFactory {
 
-    protected SshServer server;
+    protected ServerFactoryManager server;
 
-    public void setServer(SshServer server) {
+    public void setServer(ServerFactoryManager server) {
         this.server = server;
     }
 

http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/6daaea9b/sshd-core/src/test/java/org/apache/sshd/AuthenticationTest.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/test/java/org/apache/sshd/AuthenticationTest.java b/sshd-core/src/test/java/org/apache/sshd/AuthenticationTest.java
index d1c354b..0c8ac67 100644
--- a/sshd-core/src/test/java/org/apache/sshd/AuthenticationTest.java
+++ b/sshd-core/src/test/java/org/apache/sshd/AuthenticationTest.java
@@ -18,32 +18,14 @@
  */
 package org.apache.sshd;
 
-import com.jcraft.jsch.JSch;
-import com.jcraft.jsch.Logger;
-import com.jcraft.jsch.UserInfo;
-import org.apache.mina.core.filterchain.IoFilterChain;
-import org.apache.mina.core.service.IoProcessor;
-import org.apache.mina.core.service.IoService;
-import org.apache.mina.core.service.TransportMetadata;
-import org.apache.mina.core.session.AbstractIoSession;
+import java.net.ServerSocket;
+import java.security.KeyPair;
+
 import org.apache.mina.core.session.IoSession;
-import org.apache.mina.transport.socket.nio.NioSocketAcceptor;
-import org.apache.mina.transport.vmpipe.VmPipeAcceptor;
-import org.apache.mina.transport.vmpipe.VmPipeAddress;
-import org.apache.mina.transport.vmpipe.VmPipeConnector;
-import org.apache.sshd.client.UserInteraction;
-import org.apache.sshd.client.future.AuthFuture;
-import org.apache.sshd.common.FactoryManager;
 import org.apache.sshd.common.KeyPairProvider;
-import org.apache.sshd.common.NamedFactory;
-import org.apache.sshd.common.Session;
-import org.apache.sshd.common.SshConstants;
 import org.apache.sshd.common.session.AbstractSession;
 import org.apache.sshd.common.util.Buffer;
-import org.apache.sshd.server.UserAuth;
-import org.apache.sshd.server.auth.AbstractUserAuth;
-import org.apache.sshd.server.auth.UserAuthPassword;
-import org.apache.sshd.server.auth.UserAuthPublicKey;
+import org.apache.sshd.server.ServerFactoryManager;
 import org.apache.sshd.server.session.ServerSession;
 import org.apache.sshd.server.session.SessionFactory;
 import org.apache.sshd.util.BogusPasswordAuthenticator;
@@ -53,12 +35,6 @@ import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
 
-import java.net.ServerSocket;
-import java.net.SocketAddress;
-import java.security.KeyPair;
-import java.util.Arrays;
-import java.util.concurrent.atomic.AtomicReference;
-
 import static junit.framework.Assert.assertEquals;
 import static junit.framework.Assert.assertFalse;
 import static org.junit.Assert.assertTrue;
@@ -159,7 +135,7 @@ public class AuthenticationTest {
     }
 
     public static class TestSession extends ServerSession {
-        public TestSession(FactoryManager server, IoSession ioSession) throws Exception {
+        public TestSession(ServerFactoryManager server, IoSession ioSession) throws Exception {
             super(server, ioSession);
         }
         public void setState(State state) {