Mercurial > hg > release > icedtea-web-1.2
changeset 317:221174bcd4ec
BasicService code does not work when placed in the applet constructor.
author | Danesh Dadachanji <ddadacha@redhat.com> |
---|---|
date | Mon, 19 Dec 2011 15:00:03 -0500 |
parents | 331a58713544 |
children | c5faf63fc34e |
files | ChangeLog netx/net/sourceforge/jnlp/Launcher.java netx/net/sourceforge/jnlp/runtime/AppletInstance.java |
diffstat | 3 files changed, 35 insertions(+), 9 deletions(-) [+] |
line wrap: on
line diff
--- a/ChangeLog Fri Dec 16 12:12:18 2011 -0500 +++ b/ChangeLog Mon Dec 19 15:00:03 2011 -0500 @@ -1,3 +1,14 @@ +2011-12-19 Danesh Dadachanji <ddadacha@redhat.com> + + Fix for BasicService being used in applet constructors but not + having access to ApplicationInstance variable. + * netx/net/sourceforge/jnlp/Launcher.java: + (createApplet): Moved applet initialization below loader.setApplication, + appletInstance is now initialized with applet param as null. + * netx/net/sourceforge/jnlp/runtime/AppletInstance.java: + (setApplet): New method, allows setting of AppletInstance's applet + only once. + 2011-12-16 Deepak Bhole <dbhole@redhat.com> Patch from Thomas Meyer <thomas@m3y3r.de>
--- a/netx/net/sourceforge/jnlp/Launcher.java Fri Dec 16 12:12:18 2011 -0500 +++ b/netx/net/sourceforge/jnlp/Launcher.java Mon Dec 19 15:00:03 2011 -0500 @@ -708,18 +708,19 @@ ThreadGroup group = Thread.currentThread().getThreadGroup(); + AppletInstance appletInstance; + if (cont == null) + appletInstance = new AppletInstance(file, group, loader, null); + else + appletInstance = new AppletInstance(file, group, loader, null, cont); + + loader.setApplication(appletInstance); + String appletName = file.getApplet().getMainClass(); Class appletClass = loader.loadClass(appletName); Applet applet = (Applet) appletClass.newInstance(); - - AppletInstance appletInstance; - if (cont == null) - appletInstance = new AppletInstance(file, group, loader, applet); - else - appletInstance = new AppletInstance(file, group, loader, applet, cont); - - loader.setApplication(appletInstance); - + appletInstance.setApplet(applet); + setContextClassLoaderForAllThreads(appletInstance.getThreadGroup(), appletInstance.getClassLoader()); return appletInstance;
--- a/netx/net/sourceforge/jnlp/runtime/AppletInstance.java Fri Dec 16 12:12:18 2011 -0500 +++ b/netx/net/sourceforge/jnlp/runtime/AppletInstance.java Mon Dec 19 15:00:03 2011 -0500 @@ -52,6 +52,20 @@ } /** + * Set the applet of this launched application; 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; + } + + /** * */ public AppletInstance(JNLPFile file, ThreadGroup group, ClassLoader loader, Applet applet, Container cont) {