RFR: 8341566: Adding factory for non-synchronized CharSequence Reader [v4]
Markus KARG
duke at openjdk.org
Tue Oct 8 11:23:42 UTC 2024
> 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 six additional commits since the last revision:
- renamed source to cs; cs is final; close sets boolean; no adouble reference to source
- Fixed Typo: 'resect' -> 'respect'
- Improved wording: 'The returned reader supports the {@link #mark mark()} operation'
- Improved wording: 'Returns a {@code Reader} that reads characters from a {@code CharSequence}, starting at the first character in the sequence'
- test for generic read(char, int, int) case
- Remove useless test
-------------
Changes:
- all: https://git.openjdk.org/jdk/pull/21371/files
- new: https://git.openjdk.org/jdk/pull/21371/files/ae9f5845..5cbc0450
Webrevs:
- full: https://webrevs.openjdk.org/?repo=jdk&pr=21371&range=03
- incr: https://webrevs.openjdk.org/?repo=jdk&pr=21371&range=02-03
Stats: 42 lines in 2 files changed: 24 ins; 5 del; 13 mod
Patch: https://git.openjdk.org/jdk/pull/21371.diff
Fetch: git fetch https://git.openjdk.org/jdk.git pull/21371/head:pull/21371
PR: https://git.openjdk.org/jdk/pull/21371
More information about the core-libs-dev
mailing list