Author: mheath
Date: Thu Dec 27 10:09:45 2007
New Revision: 607102

URL: http://svn.apache.org/viewvc?rev=607102&view=rev
Log:
Fixed DIRMINA-495 to add IoFuture to IoSessionInitializer.initializeSession 
parameter list.

Modified:
    
mina/trunk/core/src/main/java/org/apache/mina/common/AbstractIoConnector.java
    mina/trunk/core/src/main/java/org/apache/mina/common/AbstractIoService.java
    
mina/trunk/core/src/main/java/org/apache/mina/common/AbstractPollingIoConnector.java
    mina/trunk/core/src/main/java/org/apache/mina/common/IoConnector.java
    
mina/trunk/core/src/main/java/org/apache/mina/common/IoSessionInitializer.java
    
mina/trunk/core/src/main/java/org/apache/mina/transport/vmpipe/VmPipeConnector.java
    
mina/trunk/core/src/test/java/org/apache/mina/transport/AbstractConnectorTest.java
    
mina/trunk/transport-serial/src/main/java/org/apache/mina/transport/serial/SerialConnector.java

Modified: 
mina/trunk/core/src/main/java/org/apache/mina/common/AbstractIoConnector.java
URL: 
http://svn.apache.org/viewvc/mina/trunk/core/src/main/java/org/apache/mina/common/AbstractIoConnector.java?rev=607102&r1=607101&r2=607102&view=diff
==============================================================================
--- 
mina/trunk/core/src/main/java/org/apache/mina/common/AbstractIoConnector.java 
(original)
+++ 
mina/trunk/core/src/main/java/org/apache/mina/common/AbstractIoConnector.java 
Thu Dec 27 10:09:45 2007
@@ -80,7 +80,7 @@
         return connect(defaultRemoteAddress, null, null);
     }
     
