Mercurial > hg > release > icedtea-web-1.2
changeset 299:fb883fdc9331
Make getMainClass()'s return value consistent for AppletDesc and ApplicationDesc
2011-09-28 Omair Majid <omajid@redhat.com>
* netx/net/sourceforge/jnlp/AppletDesc.java (getMainClass): Clarify the
return value in javadoc.
* netx/net/sourceforge/jnlp/Launcher.java
(createApplet, createAppletObject): Do not replace '/' with '.'.
* netx/net/sourceforge/jnlp/PluginBridge.java (PluginBridge): Ensure that
the class name is in the dot-separated from.
* netx/net/sourceforge/jnlp/runtime/JNLPClassLoader.java
(checkForMain): Ensure that the name is an exact match.
author | Omair Majid <omajid@redhat.com> |
---|---|
date | Wed, 28 Sep 2011 18:17:13 -0400 |
parents | 477780fe79ae |
children | 3545cea5c845 |
files | ChangeLog netx/net/sourceforge/jnlp/AppletDesc.java netx/net/sourceforge/jnlp/Launcher.java netx/net/sourceforge/jnlp/PluginBridge.java netx/net/sourceforge/jnlp/runtime/JNLPClassLoader.java |
diffstat | 5 files changed, 17 insertions(+), 13 deletions(-) [+] |
line wrap: on
line diff
--- a/ChangeLog Wed Sep 28 15:28:14 2011 -0400 +++ b/ChangeLog Wed Sep 28 18:17:13 2011 -0400 @@ -1,3 +1,14 @@ +2011-09-28 Omair Majid <omajid@redhat.com> + + * netx/net/sourceforge/jnlp/AppletDesc.java (getMainClass): Clarify the + return value in javadoc. + * netx/net/sourceforge/jnlp/Launcher.java + (createApplet, createAppletObject): Do not replace '/' with '.'. + * netx/net/sourceforge/jnlp/PluginBridge.java (PluginBridge): Ensure that + the class name is in the dot-separated from. + * netx/net/sourceforge/jnlp/runtime/JNLPClassLoader.java + (checkForMain): Ensure that the name is an exact match. + 2011-09-28 Deepak Bhole <dbhole@redhat.com> PR794: IcedTea-Web does not work if a Web Start app jar has a Class-Path
--- a/netx/net/sourceforge/jnlp/AppletDesc.java Wed Sep 28 15:28:14 2011 -0400 +++ b/netx/net/sourceforge/jnlp/AppletDesc.java Wed Sep 28 18:17:13 2011 -0400 @@ -73,7 +73,7 @@ } /** - * Returns the main class name + * Returns the main class name in the dot-separated form (eg: foo.bar.Baz) */ public String getMainClass() { return mainClass;
--- a/netx/net/sourceforge/jnlp/Launcher.java Wed Sep 28 15:28:14 2011 -0400 +++ b/netx/net/sourceforge/jnlp/Launcher.java Wed Sep 28 18:17:13 2011 -0400 @@ -704,10 +704,6 @@ ThreadGroup group = Thread.currentThread().getThreadGroup(); String appletName = file.getApplet().getMainClass(); - - //Classloader chokes if there's '/' in the path to the main class. - //Must replace with '.' instead. - appletName = appletName.replace('/', '.'); Class appletClass = loader.loadClass(appletName); Applet applet = (Applet) appletClass.newInstance(); @@ -744,10 +740,6 @@ } String appletName = file.getApplet().getMainClass(); - - //Classloader chokes if there's '/' in the path to the main class. - //Must replace with '.' instead. - appletName = appletName.replace('/', '.'); Class appletClass = loader.loadClass(appletName); Applet applet = (Applet) appletClass.newInstance();
--- a/netx/net/sourceforge/jnlp/PluginBridge.java Wed Sep 28 15:28:14 2011 -0400 +++ b/netx/net/sourceforge/jnlp/PluginBridge.java Wed Sep 28 18:17:13 2011 -0400 @@ -133,7 +133,9 @@ if (main.endsWith(".class")) main = main.substring(0, main.length() - 6); - launchType = new AppletDesc(name, main, documentBase, width, + // the class name should be of the form foo.bar.Baz not foo/bar/Baz + String mainClass = main.replace('/', '.'); + launchType = new AppletDesc(name, mainClass, documentBase, width, height, atts); if (main.endsWith(".class")) //single class file only
--- a/netx/net/sourceforge/jnlp/runtime/JNLPClassLoader.java Wed Sep 28 15:28:14 2011 -0400 +++ b/netx/net/sourceforge/jnlp/runtime/JNLPClassLoader.java Wed Sep 28 18:17:13 2011 -0400 @@ -580,6 +580,7 @@ mainClass = ad.getMainClass(); } else return; + String desiredJarEntryName = mainClass + ".class"; for (int i = 0; i < jars.size(); i++) { @@ -599,9 +600,7 @@ while (entries.hasMoreElements()) { je = entries.nextElement(); String jeName = je.getName().replaceAll("/", "."); - - if (!jeName.startsWith(mainClass + "$Inner") - && (jeName.startsWith(mainClass) && jeName.endsWith(".class"))) { + if (jeName.equals(desiredJarEntryName)) { foundMainJar = true; verifySignedJNLP(jars.get(i), jarFile); break;