Mercurial > hg > release > icedtea-web-1.2
changeset 329:2dd44d3ad58d
Fix regression in broken AppletTest.
author | Danesh Dadachanji <ddadacha@redhat.com> |
---|---|
date | Mon, 13 Feb 2012 11:30:23 -0500 |
parents | 1b11cb5cd396 |
children | c959afd1eba7 |
files | ChangeLog netx/net/sourceforge/jnlp/Launcher.java netx/net/sourceforge/jnlp/runtime/AppletEnvironment.java |
diffstat | 3 files changed, 29 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/ChangeLog Thu Feb 02 16:15:27 2012 -0500 +++ b/ChangeLog Mon Feb 13 11:30:23 2012 -0500 @@ -1,3 +1,11 @@ +2012-02-06 Danesh Dadachanji <ddadacha@redhat.com> + + Fixed regression in running webstart applets from JNLP files. + * netx/net/sourceforge/jnlp/Launcher.java (createApplet): Added call to + set applet variable in the AppletInstance's AppletEnvironment. + * netx/net/sourceforge/jnlp/runtime/AppletEnvironment.java + (setApplet): New method, set AppletEnvironment's applet variable only once. + 2012-02-02 Danesh Dadachanji <ddadacha@redhat.com> * netx/net/sourceforge/jnlp/LaunchException.java: Fix message
--- a/netx/net/sourceforge/jnlp/Launcher.java Thu Feb 02 16:15:27 2012 -0500 +++ b/netx/net/sourceforge/jnlp/Launcher.java Mon Feb 13 11:30:23 2012 -0500 @@ -708,6 +708,9 @@ ThreadGroup group = Thread.currentThread().getThreadGroup(); + // appletInstance is needed by ServiceManager when looking up + // services. This could potentially be done in applet constructor + // so initialize appletInstance before creating applet. AppletInstance appletInstance; if (cont == null) appletInstance = new AppletInstance(file, group, loader, null); @@ -716,10 +719,14 @@ loader.setApplication(appletInstance); + // Initialize applet now that ServiceManager has access to its + // appletInstance. String appletName = file.getApplet().getMainClass(); Class appletClass = loader.loadClass(appletName); Applet applet = (Applet) appletClass.newInstance(); + // Finish setting up appletInstance. appletInstance.setApplet(applet); + appletInstance.getAppletEnvironment().setApplet(applet); setContextClassLoaderForAllThreads(appletInstance.getThreadGroup(), appletInstance.getClassLoader());
--- a/netx/net/sourceforge/jnlp/runtime/AppletEnvironment.java Thu Feb 02 16:15:27 2012 -0500 +++ b/netx/net/sourceforge/jnlp/runtime/AppletEnvironment.java Mon Feb 13 11:30:23 2012 -0500 @@ -207,6 +207,20 @@ } /** + * Set the applet of this environment; can only be called once. + */ + public void setApplet(Applet applet) { + if (this.applet != null) { + if (JNLPRuntime.isDebug()) { + Exception ex = new IllegalStateException("Applet can only be set once."); + ex.printStackTrace(); + } + return; + } + this.applet = applet; + } + + /** * Returns an enumeration that contains only the applet * from the JNLP file. */