[prev in list] [next in list] [prev in thread] [next in thread] 

List:       openjdk-2d-dev
Subject:    [OpenJDK 2D-Dev] [11] RFR: [JDK-5064835] TextMeasurer/deleteChar function fails when deleting more t
From:       Prahalad Kumar Narayanan <prahalad.kumar.narayanan () oracle ! com>
Date:       2017-12-29 11:00:24
Message-ID: 4c4a1107-5c91-4307-a467-715ea8ca992c () default
[Download RAW message or body]

Hello Everyone

Good day to you.

Request your time in reviewing the fix for the bug: 
JDK-5064835    TextMeasurer/deleteChar function fails when deleting more than one \
characters.

Root Cause:
. The spec clearly mentions that the concerned method is to be used to delete a \
                single character.
. However, the spec does not mention the outcome when the method is used to delete \
multiple characters (as reported in the bug)

Solution Approaches:
. Since the spec does not mention the outcome when multiple characters are deleted, \
                the result is left to the implementation.
. The solution can be approached in two perspectives-
      1. Update the spec to explicitly mention the exception that would be thrown in \
                such cases or
      2. Re-initialize the TextMeasurer with the new text as present in the argument \
of the method.

Solution:
. I inspected feasibility/ risk of both the approaches and I 'm of the opinion that \
                approach 1. is better. 
. Reason is that, with the second approach- 
      . The re-initialization would reset all text attributes, and state variabes \
                that were set on TextMeasurer (and internal StyledParagraph) object.
      . If re-initialization is required, one could create a new TextMeasurer using \
                the modified text rather than invoking deleteChar method.
. Thus in the proposed solution- I 've added a throws clause that explicitly mentions \
that IllegalArgumentException will be thrown when attempted to delete multiple \
characters.

Other Info:
. The fix was tested with existing jtreg test cases- No regressions were seen.
. 2 JCK tests have been found to fail. They are- 
      . java_awt/Font/TextMeasurer/CharTest (TestCase5)
      . java_awt/Font/LineBreakMeasurer/CharTest (TestCase4)
. In both the failures, incorrect arguments are passed to deleteChar method- \
                newParagraph (with multiple chars deleted) & beginIndex (-1)
. While the test case expects index out of bounds exception for -ve index, the code \
                now throws IllegalArgumentsException.
. A minor correction to JCK test will fix the issue. I shall raise a JCK bug once the \
fix is approved & submitted.

Kindly review the changes at your convenience & share your feedback:
http://cr.openjdk.java.net/~pnarayanan/5064835/webrev.00/

Note: I 've not raised a CSR for this bug yet.
Based on review, I will create the CSR for change to the specification.

Thank you for your time in review &
Happy New Year 

Prahalad N.


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic