[icedtea-web] RFC: fix findbugs communal cloud jnlps
Jiri Vanek
jvanek at redhat.com
Fri Jan 6 07:14:54 PST 2012
On 01/05/2012 11:20 PM, Omair Majid wrote:
> 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?
>
Give sense. Thank you for fast and nice fix.
J.
> Thanks,
> Omair
>
>
> findbugs-issues-01.patch
>
>
> 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