[OpenJDK 2D-Dev] [11] RFR: [JDK-5064835] TextMeasurer/deleteChar function fails when deleting more than one characters
Prahalad Kumar Narayanan
prahalad.kumar.narayanan at oracle.com
Fri Dec 29 11:00:24 UTC 2017
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.
More information about the 2d-dev
mailing list