-
Notifications
You must be signed in to change notification settings - Fork 6.2k
8356439: Rename JavaLangAccess::*NoRepl methods #26413
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
👋 Welcome back vyazici! A progress list of the required criteria for merging this PR into |
@vy This change now passes all automated pre-integration checks. ℹ️ This project also has non-automated pre-integration requirements. Please see the file CONTRIBUTING.md for details. After integration, the commit message for the final commit will be:
You can use pull request commands such as /summary, /contributor and /issue to adjust it as needed. At the time when this comment was updated there had been 15 new commits pushed to the
As there are no conflicts, your changes will automatically be rebased on top of these commits when integrating. If you prefer to avoid this automatic rebasing, please check the documentation for the /integrate command for further details. ➡️ To integrate this PR with the above commit message to the |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I strongly suggest against using CCE as the standard exception. The only place that relies on CCE is Files
; IAE is more suitable for everywhere else. I recommend adding the special CCE handling in Files
alone so we can remove the redundant try-catch everywhere else.
src/java.base/share/classes/jdk/internal/access/JavaLangAccess.java
Outdated
Show resolved
Hide resolved
@liach, thanks so much for the prompt feedback!
Would you mind elaborating on the rationale behind this preference, please? |
If you look at the history of |
newStringNoRepl has confused several maintainers as it's not immediately obvious that it means "no replace", or more specifically CodingErrorAction.REPORT behavior. So it's good to see this getting attention. Anyone working on String expects CodingErrorAction.REPLACE behavior so having String methods use methods that don't throw would feel right. There are "far away" APIs, Files.readXXX was mentioned, that require CodingErrorAction.REPORT behavior methods so having JLA methods throw CharacterCodingException is helpful. There are other far away APIs such as UUID and ZipCoder that specify a Charset and know that no exception will be throw. They want CodingErrorAction.REPORT behavior except that it's a bug if CharacterCodingException is thrown. These cases catch CCE and throw AssertionError, which is okay, and hopefully we have enough tests in all these area to ensure that it doesn't happen. Anyway, from a first read of the changes then I think we need to make sure that the method descriptions are accurate. There are several places where "IAE" is mentioned but the methods are changed to throw CCE. IAE is awkward in this area because throwing it, instead of CCE, makes it difficult to know if the handling is correct. There is constant code churn in this area and too easy to introduce a regression and "unexpected exception" if IAE is used to in place of a CharacterCodingException. Another high level comment from a first read is that it feels like there are two forms needed. One form is REPLACE action and doesn't throw. The other is REPORT action and throws CharacterCodingException. That is what we have already, it's just the naming is awkward. So it may be that it's more about finding good names so that it's clear from all the use sites. |
@AlanBateman, thanks for the tip. Pushed 10cb72c, which improves Javadoc in such places. While doing so, it also
|
Webrevs
|
If CCE should have a constructor with a message, it can be added if you have a clear idea how it would be used. |
Motivated by @RogerRiggs inquiries, and @AlanBateman's below remark,
grouped
We want to make
Though this propagates the checked
As a result,
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Review still in progress, feel free to ping me more more...
src/java.base/share/classes/jdk/internal/access/JavaLangAccess.java
Outdated
Show resolved
Hide resolved
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks for the updates, I don't have any more comments.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The new OrThrow
name is much better!
@RogerRiggs, @liach, @AlanBateman, I needed to push a Note that I've attached passing |
/integrate |
Going to push as commit eea50fb.
Your commit was automatically rebased without conflicts. |
NoRepl
-suffixedString
methods denote methods that do not replace invalid characters, but throwCharacterCodingException
on encounter. This behavior cannot easily be derived from the method footprints, has been a source of confusion for maintainers, and is not uniformly adopted, e.g.,newStringUTF8NoRepl()
andgetBytesUTF8NoRepl()
does not throwCCE
. This PR replaces theNoRepl
suffix withNoReplacement
in method names and consistently usesthrows CCE
in method footprints.Progress
Issue
Reviewers
Reviewing
Using
git
Checkout this PR locally:
$ git fetch https://git.openjdk.org/jdk.git pull/26413/head:pull/26413
$ git checkout pull/26413
Update a local copy of the PR:
$ git checkout pull/26413
$ git pull https://git.openjdk.org/jdk.git pull/26413/head
Using Skara CLI tools
Checkout this PR locally:
$ git pr checkout 26413
View PR using the GUI difftool:
$ git pr show -t 26413
Using diff file
Download this PR as a diff file:
https://git.openjdk.org/jdk/pull/26413.diff
Using Webrev
Link to Webrev Comment