Author: trustin
Date: Thu Dec 27 19:20:07 2007
New Revision: 607163

URL: http://svn.apache.org/viewvc?rev=607163&view=rev
Log:
Related issue: DIRMINA-495 (IoConnector needs a way to store information into 
the IoSession before the IoHandler gets ahold of it)
* Changed IoSessionInitializer<ConnectFuture> to IoSessionInitializer<? extends 
ConnectFuture> for more API flexibility
* Introduced @SuppressWarning inevitably eek!


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/transport/vmpipe/VmPipeConnector.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=607163&r1=607162&r2=607163&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 19:20:07 2007
@@ -80,13 +80,13 @@
         return connect(defaultRemoteAddress, null, null);
     }
     
-    public ConnectFuture connect(IoSessionInitializer<ConnectFuture> 
ioSessionInitializer) {
+    public ConnectFuture connect(IoSessionInitializer<? extends ConnectFuture> 
sessionInitializer) {
         SocketAddress defaultRemoteAddress = getDefaultRemoteAddress();
         if (defaultRemoteAddress == null) {
             throw new IllegalStateException("defaultRemoteAddress is not 
set.");
         }
         
-        return connect(defaultRemoteAddress, null, ioSessionInitializer);
+        return connect(defaultRemoteAddress, null, sessionInitializer);
     }
 
     public final ConnectFuture connect(SocketAddress remoteAddress) {
@@ -94,8 +94,8 @@
     }
     
     public ConnectFuture connect(SocketAddress remoteAddress,
-            IoSessionInitializer<ConnectFuture> callback) {
-        return connect(remoteAddress, null, callback);
+            IoSessionInitializer<? extends ConnectFuture> sessionInitializer) {
+        return connect(remoteAddress, null, sessionInitializer);
     }
     
     public ConnectFuture connect(SocketAddress remoteAddress,
@@ -104,7 +104,7 @@
     }
 
     public final ConnectFuture connect(SocketAddress remoteAddress,
-            SocketAddress localAddress, IoSessionInitializer<ConnectFuture> 
ioSessionInitializer) {
+            SocketAddress localAddress, IoSessionInitializer<? extends 
ConnectFuture> sessionInitializer) {
         if (isDisposing()) {
             throw new IllegalStateException("Already disposed.");
         }
@@ -164,7 +164,7 @@
             }
         }
 
-        return connect0(remoteAddress, localAddress, ioSessionInitializer);
+        return connect0(remoteAddress, localAddress, sessionInitializer);
     }
 
     /**
@@ -173,7 +173,7 @@
      * @param localAddress <tt>null</tt> if no local address is specified
      */
     protected abstract ConnectFuture connect0(SocketAddress remoteAddress,
-            SocketAddress localAddress, IoSessionInitializer<ConnectFuture> 
ioSessionInitializer);
+            SocketAddress localAddress, IoSessionInitializer<? extends 
ConnectFuture> sessionInitializer);
 
     /**
      * 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=607163&r1=607162&r2=607163&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 19:20:07 2007
@@ -703,7 +703,10 @@
         return listeners;
     }
     
-    protected final <T extends IoFuture> void 
finishSessionInitialization(IoSession session, T future, 
IoSessionInitializer<T> ioSessionInitializer) {
+    // TODO Figure out make it work without causing a compiler error / warning.
+    @SuppressWarnings("unchecked")
+    protected final void finishSessionInitialization(
+            IoSession session, IoFuture future, IoSessionInitializer 
sessionInitializer) {
         // Update lastIoTime if needed.
         if (getLastReadTime() == 0) {
             setLastReadTime(getActivationTime());
@@ -741,8 +744,8 @@
             session.setAttribute(DefaultIoFilterChain.SESSION_OPENED_FUTURE, 
future);
         }
         
-        if (ioSessionInitializer != null) {
-            ioSessionInitializer.initializeSession(session, future);
+        if (sessionInitializer != null) {
+            sessionInitializer.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=607163&r1=607162&r2=607163&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 19:20:07 2007
@@ -145,8 +145,9 @@
 
     @Override
     @SuppressWarnings("unchecked")
-    protected final ConnectFuture connect0(SocketAddress remoteAddress,
-                                      SocketAddress localAddress, 
IoSessionInitializer<ConnectFuture> callback) {
+    protected final ConnectFuture connect0(
+            SocketAddress remoteAddress, SocketAddress localAddress,
+            IoSessionInitializer<? extends ConnectFuture> sessionInitializer) {
         H handle = null;
         boolean success = false;
         try {
@@ -154,7 +155,7 @@
             if (connect(handle, remoteAddress)) {
                 ConnectFuture future = new DefaultConnectFuture();
                 T session = newSession(processor, handle);
-                finishSessionInitialization(session, future, callback);
+                finishSessionInitialization(session, future, 
sessionInitializer);
                 // Forward the remaining process to the IoProcessor.
                 session.getProcessor().add(session);
                 success = true;
@@ -174,7 +175,7 @@
             }
         }
 
-        ConnectionRequest request = new ConnectionRequest(handle, callback);
+        ConnectionRequest request = new ConnectionRequest(handle, 
sessionInitializer);
         connectQueue.add(request);
         startupWorker();
         wakeup();
@@ -252,7 +253,7 @@
             try {
                 if (finishConnect(handle)) {
                     T session = newSession(processor, handle);
-                    finishSessionInitialization(session, entry, 
entry.getSessionCallback());
+                    finishSessionInitialization(session, entry, 
entry.getSessionInitializer());
                     // Forward the remaining process to the IoProcessor.
                     session.getProcessor().add(session);
                     nHandles ++;
@@ -346,9 +347,9 @@
     protected final class ConnectionRequest extends DefaultConnectFuture {
         private final H handle;
         private final long deadline;
-        private final IoSessionInitializer<ConnectFuture> ioSessionInitializer;
+        private final IoSessionInitializer<? extends ConnectFuture> 
sessionInitializer;
 
-        public ConnectionRequest(H handle, IoSessionInitializer<ConnectFuture> 
callback) {
+        public ConnectionRequest(H handle, IoSessionInitializer<? extends 
ConnectFuture> callback) {
             this.handle = handle;
             long timeout = getConnectTimeoutMillis();
             if (timeout <= 0L) {
@@ -356,7 +357,7 @@
             } else {
                 this.deadline = System.currentTimeMillis() + timeout;
             }
-            this.ioSessionInitializer = callback;
+            this.sessionInitializer = callback;
         }
 
         public H getHandle() {
@@ -367,8 +368,8 @@
             return deadline;
         }
 
-        public IoSessionInitializer<ConnectFuture> getSessionCallback() {
-            return ioSessionInitializer;
+        public IoSessionInitializer<? extends ConnectFuture> 
getSessionInitializer() {
+            return sessionInitializer;
         }
         
         @Override

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=607163&r1=607162&r2=607163&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 19:20:07 2007
@@ -82,11 +82,11 @@
      * 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
+     * @param sessionInitializer  the callback to invoke when the [EMAIL 
PROTECTED] IoSession} object is created
      * 
      * @throws IllegalStateException if no default remote address is set.
      */
