[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