diff --git a/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/util/xml/XStreamTransformer.java b/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/util/xml/XStreamTransformer.java index c6c5a5f1..12dd8992 100644 --- a/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/util/xml/XStreamTransformer.java +++ b/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/util/xml/XStreamTransformer.java @@ -31,6 +31,15 @@ public class XStreamTransformer { return object; } + /** + * 注册扩展消息的解析器 + * @param clz 类型 + * @param xStream xml解析器 + */ + public static void register(Class clz,XStream xStream){ + CLASS_2_XSTREAM_INSTANCE.put(clz,xStream); + } + /** * pojo -> xml * diff --git a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/WxMpXmlOutTransferCustomerServiceMessage.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/WxMpXmlOutTransferCustomerServiceMessage.java index 5783d2b4..67c3d28e 100644 --- a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/WxMpXmlOutTransferCustomerServiceMessage.java +++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/WxMpXmlOutTransferCustomerServiceMessage.java @@ -4,23 +4,22 @@ import com.thoughtworks.xstream.annotations.XStreamAlias; import com.thoughtworks.xstream.annotations.XStreamConverter; import me.chanjar.weixin.common.api.WxConsts; import me.chanjar.weixin.common.util.xml.XStreamCDataConverter; -import me.chanjar.weixin.common.util.xml.XStreamMediaIdConverter; @XStreamAlias("xml") public class WxMpXmlOutTransferCustomerServiceMessage extends WxMpXmlOutMessage { @XStreamAlias("TransInfo") - protected final TransInfo transInfo = new TransInfo(); + protected TransInfo transInfo; public WxMpXmlOutTransferCustomerServiceMessage() { this.msgType = WxConsts.CUSTOM_MSG_TRANSFER_CUSTOMER_SERVICE; } - public String getKfAccount() { - return transInfo.getKfAccount(); + public TransInfo getTransInfo() { + return transInfo; } - public void setKfAccount(String kfAccount) { - transInfo.setKfAccount(kfAccount); + public void setTransInfo(TransInfo transInfo) { + this.transInfo = transInfo; } @XStreamAlias("TransInfo") diff --git a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/outxmlbuilder/TransferCustomerServiceBuilder.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/outxmlbuilder/TransferCustomerServiceBuilder.java index 01acf8d7..d004eb56 100644 --- a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/outxmlbuilder/TransferCustomerServiceBuilder.java +++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/outxmlbuilder/TransferCustomerServiceBuilder.java @@ -1,5 +1,6 @@ package me.chanjar.weixin.mp.bean.outxmlbuilder; +import me.chanjar.weixin.common.util.StringUtils; import me.chanjar.weixin.mp.bean.WxMpXmlOutTransferCustomerServiceMessage; /** @@ -22,7 +23,11 @@ public final class TransferCustomerServiceBuilder extends BaseBuilder xml * diff --git a/weixin-java-mp/src/test/java/me/chanjar/weixin/mp/bean/WxMpXmlOutTransferCustomerServiceMessageTest.java b/weixin-java-mp/src/test/java/me/chanjar/weixin/mp/bean/WxMpXmlOutTransferCustomerServiceMessageTest.java new file mode 100644 index 00000000..012a0986 --- /dev/null +++ b/weixin-java-mp/src/test/java/me/chanjar/weixin/mp/bean/WxMpXmlOutTransferCustomerServiceMessageTest.java @@ -0,0 +1,70 @@ +package me.chanjar.weixin.mp.bean; + +import org.testng.Assert; +import org.testng.annotations.Test; + +/** + * Created by ben on 2015/12/29. + */ +public class WxMpXmlOutTransferCustomerServiceMessageTest { + @Test + public void test() { + WxMpXmlOutTransferCustomerServiceMessage m = new WxMpXmlOutTransferCustomerServiceMessage(); + m.setCreateTime(1399197672L); + m.setFromUserName("fromuser"); + m.setToUserName("touser"); + + String expected = "" + + "" + + "" + + "1399197672" + + "" + + ""; + System.out.println(m.toXml()); + Assert.assertEquals(m.toXml().replaceAll("\\s", ""), expected.replaceAll("\\s", "")); + + expected = " " + + "" + + "" + + "1399197672" + + "" + + "" + + "" + + "" + + ""; + WxMpXmlOutTransferCustomerServiceMessage.TransInfo transInfo = new WxMpXmlOutTransferCustomerServiceMessage.TransInfo(); + transInfo.setKfAccount("test1@test"); + m.setTransInfo(transInfo); + System.out.println(m.toXml()); + Assert.assertEquals(m.toXml().replaceAll("\\s", ""), expected.replaceAll("\\s", "")); + } + + @Test + public void testBuild() { + WxMpXmlOutTransferCustomerServiceMessage m = WxMpXmlOutMessage.TRANSFER_CUSTOMER_SERVICE().fromUser("fromuser").toUser("touser").build(); + m.setCreateTime(1399197672L); + String expected = "" + + "" + + "" + + "1399197672" + + "" + + ""; + System.out.println(m.toXml()); + Assert.assertEquals(m.toXml().replaceAll("\\s", ""), expected.replaceAll("\\s", "")); + + + expected = " " + + "" + + "" + + "1399197672" + + "" + + "" + + "" + + "" + + ""; + m = WxMpXmlOutMessage.TRANSFER_CUSTOMER_SERVICE().kfAccount("test1@test").fromUser("fromuser").toUser("touser").build(); + m.setCreateTime(1399197672L); + System.out.println(m.toXml()); + Assert.assertEquals(m.toXml().replaceAll("\\s", ""), expected.replaceAll("\\s", "")); + } +} \ No newline at end of file