-    public ConnectFuture connect(IoSessionInitializer ioSessionInitializer) {
+    public ConnectFuture connect(IoSessionInitializer<ConnectFuture> 
ioSessionInitializer) {
         SocketAddress defaultRemoteAddress = getDefaultRemoteAddress();
         if (defaultRemoteAddress == null) {
             throw new IllegalStateException("defaultRemoteAddress is not 
set.");
@@ -94,7 +94,7 @@
     }
     
     public ConnectFuture connect(SocketAddress remoteAddress,
-            IoSessionInitializer callback) {
+            IoSessionInitializer<ConnectFuture> callback) {
         return connect(remoteAddress, null, callback);
     }
     
@@ -104,7 +104,7 @@
     }
 
     public final ConnectFuture connect(SocketAddress remoteAddress,
-            SocketAddress localAddress, IoSessionInitializer 
ioSessionInitializer) {
+            SocketAddress localAddress, IoSessionInitializer<ConnectFuture> 
ioSessionInitializer) {
         if (isDisposing()) {
             throw new IllegalStateException("Already disposed.");
         }
@@ -173,7 +173,7 @@
      * @param localAddress <tt>null</tt> if no local address is specified
      */
     protected abstract ConnectFuture connect0(SocketAddress remoteAddress,
-            SocketAddress localAddress, IoSessionInitializer 
ioSessionInitializer);
+            SocketAddress localAddress, IoSessionInitializer<ConnectFuture> 
ioSessionInitializer);
 
     /**
      * Adds required internal attributes and [EMAIL PROTECTED] 
IoFutureListener}s

Modified: 
mina/trunk/core/src/main/java/org/apache/mina/common/AbstractIoService.java
URL: 
http://svn.apache.org/viewvc/mina/trunk/core/src/main/java/org/apache/mina/common/AbstractIoService.java?rev=607102&r1=607101&r2=607102&view=diff
==============================================================================
--- mina/trunk/core/src/main/java/org/apache/mina/common/AbstractIoService.java 
(original)
+++ mina/trunk/core/src/main/java/org/apache/mina/common/AbstractIoService.java 
Thu Dec 27 10:09:45 2007
@@ -703,7 +703,7 @@
         return listeners;
     }
     
-    protected final void finishSessionInitialization(IoSession session, 
IoFuture future, IoSessionInitializer ioSessionInitializer) {
+    protected final <T extends IoFuture> void 
finishSessionInitialization(IoSession session, T future, 
IoSessionInitializer<T> ioSessionInitializer) {
         // Update lastIoTime if needed.
         if (getLastReadTime() == 0) {
             setLastReadTime(getActivationTime());
@@ -742,7 +742,7 @@
         }
         
         if (ioSessionInitializer != null) {
-            ioSessionInitializer.initializeSession(session);
+            ioSessionInitializer.initializeSession(session, future);
         }
         
         finishSessionInitialization0(session, future);

Modified: 
mina/trunk/core/src/main/java/org/apache/mina/common/AbstractPollingIoConnector.java
URL: 
http://svn.apache.org/viewvc/mina/trunk/core/src/main/java/org/apache/mina/common/AbstractPollingIoConnector.java?rev=607102&r1=607101&r2=607102&view=diff
==============================================================================
--- 
mina/trunk/core/src/main/java/org/apache/mina/common/AbstractPollingIoConnector.java
 (original)
+++ 
mina/trunk/core/src/main/java/org/apache/mina/common/AbstractPollingIoConnector.java
 Thu Dec 27 10:09:45 2007
@@ -146,7 +146,7 @@
     @Override
     @SuppressWarnings("unchecked")
     protected final ConnectFuture connect0(SocketAddress remoteAddress,
-                                      SocketAddress localAddress, 
IoSessionInitializer callback) {
+                                      SocketAddress localAddress, 
IoSessionInitializer<ConnectFuture> callback) {
         H handle = null;
         boolean success = false;
         try {
@@ -346,9 +346,9 @@
     protected final class ConnectionRequest extends DefaultConnectFuture {
         private final H handle;
         private final long deadline;
-        private final IoSessionInitializer ioSessionInitializer;
+        private final IoSessionInitializer<ConnectFuture> ioSessionInitializer;
 
-        public ConnectionRequest(H handle, IoSessionInitializer callback) {
+        public ConnectionRequest(H handle, IoSessionInitializer<ConnectFuture> 
callback) {
             this.handle = handle;
             long timeout = getConnectTimeoutMillis();
             if (timeout <= 0L) {
@@ -367,7 +367,7 @@
             return deadline;
         }
 
-        public IoSessionInitializer getSessionCallback() {
+        public IoSessionInitializer<ConnectFuture> getSessionCallback() {
             return ioSessionInitializer;
         }
         

Modified: mina/trunk/core/src/main/java/org/apache/mina/common/IoConnector.java
URL: 
http://svn.apache.org/viewvc/mina/trunk/core/src/main/java/org/apache/mina/common/IoConnector.java?rev=607102&r1=607101&r2=607102&view=diff
==============================================================================
--- mina/trunk/core/src/main/java/org/apache/mina/common/IoConnector.java 
(original)
+++ mina/trunk/core/src/main/java/org/apache/mina/common/IoConnector.java Thu 
Dec 27 10:09:45 2007
@@ -77,15 +77,16 @@
     
     /**
      * Connects to the [EMAIL PROTECTED] 
#setDefaultRemoteAddress(SocketAddress) default
-     * remote address} and invokes the <code>sessionCallback</code> when the
-     * IoSession is created but before [EMAIL PROTECTED] 
IoHandler#sessionCreated(IoSession)}
-     * is invoked.
+     * remote address} and invokes the <code>ioSessionInitializer</code> when
+     * the IoSession is created but before [EMAIL PROTECTED] 
IoHandler#sessionCreated(IoSession)}
+     * is invoked.  There is <em>no</em> guarantee that the 
<code>ioSessionInitializer</code>
+     * will be invoked before this method returns.
      * 
      * @param ioSessionInitializer  the callback to invoke when the [EMAIL 
PROTECTED] IoSession} object is created
      * 
      * @throws IllegalStateException if no default remote address is set.
      */
-    ConnectFuture connect(IoSessionInitializer ioSessionInitializer);
+    ConnectFuture connect(IoSessionInitializer<ConnectFuture> 
ioSessionInitializer);
     
     /**
      * Connects to the specified remote address.
@@ -97,8 +98,10 @@
 
     /**
      * Connects to the specified remote address and invokes
-     * the <code>sessionCallback</code> when the IoSession is created but 
before
-     * [EMAIL PROTECTED] IoHandler#sessionCreated(IoSession)} is invoked.
+     * the <code>ioSessionInitializer</code> when the IoSession is created but 
before
+     * [EMAIL PROTECTED] IoHandler#sessionCreated(IoSession)} is invoked.  
There is <em>no</em>
+     * guarantee that the <code>ioSessionInitializer</code> will be invoked 
before
+     * this method returns.
      * 
      * @param remoteAddress  the remote address to connect to
      * @param ioSessionInitializer  the callback to invoke when the [EMAIL 
PROTECTED] IoSession} object is created
@@ -106,7 +109,7 @@
      * @return the [EMAIL PROTECTED] ConnectFuture} instance which is 
completed when the
      *         connection attempt initiated by this call succeeds or fails.
      */
-    ConnectFuture connect(SocketAddress remoteAddress, IoSessionInitializer 
ioSessionInitializer);
+    ConnectFuture connect(SocketAddress remoteAddress, 
IoSessionInitializer<ConnectFuture> ioSessionInitializer);
 
     /**
      * Connects to the specified remote address binding to the specified local 
address.
@@ -119,9 +122,10 @@
     
     /**
      * Connects to the specified remote address binding to the specified local
-     * address and invokes the <code>sessionCallback</code> when the IoSession
-     * is created but before [EMAIL PROTECTED] 
IoHandler#sessionCreated(IoSession)} is
-     * invoked.
+     * address and and invokes the <code>ioSessionInitializer</code> when the
+     * IoSession is created but before [EMAIL PROTECTED] 
IoHandler#sessionCreated(IoSession)}
+     * is invoked.  There is <em>no</em> guarantee that the 
<code>ioSessionInitializer</code>
+     * will be invoked before this method returns.
      * 
      * @param remoteAddress  the remote address to connect to
      * @param localAddress  the local interface to bind to
@@ -131,5 +135,5 @@
      *         connection attempt initiated by this call succeeds or fails.
      */
     ConnectFuture connect(SocketAddress remoteAddress,
-            SocketAddress localAddress, IoSessionInitializer 
ioSessionInitializer);
+            SocketAddress localAddress, IoSessionInitializer<ConnectFuture> 
ioSessionInitializer);
 }

