-
Notifications
You must be signed in to change notification settings - Fork 6.1k
8365086: CookieStore.getURIs() and get(URI) should return an immutable List #26698
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 jpai! A progress list of the required criteria for merging this PR into |
@jaikiran 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 4 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 |
Webrevs
|
* as expected | ||
* @run junit CookieStoreTest | ||
*/ | ||
class CookieStoreTest { |
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.
Otherwise you get a warning that the comment block should start with a /**
:
class CookieStoreTest { | |
class CookieStoreTest { |
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.
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 think we usually put the jtreg directive block before the imports.
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.
Is that warning generated by a IDE? I don't see it in IntelliJ:
@jaikiran, I remember seeing it highlighted somewhere, but apparently I am mistaken. Nevermind. It is all good.
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.
Hello Chen,
I think we usually put the jtreg directive block before the imports.
It's a mix of before imports and above the class declaration in the JDK repo. I personally prefer just above the class since it's easily visible. Several of the tests in the networking area follow this currently.
// the returned list is expected to be immutable, so the attempt to add or remove | ||
// an element must fail | ||
assertThrows(UnsupportedOperationException.class, () -> cookies.add(cookie)); | ||
assertThrows(UnsupportedOperationException.class, () -> cookies.remove(cookie)); |
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.
Nit: You can consider factoring this out to a assertCookieStoreIsImmutable(CookieStore)
method.
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.
Done. I've moved couple of those assertions to a separate method to be called from each of these test methods.
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.
LGTM. It may be useful to plan a release note, in case an application is depending on being able to add/remove stuff to/from the returned list, despite the documentation stating they should be immutable. For instance - an application may attempt to clear() the returned list.
* as expected | ||
* @run junit CookieStoreTest | ||
*/ | ||
class CookieStoreTest { |
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 think we usually put the jtreg directive block before the imports.
// the list is expected to be immutable, so the attempt to add or remove | ||
// an element must fail | ||
assertThrows(UnsupportedOperationException.class, () -> list.add(elementToAddOrRemove)); | ||
assertThrows(UnsupportedOperationException.class, () -> list.remove(elementToAddOrRemove)); |
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 think trying list.set
would be meaningful too, given Arrays.asList
would pass these two tests but is actually mutable.
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.
Done. I've updated the PR to include that additional check.
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.
Code alone looks good.
I've now marked the issue with |
Thank you all for the reviews. |
/integrate |
Going to push as commit 022e29a.
Your commit was automatically rebased without conflicts. |
Can I please get a review of this change which proposes to address the issue noted in https://bugs.openjdk.org/browse/JDK-8365086?
java.net.CookieStore
has some APIs which return ajava.util.List
. These API are specified to return an immutableList
. The JDK ships an implementation of theCookieStore
- thejava.net.InMemoryCookieStore
. The implementations of thegetURIs()
andget(URI)
methods in theInMemoryCookieStore
currently return aList
which is modifiable.The changes in this PR fix those two method to return an immutable
List
to match the specification. A new regression test has been introduced to reproduce the issue and verify the fix.I think this may not require a CSR since this fixes the implementation to match the already existing specification in
CookieStore
. I will create one if anyone suggests we should.Progress
Issue
Reviewers
Reviewing
Using
git
Checkout this PR locally:
$ git fetch https://git.openjdk.org/jdk.git pull/26698/head:pull/26698
$ git checkout pull/26698
Update a local copy of the PR:
$ git checkout pull/26698
$ git pull https://git.openjdk.org/jdk.git pull/26698/head
Using Skara CLI tools
Checkout this PR locally:
$ git pr checkout 26698
View PR using the GUI difftool:
$ git pr show -t 26698
Using diff file
Download this PR as a diff file:
https://git.openjdk.org/jdk/pull/26698.diff
Using Webrev
Link to Webrev Comment