mirror of
https://gitee.com/binary/weixin-java-tools.git
synced 2025-04-24 08:57:16 +08:00
issue #9 提供xml消息的Builder
This commit is contained in:
parent
997f1e4005
commit
23bf42dbba
@ -6,7 +6,6 @@ import java.util.List;
|
||||
import chanjarster.weixin.api.WxConsts;
|
||||
import chanjarster.weixin.bean.custombuilder.ImageBuilder;
|
||||
import chanjarster.weixin.bean.custombuilder.MusicBuilder;
|
||||
import chanjarster.weixin.bean.custombuilder.NewsArticleBuilder;
|
||||
import chanjarster.weixin.bean.custombuilder.NewsBuilder;
|
||||
import chanjarster.weixin.bean.custombuilder.TextBuilder;
|
||||
import chanjarster.weixin.bean.custombuilder.VideoBuilder;
|
||||
@ -191,12 +190,4 @@ public class WxCustomMessage {
|
||||
return new NewsBuilder();
|
||||
}
|
||||
|
||||
/**
|
||||
* 获得图文消息文章builder
|
||||
* @return
|
||||
*/
|
||||
public static NewsArticleBuilder NEWS_ARTICLE() {
|
||||
return new NewsArticleBuilder();
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -386,127 +386,5 @@ public class WxXmlMessage {
|
||||
public void setErrorCount(Integer errorCount) {
|
||||
ErrorCount = errorCount;
|
||||
}
|
||||
@Override
|
||||
public int hashCode() {
|
||||
final int prime = 31;
|
||||
int result = 1;
|
||||
result = prime * result + ((Content == null) ? 0 : Content.hashCode());
|
||||
result = prime * result + ((CreateTime == null) ? 0 : CreateTime.hashCode());
|
||||
result = prime * result + ((Description == null) ? 0 : Description.hashCode());
|
||||
result = prime * result + ErrorCount;
|
||||
result = prime * result + ((Event == null) ? 0 : Event.hashCode());
|
||||
result = prime * result + ((EventKey == null) ? 0 : EventKey.hashCode());
|
||||
result = prime * result + FilterCount;
|
||||
result = prime * result + ((Format == null) ? 0 : Format.hashCode());
|
||||
result = prime * result + ((FromUserName == null) ? 0 : FromUserName.hashCode());
|
||||
result = prime * result + ((Label == null) ? 0 : Label.hashCode());
|
||||
result = prime * result + ((Latitude == null) ? 0 : Latitude.hashCode());
|
||||
result = prime * result + ((Location_X == null) ? 0 : Location_X.hashCode());
|
||||
result = prime * result + ((Location_Y == null) ? 0 : Location_Y.hashCode());
|
||||
result = prime * result + ((Longitude == null) ? 0 : Longitude.hashCode());
|
||||
result = prime * result + ((MediaId == null) ? 0 : MediaId.hashCode());
|
||||
result = prime * result + ((MsgId == null) ? 0 : MsgId.hashCode());
|
||||
result = prime * result + ((MsgType == null) ? 0 : MsgType.hashCode());
|
||||
result = prime * result + ((PicUrl == null) ? 0 : PicUrl.hashCode());
|
||||
result = prime * result + ((Precision == null) ? 0 : Precision.hashCode());
|
||||
result = prime * result + ((Recognition == null) ? 0 : Recognition.hashCode());
|
||||
result = prime * result + ((Scale == null) ? 0 : Scale.hashCode());
|
||||
result = prime * result + SentCount;
|
||||
result = prime * result + ((Status == null) ? 0 : Status.hashCode());
|
||||
result = prime * result + ((ThumbMediaId == null) ? 0 : ThumbMediaId.hashCode());
|
||||
result = prime * result + ((Ticket == null) ? 0 : Ticket.hashCode());
|
||||
result = prime * result + ((Title == null) ? 0 : Title.hashCode());
|
||||
result = prime * result + ((ToUserName == null) ? 0 : ToUserName.hashCode());
|
||||
result = prime * result + TotalCount;
|
||||
result = prime * result + ((Url == null) ? 0 : Url.hashCode());
|
||||
return result;
|
||||
}
|
||||
@Override
|
||||
public boolean equals(Object obj) {
|
||||
if (this == obj) return true;
|
||||
if (obj == null) return false;
|
||||
if (getClass() != obj.getClass()) return false;
|
||||
WxXmlMessage other = (WxXmlMessage) obj;
|
||||
if (Content == null) {
|
||||
if (other.Content != null) return false;
|
||||
} else if (!Content.equals(other.Content)) return false;
|
||||
if (CreateTime == null) {
|
||||
if (other.CreateTime != null) return false;
|
||||
} else if (!CreateTime.equals(other.CreateTime)) return false;
|
||||
if (Description == null) {
|
||||
if (other.Description != null) return false;
|
||||
} else if (!Description.equals(other.Description)) return false;
|
||||
if (ErrorCount != other.ErrorCount) return false;
|
||||
if (Event == null) {
|
||||
if (other.Event != null) return false;
|
||||
} else if (!Event.equals(other.Event)) return false;
|
||||
if (EventKey == null) {
|
||||
if (other.EventKey != null) return false;
|
||||
} else if (!EventKey.equals(other.EventKey)) return false;
|
||||
if (FilterCount != other.FilterCount) return false;
|
||||
if (Format == null) {
|
||||
if (other.Format != null) return false;
|
||||
} else if (!Format.equals(other.Format)) return false;
|
||||
if (FromUserName == null) {
|
||||
if (other.FromUserName != null) return false;
|
||||
} else if (!FromUserName.equals(other.FromUserName)) return false;
|
||||
if (Label == null) {
|
||||
if (other.Label != null) return false;
|
||||
} else if (!Label.equals(other.Label)) return false;
|
||||
if (Latitude == null) {
|
||||
if (other.Latitude != null) return false;
|
||||
} else if (!Latitude.equals(other.Latitude)) return false;
|
||||
if (Location_X == null) {
|
||||
if (other.Location_X != null) return false;
|
||||
} else if (!Location_X.equals(other.Location_X)) return false;
|
||||
if (Location_Y == null) {
|
||||
if (other.Location_Y != null) return false;
|
||||
} else if (!Location_Y.equals(other.Location_Y)) return false;
|
||||
if (Longitude == null) {
|
||||
if (other.Longitude != null) return false;
|
||||
} else if (!Longitude.equals(other.Longitude)) return false;
|
||||
if (MediaId == null) {
|
||||
if (other.MediaId != null) return false;
|
||||
} else if (!MediaId.equals(other.MediaId)) return false;
|
||||
if (MsgId == null) {
|
||||
if (other.MsgId != null) return false;
|
||||
} else if (!MsgId.equals(other.MsgId)) return false;
|
||||
if (MsgType == null) {
|
||||
if (other.MsgType != null) return false;
|
||||
} else if (!MsgType.equals(other.MsgType)) return false;
|
||||
if (PicUrl == null) {
|
||||
if (other.PicUrl != null) return false;
|
||||
} else if (!PicUrl.equals(other.PicUrl)) return false;
|
||||
if (Precision == null) {
|
||||
if (other.Precision != null) return false;
|
||||
} else if (!Precision.equals(other.Precision)) return false;
|
||||
if (Recognition == null) {
|
||||
if (other.Recognition != null) return false;
|
||||
} else if (!Recognition.equals(other.Recognition)) return false;
|
||||
if (Scale == null) {
|
||||
if (other.Scale != null) return false;
|
||||
} else if (!Scale.equals(other.Scale)) return false;
|
||||
if (SentCount != other.SentCount) return false;
|
||||
if (Status == null) {
|
||||
if (other.Status != null) return false;
|
||||
} else if (!Status.equals(other.Status)) return false;
|
||||
if (ThumbMediaId == null) {
|
||||
if (other.ThumbMediaId != null) return false;
|
||||
} else if (!ThumbMediaId.equals(other.ThumbMediaId)) return false;
|
||||
if (Ticket == null) {
|
||||
if (other.Ticket != null) return false;
|
||||
} else if (!Ticket.equals(other.Ticket)) return false;
|
||||
if (Title == null) {
|
||||
if (other.Title != null) return false;
|
||||
} else if (!Title.equals(other.Title)) return false;
|
||||
if (ToUserName == null) {
|
||||
if (other.ToUserName != null) return false;
|
||||
} else if (!ToUserName.equals(other.ToUserName)) return false;
|
||||
if (TotalCount != other.TotalCount) return false;
|
||||
if (Url == null) {
|
||||
if (other.Url != null) return false;
|
||||
} else if (!Url.equals(other.Url)) return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
}
|
@ -7,6 +7,12 @@ import javax.xml.bind.annotation.XmlElement;
|
||||
import javax.xml.bind.annotation.XmlRootElement;
|
||||
import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
|
||||
|
||||
import chanjarster.weixin.bean.outxmlbuilder.ImageBuilder;
|
||||
import chanjarster.weixin.bean.outxmlbuilder.MusicBuilder;
|
||||
import chanjarster.weixin.bean.outxmlbuilder.NewsBuilder;
|
||||
import chanjarster.weixin.bean.outxmlbuilder.TextBuilder;
|
||||
import chanjarster.weixin.bean.outxmlbuilder.VideoBuilder;
|
||||
import chanjarster.weixin.bean.outxmlbuilder.VoiceBuilder;
|
||||
import chanjarster.weixin.util.xml.AdapterCDATA;
|
||||
import chanjarster.weixin.util.xml.XmlTransformer;
|
||||
|
||||
@ -69,4 +75,51 @@ public class WxXmlOutMessage {
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获得文本消息builder
|
||||
* @return
|
||||
*/
|
||||
public static TextBuilder TEXT() {
|
||||
return new TextBuilder();
|
||||
}
|
||||
|
||||
/**
|
||||
* 获得图片消息builder
|
||||
* @return
|
||||
*/
|
||||
public static ImageBuilder IMAGE() {
|
||||
return new ImageBuilder();
|
||||
}
|
||||
|
||||
/**
|
||||
* 获得语音消息builder
|
||||
* @return
|
||||
*/
|
||||
public static VoiceBuilder VOICE() {
|
||||
return new VoiceBuilder();
|
||||
}
|
||||
|
||||
/**
|
||||
* 获得视频消息builder
|
||||
* @return
|
||||
*/
|
||||
public static VideoBuilder VIDEO() {
|
||||
return new VideoBuilder();
|
||||
}
|
||||
|
||||
/**
|
||||
* 获得音乐消息builder
|
||||
* @return
|
||||
*/
|
||||
public static MusicBuilder MUSIC() {
|
||||
return new MusicBuilder();
|
||||
}
|
||||
|
||||
/**
|
||||
* 获得图文消息builder
|
||||
* @return
|
||||
*/
|
||||
public static NewsBuilder NEWS() {
|
||||
return new NewsBuilder();
|
||||
}
|
||||
}
|
||||
|
@ -1,52 +0,0 @@
|
||||
package chanjarster.weixin.bean.custombuilder;
|
||||
|
||||
import chanjarster.weixin.bean.WxCustomMessage;
|
||||
|
||||
/**
|
||||
* 图文消息文章builder
|
||||
* <pre>
|
||||
* 用法: WxCustomMessage.WxArticle m = WxCustomMessage.NEWS_ARTICLE()
|
||||
* .url(...)
|
||||
* .title(...)
|
||||
* .picurl(...)
|
||||
* .description(...)
|
||||
* .build();
|
||||
* </pre>
|
||||
* @author chanjarster
|
||||
*
|
||||
*/
|
||||
public final class NewsArticleBuilder {
|
||||
private String title;
|
||||
private String description;
|
||||
private String url;
|
||||
private String picurl;
|
||||
|
||||
public NewsArticleBuilder url(String url) {
|
||||
this.url = url;
|
||||
return this;
|
||||
}
|
||||
|
||||
public NewsArticleBuilder title(String title) {
|
||||
this.title = title;
|
||||
return this;
|
||||
}
|
||||
|
||||
public NewsArticleBuilder description(String description) {
|
||||
this.description = description;
|
||||
return this;
|
||||
}
|
||||
|
||||
public NewsArticleBuilder picurl(String picurl) {
|
||||
this.picurl = picurl;
|
||||
return this;
|
||||
}
|
||||
|
||||
public WxCustomMessage.WxArticle build() {
|
||||
WxCustomMessage.WxArticle m = new WxCustomMessage.WxArticle();
|
||||
m.setPicurl(this.picurl);
|
||||
m.setTitle(title);
|
||||
m.setDescription(description);
|
||||
m.setUrl(this.url);
|
||||
return m;
|
||||
}
|
||||
}
|
@ -11,12 +11,6 @@ import chanjarster.weixin.bean.WxCustomMessage.WxArticle;
|
||||
* 图文消息builder
|
||||
* <pre>
|
||||
* 用法:
|
||||
* WxCustomMessage.WxArticle article = WxCustomMessage.NEWS_ARTICLE()
|
||||
* .url(...)
|
||||
* .title(...)
|
||||
* .picurl(...)
|
||||
* .description(...)
|
||||
* .build();
|
||||
* WxCustomMessage m = WxCustomMessage.NEWS().addArticle(article).touser(...).build();
|
||||
* </pre>
|
||||
* @author chanjarster
|
||||
|
@ -9,8 +9,6 @@ public abstract class BaseBuilder<BuilderType, ValueType> {
|
||||
|
||||
protected String fromUserName;
|
||||
|
||||
protected String msgtype;
|
||||
|
||||
public BuilderType touser(String touser) {
|
||||
this.toUserName = touser;
|
||||
return (BuilderType) this;
|
||||
@ -26,7 +24,6 @@ public abstract class BaseBuilder<BuilderType, ValueType> {
|
||||
public void setCommon(WxXmlOutMessage m) {
|
||||
m.setToUserName(this.toUserName);
|
||||
m.setFromUserName(this.fromUserName);
|
||||
m.setMsgType(this.msgtype);
|
||||
m.setCreateTime(System.currentTimeMillis() / 1000l);
|
||||
}
|
||||
|
||||
|
@ -1,32 +1,24 @@
|
||||
package chanjarster.weixin.bean.outxmlbuilder;
|
||||
|
||||
import chanjarster.weixin.api.WxConsts;
|
||||
import chanjarster.weixin.bean.WxXmlOutImageMessage;
|
||||
|
||||
/**
|
||||
* 获得消息builder
|
||||
* <pre>
|
||||
* 用法: WxXmlMessage m = WxXmlMessage.IMAGE().media_id(...).touser(...).build();
|
||||
* </pre>
|
||||
* 图片消息builder
|
||||
* @author chanjarster
|
||||
*
|
||||
*/
|
||||
public final class ImageBuilder extends BaseBuilder<ImageBuilder, WxXmlOutImageMessage> {
|
||||
private String media_id;
|
||||
|
||||
public ImageBuilder() {
|
||||
this.msgtype = WxConsts.XML_MSG_IMAGE;
|
||||
}
|
||||
private String mediaId;
|
||||
|
||||
public ImageBuilder media_id(String media_id) {
|
||||
this.media_id = media_id;
|
||||
public ImageBuilder mediaId(String media_id) {
|
||||
this.mediaId = media_id;
|
||||
return this;
|
||||
}
|
||||
|
||||
public WxXmlOutImageMessage build() {
|
||||
WxXmlOutImageMessage m = new WxXmlOutImageMessage();
|
||||
setCommon(m);
|
||||
m.setMediaId(this.media_id);
|
||||
m.setMediaId(this.mediaId);
|
||||
return m;
|
||||
}
|
||||
|
||||
|
@ -0,0 +1,54 @@
|
||||
package chanjarster.weixin.bean.outxmlbuilder;
|
||||
|
||||
import chanjarster.weixin.bean.WxXmlOutMusicMessage;
|
||||
|
||||
/**
|
||||
* 音乐消息builder
|
||||
*
|
||||
* @author chanjarster
|
||||
*/
|
||||
public final class MusicBuilder extends BaseBuilder<MusicBuilder, WxXmlOutMusicMessage> {
|
||||
|
||||
private String title;
|
||||
private String description;
|
||||
private String hQMusicUrl;
|
||||
private String musicUrl;
|
||||
private String thumbMediaId;
|
||||
|
||||
public MusicBuilder title(String title) {
|
||||
this.title = title;
|
||||
return this;
|
||||
}
|
||||
|
||||
public MusicBuilder description(String description) {
|
||||
this.description = description;
|
||||
return this;
|
||||
}
|
||||
|
||||
public MusicBuilder hQMusicUrl(String hQMusicUrl) {
|
||||
this.hQMusicUrl = hQMusicUrl;
|
||||
return this;
|
||||
}
|
||||
|
||||
public MusicBuilder musicUrl(String musicUrl) {
|
||||
this.musicUrl = musicUrl;
|
||||
return this;
|
||||
}
|
||||
|
||||
public MusicBuilder thumbMediaId(String thumbMediaId) {
|
||||
this.thumbMediaId = thumbMediaId;
|
||||
return this;
|
||||
}
|
||||
|
||||
public WxXmlOutMusicMessage build() {
|
||||
WxXmlOutMusicMessage m = new WxXmlOutMusicMessage();
|
||||
setCommon(m);
|
||||
m.setTitle(title);
|
||||
m.setDescription(description);
|
||||
m.setHQMusicUrl(hQMusicUrl);
|
||||
m.setMusicUrl(musicUrl);
|
||||
m.setThumbMediaId(thumbMediaId);
|
||||
return m;
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,31 @@
|
||||
package chanjarster.weixin.bean.outxmlbuilder;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import chanjarster.weixin.bean.WxXmlOutMewsMessage;
|
||||
import chanjarster.weixin.bean.WxXmlOutMewsMessage.Item;
|
||||
|
||||
/**
|
||||
* 图文消息builder
|
||||
* @author chanjarster
|
||||
*/
|
||||
public final class NewsBuilder extends BaseBuilder<NewsBuilder, WxXmlOutMewsMessage> {
|
||||
|
||||
protected final List<Item> articles = new ArrayList<Item>();
|
||||
|
||||
public NewsBuilder addArticle(Item item) {
|
||||
this.articles.add(item);
|
||||
return this;
|
||||
}
|
||||
|
||||
public WxXmlOutMewsMessage build() {
|
||||
WxXmlOutMewsMessage m = new WxXmlOutMewsMessage();
|
||||
for(Item item : articles) {
|
||||
m.addArticle(item);
|
||||
}
|
||||
setCommon(m);
|
||||
return m;
|
||||
}
|
||||
|
||||
}
|
@ -1,23 +1,15 @@
|
||||
package chanjarster.weixin.bean.outxmlbuilder;
|
||||
|
||||
import chanjarster.weixin.api.WxConsts;
|
||||
import chanjarster.weixin.bean.WxXmlOutTextMessage;
|
||||
|
||||
/**
|
||||
* 文本消息builder
|
||||
* <pre>
|
||||
* 用法: WxXmlMessage m = WxXmlMessage.TEXT().touser(...).fromUser(...).content(...).build();
|
||||
* </pre>
|
||||
* @author chanjarster
|
||||
*
|
||||
*/
|
||||
public final class TextBuilder extends BaseBuilder<TextBuilder, WxXmlOutTextMessage> {
|
||||
private String content;
|
||||
|
||||
public TextBuilder() {
|
||||
this.msgtype = WxConsts.XML_MSG_TEXT;
|
||||
}
|
||||
|
||||
public TextBuilder content(String content) {
|
||||
this.content = content;
|
||||
return this;
|
||||
|
@ -0,0 +1,38 @@
|
||||
package chanjarster.weixin.bean.outxmlbuilder;
|
||||
|
||||
import chanjarster.weixin.bean.WxXmlOutVideoMessage;
|
||||
|
||||
/**
|
||||
* 视频消息builder
|
||||
* @author chanjarster
|
||||
*
|
||||
*/
|
||||
public final class VideoBuilder extends BaseBuilder<VideoBuilder, WxXmlOutVideoMessage> {
|
||||
|
||||
private String mediaId;
|
||||
private String title;
|
||||
private String description;
|
||||
|
||||
public VideoBuilder title(String title) {
|
||||
this.title = title;
|
||||
return this;
|
||||
}
|
||||
public VideoBuilder description(String description) {
|
||||
this.description = description;
|
||||
return this;
|
||||
}
|
||||
public VideoBuilder mediaId(String mediaId) {
|
||||
this.mediaId = mediaId;
|
||||
return this;
|
||||
}
|
||||
|
||||
public WxXmlOutVideoMessage build() {
|
||||
WxXmlOutVideoMessage m = new WxXmlOutVideoMessage();
|
||||
setCommon(m);
|
||||
m.setTitle(title);
|
||||
m.setDescription(description);
|
||||
m.setMediaId(mediaId);
|
||||
return m;
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,25 @@
|
||||
package chanjarster.weixin.bean.outxmlbuilder;
|
||||
|
||||
import chanjarster.weixin.bean.WxXmlOutVoiceMessage;
|
||||
|
||||
/**
|
||||
* 语音消息builder
|
||||
* @author chanjarster
|
||||
*/
|
||||
public final class VoiceBuilder extends BaseBuilder<VoiceBuilder, WxXmlOutVoiceMessage> {
|
||||
|
||||
private String mediaId;
|
||||
|
||||
public VoiceBuilder mediaId(String mediaId) {
|
||||
this.mediaId = mediaId;
|
||||
return this;
|
||||
}
|
||||
|
||||
public WxXmlOutVoiceMessage build() {
|
||||
WxXmlOutVoiceMessage m = new WxXmlOutVoiceMessage();
|
||||
setCommon(m);
|
||||
m.setMediaId(mediaId);
|
||||
return m;
|
||||
}
|
||||
|
||||
}
|
@ -10,12 +10,12 @@ public class WxXmlOutIMusicMessageTest {
|
||||
WxXmlOutMusicMessage m = new WxXmlOutMusicMessage();
|
||||
m.setTitle("title");
|
||||
m.setDescription("ddfff");
|
||||
m.setCreateTime(1122l);
|
||||
m.setFromUserName("fromUser");
|
||||
m.setToUserName("toUser");
|
||||
m.setHQMusicUrl("hQMusicUrl");
|
||||
m.setMusicUrl("musicUrl");
|
||||
m.setThumbMediaId("thumbMediaId");
|
||||
m.setCreateTime(1122l);
|
||||
m.setFromUserName("fromUser");
|
||||
m.setToUserName("toUser");
|
||||
|
||||
String expected = "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>"
|
||||
+ "<xml>"
|
||||
@ -35,4 +35,40 @@ public class WxXmlOutIMusicMessageTest {
|
||||
Assert.assertEquals(m.toXml().replaceAll("\\s", ""), expected.replaceAll("\\s", ""));
|
||||
}
|
||||
|
||||
public void testBuild() {
|
||||
WxXmlOutMusicMessage m = WxXmlOutMessage.MUSIC()
|
||||
.fromUser("fromUser")
|
||||
.touser("toUser")
|
||||
.title("title")
|
||||
.description("ddfff")
|
||||
.hQMusicUrl("hQMusicUrl")
|
||||
.musicUrl("musicUrl")
|
||||
.thumbMediaId("thumbMediaId")
|
||||
.build();
|
||||
String expected = "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>"
|
||||
+ "<xml>"
|
||||
+ "<ToUserName><![CDATA[toUser]]></ToUserName>"
|
||||
+ "<FromUserName><![CDATA[fromUser]]></FromUserName>"
|
||||
+ "<CreateTime>1122</CreateTime>"
|
||||
+ "<MsgType><![CDATA[music]]></MsgType>"
|
||||
+ "<Music>"
|
||||
+ " <Title><![CDATA[title]]></Title>"
|
||||
+ " <Description><![CDATA[ddfff]]></Description>"
|
||||
+ " <ThumbMediaId><![CDATA[thumbMediaId]]></ThumbMediaId>"
|
||||
+ " <MusicUrl><![CDATA[musicUrl]]></MusicUrl>"
|
||||
+ " <HQMusicUrl><![CDATA[hQMusicUrl]]></HQMusicUrl>"
|
||||
+ " </Music>"
|
||||
+ "</xml>";
|
||||
System.out.println(m.toXml());
|
||||
Assert.assertEquals(
|
||||
m
|
||||
.toXml()
|
||||
.replaceAll("\\s", "")
|
||||
.replaceAll("<CreateTime>.*?</CreateTime>", ""),
|
||||
expected
|
||||
.replaceAll("\\s", "")
|
||||
.replaceAll("<CreateTime>.*?</CreateTime>", "")
|
||||
);
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -45,4 +45,51 @@ public class WxXmlOutINewsMessageTest {
|
||||
Assert.assertEquals(m.toXml().replaceAll("\\s", ""), expected.replaceAll("\\s", ""));
|
||||
}
|
||||
|
||||
public void testBuild() {
|
||||
WxXmlOutMewsMessage.Item item = new WxXmlOutMewsMessage.Item();
|
||||
item.setDescription("description");
|
||||
item.setPicUrl("picUrl");
|
||||
item.setTitle("title");
|
||||
item.setUrl("url");
|
||||
|
||||
WxXmlOutMewsMessage m = WxXmlOutMessage.NEWS()
|
||||
.fromUser("fromUser")
|
||||
.touser("toUser")
|
||||
.addArticle(item)
|
||||
.addArticle(item)
|
||||
.build();
|
||||
String expected = "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>"
|
||||
+ "<xml>"
|
||||
+ "<ToUserName><![CDATA[toUser]]></ToUserName>"
|
||||
+ "<FromUserName><![CDATA[fromUser]]></FromUserName>"
|
||||
+ "<CreateTime>1122</CreateTime>"
|
||||
+ "<MsgType><![CDATA[news]]></MsgType>"
|
||||
+ " <ArticleCount>2</ArticleCount>"
|
||||
+ " <Articles>"
|
||||
+ " <Item>"
|
||||
+ " <Title><![CDATA[title]]></Title>"
|
||||
+ " <Description><![CDATA[description]]></Description>"
|
||||
+ " <PicUrl><![CDATA[picUrl]]></PicUrl>"
|
||||
+ " <Url><![CDATA[url]]></Url>"
|
||||
+ " </Item>"
|
||||
+ " <Item>"
|
||||
+ " <Title><![CDATA[title]]></Title>"
|
||||
+ " <Description><![CDATA[description]]></Description>"
|
||||
+ " <PicUrl><![CDATA[picUrl]]></PicUrl>"
|
||||
+ " <Url><![CDATA[url]]></Url>"
|
||||
+ " </Item>"
|
||||
+ " </Articles>"
|
||||
+ "</xml>";
|
||||
System.out.println(m.toXml());
|
||||
Assert.assertEquals(
|
||||
m
|
||||
.toXml()
|
||||
.replaceAll("\\s", "")
|
||||
.replaceAll("<CreateTime>.*?</CreateTime>", ""),
|
||||
expected
|
||||
.replaceAll("\\s", "")
|
||||
.replaceAll("<CreateTime>.*?</CreateTime>", "")
|
||||
);
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -31,4 +31,36 @@ public class WxXmlOutIVideoMessageTest {
|
||||
Assert.assertEquals(m.toXml().replaceAll("\\s", ""), expected.replaceAll("\\s", ""));
|
||||
}
|
||||
|
||||
public void testBuild() {
|
||||
WxXmlOutVideoMessage m = WxXmlOutMessage.VIDEO()
|
||||
.mediaId("media_id")
|
||||
.fromUser("fromUser")
|
||||
.touser("toUser")
|
||||
.title("title")
|
||||
.description("ddfff")
|
||||
.build();
|
||||
String expected = "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>"
|
||||
+ "<xml>"
|
||||
+ "<ToUserName><![CDATA[toUser]]></ToUserName>"
|
||||
+ "<FromUserName><![CDATA[fromUser]]></FromUserName>"
|
||||
+ "<CreateTime>1122</CreateTime>"
|
||||
+ "<MsgType><![CDATA[video]]></MsgType>"
|
||||
+ "<Video>"
|
||||
+ "<MediaId><![CDATA[media_id]]></MediaId>"
|
||||
+ "<Title><![CDATA[title]]></Title>"
|
||||
+ "<Description><![CDATA[ddfff]]></Description>"
|
||||
+ "</Video> "
|
||||
+ "</xml>";
|
||||
System.out.println(m.toXml());
|
||||
Assert.assertEquals(
|
||||
m
|
||||
.toXml()
|
||||
.replaceAll("\\s", "")
|
||||
.replaceAll("<CreateTime>.*?</CreateTime>", ""),
|
||||
expected
|
||||
.replaceAll("\\s", "")
|
||||
.replaceAll("<CreateTime>.*?</CreateTime>", "")
|
||||
);
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -25,4 +25,26 @@ public class WxXmlOutIVoiceMessageTest {
|
||||
Assert.assertEquals(m.toXml().replaceAll("\\s", ""), expected.replaceAll("\\s", ""));
|
||||
}
|
||||
|
||||
public void testBuild() {
|
||||
WxXmlOutVoiceMessage m = WxXmlOutMessage.VOICE().mediaId("ddfefesfsdfef").fromUser("from").touser("to").build();
|
||||
String expected = "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>"
|
||||
+ "<xml>"
|
||||
+ "<ToUserName><![CDATA[to]]></ToUserName>"
|
||||
+ "<FromUserName><![CDATA[from]]></FromUserName>"
|
||||
+ "<CreateTime>1122</CreateTime>"
|
||||
+ "<MsgType><![CDATA[voice]]></MsgType>"
|
||||
+ "<Voice><MediaId><![CDATA[ddfefesfsdfef]]></MediaId></Voice>"
|
||||
+ "</xml>";
|
||||
System.out.println(m.toXml());
|
||||
Assert.assertEquals(
|
||||
m
|
||||
.toXml()
|
||||
.replaceAll("\\s", "")
|
||||
.replaceAll("<CreateTime>.*?</CreateTime>", ""),
|
||||
expected
|
||||
.replaceAll("\\s", "")
|
||||
.replaceAll("<CreateTime>.*?</CreateTime>", "")
|
||||
);
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -25,4 +25,26 @@ public class WxXmlOutImageMessageTest {
|
||||
Assert.assertEquals(m.toXml().replaceAll("\\s", ""), expected.replaceAll("\\s", ""));
|
||||
}
|
||||
|
||||
public void testBuild() {
|
||||
WxXmlOutImageMessage m = WxXmlOutMessage.IMAGE().mediaId("ddfefesfsdfef").fromUser("from").touser("to").build();
|
||||
String expected = "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>"
|
||||
+ "<xml>"
|
||||
+ "<ToUserName><![CDATA[to]]></ToUserName>"
|
||||
+ "<FromUserName><![CDATA[from]]></FromUserName>"
|
||||
+ "<CreateTime>1122</CreateTime>"
|
||||
+ "<MsgType><![CDATA[image]]></MsgType>"
|
||||
+ "<Image><MediaId><![CDATA[ddfefesfsdfef]]></MediaId></Image>"
|
||||
+ "</xml>";
|
||||
System.out.println(m.toXml());
|
||||
Assert.assertEquals(
|
||||
m
|
||||
.toXml()
|
||||
.replaceAll("\\s", "")
|
||||
.replaceAll("<CreateTime>.*?</CreateTime>", ""),
|
||||
expected
|
||||
.replaceAll("\\s", "")
|
||||
.replaceAll("<CreateTime>.*?</CreateTime>", "")
|
||||
);
|
||||
|
||||
}
|
||||
}
|
||||
|
@ -25,4 +25,28 @@ public class WxXmlOutTextMessageTest {
|
||||
Assert.assertEquals(m.toXml().replaceAll("\\s", ""), expected.replaceAll("\\s", ""));
|
||||
}
|
||||
|
||||
public void testBuild() {
|
||||
WxXmlOutTextMessage m = WxXmlOutMessage.TEXT().content("content").fromUser("from").touser("to").build();
|
||||
String expected = "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>"
|
||||
+ "<xml>"
|
||||
+ "<ToUserName><![CDATA[to]]></ToUserName>"
|
||||
+ "<FromUserName><![CDATA[from]]></FromUserName>"
|
||||
+ "<CreateTime>1122</CreateTime>"
|
||||
+ "<MsgType><![CDATA[text]]></MsgType>"
|
||||
+ "<Content><![CDATA[content]]></Content>"
|
||||
+ "</xml>";
|
||||
System.out.println(m.toXml());
|
||||
Assert.assertEquals(
|
||||
m
|
||||
.toXml()
|
||||
.replaceAll("\\s", "")
|
||||
.replaceAll("<CreateTime>.*?</CreateTime>", ""),
|
||||
expected
|
||||
.replaceAll("\\s", "")
|
||||
.replaceAll("<CreateTime>.*?</CreateTime>", "")
|
||||
);
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user