mirror of
				https://gitee.com/binary/weixin-java-tools.git
				synced 2025-10-31 10:38:42 +08:00 
			
		
		
		
	xml代码优化
This commit is contained in:
		| @ -8,27 +8,22 @@ import com.thoughtworks.xstream.core.util.QuickWriter; | ||||
| import com.thoughtworks.xstream.io.HierarchicalStreamWriter; | ||||
| import com.thoughtworks.xstream.io.xml.PrettyPrintWriter; | ||||
| import com.thoughtworks.xstream.io.xml.XppDriver; | ||||
| import com.thoughtworks.xstream.security.NullPermission; | ||||
| import com.thoughtworks.xstream.security.PrimitiveTypePermission; | ||||
|  | ||||
| public class XStreamInitializer { | ||||
|  | ||||
|   public static XStream getInstance() { | ||||
|     XStream xstream = new XStream(new PureJavaReflectionProvider(), new XppDriver() { | ||||
|  | ||||
|   private static final XppDriver XPP_DRIVER = new XppDriver() { | ||||
|     @Override | ||||
|     public HierarchicalStreamWriter createWriter(Writer out) { | ||||
|       return new PrettyPrintWriter(out, getNameCoder()) { | ||||
|           protected String PREFIX_CDATA = "<![CDATA["; | ||||
|           protected String SUFFIX_CDATA = "]]>"; | ||||
|           protected String PREFIX_MEDIA_ID = "<MediaId>"; | ||||
|           protected String SUFFIX_MEDIA_ID = "</MediaId>"; | ||||
|         private static final String PREFIX_CDATA = "<![CDATA["; | ||||
|         private static final String SUFFIX_CDATA = "]]>"; | ||||
|         private static final String PREFIX_MEDIA_ID = "<MediaId>"; | ||||
|         private static final String SUFFIX_MEDIA_ID = "</MediaId>"; | ||||
|  | ||||
|         @Override | ||||
|         protected void writeText(QuickWriter writer, String text) { | ||||
|             if (text.startsWith(this.PREFIX_CDATA) && text.endsWith(this.SUFFIX_CDATA)) { | ||||
|           if (text.startsWith(PREFIX_CDATA) && text.endsWith(SUFFIX_CDATA)) { | ||||
|             writer.write(text); | ||||
|             } else if (text.startsWith(this.PREFIX_MEDIA_ID) && text.endsWith(this.SUFFIX_MEDIA_ID)) { | ||||
|           } else if (text.startsWith(PREFIX_MEDIA_ID) && text.endsWith(SUFFIX_MEDIA_ID)) { | ||||
|             writer.write(text); | ||||
|           } else { | ||||
|             super.writeText(writer, text); | ||||
| @ -43,18 +38,17 @@ public class XStreamInitializer { | ||||
|         } | ||||
|       }; | ||||
|     } | ||||
|     }); | ||||
|   }; | ||||
|  | ||||
|   public static XStream getInstance() { | ||||
|     XStream xstream = new XStream(new PureJavaReflectionProvider(), XPP_DRIVER); | ||||
|     xstream.ignoreUnknownElements(); | ||||
|     xstream.setMode(XStream.NO_REFERENCES); | ||||
|     xstream.addPermission(NullPermission.NULL); | ||||
|     xstream.addPermission(PrimitiveTypePermission.PRIMITIVES); | ||||
|     XStream.setupDefaultSecurity(xstream); | ||||
|     xstream.allowTypesByWildcard(new String[]{ | ||||
|       "me.chanjar.weixin.**", "cn.binarywang.wx.**", "com.github.binarywang.**" | ||||
|     }); | ||||
|  | ||||
|     XStream.setupDefaultSecurity(xstream); | ||||
|  | ||||
|     xstream.setClassLoader(Thread.currentThread().getContextClassLoader()); | ||||
|     return xstream; | ||||
|   } | ||||
|  | ||||
| @ -119,7 +119,7 @@ public class WxPayRefundResult extends BaseWxPayResult implements Serializable { | ||||
|   /** | ||||
|    * 组装生成退款代金券信息. | ||||
|    */ | ||||
|   public void composeRefundCoupons() { | ||||
|   private void composeRefundCoupons() { | ||||
|     List<WxPayRefundCouponInfo> coupons = Lists.newArrayList(); | ||||
|     Integer refundCount = this.getCouponRefundCount(); | ||||
|     if (refundCount == null) { | ||||
| @ -139,4 +139,10 @@ public class WxPayRefundResult extends BaseWxPayResult implements Serializable { | ||||
|  | ||||
|     this.setRefundCoupons(coupons); | ||||
|   } | ||||
|  | ||||
|   public static WxPayRefundResult fromXML(String xml) { | ||||
|     WxPayRefundResult result = BaseWxPayResult.fromXML(xml, WxPayRefundResult.class); | ||||
|     result.composeRefundCoupons(); | ||||
|     return result; | ||||
|   } | ||||
| } | ||||
|  | ||||
| @ -144,8 +144,7 @@ public abstract class BaseWxPayServiceImpl implements WxPayService { | ||||
|  | ||||
|     String url = this.getPayBaseUrl() + "/secapi/pay/refund"; | ||||
|     String responseContent = this.post(url, request.toXML(), true); | ||||
|     WxPayRefundResult result = BaseWxPayResult.fromXML(responseContent, WxPayRefundResult.class); | ||||
|     result.composeRefundCoupons(); | ||||
|     WxPayRefundResult result = WxPayRefundResult.fromXML(responseContent); | ||||
|     result.checkResult(this, request.getSignType(), true); | ||||
|     return result; | ||||
|   } | ||||
|  | ||||
| @ -13,11 +13,8 @@ import static org.assertj.core.api.Assertions.assertThat; | ||||
|  */ | ||||
| public class WxPayRefundResultTest { | ||||
|  | ||||
|   /** | ||||
|    * Test compose refund coupons. | ||||
|    */ | ||||
|   @Test | ||||
|   public void testComposeRefundCoupons() { | ||||
|   public void testFromXML() { | ||||
|     /* | ||||
|       该xml字符串来自于官方文档示例,稍加改造,加上代金卷 | ||||
|       refund_channel 是个什么鬼,官方文档只字不提 | ||||
| @ -43,8 +40,7 @@ public class WxPayRefundResultTest { | ||||
|       "   <refund_fee>2</refund_fee> \n" + | ||||
|       "</xml>"; | ||||
|  | ||||
|     WxPayRefundResult result = WxPayRefundResult.fromXML(xmlString, WxPayRefundResult.class); | ||||
|     result.composeRefundCoupons(); | ||||
|     WxPayRefundResult result = WxPayRefundResult.fromXML(xmlString); | ||||
|  | ||||
|     assertThat(result.getRefundCoupons()).isNotEmpty(); | ||||
|     assertThat(result.getRefundCoupons().get(0).getCouponRefundId()).isEqualTo("123"); | ||||
|  | ||||
		Reference in New Issue
	
	Block a user
	 Binary Wang
					Binary Wang