🎨 #2861 XStreamInitializer增加自定义加载类的支持方法

This commit is contained in:
q7486828035 2022-10-30 14:15:14 +08:00 committed by GitHub
parent df759717cd
commit 46921e0e55
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -11,7 +11,6 @@ import com.thoughtworks.xstream.io.xml.PrettyPrintWriter;
import com.thoughtworks.xstream.io.xml.XppDriver; import com.thoughtworks.xstream.io.xml.XppDriver;
import com.thoughtworks.xstream.security.NoTypePermission; import com.thoughtworks.xstream.security.NoTypePermission;
import com.thoughtworks.xstream.security.WildcardTypePermission; import com.thoughtworks.xstream.security.WildcardTypePermission;
import java.io.Writer; import java.io.Writer;
/** /**
@ -20,6 +19,13 @@ import java.io.Writer;
* @author Daniel Qian * @author Daniel Qian
*/ */
public class XStreamInitializer { public class XStreamInitializer {
public static ClassLoader classLoader;
public static void setClassLoader(ClassLoader classLoaderInfo) {
classLoader = classLoaderInfo;
}
private static final XppDriver XPP_DRIVER = new XppDriver() { private static final XppDriver XPP_DRIVER = new XppDriver() {
@Override @Override
public HierarchicalStreamWriter createWriter(Writer out) { public HierarchicalStreamWriter createWriter(Writer out) {
@ -87,7 +93,10 @@ public class XStreamInitializer {
xstream.addPermission(new WildcardTypePermission(new String[]{ xstream.addPermission(new WildcardTypePermission(new String[]{
"me.chanjar.weixin.**", "cn.binarywang.wx.**", "com.github.binarywang.**" "me.chanjar.weixin.**", "cn.binarywang.wx.**", "com.github.binarywang.**"
})); }));
xstream.setClassLoader(Thread.currentThread().getContextClassLoader()); if (null == classLoader) {
classLoader = Thread.currentThread().getContextClassLoader();
}
xstream.setClassLoader(classLoader);
return xstream; return xstream;
} }