changeset 216:37f99d9fbdeb

Fix concurrent classloading problem in JNLPClassLoader.loadClass.
author Denis Lila <dlila@redhat.com>
date Mon, 18 Apr 2011 15:13:23 -0400
parents c083edb1ce29
children 211a5e73d119
files ChangeLog netx/net/sourceforge/jnlp/Launcher.java netx/net/sourceforge/jnlp/runtime/JNLPClassLoader.java
diffstat 3 files changed, 12 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/ChangeLog	Mon Apr 18 18:44:40 2011 +0100
+++ b/ChangeLog	Mon Apr 18 15:13:23 2011 -0400
@@ -1,3 +1,11 @@
+2011-04-18  Denis Lila  <dlila@redhat.com>
+
+	* netx/net/sourceforge/jnlp/Launcher.java:
+	Remove unused import.
+	* netx/net/sourceforge/jnlp/runtime/JNLPClassLoader.java:
+	Add annotation to suppress warning.
+	(loadClass): Make synchronized.
+
 2010-04-14  Andrew John Hughes  <ahughes@redhat.com>
 
 	* plugin/icedteanp/java/sun/applet/PluginAppletViewer.java,
--- a/netx/net/sourceforge/jnlp/Launcher.java	Mon Apr 18 18:44:40 2011 +0100
+++ b/netx/net/sourceforge/jnlp/Launcher.java	Mon Apr 18 15:13:23 2011 -0400
@@ -31,7 +31,6 @@
 import java.util.jar.JarFile;
 
 import net.sourceforge.jnlp.cache.CacheUtil;
-import net.sourceforge.jnlp.cache.ResourceTracker;
 import net.sourceforge.jnlp.cache.UpdatePolicy;
 import net.sourceforge.jnlp.runtime.AppThreadGroup;
 import net.sourceforge.jnlp.runtime.AppletInstance;
--- a/netx/net/sourceforge/jnlp/runtime/JNLPClassLoader.java	Mon Apr 18 18:44:40 2011 +0100
+++ b/netx/net/sourceforge/jnlp/runtime/JNLPClassLoader.java	Mon Apr 18 15:13:23 2011 -0400
@@ -650,6 +650,7 @@
     protected void activateJars(final List<JARDesc> jars) {
         PrivilegedAction<Void> activate = new PrivilegedAction<Void>() {
 
+            @SuppressWarnings("deprecation")
             public Void run() {
                 // transfer the Jars
                 waitForJars(jars);
@@ -983,7 +984,7 @@
      * classloader, or one of the classloaders for the JNLP file's
      * extensions.
      */
-    public Class<?> loadClass(String name) throws ClassNotFoundException {
+    public synchronized Class<?> loadClass(String name) throws ClassNotFoundException {
 
         Class<?> result = findLoadedClassAll(name);
 
@@ -1003,7 +1004,7 @@
         // validPackage(name);
 
         // search this and the extension loaders
-        if (result == null)
+        if (result == null) {
             try {
                 result = loadClassExt(name);
             } catch (ClassNotFoundException cnfe) {
@@ -1060,6 +1061,7 @@
                     }
                 }
             }
+        }
 
         if (result == null) {
             throw new ClassNotFoundException(name);