- synchronized access to AssetManager ClassLoader list

git-svn-id: https://jmonkeyengine.googlecode.com/svn/trunk@8606 75d07b2b-3a1a-0410-a2c5-0572b91ccdca
This commit is contained in:
nor..67 2011-11-08 23:36:45 +00:00
parent c0695b0a3a
commit 23b4e2fcf0
2 changed files with 14 additions and 9 deletions

View File

@ -185,13 +185,15 @@ public class SavableClassUtil {
} }
String newClassName = remapClass(className); String newClassName = remapClass(className);
for (ClassLoader classLoader : loaders){ synchronized(loaders) {
try { for (ClassLoader classLoader : loaders){
return (Savable) classLoader.loadClass(newClassName).newInstance(); try {
} catch (InstantiationException e) { return (Savable) classLoader.loadClass(newClassName).newInstance();
} catch (IllegalAccessException e) { } catch (InstantiationException e) {
} } catch (IllegalAccessException e) {
}
}
} }
return fromName(className); return fromName(className);

View File

@ -102,12 +102,15 @@ public class DesktopAssetManager implements AssetManager {
public void addClassLoader(ClassLoader loader){ public void addClassLoader(ClassLoader loader){
if(classLoaders == null) if(classLoaders == null)
classLoaders = Collections.synchronizedList(new ArrayList<ClassLoader>()); classLoaders = Collections.synchronizedList(new ArrayList<ClassLoader>());
classLoaders.add(loader); synchronized(classLoaders) {
classLoaders.add(loader);
}
} }
public void removeClassLoader(ClassLoader loader){ public void removeClassLoader(ClassLoader loader){
if(classLoaders != null) if(classLoaders != null) synchronized(classLoaders) {
classLoaders.remove(loader); classLoaders.remove(loader);
}
} }
public List<ClassLoader> getClassLoaders(){ public List<ClassLoader> getClassLoaders(){