Hi Jaikiran,

By the way, keeping aside the breaking nature of this change, the current javadoc, I think doesn't reflect what the current implementation returns for unresolved addresses. The javadoc states:

"If the address is unresolved, |<unresolved>| is displayed in place of the address literal."

Note, the "in place of the address literal" part. However, in the current implementation[6], it returns something like - "localhost/<unresolved>:2182". So it doesn't just display the "<unresolved>" literal in the address part but suffixes it to the address part. Should that be clarified?

The InetSocketAddress string representation defers, partly, to InetAddress::toString, which specifies the “hostname / literal IP address” form. It is this address literal that is replaced with “<unresolved>”. If this is not clear from this spec, then it can be clarified.

Now that you explained it to me, I see what you mean and what that javadoc means. I hadn't paid attention to the "This String is constructed by calling toString() on the InetAddress and concatenating the port number (with a colon)". Looking at the javadoc on InetAddress.toString(), it does state the returned string to be of the form "hostname/literal IP address" (example: google.com/172.217.160.142). So when it says that "<unresolved> is displayed in place of the address literal", it actually is talking about the part that follows the "/" character in the output returned by the InetAddress.toString().

I'll be honest - I didn't even know that up until this release, the output of this API was something like google.com/172.217.160.142:80. I had it in my mind that the output was google.com:80. That's why when the new javadoc said "in place of the address literal", I thought it was talking about replacing "google.com" with "<unresolved>"

I don't know if it's just me who couldn't fully understand it until this was explained. For me, a {@link InetSocket.toString()} in the javadoc and a couple of example representations of what the output of toString() would look like would have made it easier. But I do understand that the javadoc may not be the right place for such level of details.

Based on the feedback, we updated the related release note to better explain "literal IP address" and to include a pointer to InetSocketAddress::getHostString.

https://www.oracle.com/technetwork/java/javase/14all-relnotes-5809668.html#JDK-8225499

Cheers,

Julia


Reply via email to