[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