Modified: 
mina/trunk/core/src/main/java/org/apache/mina/common/IoSessionInitializer.java
URL: 
http://svn.apache.org/viewvc/mina/trunk/core/src/main/java/org/apache/mina/common/IoSessionInitializer.java?rev=607102&r1=607101&r2=607102&view=diff
==============================================================================
--- 
mina/trunk/core/src/main/java/org/apache/mina/common/IoSessionInitializer.java 
(original)
+++ 
mina/trunk/core/src/main/java/org/apache/mina/common/IoSessionInitializer.java 
Thu Dec 27 10:09:45 2007
@@ -26,6 +26,6 @@
  * @author The Apache MINA Project ([EMAIL PROTECTED])
  * @version $Rev: 600461 $, $Date: 2007-12-03 02:55:52 -0700 (Mon, 03 Dec 
2007) $
  */
-public interface IoSessionInitializer {
-    void initializeSession(IoSession session);
+public interface IoSessionInitializer<T extends IoFuture> {
+    void initializeSession(IoSession session, T future);
 }

Modified: 
mina/trunk/core/src/main/java/org/apache/mina/transport/vmpipe/VmPipeConnector.java
URL: 
http://svn.apache.org/viewvc/mina/trunk/core/src/main/java/org/apache/mina/transport/vmpipe/VmPipeConnector.java?rev=607102&r1=607101&r2=607102&view=diff
==============================================================================
--- 
mina/trunk/core/src/main/java/org/apache/mina/transport/vmpipe/VmPipeConnector.java
 (original)
+++ 
mina/trunk/core/src/main/java/org/apache/mina/transport/vmpipe/VmPipeConnector.java
 Thu Dec 27 10:09:45 2007
@@ -63,7 +63,8 @@
 
     @Override
     protected ConnectFuture connect0(SocketAddress remoteAddress,
-                                      SocketAddress localAddress, 
IoSessionInitializer ioSessionInitializer) {
+                                      SocketAddress localAddress,
+                                      IoSessionInitializer<ConnectFuture> 
ioSessionInitializer) {
         VmPipe entry = VmPipeAcceptor.boundHandlers.get(remoteAddress);
         if (entry == null) {
             return DefaultConnectFuture.newFailedFuture(new IOException(

Modified: 
mina/trunk/core/src/test/java/org/apache/mina/transport/AbstractConnectorTest.java
URL: 
http://svn.apache.org/viewvc/mina/trunk/core/src/test/java/org/apache/mina/transport/AbstractConnectorTest.java?rev=607102&r1=607101&r2=607102&view=diff
==============================================================================
--- 
mina/trunk/core/src/test/java/org/apache/mina/transport/AbstractConnectorTest.java
 (original)
+++ 
mina/trunk/core/src/test/java/org/apache/mina/transport/AbstractConnectorTest.java
 Thu Dec 27 10:09:45 2007
@@ -130,6 +130,7 @@
         final int sessionCreatedInvokedBeforeCallback = 2;
         final boolean[] assertions = {false, false, false};
         final CountDownLatch latch = new CountDownLatch(2);
+        final ConnectFuture[] callbackFuture = new ConnectFuture[1];
         
         int port = AvailablePortFinder.getNextAvailable(1025);
         IoAcceptor acceptor = createAcceptor();
@@ -147,9 +148,10 @@
             } 
         });
         
-        connector.connect(address, new IoSessionInitializer() {
-            public void initializeSession(IoSession session) {
+        ConnectFuture future = connector.connect(address, new 
IoSessionInitializer<ConnectFuture>() {
+            public void initializeSession(IoSession session, ConnectFuture 
future) {
                 assertions[callbackInvoked] = true;
+                callbackFuture[0] = future;
                 latch.countDown();
             }
         });
@@ -158,5 +160,6 @@
         assertTrue("Callback was not invoked", assertions[callbackInvoked]);
         assertTrue("IoHandler.sessionCreated was not invoked", 
assertions[sessionCreatedInvoked]);
         assertFalse("IoHandler.sessionCreated was invoked before session 
callback", assertions[sessionCreatedInvokedBeforeCallback]);
+        assertSame("Callback future should have been same future as returned 
by connect", future, callbackFuture[0]);
     }
 }

Modified: 
mina/trunk/transport-serial/src/main/java/org/apache/mina/transport/serial/SerialConnector.java
URL: 
http://svn.apache.org/viewvc/mina/trunk/transport-serial/src/main/java/org/apache/mina/transport/serial/SerialConnector.java?rev=607102&r1=607101&r2=607102&view=diff
==============================================================================
--- 
mina/trunk/transport-serial/src/main/java/org/apache/mina/transport/serial/SerialConnector.java
 (original)
+++ 
mina/trunk/transport-serial/src/main/java/org/apache/mina/transport/serial/SerialConnector.java
 Thu Dec 27 10:09:45 2007
@@ -55,7 +55,7 @@
 
     @Override
     protected ConnectFuture connect0(SocketAddress remoteAddress,
-            SocketAddress localAddress, IoSessionInitializer 
ioSessionInitializer) {
+            SocketAddress localAddress, IoSessionInitializer<ConnectFuture> 
ioSessionInitializer) {
 
         CommPortIdentifier portId;
         Enumeration<?> portList = CommPortIdentifier.getPortIdentifiers();


Reply via email to