This commit is contained in:
Taro L. Saito 2011-08-01 13:58:35 +09:00
commit 5d012b512f
4 changed files with 11 additions and 4 deletions

View File

@ -112,7 +112,7 @@ public class SnappyLoader
return isLoaded;
}
static SnappyNativeAPI load() {
static synchronized SnappyNativeAPI load() {
if (isInitialized)
return api;
@ -194,7 +194,7 @@ public class SnappyLoader
throw new SnappyError(SnappyErrorCode.FAILED_TO_LOAD_NATIVE_LIBRARY, ee.getMessage());
}
catch (Exception e2) {
throw new SnappyError(SnappyErrorCode.FAILED_TO_LOAD_NATIVE_LIBRARY, e.getMessage());
throw new SnappyError(SnappyErrorCode.FAILED_TO_LOAD_NATIVE_LIBRARY, e2.getMessage());
}
}
catch (Exception e) {

View File

@ -31,7 +31,7 @@ public class SnappyNativeLoader
private static HashMap<String, Boolean> loadedLibFiles = new HashMap<String, Boolean>();
private static HashMap<String, Boolean> loadedLib = new HashMap<String, Boolean>();
public static void load(String lib) {
public static synchronized void load(String lib) {
if (loadedLibFiles.containsKey(lib) && loadedLibFiles.get(lib) == true)
return;
@ -44,7 +44,7 @@ public class SnappyNativeLoader
}
}
public static void loadLibrary(String libname) {
public static synchronized void loadLibrary(String libname) {
if (loadedLib.containsKey(libname) && loadedLib.get(libname) == true)
return;

View File

@ -82,6 +82,13 @@ public class SnappyLoaderTest
ClassLoader parent = this.getClass().getClassLoader().getParent();
ClassWorld cw = new ClassWorld();
ClassRealm P = cw.newRealm("P", parent);
try {
P.loadClass("org.xerial.snappy.Snappy");
fail("org.xerial.snappy.Snappy is found in the parent");
}
catch (ClassNotFoundException e) {
// OK
}
// Prepare the child class loaders which can load Snappy.class
URL classPath = new File("target/classes").toURI().toURL();