Revert to xerial-core-1.0.21 for compiling with JDK5
This commit is contained in:
parent
2097c32314
commit
d19a00ddb6
2
pom.xml
2
pom.xml
|
@ -229,7 +229,7 @@
|
|||
<dependency>
|
||||
<groupId>org.xerial</groupId>
|
||||
<artifactId>xerial-core</artifactId>
|
||||
<version>2.0.2</version>
|
||||
<version>1.0.21</version>
|
||||
<type>jar</type>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
|
|
|
@ -24,72 +24,57 @@
|
|||
//--------------------------------------
|
||||
package org.xerial.snappy;
|
||||
|
||||
import static org.junit.Assert.*;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.FileOutputStream;
|
||||
import java.security.ProtectionDomain;
|
||||
|
||||
import javassist.ClassPool;
|
||||
import javassist.CtClass;
|
||||
import javassist.CtField;
|
||||
import javassist.CtNewMethod;
|
||||
|
||||
import org.codehaus.plexus.classworlds.ClassWorld;
|
||||
import org.codehaus.plexus.classworlds.realm.ClassRealm;
|
||||
import org.junit.Ignore;
|
||||
import org.junit.Test;
|
||||
import org.xerial.util.FileResource;
|
||||
import org.xerial.util.log.Logger;
|
||||
|
||||
public class SnappyLoaderTest
|
||||
{
|
||||
private static Logger _logger = Logger.getLogger(SnappyLoaderTest.class);
|
||||
|
||||
@Ignore
|
||||
@Test
|
||||
public void loadFromSytemClassLoader() throws Exception {
|
||||
|
||||
ClassLoader parent = this.getClass().getClassLoader().getParent();
|
||||
ClassWorld cw = new ClassWorld();
|
||||
ClassRealm L1 = cw.newRealm("l1", parent);
|
||||
ClassRealm L2 = cw.newRealm("l2", parent);
|
||||
|
||||
File nativeLib = SnappyLoader.findNativeLibrary();
|
||||
assertNotNull(nativeLib);
|
||||
|
||||
ClassPool pool = ClassPool.getDefault();
|
||||
CtClass cl = pool.makeClass("org.xerial.snappy.SnappyNativeLoader");
|
||||
cl.addField(CtField.make("static boolean isLoaded = false;", cl));
|
||||
String m1 = FileResource.loadIntoString(SnappyLoaderTest.class, "load.code");
|
||||
String m2 = FileResource.loadIntoString(SnappyLoaderTest.class, "loadLibrary.code");
|
||||
cl.addMethod(CtNewMethod.make(m1, cl));
|
||||
cl.addMethod(CtNewMethod.make(m2, cl));
|
||||
|
||||
ProtectionDomain systemPD = System.class.getProtectionDomain();
|
||||
byte[] bytecode = cl.toBytecode();
|
||||
FileOutputStream f = new FileOutputStream("src/main/resources/org/xerial/snappy/SnappyNativeLoader.bytecode");
|
||||
f.write(bytecode);
|
||||
f.close();
|
||||
|
||||
//Class< ? > loaderClass = cl.toClass(parent, System.class.getProtectionDomain());
|
||||
//_logger.info(cl.getName());
|
||||
//Class< ? > loaderClass = cl.toClass();
|
||||
|
||||
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 });
|
||||
|
||||
defineClass.setAccessible(true);
|
||||
defineClass.invoke(parent, cl.getName(), bytecode, 0, bytecode.length, System.class.getProtectionDomain());
|
||||
|
||||
Class< ? > forName = parent.loadClass("org.xerial.snappy.SnappyNativeLoader");
|
||||
_logger.info(forName.toString());
|
||||
|
||||
//Class< ? > snappyClass = L1.loadClass("org.xerial.snappy.Snappy"); // not found
|
||||
//_logger.info(snappyClass.getName());
|
||||
|
||||
}
|
||||
// @Ignore
|
||||
// @Test
|
||||
// public void loadFromSytemClassLoader() throws Exception {
|
||||
//
|
||||
// ClassLoader parent = this.getClass().getClassLoader().getParent();
|
||||
// ClassWorld cw = new ClassWorld();
|
||||
// ClassRealm L1 = cw.newRealm("l1", parent);
|
||||
// ClassRealm L2 = cw.newRealm("l2", parent);
|
||||
//
|
||||
// File nativeLib = SnappyLoader.findNativeLibrary();
|
||||
// assertNotNull(nativeLib);
|
||||
//
|
||||
// ClassPool pool = ClassPool.getDefault();
|
||||
// CtClass cl = pool.makeClass("org.xerial.snappy.SnappyNativeLoader");
|
||||
// cl.addField(CtField.make("static boolean isLoaded = false;", cl));
|
||||
// String m1 = FileResource.loadIntoString(SnappyLoaderTest.class, "load.code");
|
||||
// String m2 = FileResource.loadIntoString(SnappyLoaderTest.class, "loadLibrary.code");
|
||||
// cl.addMethod(CtNewMethod.make(m1, cl));
|
||||
// cl.addMethod(CtNewMethod.make(m2, cl));
|
||||
//
|
||||
// ProtectionDomain systemPD = System.class.getProtectionDomain();
|
||||
// byte[] bytecode = cl.toBytecode();
|
||||
// FileOutputStream f = new FileOutputStream("src/main/resources/org/xerial/snappy/SnappyNativeLoader.bytecode");
|
||||
// f.write(bytecode);
|
||||
// f.close();
|
||||
//
|
||||
// //Class< ? > loaderClass = cl.toClass(parent, System.class.getProtectionDomain());
|
||||
// //_logger.info(cl.getName());
|
||||
// //Class< ? > loaderClass = cl.toClass();
|
||||
//
|
||||
// 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 });
|
||||
//
|
||||
// defineClass.setAccessible(true);
|
||||
// defineClass.invoke(parent, cl.getName(), bytecode, 0, bytecode.length, System.class.getProtectionDomain());
|
||||
//
|
||||
// Class< ? > forName = parent.loadClass("org.xerial.snappy.SnappyNativeLoader");
|
||||
// _logger.info(forName.toString());
|
||||
//
|
||||
// //Class< ? > snappyClass = L1.loadClass("org.xerial.snappy.Snappy"); // not found
|
||||
// //_logger.info(snappyClass.getName());
|
||||
//
|
||||
// }
|
||||
|
||||
@Test
|
||||
public void load() throws Exception {
|
||||
|
|
Loading…
Reference in New Issue