RFR: 8341566: Add Reader.of(CharSequence) [v7]
Chen Liang
liach at openjdk.org
Wed Oct 9 16:43:07 UTC 2024
On Wed, 9 Oct 2024 11:49:47 GMT, Markus KARG <duke at openjdk.org> wrote:
>> This Pull Requests proposes an implementation for [JDK-8341566](https://bugs.openjdk.org/browse/JDK-8341566): Adding the new method `public static Reader Reader.of(CharSequence)` will return an anonymous, non-synchronized implementation of a `Reader` for each kind of `CharSequence` implementation. It is optimized for `String`, `StringBuilder`, `StringBuffer` and `CharBuffer`.
>>
>> In addition, this Pull Request proposes to replace the implementation of `StringReader` to become a simple synchronized wrapper around `Reader.of(CharSequence)` for the case of `String` sources. To ensure correctness, this PR...
>> * ...simply moved the **original code** of `StringBuilder` to become the de-facto implementation of `Reader.of()`, then stripped synchronized from it on the left hand, but kept just a synchronized wrapper on the right hand. Then added a `switch` for optimizations within the original code, at the exact location where previously just an optimization for `String` lived in.
>> * ...added tests for all methods (`Of.java`), and applied that test upon the modified `StringBuilder`.
>>
>> Wherever new JavaDocs were added, existing phrases from other code locations have been copied and adapted, to best match the same wording.
>
> Markus KARG has updated the pull request incrementally with two additional commits since the last revision:
>
> - assertThrows instead of expectedExceptions
> - ordered jtreg tags according recommendation in https://openjdk.org/jtreg/tag-spec.html#ORDER
I have looked at the CSR and revised the wording for you, mostly conveying information CSR review wants to see.
The original "Problem" section only mentions performance, but I added consistency with specification and problems with third-party/custom implementations, as those are indeed problems that we are fixing with this new API. Also simplified "Solution" section to emphasize on our new API. The inlined links have been standardized to links in the "Issue Links" section.
@mkarg Can you take a look at this revised version of CSR?
-------------
PR Comment: https://git.openjdk.org/jdk/pull/21371#issuecomment-2402809835
More information about the core-libs-dev
mailing list