package com.alibaba.json.bvt;
import java.io.IOException;
import java.io.InputStream;
import java.io.Serializable;
import java.lang.reflect.Method;
import java.util.HashMap;
import junit.framework.Assert;
import junit.framework.TestCase;
import org.apache.commons.io.IOUtils;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.serializer.SerializerFeature;
public class TestExternal5 extends TestCase {
public void test_0() throws Exception {
ExtClassLoader classLoader = new ExtClassLoader();
Class<?> clazz = classLoader.loadClass("com.alibaba.dubbo.demo.MyEsbResultModel2");
Method method = clazz.getMethod("setReturnValue", new Class[] { Serializable.class });
Object obj = clazz.newInstance();
method.invoke(obj, "AAAA");
{
String text = JSON.toJSONString(obj);
System.out.println(text);
}
String text = JSON.toJSONString(obj, SerializerFeature.WriteClassName, SerializerFeature.WriteMapNullValue);
System.out.println(text);
JSON.parseObject(text, clazz);
JSONObject jsonObj = JSON.parseObject(text);
Assert.assertEquals(jsonObj.getString("@type"), "com.alibaba.dubbo.demo.MyEsbResultModel2");
}
public static class ExtClassLoader extends ClassLoader {
public ExtClassLoader() throws IOException{
super(Thread.currentThread().getContextClassLoader());
{
byte[] bytes;
InputStream is = Thread.currentThread().getContextClassLoader().getResourceAsStream("external/MyEsbResultModel2.clazz");
bytes = IOUtils.toByteArray(is);
is.close();
super.defineClass("com.alibaba.dubbo.demo.MyEsbResultModel2", bytes, 0, bytes.length);
}
}
}
}