JDK-8068313 : Parsing JNLP file should not cause download of extensions.
  • Type: Bug
  • Component: deploy
  • Affected Version: 9
  • Priority: P3
  • Status: Resolved
  • Resolution: Fixed
  • Submitted: 2014-12-26
  • Updated: 2015-09-29
  • Resolved: 2014-12-31
The Version table provides details related to the release that this issue/RFE will be addressed.

Unresolved : Release in which this issue/RFE will be addressed.
Resolved: Release in which this issue/RFE has been resolved.
Fixed : Release in which this issue/RFE has been fixed. The release containing this fix may be available for download as an Early Access Release or a General Availability Release.

To download the current JDK release, click here.
8u45Fixed 9 b48Fixed
Recent changes to LaunchDesc construtor have caused all extensions to be downloaded.  Besides being counter intuitive, this effects unit tests such as DecisionTimeTest to take a long time as the dummy extension href is attempted to be downloaded (greatly slowing down unit test execution).

We might need to download all extensions to get the expected main jar of a LaunchDesc.
We definitely need to download all extensions to get the list of all eager jars.
We don't, however need to download them just to construct the LaunchDesc.
LaunchDesc should be refactored to avoid download the extension jnlp files till they are needed or explicitly requested.
Based on the latest nightly results SQE OK to take the fixes JDK-8068313 and JDK-8072631 to CPU15_02

adding CPU15_02-critical watch because backport to 8u45 is required for fix of JDK-8072631

crucible review: https://java.se.oracle.com/code/cru/CR-JDK9CLIENT-685

First we change getMainJar so that all calls go to LaunchDesc.getMainJar() and it calls ResourcesDesc.getMainJar(0 which is made protected (to prevent it from being called directly from anywhere else. Then we remove the "acceptFirst" argument, after analyzing all existing calls to getMainJar we see it should always be true. There should only be one possible expected main jar in any LaunchDesc, and we cache it in the LaunchDesc the first time getMainJar is called. Finally we need to modify the test itself, so that getAppInfo will not try to download the dummy extension. To do this we get the resources of the main LaunchDesc, and visit them looking for the ExtensionDesc. When we find it we set its ExtensionLd to the parsed launch desc for the extension jnlp file. Then the test will run without trying to download the dummy extension jnlp file. Then this means we can postpone downloading the extension jnlp files, till we either call LaunchDesc.getMainJar, or call ResourcesDesc.getEagerOrAllJarDesc.