You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@harmony.apache.org by ay...@apache.org on 2007/06/20 15:14:54 UTC

svn commit: r549100 - /harmony/enhanced/classlib/trunk/modules/nio/src/main/java/java/nio/channels/spi/AbstractSelectableChannel.java

Author: ayza
Date: Wed Jun 20 06:14:53 2007
New Revision: 549100

URL: http://svn.apache.org/viewvc?view=rev&rev=549100
Log:
Applying patch from HARMONY-4212 ([classlib][nio] deregistered channel.configureBlocking(true) throws IllegalBlockingModeException)

Modified:
    harmony/enhanced/classlib/trunk/modules/nio/src/main/java/java/nio/channels/spi/AbstractSelectableChannel.java

Modified: harmony/enhanced/classlib/trunk/modules/nio/src/main/java/java/nio/channels/spi/AbstractSelectableChannel.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/trunk/modules/nio/src/main/java/java/nio/channels/spi/AbstractSelectableChannel.java?view=diff&rev=549100&r1=549099&r2=549100
==============================================================================
--- harmony/enhanced/classlib/trunk/modules/nio/src/main/java/java/nio/channels/spi/AbstractSelectableChannel.java (original)
+++ harmony/enhanced/classlib/trunk/modules/nio/src/main/java/java/nio/channels/spi/AbstractSelectableChannel.java Wed Jun 20 06:14:53 2007
@@ -26,6 +26,7 @@
 import java.nio.channels.SelectionKey;
 import java.nio.channels.Selector;
 import java.util.ArrayList;
+import java.util.Iterator;
 import java.util.List;
 
 /**
@@ -202,7 +203,7 @@
                 if (isBlocking == blockingMode) {
                     return this;
                 }
-                if (blockingMode && isRegistered()) {
+                if (blockingMode && containsValidKeys()) {
                     throw new IllegalBlockingModeException();
                 }
                 implConfigureBlocking(blockingMode);
@@ -235,4 +236,17 @@
         }
     }
 
+    /**
+     * Returns true if the keyList contains at least 1 valid key and false otherwise.
+     */
+    private synchronized boolean containsValidKeys() {
+        for (Iterator<SelectionKey> iter = keyList.iterator(); iter.hasNext();) {
+            SelectionKey key = iter.next();
+
+            if (key != null && key.isValid()) {
+                return true;
+            }
+        }
+        return false;
+    }
 }