Uploaded image for project: 'JDK'
  1. JDK
  2. JDK-8279984

(ch) java.nio.channels.FileChannel tryLock and write methods are missing @throws NonWritableChannelException

XMLWordPrintable

    • Icon: CSR CSR
    • Resolution: Approved
    • Icon: P4 P4
    • 19
    • core-libs
    • None
    • behavioral
    • minimal
    • The change documents existing behavior.
    • Java API
    • SE

      Summary

      Add @throws NonWritableChannelException to the tryLock() and write() methods of java.nio.channels.FileChannel.

      Problem

      If a tryLock() or write() method is invoked on a java.nio.channels.FileChannel which has been opened with read-only access, then a java.nio.channels.NonWritableChannelException is thrown but the documentation does not indicate this.

      Solution

      Add @throws NonWritableChannelException to the indicated methods.

      Specification

      Note that for tryLock(long,long,boolean), the boolean parameter shared is referred to. The other @throws are all the same and do not mention any parameter.

      @@ -403,6 +406,9 @@ public abstract class FileChannel
            * with the number of bytes actually written.  Otherwise this method
            * behaves exactly as specified by the {@link WritableByteChannel}
            * interface. </p>
      +     *
      +     * @throws  NonWritableChannelException
      +     *          If this channel was not opened for writing
            */
           public abstract int write(ByteBuffer src) throws IOException;
      
      @@ -417,6 +423,9 @@ public abstract class FileChannel
            * with the number of bytes actually written.  Otherwise this method
            * behaves exactly as specified in the {@link GatheringByteChannel}
            * interface.  </p>
      +     *
      +     * @throws  NonWritableChannelException
      +     *          If this channel was not opened for writing
            */
           public abstract long write(ByteBuffer[] srcs, int offset, int length)
               throws IOException;
      @@ -431,6 +440,9 @@ public abstract class FileChannel
            * with the number of bytes actually written.  Otherwise this method
            * behaves exactly as specified in the {@link GatheringByteChannel}
            * interface.  </p>
      +     *
      +     * @throws  NonWritableChannelException
      +     *          If this channel was not opened for writing
            */
           public final long write(ByteBuffer[] srcs) throws IOException {
               return write(srcs, 0, srcs.length);
      @@ -1030,7 +1042,7 @@ public abstract class FileChannel
            *          region
            *
            * @throws  NonReadableChannelException
      -     *          If {@code shared} is {@code true} this channel was not
      +     *          If {@code shared} is {@code true} but this channel was not
            *          opened for reading
            *
            * @throws  NonWritableChannelException
      @@ -1148,6 +1160,14 @@ public abstract class FileChannel
            *          blocked in this method and is attempting to lock an overlapping
            *          region of the same file
            *
      +     * @throws  NonReadableChannelException
      +     *          If {@code shared} is {@code true} but this channel was not
      +     *          opened for reading
      +     *
      +     * @throws  NonWritableChannelException
      +     *          If {@code shared} is {@code false} but this channel was not
      +     *          opened for writing
      +     *
            * @throws  IOException
            *          If some other I/O error occurs
            *
      @@ -1180,6 +1200,9 @@ public abstract class FileChannel
            *          blocked in this method and is attempting to lock an overlapping
            *          region
            *
      +     * @throws  NonWritableChannelException
      +     *          If this channel was not opened for writing
      +     *
            * @throws  IOException
            *          If some other I/O error occurs
            *

            bpb Brian Burkhalter
            bpb Brian Burkhalter
            Alan Bateman, Lance Andersen
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

              Created:
              Updated:
              Resolved: