Summary
Add missing IllegalArgumentException clauses for read-only buffer argumentss to certain java.nio channels read methods.
Problem
Some java.nio channels read methods will throw an IllegalArgumentException when passed a read-only buffer but this is not specified.
Solution
Add @throws IllegalArgumentException to the read methods where it is missing.
Specification
- DatagramChannel.receive - Throws: IllegalArgumentException - If the buffer is read-only 
- FileChannel.read(ByteBuffer,long) - Throws: IllegalArgumentException - If the position is negative or the buffer is read-only 
- ReadableByteChannel.read - Throws: IllegalArgumentException - If the buffer is read-only 
- ScatteringByteChannel.read methods - Throws: IllegalArgumentException - If any of the buffers is read-only 
--- old/src/java.base/share/classes/java/nio/channels/DatagramChannel.java  2019-11-20 08:54:20.000000000 -0800
+++ new/src/java.base/share/classes/java/nio/channels/DatagramChannel.java  2019-11-20 08:54:20.000000000 -0800
@@ -403,6 +403,9 @@
      *          or {@code null} if this channel is in non-blocking mode
      *          and no datagram was immediately available
      *
+     * @throws  IllegalArgumentException
+     *          If the buffer is read-only
+     *
      * @throws  ClosedChannelException
      *          If this channel is closed
      *
--- old/src/java.base/share/classes/java/nio/channels/FileChannel.java  2019-11-20 08:54:21.000000000 -0800
+++ new/src/java.base/share/classes/java/nio/channels/FileChannel.java  2019-11-20 08:54:21.000000000 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -719,7 +719,7 @@
      *          size
      *
      * @throws  IllegalArgumentException
-     *          If the position is negative
+     *          If the position is negative or the buffer is read-only
      *
      * @throws  NonReadableChannelException
      *          If this channel was not opened for reading
--- old/src/java.base/share/classes/java/nio/channels/ReadableByteChannel.java  2019-11-20 08:54:21.000000000 -0800
+++ new/src/java.base/share/classes/java/nio/channels/ReadableByteChannel.java  2019-11-20 08:54:21.000000000 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2001, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -84,6 +84,9 @@
      * @return  The number of bytes read, possibly zero, or {@code -1} if the
      *          channel has reached end-of-stream
      *
+     * @throws  IllegalArgumentException
+     *          If the buffer is read-only
+     *
      * @throws  NonReadableChannelException
      *          If this channel was not opened for reading
      *
--- old/src/java.base/share/classes/java/nio/channels/ScatteringByteChannel.java    2019-11-20 08:54:22.000000000 -0800
+++ new/src/java.base/share/classes/java/nio/channels/ScatteringByteChannel.java    2019-11-20 08:54:22.000000000 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -101,6 +101,9 @@
      *          If the preconditions on the {@code offset} and {@code length}
      *          parameters do not hold
      *
+     * @throws  IllegalArgumentException
+     *          If any of the buffers is read-only
+     *
      * @throws  NonReadableChannelException
      *          If this channel was not opened for reading
      *
@@ -138,6 +141,9 @@
      * @return The number of bytes read, possibly zero,
      *         or {@code -1} if the channel has reached end-of-stream
      *
+     * @throws  IllegalArgumentException
+     *          If any of the buffers is read-only
+     *
      * @throws  NonReadableChannelException
      *          If this channel was not opened for reading
      *- csr of
- 
                    JDK-8164993 (ch) ReadableByteChannel should note a possible IllegalArgumentException -           
- Resolved
 
-