You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mina.apache.org by el...@apache.org on 2010/02/27 03:01:59 UTC

svn commit: r916892 - in /mina/branches/mina-2-cleanup: core/src/main/java/org/apache/mina/core/buffer/ core/src/main/java/org/apache/mina/core/filterchain/ core/src/main/java/org/apache/mina/core/future/ core/src/main/java/org/apache/mina/core/polling...

Author: elecharny
Date: Sat Feb 27 02:01:58 2010
New Revision: 916892

URL: http://svn.apache.org/viewvc?rev=916892&view=rev
Log:
o Replaced called to the new NullPointerException() by a call to new IllegalArgumentException()
o Removed the ConnectionRequest class, replaced by a call to the DefaultConnectFuture
o Lots of refactoring in the ConnectFuture interface, class and usage

Modified:
    mina/branches/mina-2-cleanup/core/src/main/java/org/apache/mina/core/buffer/IoBuffer.java
    mina/branches/mina-2-cleanup/core/src/main/java/org/apache/mina/core/buffer/IoBufferWrapper.java
    mina/branches/mina-2-cleanup/core/src/main/java/org/apache/mina/core/filterchain/DefaultIoFilterChain.java
    mina/branches/mina-2-cleanup/core/src/main/java/org/apache/mina/core/filterchain/DefaultIoFilterChainBuilder.java
    mina/branches/mina-2-cleanup/core/src/main/java/org/apache/mina/core/filterchain/IoFilterEvent.java
    mina/branches/mina-2-cleanup/core/src/main/java/org/apache/mina/core/future/ConnectFuture.java
    mina/branches/mina-2-cleanup/core/src/main/java/org/apache/mina/core/future/DefaultConnectFuture.java
    mina/branches/mina-2-cleanup/core/src/main/java/org/apache/mina/core/polling/AbstractPollingConnectionlessIoAcceptor.java
    mina/branches/mina-2-cleanup/core/src/main/java/org/apache/mina/core/polling/AbstractPollingIoAcceptor.java
    mina/branches/mina-2-cleanup/core/src/main/java/org/apache/mina/core/polling/AbstractPollingIoConnector.java
    mina/branches/mina-2-cleanup/core/src/main/java/org/apache/mina/core/polling/AbstractPollingIoProcessor.java
    mina/branches/mina-2-cleanup/core/src/main/java/org/apache/mina/core/service/AbstractIoAcceptor.java
    mina/branches/mina-2-cleanup/core/src/main/java/org/apache/mina/core/service/AbstractIoConnector.java
    mina/branches/mina-2-cleanup/core/src/main/java/org/apache/mina/core/service/AbstractIoService.java
    mina/branches/mina-2-cleanup/core/src/main/java/org/apache/mina/core/service/DefaultTransportMetadata.java
    mina/branches/mina-2-cleanup/core/src/main/java/org/apache/mina/core/service/IoServiceListenerSupport.java
    mina/branches/mina-2-cleanup/core/src/main/java/org/apache/mina/core/service/SimpleIoProcessorPool.java
    mina/branches/mina-2-cleanup/core/src/main/java/org/apache/mina/core/session/AbstractIoSession.java
    mina/branches/mina-2-cleanup/core/src/main/java/org/apache/mina/core/session/AbstractIoSessionConfig.java
    mina/branches/mina-2-cleanup/core/src/main/java/org/apache/mina/core/session/DefaultIoSessionDataStructureFactory.java
    mina/branches/mina-2-cleanup/core/src/main/java/org/apache/mina/core/session/DummySession.java
    mina/branches/mina-2-cleanup/core/src/main/java/org/apache/mina/core/session/IoEvent.java
    mina/branches/mina-2-cleanup/core/src/main/java/org/apache/mina/handler/chain/ChainedIoHandler.java
    mina/branches/mina-2-cleanup/core/src/main/java/org/apache/mina/handler/chain/IoHandlerChain.java
    mina/branches/mina-2-cleanup/core/src/main/java/org/apache/mina/handler/multiton/SingleSessionIoHandlerAdapter.java
    mina/branches/mina-2-cleanup/core/src/main/java/org/apache/mina/handler/multiton/SingleSessionIoHandlerDelegate.java
    mina/branches/mina-2-cleanup/core/src/main/java/org/apache/mina/proxy/handlers/http/ntlm/NTLMUtilities.java
    mina/branches/mina-2-cleanup/core/src/main/java/org/apache/mina/proxy/session/ProxyIoSession.java
    mina/branches/mina-2-cleanup/core/src/main/java/org/apache/mina/proxy/utils/IoBufferDecoder.java
    mina/branches/mina-2-cleanup/core/src/main/java/org/apache/mina/transport/socket/nio/NioDatagramConnector.java
    mina/branches/mina-2-cleanup/core/src/main/java/org/apache/mina/transport/socket/nio/NioSocketConnector.java
    mina/branches/mina-2-cleanup/core/src/main/java/org/apache/mina/util/CircularQueue.java
    mina/branches/mina-2-cleanup/core/src/main/java/org/apache/mina/util/byteaccess/ByteArrayList.java
    mina/branches/mina-2-cleanup/transport-apr/src/main/java/org/apache/mina/transport/socket/apr/AprSocketConnector.java

