XStreamTransformer 增加注册方法,来注册自定义的消息类型master
@@ -31,6 +31,15 @@ public class XStreamTransformer { | |||||
return object; | return object; | ||||
} | } | ||||
/** | |||||
* 注册扩展消息的解析器 | |||||
* @param clz 类型 | |||||
* @param xStream xml解析器 | |||||
*/ | |||||
public static void register(Class clz,XStream xStream){ | |||||
CLASS_2_XSTREAM_INSTANCE.put(clz,xStream); | |||||
} | |||||
/** | /** | ||||
* pojo -> xml | * pojo -> xml | ||||
* | * | ||||
@@ -4,23 +4,22 @@ import com.thoughtworks.xstream.annotations.XStreamAlias; | |||||
import com.thoughtworks.xstream.annotations.XStreamConverter; | import com.thoughtworks.xstream.annotations.XStreamConverter; | ||||
import me.chanjar.weixin.common.api.WxConsts; | import me.chanjar.weixin.common.api.WxConsts; | ||||
import me.chanjar.weixin.common.util.xml.XStreamCDataConverter; | import me.chanjar.weixin.common.util.xml.XStreamCDataConverter; | ||||
import me.chanjar.weixin.common.util.xml.XStreamMediaIdConverter; | |||||
@XStreamAlias("xml") | @XStreamAlias("xml") | ||||
public class WxMpXmlOutTransferCustomerServiceMessage extends WxMpXmlOutMessage { | public class WxMpXmlOutTransferCustomerServiceMessage extends WxMpXmlOutMessage { | ||||
@XStreamAlias("TransInfo") | @XStreamAlias("TransInfo") | ||||
protected final TransInfo transInfo = new TransInfo(); | |||||
protected TransInfo transInfo; | |||||
public WxMpXmlOutTransferCustomerServiceMessage() { | public WxMpXmlOutTransferCustomerServiceMessage() { | ||||
this.msgType = WxConsts.CUSTOM_MSG_TRANSFER_CUSTOMER_SERVICE; | 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") | @XStreamAlias("TransInfo") | ||||
@@ -1,5 +1,6 @@ | |||||
package me.chanjar.weixin.mp.bean.outxmlbuilder; | package me.chanjar.weixin.mp.bean.outxmlbuilder; | ||||
import me.chanjar.weixin.common.util.StringUtils; | |||||
import me.chanjar.weixin.mp.bean.WxMpXmlOutTransferCustomerServiceMessage; | import me.chanjar.weixin.mp.bean.WxMpXmlOutTransferCustomerServiceMessage; | ||||
/** | /** | ||||
@@ -22,7 +23,11 @@ public final class TransferCustomerServiceBuilder extends BaseBuilder<TransferCu | |||||
public WxMpXmlOutTransferCustomerServiceMessage build() { | public WxMpXmlOutTransferCustomerServiceMessage build() { | ||||
WxMpXmlOutTransferCustomerServiceMessage m = new WxMpXmlOutTransferCustomerServiceMessage(); | WxMpXmlOutTransferCustomerServiceMessage m = new WxMpXmlOutTransferCustomerServiceMessage(); | ||||
setCommon(m); | setCommon(m); | ||||
m.setKfAccount(kfAccount); | |||||
if(StringUtils.isNotBlank(kfAccount)){ | |||||
WxMpXmlOutTransferCustomerServiceMessage.TransInfo transInfo = new WxMpXmlOutTransferCustomerServiceMessage.TransInfo(); | |||||
transInfo.setKfAccount(kfAccount); | |||||
m.setTransInfo(transInfo); | |||||
} | |||||
return m; | return m; | ||||
} | } | ||||
} | } |
@@ -31,6 +31,16 @@ public class XStreamTransformer { | |||||
return object; | return object; | ||||
} | } | ||||
/** | |||||
* 注册扩展消息的解析器 | |||||
* @param clz 类型 | |||||
* @param xStream xml解析器 | |||||
*/ | |||||
public static void register(Class clz,XStream xStream){ | |||||
CLASS_2_XSTREAM_INSTANCE.put(clz,xStream); | |||||
} | |||||
/** | /** | ||||
* pojo -> xml | * pojo -> xml | ||||
* | * | ||||
@@ -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 = "<xml>" + | |||||
"<ToUserName><![CDATA[touser]]></ToUserName>" + | |||||
"<FromUserName><![CDATA[fromuser]]></FromUserName>" + | |||||
"<CreateTime>1399197672</CreateTime>" + | |||||
"<MsgType><![CDATA[transfer_customer_service]]></MsgType>" + | |||||
"</xml>"; | |||||
System.out.println(m.toXml()); | |||||
Assert.assertEquals(m.toXml().replaceAll("\\s", ""), expected.replaceAll("\\s", "")); | |||||
expected = " <xml>" + | |||||
"<ToUserName><![CDATA[touser]]></ToUserName>" + | |||||
"<FromUserName><![CDATA[fromuser]]></FromUserName>" + | |||||
"<CreateTime>1399197672</CreateTime>" + | |||||
"<MsgType><![CDATA[transfer_customer_service]]></MsgType>" + | |||||
"<TransInfo>" + | |||||
"<KfAccount><![CDATA[test1@test]]></KfAccount>" + | |||||
"</TransInfo>" + | |||||
"</xml>"; | |||||
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 = "<xml>" + | |||||
"<ToUserName><![CDATA[touser]]></ToUserName>" + | |||||
"<FromUserName><![CDATA[fromuser]]></FromUserName>" + | |||||
"<CreateTime>1399197672</CreateTime>" + | |||||
"<MsgType><![CDATA[transfer_customer_service]]></MsgType>" + | |||||
"</xml>"; | |||||
System.out.println(m.toXml()); | |||||
Assert.assertEquals(m.toXml().replaceAll("\\s", ""), expected.replaceAll("\\s", "")); | |||||
expected = " <xml>" + | |||||
"<ToUserName><![CDATA[touser]]></ToUserName>" + | |||||
"<FromUserName><![CDATA[fromuser]]></FromUserName>" + | |||||
"<CreateTime>1399197672</CreateTime>" + | |||||
"<MsgType><![CDATA[transfer_customer_service]]></MsgType>" + | |||||
"<TransInfo>" + | |||||
"<KfAccount><![CDATA[test1@test]]></KfAccount>" + | |||||
"</TransInfo>" + | |||||
"</xml>"; | |||||
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", "")); | |||||
} | |||||
} |