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

BlockingQueue.drainTo needs to throw all unchecked exceptions that Collection.add does

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Fixed
    • Icon: P3 P3
    • 6
    • 6
    • core-libs

      The spec for BlockingQueue.java:


          /**
           * Removes all available elements from this queue and adds them
           * into the given collection. This operation may be more
           * efficient than repeatedly polling this queue. A failure
           * encountered while attempting to <tt>add</tt> elements to
           * collection <tt>c</tt> may result in elements being in neither,
           * either or both collections when the associated exception is
           * thrown. Attempts to drain a queue to itself result in
           * <tt>IllegalArgumentException</tt>. Further, the behavior of
           * this operation is undefined if the specified collection is
           * modified while the operation is in progress.
           *
           * @param c the collection to transfer elements into
           * @return the number of elements transferred.
           * @throws NullPointerException if c is null
           * @throws IllegalArgumentException if c is this queue
           *
           */
          int drainTo(Collection<? super E> c);
          
      is incomplete because this method has to be able to work with any collection,
      and has to use something like Collection.add to add elements to it, and thus
      any of the exceptions thrown by that, like UnsupportedOperationException
      and ClassCastException, must in turn be spec'ed to be thrown by
      BlockingQueue.drainTo (both variants). Similarly with all extending interfaces
      and implementing classes.
      ###@###.### 2005-05-12 23:07:32 GMT

            martin Martin Buchholz
            martin Martin Buchholz
            Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

              Created:
              Updated:
              Resolved:
              Imported:
              Indexed: