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

Remove String::align

    XMLWordPrintable

    Details

    • Type: CSR
    • Status: Closed
    • Priority: P2
    • Resolution: Approved
    • Fix Version/s: 12
    • Component/s: core-libs
    • Labels:
      None
    • Subcomponent:
    • Compatibility Kind:
      source
    • Compatibility Risk:
      minimal
    • Compatibility Risk Description:
      This API was associated with a preview feature and users were warned about not being part of a public API.
    • Interface Kind:
      Java API
    • Scope:
      SE

      Description

      Summary

      String::align is no longer required with the withdrawal of JEP 326: Raw String Literals (Preview).

      Problem

      String::align was created specifically for incidental space removal in Raw String Literals.

      Solution

      Remove String::align

      Specification

      
          diff -r 4c539cb11633 src/java.base/share/classes/java/lang/String.java
          --- a/src/java.base/share/classes/java/lang/String.java Wed Dec 19 18:21:38 2018 +0000
          +++ b/src/java.base/share/classes/java/lang/String.java Wed Dec 19 15:17:53 2018 -0400
          @@ -2869,116 +2869,6 @@
               }
      
               /**
          -     * Removes vertical and horizontal white space margins from around the
          -     * essential body of a multi-line string, while preserving relative
          -     * indentation.
          -     * <p>
          -     * This string is first conceptually separated into lines as if by
          -     * {@link String#lines()}.
          -     * <p>
          -     * Then, the <i>minimum indentation</i> (min) is determined as follows. For
          -     * each non-blank line (as defined by {@link String#isBlank()}), the
          -     * leading {@link Character#isWhitespace(int) white space} characters are
          -     * counted. The <i>min</i> value is the smallest of these counts.
          -     * <p>
          -     * For each non-blank line, <i>min</i> leading white space characters are
          -     * removed. Each white space character is treated as a single character. In
          -     * particular, the tab character {@code "\t"} (U+0009) is considered a
          -     * single character; it is not expanded.
          -     * <p>
          -     * Leading and trailing blank lines, if any, are removed. Trailing spaces are
          -     * preserved.
          -     * <p>
          -     * Each line is suffixed with a line feed character {@code "\n"} (U+000A).
          -     * <p>
          -     * Finally, the lines are concatenated into a single string and returned.
          -     *
          -     * @apiNote
          -     * This method's primary purpose is to shift a block of lines as far as
          -     * possible to the left, while preserving relative indentation. Lines
          -     * that were indented the least will thus have no leading white space.
          -     *
          -     * Example:
          -     * <blockquote><pre>
          -     * `
          -     *      This is the first line
          -     *          This is the second line
          -     * `.align();
          -     *
          -     * returns
          -     * This is the first line
          -     *     This is the second line
          -     * </pre></blockquote>
          -     *
          -     * @return string with margins removed and line terminators normalized
          -     *
          -     * @see String#lines()
          -     * @see String#isBlank()
          -     * @see String#indent(int)
          -     * @see Character#isWhitespace(int)
          -     *
          -     * @since 12
          -     */
          -    public String align() {
          -        return align(0);
          -    }
          -
          -    /**
          -     * Removes vertical and horizontal white space margins from around the
          -     * essential body of a multi-line string, while preserving relative
          -     * indentation and with optional indentation adjustment.
          -     * <p>
          -     * Invoking this method is equivalent to:
          -     * <blockquote>
          -     *  {@code this.align().indent(n)}
          -     * </blockquote>
          -     *
          -     * @apiNote
          -     * Examples:
          -     * <blockquote><pre>
          -     * `
          -     *      This is the first line
          -     *          This is the second line
          -     * `.align(0);
          -     *
          -     * returns
          -     * This is the first line
          -     *     This is the second line
          -     *
          -     *
          -     * `
          -     *    This is the first line
          -     *       This is the second line
          -     * `.align(4);
          -     * returns
          -     *     This is the first line
          -     *         This is the second line
          -     * </pre></blockquote>
          -     *
          -     * @param n  number of leading white space characters
          -     *           to add or remove
          -     *
          -     * @return string with margins removed, indentation adjusted and
          -     *         line terminators normalized
          -     *
          -     * @see String#align()
          -     *
          -     * @since 12
          -     */
          -    public String align(int n) {
          -        if (isEmpty()) {
          -            return "";
          -        }
          -        int outdent = lines().filter(not(String::isBlank))
          -                             .mapToInt(String::indexOfNonWhitespace)
          -                             .min()
          -                             .orElse(0);
          -        // overflow-conscious code
          -        int indent = n - outdent;
          -        return indent(indent > n ? Integer.MIN_VALUE : indent, true);
          -    }
          -
          -    /**
                * This method allows the application of a function to {@code this}
                * string. The function should expect a single String argument
                * and produce an {@code R} result.
      

        Attachments

          Issue Links

            Activity

              People

              • Assignee:
                jlaskey Jim Laskey
                Reporter:
                jlaskey Jim Laskey
                Reviewed By:
                Vicente Arturo Romero Zaldivar
              • Votes:
                0 Vote for this issue
                Watchers:
                1 Start watching this issue

                Dates

                • Created:
                  Updated:
                  Resolved: