RFR: 8341566: Adding factory for non-synchronized CharSequence Reader [v3]

Bernd duke at openjdk.org
Sun Oct 6 18:08:36 UTC 2024


On Sun, 6 Oct 2024 17:44:53 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 one additional commit since the last revision:
> 
>   fixup! Reader.of(String)
>   
>   Dropping non-public JavaDocs

src/java.base/share/classes/java/io/Reader.java line 231:

> 229:             public boolean ready() throws IOException {
> 230:                 ensureOpen();
> 231:                 return true;

I guess it’s not wrong, but can this be false when end of source is reached? Related to this you already described it is not synchronized but should we also describe it does not support changes to the length during “iteration” (could be in the same thread).

-------------

PR Review Comment: https://git.openjdk.org/jdk/pull/21371#discussion_r1789190894


More information about the core-libs-dev mailing list