-    ConnectFuture connect(IoSessionInitializer<ConnectFuture> 
ioSessionInitializer);
+    ConnectFuture connect(IoSessionInitializer<? extends ConnectFuture> 
sessionInitializer);
     
     /**
      * Connects to the specified remote address.
@@ -104,12 +104,12 @@
      * 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
+     * @param sessionInitializer  the callback to invoke when the [EMAIL 
PROTECTED] IoSession} object is created
      * 
      * @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<ConnectFuture> ioSessionInitializer);
+    ConnectFuture connect(SocketAddress remoteAddress, IoSessionInitializer<? 
extends ConnectFuture> sessionInitializer);
 
     /**
      * Connects to the specified remote address binding to the specified local 
address.
@@ -117,8 +117,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,
-            SocketAddress localAddress);
+    ConnectFuture connect(SocketAddress remoteAddress, SocketAddress 
localAddress);
     
     /**
      * Connects to the specified remote address binding to the specified local
@@ -129,11 +128,11 @@
      * 
      * @param remoteAddress  the remote address to connect to
      * @param localAddress  the local interface to bind to
-     * @param ioSessionInitializer  the callback to invoke when the [EMAIL 
PROTECTED] IoSession} object is created
+     * @param sessionInitializer  the callback to invoke when the [EMAIL 
PROTECTED] IoSession} object is created
      *
      * @return the [EMAIL PROTECTED] ConnectFuture} instance which is 
completed when the
      *         connection attempt initiated by this call succeeds or fails.
      */
     ConnectFuture connect(SocketAddress remoteAddress,
-            SocketAddress localAddress, IoSessionInitializer<ConnectFuture> 
ioSessionInitializer);
+            SocketAddress localAddress, IoSessionInitializer<? extends 
ConnectFuture> sessionInitializer);
 }

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=607163&r1=607162&r2=607163&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 19:20:07 2007
@@ -64,7 +64,7 @@
     @Override
     protected ConnectFuture connect0(SocketAddress remoteAddress,
                                       SocketAddress localAddress,
-                                      IoSessionInitializer<ConnectFuture> 
ioSessionInitializer) {
+                                      IoSessionInitializer<? extends 
ConnectFuture> sessionInitializer) {
         VmPipe entry = VmPipeAcceptor.boundHandlers.get(remoteAddress);
         if (entry == null) {
             return DefaultConnectFuture.newFailedFuture(new IOException(
@@ -84,7 +84,7 @@
         VmPipeSessionImpl localSession = new VmPipeSessionImpl(this,
                 getListeners(), actualLocalAddress, getHandler(), entry);
 
-        finishSessionInitialization(localSession, future, 
ioSessionInitializer);
+        finishSessionInitialization(localSession, future, sessionInitializer);
 
         // and reclaim the local address when the connection is closed.
         localSession.getCloseFuture().addListener(LOCAL_ADDRESS_RECLAIMER);

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=607163&r1=607162&r2=607163&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 19:20:07 2007
@@ -54,8 +54,9 @@
     }
 
     @Override
-    protected ConnectFuture connect0(SocketAddress remoteAddress,
-            SocketAddress localAddress, IoSessionInitializer<ConnectFuture> 
ioSessionInitializer) {
+    protected ConnectFuture connect0(
+            SocketAddress remoteAddress, SocketAddress localAddress,
+            IoSessionInitializer<? extends ConnectFuture> sessionInitializer) {
 
         CommPortIdentifier portId;
         Enumeration<?> portList = CommPortIdentifier.getPortIdentifiers();
@@ -83,7 +84,7 @@
                         ConnectFuture future = new DefaultConnectFuture();
                         SerialSessionImpl session = new SerialSessionImpl(
                                 this, getListeners(), portAddress, serialPort);
-                        finishSessionInitialization(session, future, 
ioSessionInitializer);
+                        finishSessionInitialization(session, future, 
sessionInitializer);
                         session.start();
                         return future;
                     } catch (PortInUseException e) {


Reply via email to