RFR: 8356154: Respecify java.net.Socket constructors that allow creating UDP sockets to throw IllegalArgumentException
Jaikiran Pai
jpai at openjdk.org
Mon May 5 10:22:48 UTC 2025
On Mon, 5 May 2025 10:12:11 GMT, Jaikiran Pai <jpai at openjdk.org> wrote:
> Can I please get a review of this change which proposes to respecify the 2 `java.net.Socket` constructors that allow construction of UDP sockets? This addresses https://bugs.openjdk.org/browse/JDK-8356154.
>
> As noted in that JBS issue, in Java 23 we deprecated for removal the 2 `Socket` constructors that allowed UDP socket creation. The plan continues to be to remove those constructors. Before removing those, in order to allow for applications to notice this deprecation, these constructors are now being respecified to throw an `IllegalArgumentException` when the `stream` parameter is `false`.
>
> I will create a CSR once we settle on these changes.
>
> tier1 through tier8 tests have been run with this change and no related failures have been noticed.
src/java.base/share/classes/sun/nio/ch/NioSocketImpl.java line 453:
> 451: protected void create(boolean stream) throws IOException {
> 452: if (!stream) {
> 453: throw new IllegalArgumentException("datagram socket creation not supported");
My initial thought was to just `assert` the `stream` value here. Then I noticed the `test/jdk/java/net/SocketImpl/BadUsages.java` test (updated as part of this PR) and thought that it might be better to do an actual check here and have it throw `IllegalArgumentException`, to allow for this behaviour to be verified.
I however don't have a strong opinion about this. So if `assert` is enough, then I'll switch this to an assert and then remove the updated test method in the `BasUsages.java`.
-------------
PR Review Comment: https://git.openjdk.org/jdk/pull/25031#discussion_r2073193218
More information about the net-dev
mailing list