mirror of
				https://gitee.com/binary/weixin-java-tools.git
				synced 2025-10-31 10:38:42 +08:00 
			
		
		
		
	#352 修复XStreamTransformer由于classloader原因导致的ClassCastException问题
This commit is contained in:
		| @ -46,17 +46,19 @@ public class XStreamTransformer { | |||||||
|  |  | ||||||
|   private static Map<Class, XStream> configXStreamInstance() { |   private static Map<Class, XStream> configXStreamInstance() { | ||||||
|     Map<Class, XStream> map = new HashMap<>(); |     Map<Class, XStream> map = new HashMap<>(); | ||||||
|     map.put(WxCpXmlMessage.class, config_WxCpXmlMessage()); |     map.put(WxCpXmlMessage.class, configWxCpXmlMessage()); | ||||||
|     map.put(WxCpXmlOutNewsMessage.class, config_WxCpXmlOutNewsMessage()); |     map.put(WxCpXmlOutNewsMessage.class, configWxCpXmlOutNewsMessage()); | ||||||
|     map.put(WxCpXmlOutTextMessage.class, config_WxCpXmlOutTextMessage()); |     map.put(WxCpXmlOutTextMessage.class, configWxCpXmlOutTextMessage()); | ||||||
|     map.put(WxCpXmlOutImageMessage.class, config_WxCpXmlOutImageMessage()); |     map.put(WxCpXmlOutImageMessage.class, configWxCpXmlOutImageMessage()); | ||||||
|     map.put(WxCpXmlOutVideoMessage.class, config_WxCpXmlOutVideoMessage()); |     map.put(WxCpXmlOutVideoMessage.class, configWxCpXmlOutVideoMessage()); | ||||||
|     map.put(WxCpXmlOutVoiceMessage.class, config_WxCpXmlOutVoiceMessage()); |     map.put(WxCpXmlOutVoiceMessage.class, configWxCpXmlOutVoiceMessage()); | ||||||
|     return map; |     return map; | ||||||
|   } |   } | ||||||
|  |  | ||||||
|   private static XStream config_WxCpXmlMessage() { |   private static XStream configWxCpXmlMessage() { | ||||||
|     XStream xstream = XStreamInitializer.getInstance(); |     XStream xstream = XStreamInitializer.getInstance(); | ||||||
|  |     xstream.setClassLoader(Thread.currentThread().getContextClassLoader()); | ||||||
|  |  | ||||||
|     xstream.processAnnotations(WxCpXmlMessage.class); |     xstream.processAnnotations(WxCpXmlMessage.class); | ||||||
|     xstream.processAnnotations(WxCpXmlMessage.ScanCodeInfo.class); |     xstream.processAnnotations(WxCpXmlMessage.ScanCodeInfo.class); | ||||||
|     xstream.processAnnotations(WxCpXmlMessage.SendPicsInfo.class); |     xstream.processAnnotations(WxCpXmlMessage.SendPicsInfo.class); | ||||||
| @ -65,38 +67,48 @@ public class XStreamTransformer { | |||||||
|     return xstream; |     return xstream; | ||||||
|   } |   } | ||||||
|  |  | ||||||
|   private static XStream config_WxCpXmlOutImageMessage() { |   private static XStream configWxCpXmlOutImageMessage() { | ||||||
|     XStream xstream = XStreamInitializer.getInstance(); |     XStream xstream = XStreamInitializer.getInstance(); | ||||||
|  |     xstream.setClassLoader(Thread.currentThread().getContextClassLoader()); | ||||||
|  |  | ||||||
|     xstream.processAnnotations(WxCpXmlOutMessage.class); |     xstream.processAnnotations(WxCpXmlOutMessage.class); | ||||||
|     xstream.processAnnotations(WxCpXmlOutImageMessage.class); |     xstream.processAnnotations(WxCpXmlOutImageMessage.class); | ||||||
|     return xstream; |     return xstream; | ||||||
|   } |   } | ||||||
|  |  | ||||||
|   private static XStream config_WxCpXmlOutNewsMessage() { |   private static XStream configWxCpXmlOutNewsMessage() { | ||||||
|     XStream xstream = XStreamInitializer.getInstance(); |     XStream xstream = XStreamInitializer.getInstance(); | ||||||
|  |     xstream.setClassLoader(Thread.currentThread().getContextClassLoader()); | ||||||
|  |  | ||||||
|     xstream.processAnnotations(WxCpXmlOutMessage.class); |     xstream.processAnnotations(WxCpXmlOutMessage.class); | ||||||
|     xstream.processAnnotations(WxCpXmlOutNewsMessage.class); |     xstream.processAnnotations(WxCpXmlOutNewsMessage.class); | ||||||
|     xstream.processAnnotations(WxCpXmlOutNewsMessage.Item.class); |     xstream.processAnnotations(WxCpXmlOutNewsMessage.Item.class); | ||||||
|     return xstream; |     return xstream; | ||||||
|   } |   } | ||||||
|  |  | ||||||
|   private static XStream config_WxCpXmlOutTextMessage() { |   private static XStream configWxCpXmlOutTextMessage() { | ||||||
|     XStream xstream = XStreamInitializer.getInstance(); |     XStream xstream = XStreamInitializer.getInstance(); | ||||||
|  |     xstream.setClassLoader(Thread.currentThread().getContextClassLoader()); | ||||||
|  |  | ||||||
|     xstream.processAnnotations(WxCpXmlOutMessage.class); |     xstream.processAnnotations(WxCpXmlOutMessage.class); | ||||||
|     xstream.processAnnotations(WxCpXmlOutTextMessage.class); |     xstream.processAnnotations(WxCpXmlOutTextMessage.class); | ||||||
|     return xstream; |     return xstream; | ||||||
|   } |   } | ||||||
|  |  | ||||||
|   private static XStream config_WxCpXmlOutVideoMessage() { |   private static XStream configWxCpXmlOutVideoMessage() { | ||||||
|     XStream xstream = XStreamInitializer.getInstance(); |     XStream xstream = XStreamInitializer.getInstance(); | ||||||
|  |     xstream.setClassLoader(Thread.currentThread().getContextClassLoader()); | ||||||
|  |  | ||||||
|     xstream.processAnnotations(WxCpXmlOutMessage.class); |     xstream.processAnnotations(WxCpXmlOutMessage.class); | ||||||
|     xstream.processAnnotations(WxCpXmlOutVideoMessage.class); |     xstream.processAnnotations(WxCpXmlOutVideoMessage.class); | ||||||
|     xstream.processAnnotations(WxCpXmlOutVideoMessage.Video.class); |     xstream.processAnnotations(WxCpXmlOutVideoMessage.Video.class); | ||||||
|     return xstream; |     return xstream; | ||||||
|   } |   } | ||||||
|  |  | ||||||
|   private static XStream config_WxCpXmlOutVoiceMessage() { |   private static XStream configWxCpXmlOutVoiceMessage() { | ||||||
|     XStream xstream = XStreamInitializer.getInstance(); |     XStream xstream = XStreamInitializer.getInstance(); | ||||||
|  |     xstream.setClassLoader(Thread.currentThread().getContextClassLoader()); | ||||||
|  |  | ||||||
|     xstream.processAnnotations(WxCpXmlOutMessage.class); |     xstream.processAnnotations(WxCpXmlOutMessage.class); | ||||||
|     xstream.processAnnotations(WxCpXmlOutVoiceMessage.class); |     xstream.processAnnotations(WxCpXmlOutVoiceMessage.class); | ||||||
|     return xstream; |     return xstream; | ||||||
|  | |||||||
| @ -56,6 +56,8 @@ public class XStreamTransformer { | |||||||
|    */ |    */ | ||||||
|   private static void registerClass(Class<?> clz) { |   private static void registerClass(Class<?> clz) { | ||||||
|     XStream xstream = XStreamInitializer.getInstance(); |     XStream xstream = XStreamInitializer.getInstance(); | ||||||
|  |     xstream.setClassLoader(Thread.currentThread().getContextClassLoader()); | ||||||
|  |  | ||||||
|     xstream.processAnnotations(clz); |     xstream.processAnnotations(clz); | ||||||
|     xstream.processAnnotations(getInnerClasses(clz)); |     xstream.processAnnotations(getInnerClasses(clz)); | ||||||
|     if (clz.equals(WxMaMessage.class)) { |     if (clz.equals(WxMaMessage.class)) { | ||||||
|  | |||||||
| @ -60,6 +60,8 @@ public class XStreamTransformer { | |||||||
|    */ |    */ | ||||||
|   private static void registerClass(Class<?> clz) { |   private static void registerClass(Class<?> clz) { | ||||||
|     XStream xstream = XStreamInitializer.getInstance(); |     XStream xstream = XStreamInitializer.getInstance(); | ||||||
|  |     xstream.setClassLoader(Thread.currentThread().getContextClassLoader()); | ||||||
|  |  | ||||||
|     xstream.processAnnotations(clz); |     xstream.processAnnotations(clz); | ||||||
|     xstream.processAnnotations(getInnerClasses(clz)); |     xstream.processAnnotations(getInnerClasses(clz)); | ||||||
|     if (clz.equals(WxMpXmlMessage.class)) { |     if (clz.equals(WxMpXmlMessage.class)) { | ||||||
|  | |||||||
		Reference in New Issue
	
	Block a user
	 Binary Wang
					Binary Wang