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

SequencedMap view method specification and implementation adjustments

    XMLWordPrintable

Details

    • CSR
    • Resolution: Approved
    • P3
    • 21
    • core-libs
    • None
    • behavioral
    • minimal
    • Java API
    • SE

    Description

      Summary

      Additional assertions are required in the implementation specifications of the sequenced view default methods of the SequencedMap interface.

      Problem

      The current implementation specifications of these default methods disagreed with their actual implementations. In addition, the implementations didn't have quite the right behavior in certain cases.

      Solution

      Adjust the implementations and then rewrite the implementation specifications to match the actual implementations. See diffs below for the @implSpec sections of the sequencedKeySet(), sequencedValues(), and sequencedEntrySet() methods of the SequencedMap interface.

      Specification

      sequencedKeySet():
      
            * @implSpec
      -     * The implementation in this interface returns a {@code SequencedSet}
      -     * implementation that delegates all operations either to this map or to this map's
      -     * {@link #keySet}, except for its {@link SequencedSet#reversed reversed} method,
      -     * which instead returns the result of calling {@code sequencedKeySet} on this map's
      -     * reverse-ordered view.
      +     * The implementation in this interface returns a {@code SequencedSet} instance
      +     * that behaves as follows. Its {@link SequencedSet#add add} and {@link
      +     * SequencedSet#addAll addAll} methods throw {@link UnsupportedOperationException}.
      +     * Its {@link SequencedSet#reversed reversed} method returns the {@link
      +     * #sequencedKeySet sequencedKeySet} view of the {@link #reversed reversed} view of
      +     * this map. Each of its other methods calls the corresponding method of the {@link
      +     * #keySet keySet} view of this map.
      
      sequencedValues():
      
            * @implSpec
      -     * The implementation in this interface returns a {@code SequencedCollection}
      -     * implementation that delegates all operations either to this map or to this map's
      -     * {@link #values} collection, except for its {@link SequencedCollection#reversed reversed}
      -     * method, which instead returns the result of calling {@code sequencedValues} on this map's
      -     * reverse-ordered view.
      +     * The implementation in this interface returns a {@code SequencedCollection} instance
      +     * that behaves as follows. Its {@link SequencedCollection#add add} and {@link
      +     * SequencedCollection#addAll addAll} methods throw {@link UnsupportedOperationException}.
      +     * Its {@link SequencedCollection#reversed reversed} method returns the {@link
      +     * #sequencedValues sequencedValues} view of the {@link #reversed reversed} view of
      +     * this map. Its {@link Object#equals equals} and {@link Object#hashCode hashCode} methods
      +     * are inherited from {@link Object}. Each of its other methods calls the corresponding
      +     * method of the {@link #values values} view of this map.
      
      sequencedEntrySet():
      
            * @implSpec
      -     * The implementation in this interface returns a {@code SequencedSet}
      -     * implementation that delegates all operations either to this map or to this map's
      -     * {@link #entrySet}, except for its {@link SequencedSet#reversed reversed} method,
      -     * which instead returns the result of calling {@code sequencedEntrySet} on this map's
      -     * reverse-ordered view.
      +     * The implementation in this interface returns a {@code SequencedSet} instance
      +     * that behaves as follows. Its {@link SequencedSet#add add} and {@link
      +     * SequencedSet#addAll addAll} methods throw {@link UnsupportedOperationException}.
      +     * Its {@link SequencedSet#reversed reversed} method returns the {@link
      +     * #sequencedEntrySet sequencedEntrySet} view of the {@link #reversed reversed} view of
      +     * this map. Each of its other methods calls the corresponding method of the {@link
      +     * #entrySet entrySet} view of this map.

      Attachments

        Issue Links

          Activity

            People

              smarks Stuart Marks
              kganapureddy Krushnareddy Ganapureddy
              Alan Bateman
              Votes:
              0 Vote for this issue
              Watchers:
              1 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: