[icedtea-web] RFC: fix findbugs communal cloud jnlps
Deepak Bhole
dbhole at redhat.com
Fri Jan 6 08:19:24 PST 2012
* Omair Majid <omajid at redhat.com> [2012-01-05 18:38]:
> Hi,
>
> It was recently brought to my attention that the jnlps listed at
> http://findbugs.sourceforge.net/index.html (under the section "New")
> are broken, throwing exceptions when trying to run.
>
> The attached fixes the problems.
>
> The first problem was that icedtea-web was trying to ensure that all
> jnlps, including extension jnlps have a main class. I wonder what
> other applications were broken by this check. This patch modifies
> the check to only check for main class when a main class is possible
> (applets and applications).
>
> The second second problem was that (in the extension jnlp file) the
> jnlp element did not contain a codebase attribute. IcedTea-Web tried
> to add this null codebase when merging the jnlp file, causing an
> exception. The patch simply ignores this null.
>
> ChangeLog:
>
> 2012-01-05 Omair Majid <omajid at redhat.com>
>
> * netx/net/sourceforge/jnlp/runtime/JNLPClassLoader.java
> (initializeResources): Only throw exceptions about the main class not
> being found when the jnlp file can have a main class.
> (addToCodeBaseLoader): Dont try to process null URLs.
>
> Any thoughts or comments?
>
Looks good to me, OK for HEAD and 1.1.
Cheers,
Deepak
> Thanks,
> Omair
> diff -r 64979652c3b7 netx/net/sourceforge/jnlp/runtime/JNLPClassLoader.java
> --- a/netx/net/sourceforge/jnlp/runtime/JNLPClassLoader.java Thu Jan 05 17:33:06 2012 +0100
> +++ b/netx/net/sourceforge/jnlp/runtime/JNLPClassLoader.java Thu Jan 05 17:11:04 2012 -0500
> @@ -488,11 +488,14 @@
>
> // If jar with main class was not found and there are no more
> // available jars, throw a LaunchException
> - if (!foundMainJar
> - && (available == null || available.size() == 0))
> - throw new LaunchException(file, null, R("LSFatal"),
> - R("LCClient"), R("LCantDetermineMainClass"),
> - R("LCantDetermineMainClassInfo"));
> + if (file.getLaunchInfo() instanceof AppletDesc ||
> + file.getLaunchInfo() instanceof ApplicationDesc) {
> + if (!foundMainJar
> + && (available == null || available.size() == 0))
> + throw new LaunchException(file, null, R("LSFatal"),
> + R("LCClient"), R("LCantDetermineMainClass"),
> + R("LCantDetermineMainClassInfo"));
> + }
>
> // If main jar was found, but a signed JNLP file was not located
> if (!isSignedJNLP && foundMainJar)
> @@ -1700,6 +1703,9 @@
> * @throws IllegalArgumentException If the given url is not a path
> */
> private void addToCodeBaseLoader(URL u) {
> + if (u == null) {
> + return;
> + }
>
> // Only paths may be added
> if (!u.getFile().endsWith("/")) {
More information about the distro-pkg-dev
mailing list