Many built-in URL Handlers perform additional syntax checking on the URL when 
`URLStreamHandler::openConnection` / connect is called. In some cases, some of 
these checks could be also performed earlier, when `URLStreamHandler::parseURL` 
is called.

This fix proposes to slightly modify the behavior of JDK built-in URL handlers 
to perform these checks early, and throw `MalformedURLException` earlier, at 
URL construction time, when that is possible, instead of delaying until 
`URL::openConnection` or `URLConnection::connect` are called.

Because java.net.URL constructors are already specified to throw 
`MalformedURLException` in such cases, no API documentation changes are 
necessary. 

A new JDK specific system property `-Djdk.net.url.delayParsing` or 
`-Djdk.net.url.delayParsing=true` can be specified on the command line to 
revert to the previous behavior. By default, the property is not set, and the 
new behavior is in place. The property can be specified on the java command 
line if unexpected regressions are observed.

The new property will be documented in release notes, and may be removed in a 
future release.

CSR: https://bugs.openjdk.org/browse/JDK-8294592

-------------

Commit messages:
 - 8293590

Changes: https://git.openjdk.org/jdk/pull/10534/files
 Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=10534&range=00
  Issue: https://bugs.openjdk.org/browse/JDK-8293590
  Stats: 641 lines in 4 files changed: 602 ins; 3 del; 36 mod
  Patch: https://git.openjdk.org/jdk/pull/10534.diff
  Fetch: git fetch https://git.openjdk.org/jdk pull/10534/head:pull/10534

PR: https://git.openjdk.org/jdk/pull/10534

Reply via email to