Removed garbage code

This commit is contained in:
Taro L. Saito 2011-06-23 22:26:01 +09:00
parent dc0e8a3150
commit 4ee2936297
4 changed files with 19 additions and 33 deletions

View File

@ -31,6 +31,7 @@ import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.lang.reflect.Method;
import java.net.URL;
import java.security.DigestInputStream;
import java.security.MessageDigest;
@ -57,8 +58,8 @@ import java.util.Properties;
* <li>One of the libraries embedded in snappy-java-(version).jar extracted into
* (System property: <i>java.io.tempdir</i> or if
* <i>org.xerial.snappy.tempdir</i> is set, use this folder.)
* <li>Folders in LD_PATH environment variable (This is the default path that
* JVM searches for native libraries)
* <li>Folders specified by java.lib.path system property (This is the default
* path that JVM searches for native libraries)
* </ol>
*
* <p>
@ -109,7 +110,7 @@ public class SnappyLoader
if (!isInitialized) {
final String nativeLoaderClassName = "org.xerial.snappy.SnappyNativeLoader";
final String[] preloadClass = new String[] { "org.xerial.snappy.SnappyNative",
final String[] classesToPreload = new String[] { "org.xerial.snappy.SnappyNative",
"org.xerial.snappy.SnappyErrorCode" };
try {
@ -123,15 +124,15 @@ public class SnappyLoader
// Load a byte code
byte[] byteCode = getByteCode("/org/xerial/snappy/SnappyNativeLoader.bytecode");
// In addition, load the SnappyNative and SnappyException class in the system class loader
List<byte[]> preloadClassByteCode = new ArrayList<byte[]>(preloadClass.length);
for (String each : preloadClass) {
List<byte[]> preloadClassByteCode = new ArrayList<byte[]>(classesToPreload.length);
for (String each : classesToPreload) {
preloadClassByteCode.add(getByteCode(String.format("/%s.class", each.replaceAll("\\.", "/"))));
}
// Create a new class to the system class loader
Class< ? > classLoader = Class.forName("java.lang.ClassLoader");
java.lang.reflect.Method defineClass = classLoader.getDeclaredMethod("defineClass", new Class[] {
String.class, byte[].class, int.class, int.class, ProtectionDomain.class });
Method defineClass = classLoader.getDeclaredMethod("defineClass", new Class[] { String.class,
byte[].class, int.class, int.class, ProtectionDomain.class });
ClassLoader systemClassLoader = getSystemClassLoader();
defineClass.setAccessible(true);
@ -140,9 +141,9 @@ public class SnappyLoader
defineClass.invoke(systemClassLoader, nativeLoaderClassName, byteCode, 0, byteCode.length,
System.class.getProtectionDomain());
for (int i = 0; i < preloadClass.length; ++i) {
for (int i = 0; i < classesToPreload.length; ++i) {
byte[] b = preloadClassByteCode.get(i);
defineClass.invoke(systemClassLoader, preloadClass[i], b, 0, b.length,
defineClass.invoke(systemClassLoader, classesToPreload[i], b, 0, b.length,
System.class.getProtectionDomain());
}
}
@ -153,12 +154,11 @@ public class SnappyLoader
// Load the loader class
Class< ? > loaderClass = systemClassLoader.loadClass(nativeLoaderClassName);
if (loaderClass != null) {
java.lang.reflect.Method loadMethod = loaderClass.getDeclaredMethod("load",
new Class[] { String.class });
Method loadMethod = loaderClass.getDeclaredMethod("load", new Class[] { String.class });
File nativeLib = findNativeLibrary();
loadMethod.invoke(null, nativeLib.getAbsolutePath());
for (String each : preloadClass) {
for (String each : classesToPreload) {
systemClassLoader.loadClass(each);
}

View File

@ -28,7 +28,9 @@ import java.io.IOException;
import java.nio.ByteBuffer;
/**
* Interface to access the native code of Snappy
* Interface to access the native code of Snappy. Although the methods in this
* class are public, do not use them.
*
*
* @author leo
*
@ -67,7 +69,7 @@ public class SnappyNative
public native static boolean isValidCompressedBuffer(Object input, int offset, int len) throws IOException;
protected static void throw_error(int errorCode) throws IOException {
throw new IOException(SnappyErrorCode.getErrorMessage(errorCode));
throw new IOException(String.format("%s(%d)", SnappyErrorCode.getErrorMessage(errorCode), errorCode));
}
}

View File

@ -89,17 +89,7 @@ public class SnappyLoaderTest
@Test
public void load() throws Exception {
//SnappyLoader.load();
// Class< ? > c1 = Class.forName("org.xerial.snappy.SnappyNative");
// Class< ? > c2 = Class.forName("org.xerial.snappy.Snappy");
// ClassLoader cl1 = c1.getClassLoader();
// ClassLoader cl2 = c2.getClassLoader();
// Method m = c1.getDeclaredMethod("nativeLibraryVersion");
// m.setAccessible(true);
// String version = (String) m.invoke(null);
// _logger.info(version);
//_logger.info(SnappyNative.nativeLibraryVersion());
_logger.info(Snappy.getNativeLibraryVersion());
SnappyLoader.load();
_logger.debug(Snappy.getNativeLibraryVersion());
}
}

View File

@ -296,15 +296,9 @@ public class SnappyTest
fail("cannot reach here since the input is invalid data");
}
catch (IOException e) {
_logger.debug(e);
//assertEquals(SnappyErrorCode.FAILED_TO_UNCOMPRESS, e.errorCode);
}
// catch (Exception e) {
// Class< ? > c = e.getClass();
// ClassLoader cl = c.getClassLoader();
//
// ClassLoader cl2 = SnappyException.class.getClassLoader();
// _logger.error(e);
// }
}