Modified: mina/branches/mina-2-cleanup/core/src/main/java/org/apache/mina/core/buffer/IoBuffer.java
URL: http://svn.apache.org/viewvc/mina/branches/mina-2-cleanup/core/src/main/java/org/apache/mina/core/buffer/IoBuffer.java?rev=916892&r1=916891&r2=916892&view=diff
==============================================================================
--- mina/branches/mina-2-cleanup/core/src/main/java/org/apache/mina/core/buffer/IoBuffer.java (original)
+++ mina/branches/mina-2-cleanup/core/src/main/java/org/apache/mina/core/buffer/IoBuffer.java Sat Feb 27 02:01:58 2010
@@ -168,7 +168,7 @@
      */
     public static void setAllocator(IoBufferAllocator newAllocator) {
         if (newAllocator == null) {
-            throw new NullPointerException("allocator");
+            throw new IllegalArgumentException("allocator canot be null");
         }
 
         IoBufferAllocator oldAllocator = allocator;

Modified: mina/branches/mina-2-cleanup/core/src/main/java/org/apache/mina/core/buffer/IoBufferWrapper.java
URL: http://svn.apache.org/viewvc/mina/branches/mina-2-cleanup/core/src/main/java/org/apache/mina/core/buffer/IoBufferWrapper.java?rev=916892&r1=916891&r2=916892&view=diff
==============================================================================
--- mina/branches/mina-2-cleanup/core/src/main/java/org/apache/mina/core/buffer/IoBufferWrapper.java (original)
+++ mina/branches/mina-2-cleanup/core/src/main/java/org/apache/mina/core/buffer/IoBufferWrapper.java Sat Feb 27 02:01:58 2010
@@ -58,7 +58,7 @@
      */
     protected IoBufferWrapper(IoBuffer buf) {
         if (buf == null) {
-            throw new NullPointerException("buf");
+            throw new IllegalArgumentException("buf cannot be null");
         }
         this.buf = buf;
     }

Modified: mina/branches/mina-2-cleanup/core/src/main/java/org/apache/mina/core/filterchain/DefaultIoFilterChain.java
URL: http://svn.apache.org/viewvc/mina/branches/mina-2-cleanup/core/src/main/java/org/apache/mina/core/filterchain/DefaultIoFilterChain.java?rev=916892&r1=916891&r2=916892&view=diff
==============================================================================
--- mina/branches/mina-2-cleanup/core/src/main/java/org/apache/mina/core/filterchain/DefaultIoFilterChain.java (original)
+++ mina/branches/mina-2-cleanup/core/src/main/java/org/apache/mina/core/filterchain/DefaultIoFilterChain.java Sat Feb 27 02:01:58 2010
@@ -76,7 +76,7 @@
      */
     public DefaultIoFilterChain(AbstractIoSession session) {
         if (session == null) {
-            throw new NullPointerException("session");
+            throw new IllegalArgumentException("session cannot be null");
         }
 
         this.session = session;
@@ -755,10 +755,11 @@
         private EntryImpl(EntryImpl prevEntry, EntryImpl nextEntry,
                 String name, IoFilter filter) {
             if (filter == null) {
-                throw new NullPointerException("filter");
+                throw new IllegalArgumentException("filter cannot be null");
             }
+            
             if (name == null) {
-                throw new NullPointerException("name");
+                throw new IllegalArgumentException("name cannnot be null");
             }
 
             this.prevEntry = prevEntry;
@@ -829,7 +830,7 @@
 
         private void setFilter(IoFilter filter) {
             if (filter == null) {
-                throw new NullPointerException("filter");
+                throw new IllegalArgumentException("filter cannot be null");
             }
 
             this.filter = filter;

Modified: mina/branches/mina-2-cleanup/core/src/main/java/org/apache/mina/core/filterchain/DefaultIoFilterChainBuilder.java
URL: http://svn.apache.org/viewvc/mina/branches/mina-2-cleanup/core/src/main/java/org/apache/mina/core/filterchain/DefaultIoFilterChainBuilder.java?rev=916892&r1=916891&r2=916892&view=diff
==============================================================================
--- mina/branches/mina-2-cleanup/core/src/main/java/org/apache/mina/core/filterchain/DefaultIoFilterChainBuilder.java (original)
+++ mina/branches/mina-2-cleanup/core/src/main/java/org/apache/mina/core/filterchain/DefaultIoFilterChainBuilder.java Sat Feb 27 02:01:58 2010
@@ -77,7 +77,7 @@
      */
     public DefaultIoFilterChainBuilder(DefaultIoFilterChainBuilder filterChain) {
         if (filterChain == null) {
-            throw new NullPointerException("filterChain");
+            throw new IllegalArgumentException("filterChain cannot be null");
         }
         entries = new CopyOnWriteArrayList<Entry>(filterChain.entries);
     }
@@ -233,7 +233,7 @@
      */
     public synchronized IoFilter remove(String name) {
         if (name == null) {
-            throw new NullPointerException("name");
+            throw new IllegalArgumentException("name cannot be null");
         }
 
         for (ListIterator<Entry> i = entries.listIterator(); i.hasNext();) {
@@ -252,7 +252,7 @@
      */
     public synchronized IoFilter remove(IoFilter filter) {
         if (filter == null) {
-            throw new NullPointerException("filter");
+            throw new IllegalArgumentException("filter cannot be null");
         }
 
         for (ListIterator<Entry> i = entries.listIterator(); i.hasNext();) {
@@ -271,7 +271,7 @@
      */
     public synchronized IoFilter remove(Class<? extends IoFilter> filterType) {
         if (filterType == null) {
-            throw new NullPointerException("filterType");
+            throw new IllegalArgumentException("filterType cannot be null");
         }
 
         for (ListIterator<Entry> i = entries.listIterator(); i.hasNext();) {
@@ -332,7 +332,7 @@
      */
     public void setFilters(Map<String, ? extends IoFilter> filters) {
         if (filters == null) {
-            throw new NullPointerException("filters");
+            throw new IllegalArgumentException("filters cannot be null");
         }
         
         if (!isOrderedMap(filters)) {
@@ -344,10 +344,10 @@
         filters = new LinkedHashMap<String, IoFilter>(filters);
         for (Map.Entry<String, ? extends IoFilter> e: filters.entrySet()) {
             if (e.getKey() == null) {
-                throw new NullPointerException("filters contains a null key.");
+                throw new IllegalArgumentException("filters contains a null key.");
             }
             if (e.getValue() == null) {
-                throw new NullPointerException("filters contains a null value.");
+                throw new IllegalArgumentException("filters contains a null value.");
             }
         }
         
@@ -485,7 +485,7 @@
 
     private void checkBaseName(String baseName) {
         if (baseName == null) {
-            throw new NullPointerException("baseName");
+            throw new IllegalArgumentException("baseName cannot be null");
         }
 
         if (!contains(baseName)) {
@@ -509,10 +509,10 @@
 
         private EntryImpl(String name, IoFilter filter) {
             if (name == null) {
-                throw new NullPointerException("name");
+                throw new IllegalArgumentException("name cannot be null");
             }
             if (filter == null) {
-                throw new NullPointerException("filter");
+                throw new IllegalArgumentException("filter cannot be null");
             }
 
             this.name = name;

Modified: mina/branches/mina-2-cleanup/core/src/main/java/org/apache/mina/core/filterchain/IoFilterEvent.java
URL: http://svn.apache.org/viewvc/mina/branches/mina-2-cleanup/core/src/main/java/org/apache/mina/core/filterchain/IoFilterEvent.java?rev=916892&r1=916891&r2=916892&view=diff
==============================================================================
--- mina/branches/mina-2-cleanup/core/src/main/java/org/apache/mina/core/filterchain/IoFilterEvent.java (original)
+++ mina/branches/mina-2-cleanup/core/src/main/java/org/apache/mina/core/filterchain/IoFilterEvent.java Sat Feb 27 02:01:58 2010
@@ -46,7 +46,7 @@
         super(type, session, parameter);
 
         if (nextFilter == null) {
-            throw new NullPointerException("nextFilter");
+            throw new IllegalArgumentException("nextFilter cannot be null");
         }
         this.nextFilter = nextFilter;
     }

Modified: mina/branches/mina-2-cleanup/core/src/main/java/org/apache/mina/core/future/ConnectFuture.java
URL: http://svn.apache.org/viewvc/mina/branches/mina-2-cleanup/core/src/main/java/org/apache/mina/core/future/ConnectFuture.java?rev=916892&r1=916891&r2=916892&view=diff
==============================================================================
--- mina/branches/mina-2-cleanup/core/src/main/java/org/apache/mina/core/future/ConnectFuture.java (original)
+++ mina/branches/mina-2-cleanup/core/src/main/java/org/apache/mina/core/future/ConnectFuture.java Sat Feb 27 02:01:58 2010
@@ -19,7 +19,9 @@
  */
 package org.apache.mina.core.future;
 
+import org.apache.mina.core.service.IoConnector;
 import org.apache.mina.core.session.IoSession;
+import org.apache.mina.core.session.IoSessionInitializer;
 
 /**
  * An {@link IoFuture} for asynchronous connect requests.
@@ -35,7 +37,16 @@
  *
  * @author <a href="http://mina.apache.org">Apache MINA Project</a>
  */
-public interface ConnectFuture extends IoFuture {
+public interface ConnectFuture<H> extends IoFuture {
+    H getHandle();
+    void setHandle(H handle);
+    IoConnector getConnector();
+    void setConnector(IoConnector connector);
+    long getDeadline();
+    void setDeadline(long deadline);
+    IoSessionInitializer<? extends ConnectFuture<H>> getSessionInitializer();
+    void setSessionInitializer(IoSessionInitializer<? extends ConnectFuture<H>> sessionInitializer);
+    
     /**
      * Returns {@link IoSession} which is the result of connect operation.
      *

Modified: mina/branches/mina-2-cleanup/core/src/main/java/org/apache/mina/core/future/DefaultConnectFuture.java
URL: http://svn.apache.org/viewvc/mina/branches/mina-2-cleanup/core/src/main/java/org/apache/mina/core/future/DefaultConnectFuture.java?rev=916892&r1=916891&r2=916892&view=diff
==============================================================================
--- mina/branches/mina-2-cleanup/core/src/main/java/org/apache/mina/core/future/DefaultConnectFuture.java (original)
+++ mina/branches/mina-2-cleanup/core/src/main/java/org/apache/mina/core/future/DefaultConnectFuture.java Sat Feb 27 02:01:58 2010
@@ -20,7 +20,9 @@
 package org.apache.mina.core.future;
 
 import org.apache.mina.core.RuntimeIoException;
+import org.apache.mina.core.service.IoConnector;
 import org.apache.mina.core.session.IoSession;
+import org.apache.mina.core.session.IoSessionInitializer;
 
 
 /**
@@ -28,8 +30,11 @@
  *
  * @author <a href="http://mina.apache.org">Apache MINA Project</a>
  */
-public class DefaultConnectFuture extends DefaultIoFuture implements
-        ConnectFuture {
+public class DefaultConnectFuture<H> extends DefaultIoFuture implements ConnectFuture<H> {
+    private H handle;
+    private IoConnector connector;
+    private long deadline;
+    private IoSessionInitializer<? extends ConnectFuture<H>> sessionInitializer;
 
     private static final Object CANCELED = new Object();
 
@@ -48,7 +53,6 @@
     public DefaultConnectFuture() {
         super(null);
     }
-
     @Override
     public IoSession getSession() {
         Object v = getValue();
@@ -98,9 +102,11 @@
     }
 
     public void cancel() {
-        setValue(CANCELED);
+        if ( !isDone() ) {
+            setValue(CANCELED);
+        }
     }
-
+    
     @Override
     public ConnectFuture await() throws InterruptedException {
         return (ConnectFuture) super.await();
@@ -120,4 +126,48 @@
     public ConnectFuture removeListener(IoFutureListener<?> listener) {
         return (ConnectFuture) super.removeListener(listener);
     }
+
+    public IoConnector getConnector() {
+        return connector;
+    }
+
+    public H getHandle() {
+        return handle;
+    }
+
+    public long getDeadline() {
+        return deadline;
+    }
+
+    public IoSessionInitializer<? extends ConnectFuture<H>> getSessionInitializer() {
+        return sessionInitializer;
+    }
+
+    /**
+     * @param handler the handle to set
+     */
+    public void setHandle( H handle ) {
+        this.handle = handle;
+    }
+
+    /**
+     * @param connector the connector to set
+     */
+    public void setConnector( IoConnector connector ) {
+        this.connector = connector;
+    }
+
+    /**
+     * @param deadline the deadline to set
+     */
+    public void setDeadline( long deadline ) {
+        this.deadline = deadline;
+    }
+
+    /**
+     * @param sessionInitializer the sessionInitializer to set
+     */
+    public void setSessionInitializer( IoSessionInitializer<? extends ConnectFuture<H>> sessionInitializer ){
+        this.sessionInitializer = sessionInitializer;
+    }
 }

Modified: mina/branches/mina-2-cleanup/core/src/main/java/org/apache/mina/core/polling/AbstractPollingConnectionlessIoAcceptor.java
URL: http://svn.apache.org/viewvc/mina/branches/mina-2-cleanup/core/src/main/java/org/apache/mina/core/polling/AbstractPollingConnectionlessIoAcceptor.java?rev=916892&r1=916891&r2=916892&view=diff
==============================================================================
--- mina/branches/mina-2-cleanup/core/src/main/java/org/apache/mina/core/polling/AbstractPollingConnectionlessIoAcceptor.java (original)
+++ mina/branches/mina-2-cleanup/core/src/main/java/org/apache/mina/core/polling/AbstractPollingConnectionlessIoAcceptor.java Sat Feb 27 02:01:58 2010
@@ -235,7 +235,7 @@
         }
 
         if (remoteAddress == null) {
-            throw new NullPointerException("remoteAddress");
+            throw new IllegalArgumentException("remoteAddress cannot be null");
         }
 
         synchronized (bindLock) {

Modified: mina/branches/mina-2-cleanup/core/src/main/java/org/apache/mina/core/polling/AbstractPollingIoAcceptor.java
URL: http://svn.apache.org/viewvc/mina/branches/mina-2-cleanup/core/src/main/java/org/apache/mina/core/polling/AbstractPollingIoAcceptor.java?rev=916892&r1=916891&r2=916892&view=diff
==============================================================================
--- mina/branches/mina-2-cleanup/core/src/main/java/org/apache/mina/core/polling/AbstractPollingIoAcceptor.java (original)
+++ mina/branches/mina-2-cleanup/core/src/main/java/org/apache/mina/core/polling/AbstractPollingIoAcceptor.java Sat Feb 27 02:01:58 2010
@@ -188,7 +188,7 @@
         super(sessionConfig, executor);
 
         if (processor == null) {
-            throw new NullPointerException("processor");
+            throw new IllegalArgumentException("processor cannot be null");
         }
 
         this.processor = processor;

Modified: mina/branches/mina-2-cleanup/core/src/main/java/org/apache/mina/core/polling/AbstractPollingIoConnector.java
URL: http://svn.apache.org/viewvc/mina/branches/mina-2-cleanup/core/src/main/java/org/apache/mina/core/polling/AbstractPollingIoConnector.java?rev=916892&r1=916891&r2=916892&view=diff
==============================================================================
--- mina/branches/mina-2-cleanup/core/src/main/java/org/apache/mina/core/polling/AbstractPollingIoConnector.java (original)
+++ mina/branches/mina-2-cleanup/core/src/main/java/org/apache/mina/core/polling/AbstractPollingIoConnector.java Sat Feb 27 02:01:58 2010
@@ -63,8 +63,7 @@
         extends AbstractIoConnector {
 
     private final Object lock = new Object();
-    private final Queue<ConnectionRequest> connectQueue = new ConcurrentLinkedQueue<ConnectionRequest>();
-    private final Queue<ConnectionRequest> cancelQueue = new ConcurrentLinkedQueue<ConnectionRequest>();
+    private final Queue<ConnectFuture<H>> connectQueue = new ConcurrentLinkedQueue<ConnectFuture<H>>();
     private final IoProcessor<T> processor;
     private final boolean createdProcessor;
 
@@ -167,7 +166,7 @@
         super(sessionConfig, executor);
 
         if (processor == null) {
-            throw new NullPointerException("processor");
+            throw new IllegalArgumentException("processor cannot be null");
         }
 
         this.processor = processor;
@@ -282,17 +281,17 @@
     /**
      * Register a new client socket for connection, add it to connection polling
      * @param handle client socket handle 
-     * @param request the associated {@link ConnectionRequest}
+     * @param future the associated {@link ConnectFuture}
      * @throws Exception any exception thrown by the underlying systems calls
      */
-    protected abstract void register(H handle, ConnectionRequest request) throws Exception;
+    protected abstract void register(H handle, ConnectFuture<H> future) throws Exception;
     
     /**
-     * get the {@link ConnectionRequest} for a given client socket handle
+     * get the {@link ConnectFuture} for a given client socket handle
      * @param handle the socket client handle 
-     * @return the connection request if the socket is connecting otherwise <code>null</code>
+     * @return the connection future if the socket is connecting otherwise <code>null</code>
      */
-    protected abstract ConnectionRequest getConnectionRequest(H handle);
+    protected abstract ConnectFuture<H> getConnectFuture(H handle);
 
     /**
      * {@inheritDoc}
@@ -338,18 +337,32 @@
             }
         }
 
-        ConnectionRequest request = new ConnectionRequest(handle, sessionInitializer);
-        connectQueue.add(request);
+        ConnectFuture future = new DefaultConnectFuture();
+
+        long timeout = getConnectTimeoutMillis();
+        long currentTime = System.currentTimeMillis();
+
+        timeout = currentTime + timeout;
+        
+        if (timeout <= currentTime) {
+            timeout = Long.MAX_VALUE;
+        }
+
+        future.setConnector(this);
+        future.setHandle(handle);
+        future.setDeadline( timeout );
+        future.setSessionInitializer(sessionInitializer);
+
+        connectQueue.add(future);
         startupWorker();
         wakeup();
 
-        return request;
+        return future;
     }
 
     private void startupWorker() {
         if (!selectable) {
             connectQueue.clear();
-            cancelQueue.clear();
         }
 
         synchronized (lock) {
@@ -363,12 +376,14 @@
     private int registerNew() {
         int nHandles = 0;
         for (; ;) {
-            ConnectionRequest req = connectQueue.poll();
+            ConnectFuture<H> req = connectQueue.poll();
+            
             if (req == null) {
                 break;
             }
 
-            H handle = req.handle;
+            H handle = req.getHandle();
+            
             try {
                 register(handle, req);
                 nHandles ++;
@@ -385,14 +400,22 @@
     }
 
     private int cancelKeys() {
+        if (connectQueue.isEmpty()) {
+            return 0;
+        }
+        
         int nHandles = 0;
-        for (; ;) {
-            ConnectionRequest req = cancelQueue.poll();
-            if (req == null) {
-                break;
+
+        for (ConnectFuture<H> future:connectQueue ) {
+            if ( !future.isCanceled()) {
+                continue;
             }
 
-            H handle = req.handle;
+            connectQueue.remove(future);
+
+            IoConnector connector = future.getConnector();
+            H handle = future.getHandle();
+            
             try {
                 close(handle);
             } catch (Exception e) {
@@ -401,6 +424,7 @@
                 nHandles ++;
             }
         }
+        
         return nHandles;
     }
 
@@ -416,9 +440,9 @@
             H handle = handlers.next();
             handlers.remove();
 
-            ConnectionRequest connectionRequest = getConnectionRequest(handle);
+            ConnectFuture<H> connectFuture = getConnectFuture(handle);
             
-            if ( connectionRequest == null) {
+            if ( connectFuture == null) {
                 continue;
             }
             
@@ -426,18 +450,19 @@
             try {
                 if (finishConnect(handle)) {
                     T session = newSession(processor, handle);
-                    initSession(session, connectionRequest, connectionRequest.getSessionInitializer());
+                    initSession(session, connectFuture, connectFuture.getSessionInitializer());
                     // Forward the remaining process to the IoProcessor.
                     session.getProcessor().add(session);
                     nHandles ++;
                 }
                 success = true;
             } catch (Throwable e) {
-                connectionRequest.setException(e);
+                connectFuture.setException(e);
             } finally {
                 if (!success) {
                     // The connection failed, we have to cancel it.
-                    cancelQueue.offer(connectionRequest);
+                    connectFuture.cancel();
+                    wakeup();
                 }
             }
         }
@@ -449,12 +474,13 @@
 
         while (handles.hasNext()) {
             H handle = handles.next();
-            ConnectionRequest connectionRequest = getConnectionRequest(handle);
+            ConnectFuture<H> connectFuture = getConnectFuture(handle);
 
-            if ((connectionRequest != null) && (currentTime >= connectionRequest.deadline)) {
-                connectionRequest.setException(
+            if ((connectFuture != null) && (currentTime >= connectFuture.getDeadline())) {
+                connectFuture.setException(
                         new ConnectException("Connection timed out."));
-                cancelQueue.offer(connectionRequest);
+                connectFuture.cancel();
+                wakeup();
             }
         }
     }
@@ -521,43 +547,4 @@
             }
         }
     }
-
-    public final class ConnectionRequest extends DefaultConnectFuture {
-        private final H handle;
-        private final long deadline;
-        private final IoSessionInitializer<? extends ConnectFuture> sessionInitializer;
-
-        public ConnectionRequest(H handle, IoSessionInitializer<? extends ConnectFuture> callback) {
-            this.handle = handle;
-            long timeout = getConnectTimeoutMillis();
-            if (timeout <= 0L) {
-                this.deadline = Long.MAX_VALUE;
-            } else {
-                this.deadline = System.currentTimeMillis() + timeout;
-            }
-            this.sessionInitializer = callback;
-        }
-
-        public H getHandle() {
-            return handle;
-        }
-
-        public long getDeadline() {
-            return deadline;
-        }
-
-        public IoSessionInitializer<? extends ConnectFuture> getSessionInitializer() {
-            return sessionInitializer;
-        }
-
-        @Override
-        public void cancel() {
-            if ( !isDone() ) {
-                super.cancel();
-                cancelQueue.add(this);
-                startupWorker();
-                wakeup();
-            }
-        }
-    }
 }

Modified: mina/branches/mina-2-cleanup/core/src/main/java/org/apache/mina/core/polling/AbstractPollingIoProcessor.java
URL: http://svn.apache.org/viewvc/mina/branches/mina-2-cleanup/core/src/main/java/org/apache/mina/core/polling/AbstractPollingIoProcessor.java?rev=916892&r1=916891&r2=916892&view=diff
==============================================================================
--- mina/branches/mina-2-cleanup/core/src/main/java/org/apache/mina/core/polling/AbstractPollingIoProcessor.java (original)
+++ mina/branches/mina-2-cleanup/core/src/main/java/org/apache/mina/core/polling/AbstractPollingIoProcessor.java Sat Feb 27 02:01:58 2010
@@ -131,7 +131,7 @@
      */
     protected AbstractPollingIoProcessor(Executor executor) {
         if (executor == null) {
-            throw new NullPointerException("executor");
+            throw new IllegalArgumentException("executor cannot be null");
         }
 
         this.threadName = nextThreadName();

Modified: mina/branches/mina-2-cleanup/core/src/main/java/org/apache/mina/core/service/AbstractIoAcceptor.java
URL: http://svn.apache.org/viewvc/mina/branches/mina-2-cleanup/core/src/main/java/org/apache/mina/core/service/AbstractIoAcceptor.java?rev=916892&r1=916891&r2=916892&view=diff
==============================================================================
--- mina/branches/mina-2-cleanup/core/src/main/java/org/apache/mina/core/service/AbstractIoAcceptor.java (original)
+++ mina/branches/mina-2-cleanup/core/src/main/java/org/apache/mina/core/service/AbstractIoAcceptor.java Sat Feb 27 02:01:58 2010
@@ -132,7 +132,7 @@
      */
     public final void setDefaultLocalAddresses(List<? extends SocketAddress> localAddresses) {
         if (localAddresses == null) {
-            throw new NullPointerException("localAddresses");
+            throw new IllegalArgumentException("localAddresses cannot be null");
         }
         setDefaultLocalAddresses((Iterable<? extends SocketAddress>) localAddresses);
     }
@@ -142,7 +142,7 @@
      */
     public final void setDefaultLocalAddresses(Iterable<? extends SocketAddress> localAddresses) {
         if (localAddresses == null) {
-            throw new NullPointerException("localAddresses");
+            throw new IllegalArgumentException("localAddresses cannot be null");
         }
         
         synchronized (bindLock) {
@@ -213,7 +213,7 @@
      */
     public final void bind(SocketAddress localAddress) throws IOException {
         if (localAddress == null) {
-            throw new NullPointerException("localAddress");
+            throw new IllegalArgumentException("localAddress cannot be null");
         }
         
         List<SocketAddress> localAddresses = new ArrayList<SocketAddress>(1);
@@ -252,7 +252,7 @@
         }
         
         if (localAddresses == null) {
-            throw new NullPointerException("localAddresses");
+            throw new IllegalArgumentException("localAddresses cannot be null");
         }
         
         List<SocketAddress> localAddressesCopy = new ArrayList<SocketAddress>();
@@ -305,7 +305,7 @@
      */
     public final void unbind(SocketAddress localAddress) {
         if (localAddress == null) {
-            throw new NullPointerException("localAddress");
+            throw new IllegalArgumentException("localAddress cannot be null");
         }
         
         List<SocketAddress> localAddresses = new ArrayList<SocketAddress>(1);
@@ -319,10 +319,10 @@
     public final void unbind(SocketAddress firstLocalAddress,
             SocketAddress... otherLocalAddresses) {
         if (firstLocalAddress == null) {
-            throw new NullPointerException("firstLocalAddress");
+            throw new IllegalArgumentException("firstLocalAddress cannot be null");
         }
         if (otherLocalAddresses == null) {
-            throw new NullPointerException("otherLocalAddresses");
+            throw new IllegalArgumentException("otherLocalAddresses cannot be null");
         }
         
         List<SocketAddress> localAddresses = new ArrayList<SocketAddress>();
@@ -336,7 +336,7 @@
      */
     public final void unbind(Iterable<? extends SocketAddress> localAddresses) {
         if (localAddresses == null) {
-            throw new NullPointerException("localAddresses");
+            throw new IllegalArgumentException("localAddresses cannot be null");
         }
         
         boolean deactivate = false;

Modified: mina/branches/mina-2-cleanup/core/src/main/java/org/apache/mina/core/service/AbstractIoConnector.java
URL: http://svn.apache.org/viewvc/mina/branches/mina-2-cleanup/core/src/main/java/org/apache/mina/core/service/AbstractIoConnector.java?rev=916892&r1=916891&r2=916892&view=diff
==============================================================================
--- mina/branches/mina-2-cleanup/core/src/main/java/org/apache/mina/core/service/AbstractIoConnector.java (original)
+++ mina/branches/mina-2-cleanup/core/src/main/java/org/apache/mina/core/service/AbstractIoConnector.java Sat Feb 27 02:01:58 2010
@@ -129,7 +129,7 @@
      */
     public final void setDefaultRemoteAddress(SocketAddress defaultRemoteAddress) {
         if (defaultRemoteAddress == null) {
-            throw new NullPointerException("defaultRemoteAddress");
+            throw new IllegalArgumentException("defaultRemoteAddress cannot be null");
         }
         
         if (!getTransportMetadata().getAddressType().isAssignableFrom(
@@ -198,7 +198,7 @@
         }
 
         if (remoteAddress == null) {
-            throw new NullPointerException("remoteAddress");
+            throw new IllegalArgumentException("remoteAddress is null, cannot connect");
         }
 
         if (!getTransportMetadata().getAddressType().isAssignableFrom(

Modified: mina/branches/mina-2-cleanup/core/src/main/java/org/apache/mina/core/service/AbstractIoService.java
URL: http://svn.apache.org/viewvc/mina/branches/mina-2-cleanup/core/src/main/java/org/apache/mina/core/service/AbstractIoService.java?rev=916892&r1=916891&r2=916892&view=diff
==============================================================================
--- mina/branches/mina-2-cleanup/core/src/main/java/org/apache/mina/core/service/AbstractIoService.java (original)
+++ mina/branches/mina-2-cleanup/core/src/main/java/org/apache/mina/core/service/AbstractIoService.java Sat Feb 27 02:01:58 2010
@@ -163,11 +163,11 @@
      */
     protected AbstractIoService(IoSessionConfig sessionConfig, Executor executor) {
         if (sessionConfig == null) {
-            throw new NullPointerException("sessionConfig");
+            throw new IllegalArgumentException("sessionConfig cannot be null");
         }
 
         if (getTransportMetadata() == null) {
-            throw new NullPointerException("TransportMetadata");
+            throw new IllegalArgumentException("TransportMetadata cannot be null");
         }
 
         if (!getTransportMetadata().getSessionConfigType().isAssignableFrom(
@@ -325,7 +325,7 @@
      */
     public final void setHandler(IoHandler handler) {
         if (handler == null) {
-            throw new NullPointerException("handler cannot be null");
+            throw new IllegalArgumentException("handler cannot be null");
         }
 
         if (isActive()) {
@@ -356,7 +356,7 @@
     public final void setSessionDataStructureFactory(
             IoSessionDataStructureFactory sessionDataStructureFactory) {
         if (sessionDataStructureFactory == null) {
-            throw new NullPointerException("sessionDataStructureFactory");
+            throw new IllegalArgumentException("sessionDataStructureFactory cannot be null");
         }
 
         if (isActive()) {
@@ -505,7 +505,7 @@
 
         public final void setException(Exception exception) {
             if (exception == null) {
-                throw new NullPointerException("exception");
+                throw new IllegalArgumentException("exception cannot be null");
             }
             setValue(exception);
         }

Modified: mina/branches/mina-2-cleanup/core/src/main/java/org/apache/mina/core/service/DefaultTransportMetadata.java
URL: http://svn.apache.org/viewvc/mina/branches/mina-2-cleanup/core/src/main/java/org/apache/mina/core/service/DefaultTransportMetadata.java?rev=916892&r1=916891&r2=916892&view=diff
==============================================================================
--- mina/branches/mina-2-cleanup/core/src/main/java/org/apache/mina/core/service/DefaultTransportMetadata.java (original)
+++ mina/branches/mina-2-cleanup/core/src/main/java/org/apache/mina/core/service/DefaultTransportMetadata.java Sat Feb 27 02:01:58 2010
@@ -52,35 +52,39 @@
             Class<?>... envelopeTypes) {
 
         if (providerName == null) {
-            throw new NullPointerException("providerName");
+            throw new IllegalArgumentException("providerName cannot be null");
         }
+        
         if (name == null) {
-            throw new NullPointerException("name");
+            throw new IllegalArgumentException("name cannot be null");
         }
 
         providerName = providerName.trim().toLowerCase();
+        
         if (providerName.length() == 0) {
             throw new IllegalArgumentException("providerName is empty.");
         }
+        
         name = name.trim().toLowerCase();
+        
         if (name.length() == 0) {
             throw new IllegalArgumentException("name is empty.");
         }
         
         if (addressType == null) {
-            throw new NullPointerException("addressType");
+            throw new IllegalArgumentException("addressType cannot be null");
         }
 
         if (envelopeTypes == null) {
-            throw new NullPointerException("envelopeTypes");
+            throw new IllegalArgumentException("envelopeTypes cannot be null");
         }
 
         if (envelopeTypes.length == 0) {
-            throw new NullPointerException("envelopeTypes is empty.");
+            throw new IllegalArgumentException("envelopeTypes is empty.");
         }
 
         if (sessionConfigType == null) {
-            throw new NullPointerException("sessionConfigType");
+            throw new IllegalArgumentException("sessionConfigType cannot be null");
         }
 
         this.providerName = providerName;

Modified: mina/branches/mina-2-cleanup/core/src/main/java/org/apache/mina/core/service/IoServiceListenerSupport.java
URL: http://svn.apache.org/viewvc/mina/branches/mina-2-cleanup/core/src/main/java/org/apache/mina/core/service/IoServiceListenerSupport.java?rev=916892&r1=916891&r2=916892&view=diff
==============================================================================
--- mina/branches/mina-2-cleanup/core/src/main/java/org/apache/mina/core/service/IoServiceListenerSupport.java (original)
+++ mina/branches/mina-2-cleanup/core/src/main/java/org/apache/mina/core/service/IoServiceListenerSupport.java Sat Feb 27 02:01:58 2010
@@ -70,7 +70,7 @@
      */
     public IoServiceListenerSupport(IoService service) {
         if (service == null) {
-            throw new NullPointerException("service");
+            throw new IllegalArgumentException("service cannot be null");
         }
         
         this.service = service;

Modified: mina/branches/mina-2-cleanup/core/src/main/java/org/apache/mina/core/service/SimpleIoProcessorPool.java
URL: http://svn.apache.org/viewvc/mina/branches/mina-2-cleanup/core/src/main/java/org/apache/mina/core/service/SimpleIoProcessorPool.java?rev=916892&r1=916891&r2=916892&view=diff
==============================================================================
--- mina/branches/mina-2-cleanup/core/src/main/java/org/apache/mina/core/service/SimpleIoProcessorPool.java (original)
+++ mina/branches/mina-2-cleanup/core/src/main/java/org/apache/mina/core/service/SimpleIoProcessorPool.java Sat Feb 27 02:01:58 2010
@@ -142,7 +142,7 @@
     public SimpleIoProcessorPool(Class<? extends IoProcessor<T>> processorType,
             Executor executor, int size) {
         if (processorType == null) {
-            throw new NullPointerException("processorType");
+            throw new IllegalArgumentException("processorType cannot be null");
         }
 
         if (size <= 0) {

Modified: mina/branches/mina-2-cleanup/core/src/main/java/org/apache/mina/core/session/AbstractIoSession.java
URL: http://svn.apache.org/viewvc/mina/branches/mina-2-cleanup/core/src/main/java/org/apache/mina/core/session/AbstractIoSession.java?rev=916892&r1=916891&r2=916892&view=diff
==============================================================================
--- mina/branches/mina-2-cleanup/core/src/main/java/org/apache/mina/core/session/AbstractIoSession.java (original)
+++ mina/branches/mina-2-cleanup/core/src/main/java/org/apache/mina/core/session/AbstractIoSession.java Sat Feb 27 02:01:58 2010
@@ -396,7 +396,7 @@
      */
     public WriteFuture write(Object message, SocketAddress remoteAddress) {
         if (message == null) {
-            throw new NullPointerException("message");
+            throw new IllegalArgumentException("message cannot be null");
         }
 
         // We can't send a message to a connected session if we don't have 

Modified: mina/branches/mina-2-cleanup/core/src/main/java/org/apache/mina/core/session/AbstractIoSessionConfig.java
URL: http://svn.apache.org/viewvc/mina/branches/mina-2-cleanup/core/src/main/java/org/apache/mina/core/session/AbstractIoSessionConfig.java?rev=916892&r1=916891&r2=916892&view=diff
==============================================================================
--- mina/branches/mina-2-cleanup/core/src/main/java/org/apache/mina/core/session/AbstractIoSessionConfig.java (original)
+++ mina/branches/mina-2-cleanup/core/src/main/java/org/apache/mina/core/session/AbstractIoSessionConfig.java Sat Feb 27 02:01:58 2010
@@ -47,7 +47,7 @@
      */
     public final void setAll(IoSessionConfig config) {
         if (config == null) {
-            throw new NullPointerException("config");
+            throw new IllegalArgumentException("config cannot be null");
         }
 
         setReadBufferSize(config.getReadBufferSize());

Modified: mina/branches/mina-2-cleanup/core/src/main/java/org/apache/mina/core/session/DefaultIoSessionDataStructureFactory.java
URL: http://svn.apache.org/viewvc/mina/branches/mina-2-cleanup/core/src/main/java/org/apache/mina/core/session/DefaultIoSessionDataStructureFactory.java?rev=916892&r1=916891&r2=916892&view=diff
==============================================================================
--- mina/branches/mina-2-cleanup/core/src/main/java/org/apache/mina/core/session/DefaultIoSessionDataStructureFactory.java (original)
+++ mina/branches/mina-2-cleanup/core/src/main/java/org/apache/mina/core/session/DefaultIoSessionDataStructureFactory.java Sat Feb 27 02:01:58 2010
@@ -64,7 +64,7 @@
         
         public Object getAttribute(IoSession session, Object key, Object defaultValue) {
             if (key == null) {
-                throw new NullPointerException("key");
+                throw new IllegalArgumentException("key cannot be null");
             }
 
             Object answer = attributes.get(key);
@@ -77,7 +77,7 @@
 
         public Object setAttribute(IoSession session, Object key, Object value) {
             if (key == null) {
-                throw new NullPointerException("key");
+                throw new IllegalArgumentException("key cannot be null");
             }
 
             if (value == null) {
@@ -89,7 +89,7 @@
 
         public Object setAttributeIfAbsent(IoSession session, Object key, Object value) {
             if (key == null) {
-                throw new NullPointerException("key");
+                throw new IllegalArgumentException("key cannot be null");
             }
 
             if (value == null) {
@@ -108,7 +108,7 @@
 
         public Object removeAttribute(IoSession session, Object key) {
             if (key == null) {
-                throw new NullPointerException("key");
+                throw new IllegalArgumentException("key cannot be null");
             }
 
             return attributes.remove(key);
@@ -116,7 +116,7 @@
 
         public boolean removeAttribute(IoSession session, Object key, Object value) {
             if (key == null) {
-                throw new NullPointerException("key");
+                throw new IllegalArgumentException("key cannot be null");
             }
 
             if (value == null) {

Modified: mina/branches/mina-2-cleanup/core/src/main/java/org/apache/mina/core/session/DummySession.java
URL: http://svn.apache.org/viewvc/mina/branches/mina-2-cleanup/core/src/main/java/org/apache/mina/core/session/DummySession.java?rev=916892&r1=916891&r2=916892&view=diff
==============================================================================
--- mina/branches/mina-2-cleanup/core/src/main/java/org/apache/mina/core/session/DummySession.java (original)
+++ mina/branches/mina-2-cleanup/core/src/main/java/org/apache/mina/core/session/DummySession.java Sat Feb 27 02:01:58 2010
@@ -198,7 +198,7 @@
      */
     public void setConfig(IoSessionConfig config) {
         if (config == null) {
-            throw new NullPointerException("config");
+            throw new IllegalArgumentException("config");
         }
 
         this.config = config;
@@ -217,7 +217,7 @@
      */
     public void setHandler(IoHandler handler) {
         if (handler == null) {
-            throw new NullPointerException("handler");
+            throw new IllegalArgumentException("handler cannot be null");
         }
 
         this.handler = handler;
@@ -237,7 +237,7 @@
      */
     public void setLocalAddress(SocketAddress localAddress) {
         if (localAddress == null) {
-            throw new NullPointerException("localAddress");
+            throw new IllegalArgumentException("localAddress cannot be null");
         }
 
         this.localAddress = localAddress;
@@ -248,7 +248,7 @@
      */
     public void setRemoteAddress(SocketAddress remoteAddress) {
         if (remoteAddress == null) {
-            throw new NullPointerException("remoteAddress");
+            throw new IllegalArgumentException("remoteAddress cannot be null");
         }
 
         this.remoteAddress = remoteAddress;
@@ -263,7 +263,7 @@
      */
     public void setService(IoService service) {
         if (service == null) {
-            throw new NullPointerException("service");
+            throw new IllegalArgumentException("service cannot be null");
         }
 
         this.service = service;
@@ -283,7 +283,7 @@
      */
     public void setTransportMetadata(TransportMetadata transportMetadata) {
         if (transportMetadata == null) {
-            throw new NullPointerException("transportMetadata");
+            throw new IllegalArgumentException("transportMetadata cannot be null");
         }
 
         this.transportMetadata = transportMetadata;

Modified: mina/branches/mina-2-cleanup/core/src/main/java/org/apache/mina/core/session/IoEvent.java
URL: http://svn.apache.org/viewvc/mina/branches/mina-2-cleanup/core/src/main/java/org/apache/mina/core/session/IoEvent.java?rev=916892&r1=916891&r2=916892&view=diff
==============================================================================
--- mina/branches/mina-2-cleanup/core/src/main/java/org/apache/mina/core/session/IoEvent.java (original)
+++ mina/branches/mina-2-cleanup/core/src/main/java/org/apache/mina/core/session/IoEvent.java Sat Feb 27 02:01:58 2010
@@ -37,10 +37,10 @@
 
     public IoEvent(IoEventType type, IoSession session, Object parameter) {
         if (type == null) {
-            throw new NullPointerException("type");
+            throw new IllegalArgumentException("type cannot be null");
         }
         if (session == null) {
-            throw new NullPointerException("session");
+            throw new IllegalArgumentException("session cannot be null");
         }
         this.type = type;
         this.session = session;

Modified: mina/branches/mina-2-cleanup/core/src/main/java/org/apache/mina/handler/chain/ChainedIoHandler.java
URL: http://svn.apache.org/viewvc/mina/branches/mina-2-cleanup/core/src/main/java/org/apache/mina/handler/chain/ChainedIoHandler.java?rev=916892&r1=916891&r2=916892&view=diff
==============================================================================
--- mina/branches/mina-2-cleanup/core/src/main/java/org/apache/mina/handler/chain/ChainedIoHandler.java (original)
+++ mina/branches/mina-2-cleanup/core/src/main/java/org/apache/mina/handler/chain/ChainedIoHandler.java Sat Feb 27 02:01:58 2010
@@ -47,7 +47,7 @@
      */
     public ChainedIoHandler(IoHandlerChain chain) {
         if (chain == null) {
-            throw new NullPointerException("chain");
+            throw new IllegalArgumentException("chain cannot be null");
         }
         this.chain = chain;
     }

Modified: mina/branches/mina-2-cleanup/core/src/main/java/org/apache/mina/handler/chain/IoHandlerChain.java
URL: http://svn.apache.org/viewvc/mina/branches/mina-2-cleanup/core/src/main/java/org/apache/mina/handler/chain/IoHandlerChain.java?rev=916892&r1=916891&r2=916892&view=diff
==============================================================================
--- mina/branches/mina-2-cleanup/core/src/main/java/org/apache/mina/handler/chain/IoHandlerChain.java (original)
+++ mina/branches/mina-2-cleanup/core/src/main/java/org/apache/mina/handler/chain/IoHandlerChain.java Sat Feb 27 02:01:58 2010
@@ -299,10 +299,10 @@
         private Entry(Entry prevEntry, Entry nextEntry, String name,
                 IoHandlerCommand command) {
             if (command == null) {
-                throw new NullPointerException("command");
+                throw new IllegalArgumentException("command cannot be null");
             }
             if (name == null) {
-                throw new NullPointerException("name");
+                throw new IllegalArgumentException("name cannot be null");
             }
 
             this.prevEntry = prevEntry;

Modified: mina/branches/mina-2-cleanup/core/src/main/java/org/apache/mina/handler/multiton/SingleSessionIoHandlerAdapter.java
URL: http://svn.apache.org/viewvc/mina/branches/mina-2-cleanup/core/src/main/java/org/apache/mina/handler/multiton/SingleSessionIoHandlerAdapter.java?rev=916892&r1=916891&r2=916892&view=diff
==============================================================================
--- mina/branches/mina-2-cleanup/core/src/main/java/org/apache/mina/handler/multiton/SingleSessionIoHandlerAdapter.java (original)
+++ mina/branches/mina-2-cleanup/core/src/main/java/org/apache/mina/handler/multiton/SingleSessionIoHandlerAdapter.java Sat Feb 27 02:01:58 2010
@@ -44,7 +44,7 @@
      */
     public SingleSessionIoHandlerAdapter(IoSession session) {
         if (session == null) {
-            throw new NullPointerException("session");
+            throw new IllegalArgumentException("session cannot be null");
         }
         this.session = session;
     }

Modified: mina/branches/mina-2-cleanup/core/src/main/java/org/apache/mina/handler/multiton/SingleSessionIoHandlerDelegate.java
URL: http://svn.apache.org/viewvc/mina/branches/mina-2-cleanup/core/src/main/java/org/apache/mina/handler/multiton/SingleSessionIoHandlerDelegate.java?rev=916892&r1=916891&r2=916892&view=diff
==============================================================================
--- mina/branches/mina-2-cleanup/core/src/main/java/org/apache/mina/handler/multiton/SingleSessionIoHandlerDelegate.java (original)
+++ mina/branches/mina-2-cleanup/core/src/main/java/org/apache/mina/handler/multiton/SingleSessionIoHandlerDelegate.java Sat Feb 27 02:01:58 2010
@@ -60,7 +60,7 @@
      */
     public SingleSessionIoHandlerDelegate(SingleSessionIoHandlerFactory factory) {
         if (factory == null) {
-            throw new NullPointerException("factory");
+            throw new IllegalArgumentException("factory cannot be null");
         }
         this.factory = factory;
     }

Modified: mina/branches/mina-2-cleanup/core/src/main/java/org/apache/mina/proxy/handlers/http/ntlm/NTLMUtilities.java
URL: http://svn.apache.org/viewvc/mina/branches/mina-2-cleanup/core/src/main/java/org/apache/mina/proxy/handlers/http/ntlm/NTLMUtilities.java?rev=916892&r1=916891&r2=916892&view=diff
==============================================================================
--- mina/branches/mina-2-cleanup/core/src/main/java/org/apache/mina/proxy/handlers/http/ntlm/NTLMUtilities.java (original)
+++ mina/branches/mina-2-cleanup/core/src/main/java/org/apache/mina/proxy/handlers/http/ntlm/NTLMUtilities.java Sat Feb 27 02:01:58 2010
@@ -187,7 +187,7 @@
         }
 
         if (workStation == null || domain == null) {
-            throw new NullPointerException(
+            throw new IllegalArgumentException(
                     "workStation and domain must be non null");
         }
 

Modified: mina/branches/mina-2-cleanup/core/src/main/java/org/apache/mina/proxy/session/ProxyIoSession.java
URL: http://svn.apache.org/viewvc/mina/branches/mina-2-cleanup/core/src/main/java/org/apache/mina/proxy/session/ProxyIoSession.java?rev=916892&r1=916891&r2=916892&view=diff
==============================================================================
--- mina/branches/mina-2-cleanup/core/src/main/java/org/apache/mina/proxy/session/ProxyIoSession.java (original)
+++ mina/branches/mina-2-cleanup/core/src/main/java/org/apache/mina/proxy/session/ProxyIoSession.java Sat Feb 27 02:01:58 2010
@@ -190,7 +190,7 @@
      */
     private void setRequest(ProxyRequest request) {
         if (request == null) {
-            throw new NullPointerException("request cannot be null");
+            throw new IllegalArgumentException("request cannot be null");
         }
 
         this.request = request;

Modified: mina/branches/mina-2-cleanup/core/src/main/java/org/apache/mina/proxy/utils/IoBufferDecoder.java
URL: http://svn.apache.org/viewvc/mina/branches/mina-2-cleanup/core/src/main/java/org/apache/mina/proxy/utils/IoBufferDecoder.java?rev=916892&r1=916891&r2=916892&view=diff
==============================================================================
--- mina/branches/mina-2-cleanup/core/src/main/java/org/apache/mina/proxy/utils/IoBufferDecoder.java (original)
+++ mina/branches/mina-2-cleanup/core/src/main/java/org/apache/mina/proxy/utils/IoBufferDecoder.java Sat Feb 27 02:01:58 2010
@@ -160,7 +160,7 @@
      */
     public void setDelimiter(byte[] delim, boolean resetMatchCount) {
         if (delim == null) {
-            throw new NullPointerException("Null delimiter not allowed");
+            throw new IllegalArgumentException("Null delimiter not allowed");
         }
 
         // Convert delimiter to IoBuffer.

Modified: mina/branches/mina-2-cleanup/core/src/main/java/org/apache/mina/transport/socket/nio/NioDatagramConnector.java
URL: http://svn.apache.org/viewvc/mina/branches/mina-2-cleanup/core/src/main/java/org/apache/mina/transport/socket/nio/NioDatagramConnector.java?rev=916892&r1=916891&r2=916892&view=diff
==============================================================================
--- mina/branches/mina-2-cleanup/core/src/main/java/org/apache/mina/transport/socket/nio/NioDatagramConnector.java (original)
+++ mina/branches/mina-2-cleanup/core/src/main/java/org/apache/mina/transport/socket/nio/NioDatagramConnector.java Sat Feb 27 02:01:58 2010
@@ -24,7 +24,9 @@
 import java.nio.channels.DatagramChannel;
 import java.util.Collections;
 import java.util.Iterator;
+import java.util.concurrent.Executor;
 
+import org.apache.mina.core.future.ConnectFuture;
 import org.apache.mina.core.polling.AbstractPollingIoConnector;
 import org.apache.mina.core.service.IoConnector;
 import org.apache.mina.core.service.IoProcessor;
@@ -166,7 +168,7 @@
     }
 
     @Override
-    protected ConnectionRequest getConnectionRequest(DatagramChannel handle) {
+    protected ConnectFuture<DatagramChannel> getConnectFuture(DatagramChannel handle) {
         throw new UnsupportedOperationException();
     }
 
@@ -181,7 +183,7 @@
     }
 
     @Override
-    protected void register(DatagramChannel handle, ConnectionRequest request)
+    protected void register(DatagramChannel handle, ConnectFuture<DatagramChannel> future)
             throws Exception {
         throw new UnsupportedOperationException();
     }

Modified: mina/branches/mina-2-cleanup/core/src/main/java/org/apache/mina/transport/socket/nio/NioSocketConnector.java
URL: http://svn.apache.org/viewvc/mina/branches/mina-2-cleanup/core/src/main/java/org/apache/mina/transport/socket/nio/NioSocketConnector.java?rev=916892&r1=916891&r2=916892&view=diff
==============================================================================
--- mina/branches/mina-2-cleanup/core/src/main/java/org/apache/mina/transport/socket/nio/NioSocketConnector.java (original)
+++ mina/branches/mina-2-cleanup/core/src/main/java/org/apache/mina/transport/socket/nio/NioSocketConnector.java Sat Feb 27 02:01:58 2010
@@ -28,9 +28,11 @@
 import java.util.Iterator;
 import java.util.concurrent.Executor;
 
+import org.apache.mina.core.future.ConnectFuture;
 import org.apache.mina.core.polling.AbstractPollingIoConnector;
 import org.apache.mina.core.service.IoConnector;
 import org.apache.mina.core.service.IoProcessor;
+import org.apache.mina.core.service.IoService;
 import org.apache.mina.core.service.SimpleIoProcessorPool;
 import org.apache.mina.core.service.TransportMetadata;
 import org.apache.mina.transport.socket.DefaultSocketSessionConfig;
@@ -191,14 +193,14 @@
      * {@inheritDoc}
      */
     @Override
-    protected ConnectionRequest getConnectionRequest(SocketChannel handle) {
+    protected ConnectFuture<SocketChannel> getConnectFuture(SocketChannel handle) {
         SelectionKey key = handle.keyFor(selector);
         
         if ((key == null) || (!key.isValid())) { 
             return null;
         }
 
-        return (ConnectionRequest) key.attachment();
+        return (ConnectFuture<SocketChannel>) key.attachment();
     }
 
     /**
@@ -266,7 +268,7 @@
      * {@inheritDoc}
      */
     @Override
-    protected void register(SocketChannel handle, ConnectionRequest request)
+    protected void register(SocketChannel handle, ConnectFuture<SocketChannel> request)
             throws Exception {
         handle.register(selector, SelectionKey.OP_CONNECT, request);
     }

Modified: mina/branches/mina-2-cleanup/core/src/main/java/org/apache/mina/util/CircularQueue.java
URL: http://svn.apache.org/viewvc/mina/branches/mina-2-cleanup/core/src/main/java/org/apache/mina/util/CircularQueue.java?rev=916892&r1=916891&r2=916892&view=diff
==============================================================================
--- mina/branches/mina-2-cleanup/core/src/main/java/org/apache/mina/util/CircularQueue.java (original)
+++ mina/branches/mina-2-cleanup/core/src/main/java/org/apache/mina/util/CircularQueue.java Sat Feb 27 02:01:58 2010
@@ -119,7 +119,7 @@
 
     public boolean offer(E item) {
         if (item == null) {
-            throw new NullPointerException("item");
+            throw new IllegalArgumentException("item cannot be null");
         }
         
         expandIfNeeded();

Modified: mina/branches/mina-2-cleanup/core/src/main/java/org/apache/mina/util/byteaccess/ByteArrayList.java
URL: http://svn.apache.org/viewvc/mina/branches/mina-2-cleanup/core/src/main/java/org/apache/mina/util/byteaccess/ByteArrayList.java?rev=916892&r1=916891&r2=916892&view=diff
==============================================================================
--- mina/branches/mina-2-cleanup/core/src/main/java/org/apache/mina/util/byteaccess/ByteArrayList.java (original)
+++ mina/branches/mina-2-cleanup/core/src/main/java/org/apache/mina/util/byteaccess/ByteArrayList.java Sat Feb 27 02:01:58 2010
@@ -245,7 +245,7 @@
             
             if ( ba == null )
             {
-                throw new NullPointerException( "ByteArray must not be null." );
+                throw new IllegalArgumentException( "ByteArray must not be null." );
             }
             this.ba = ba;
         }

Modified: mina/branches/mina-2-cleanup/transport-apr/src/main/java/org/apache/mina/transport/socket/apr/AprSocketConnector.java
URL: http://svn.apache.org/viewvc/mina/branches/mina-2-cleanup/transport-apr/src/main/java/org/apache/mina/transport/socket/apr/AprSocketConnector.java?rev=916892&r1=916891&r2=916892&view=diff
==============================================================================
--- mina/branches/mina-2-cleanup/transport-apr/src/main/java/org/apache/mina/transport/socket/apr/AprSocketConnector.java (original)
+++ mina/branches/mina-2-cleanup/transport-apr/src/main/java/org/apache/mina/transport/socket/apr/AprSocketConnector.java Sat Feb 27 02:01:58 2010
@@ -33,6 +33,7 @@
 import java.util.concurrent.Executor;
 
 import org.apache.mina.core.RuntimeIoException;
+import org.apache.mina.core.future.ConnectFuture;
 import org.apache.mina.core.polling.AbstractPollingIoConnector;
 import org.apache.mina.core.service.IoConnector;
 import org.apache.mina.core.service.IoProcessor;
@@ -63,8 +64,8 @@
 
     private static final int POLLSET_SIZE = 1024;
 
-    private final Map<Long, ConnectionRequest> requests =
-        new HashMap<Long, ConnectionRequest>(POLLSET_SIZE);
+    private final Map<Long, ConnectFuture<Long>> futures =
+        new HashMap<Long, ConnectFuture<Long>>(POLLSET_SIZE);
 
     private final Object wakeupLock = new Object();
     private volatile long wakeupSocket;
@@ -213,8 +214,8 @@
      * {@inheritDoc}
      */
     @Override
-    protected ConnectionRequest getConnectionRequest(Long handle) {
-        return requests.get(handle);
+    protected ConnectFuture<Long> getConnectFuture(Long handle) {
+        return futures.get(handle);
     }
 
     /**
@@ -235,7 +236,8 @@
     @Override
     protected boolean finishConnect(Long handle) throws Exception {
         Poll.remove(pollset, handle);
-        requests.remove(handle);
+        futures.remove(handle);
+        
         if (failedHandles.remove(handle)) {
             int rv = Socket.recvb(handle, dummyBuffer, 0, 1);
             throwException(rv);
@@ -303,14 +305,15 @@
      * {@inheritDoc}
      */
     @Override
-    protected void register(Long handle, ConnectionRequest request)
+    protected void register(Long handle, ConnectFuture<Long> future)
             throws Exception {
         int rv = Poll.add(pollset, handle, Poll.APR_POLLOUT);
+        
         if (rv != Status.APR_SUCCESS) {
             throwException(rv);
         }
 
-        requests.put(handle, request);
+        futures.put(handle, future);
     }
 
     /**