JDK-4778100 : selectedKeys().addAll() doesn't throw UnsupportedOperationException
  • Type: Bug
  • Component: core-libs
  • Sub-Component: java.nio
  • Affected Version: 1.4.2
  • Priority: P3
  • Status: Closed
  • Resolution: Duplicate
  • OS: solaris_2.6
  • CPU: sparc
  • Submitted: 2002-11-13
  • Updated: 2002-11-15
  • Resolved: 2002-11-15
Related Reports
Duplicate :  
Description

Name: auR10023			Date: 11/13/2002



java.nio.channels.Selector.selectedKeys().addAll() doesn't throw 
UnsupportedOperationException.

Javadoc for Selector.selectedKeys() method states:

...
Keys may be removed from, but not directly added to, the selected-key set. Any attempt to add an object to the key set will cause an UnsupportedOperationException to be thrown.
...


Here is the example:

-------test.java---------

import java.io.*;
import java.nio.*;
import java.nio.channels.*;

public class test  {
        
    public static void main(String args[]) {
        
        DatagramChannel channel = null;
        Selector sel = null;
        SelectionKey key = null;
        try {
            channel = DatagramChannel.open();
            channel.configureBlocking(false);
            sel = Selector.open();

            key = channel.register(
            sel, SelectionKey.OP_WRITE);
        } catch (IOException e) {
            System.out.println("Unexpected IOException");
            return;
        }

        try {
            sel.selectedKeys().addAll(sel.selectedKeys());
            System.out.println("UnsupportedOperationException should be " +
                               "thrown");
            return;
        } catch (UnsupportedOperationException e) {
        }
        System.out.println("OKAY");
    }
}


Here is the result
#java -version
java version "1.4.2-beta"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.4.2-beta-b06)
Java HotSpot(TM) Client VM (build 1.4.2-beta-b06, mixed mode)

#java test
UnsupportedOperationException should be thrown

======================================================================