// Path: wechat-mp-sdk/src/main/java/org/usc/wechat/mp/sdk/factory/ReplyEnumFactory.java
// public enum ReplyEnumFactory {
//     TEXT("text", new TextReplyBuilder()),
//     NEWS("news", new NewsReplyBuilder()),
//     MUSIC("music", new MusicReplyBuilder()),
//     IMAGE("image", new ImageReplyBuilder()),
//     VOICE("voice", new VoiceReplyBuilder()),
//     VIDEO("video", new VideoReplyBuilder());
// 
//     private String replyType;
//     private ReplyBuilder replyBuilder;
// 
//     private ReplyEnumFactory(String replyType, ReplyBuilder replyBuilder) {
//         this.replyType = replyType;
//         this.replyBuilder = replyBuilder;
//     }
// 
//     public String getReplyType() {
//         return replyType;
//     }
// 
//     public Reply buildReply(List<ReplyDetail> replyDetails) {
//         if (replyDetails == null || replyDetails.isEmpty()) {
//             return null;
//         }
// 
//         return replyBuilder.buildReply(replyDetails);
//     }
// 
// }
// 
// Path: wechat-mp-sdk/src/main/java/org/usc/wechat/mp/sdk/vo/message/reply/detail/NewsDetail.java
// @XmlAccessorType(XmlAccessType.FIELD)
// public class NewsDetail extends AbstractToStringBuilder {
//     @XmlElement(name = "Title")
//     private String title;
// 
//     @XmlElement(name = "Description")
//     private String description;
// 
//     @XmlElement(name = "PicUrl")
//     private String picUrl;
// 
//     @XmlElement(name = "Url")
//     private String url;
// 
//     public NewsDetail() {
//     }
// 
//     public NewsDetail(String url) {
//         this.url = url;
//     }
// 
//     public NewsDetail(String title, String description, String picUrl, String url) {
//         this.title = title;
//         this.description = description;
//         this.picUrl = picUrl;
//         this.url = url;
//     }
// 
//     public String getTitle() {
//         return title;
//     }
// 
//     public void setTitle(String title) {
//         this.title = title;
//     }
// 
//     public String getDescription() {
//         return description;
//     }
// 
//     public void setDescription(String description) {
//         this.description = description;
//     }
// 
//     public String getPicUrl() {
//         return picUrl;
//     }
// 
//     public void setPicUrl(String picUrl) {
//         this.picUrl = picUrl;
//     }
// 
//     public String getUrl() {
//         return url;
//     }
// 
//     public void setUrl(String url) {
//         this.url = url;
//     }
// 
// }


import java.util.List;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlElementWrapper;
import javax.xml.bind.annotation.XmlRootElement;
import org.usc.wechat.mp.sdk.factory.ReplyEnumFactory;
import org.usc.wechat.mp.sdk.vo.message.reply.detail.NewsDetail;
package org.usc.wechat.mp.sdk.vo.message.reply;




/**
 *
 * @author Shunli
 */
@XmlRootElement(name = "xml")
@XmlAccessorType(XmlAccessType.FIELD)
public class NewsReply extends Reply {
    @XmlElement(name = "ArticleCount")
    private int articleCount;

    @XmlElementWrapper(name = "Articles")
    @XmlElement(name = "item")
    private List<NewsDetail> articles;

    {
        super.setMsgType(ReplyEnumFactory.NEWS.getReplyType());
    }

    public NewsReply() {
    }

// Path: wechat-mp-sdk/src/main/java/org/usc/wechat/mp/sdk/factory/ReplyEnumFactory.java
// public enum ReplyEnumFactory {
//     TEXT("text", new TextReplyBuilder()),
//     NEWS("news", new NewsReplyBuilder()),
//     MUSIC("music", new MusicReplyBuilder()),
//     IMAGE("image", new ImageReplyBuilder()),
//     VOICE("voice", new VoiceReplyBuilder()),
//     VIDEO("video", new VideoReplyBuilder());
// 
//     private String replyType;
//     private ReplyBuilder replyBuilder;
// 
//     private ReplyEnumFactory(String replyType, ReplyBuilder replyBuilder) {
//         this.replyType = replyType;
//         this.replyBuilder = replyBuilder;
//     }
// 
//     public String getReplyType() {
//         return replyType;
//     }
// 
//     public Reply buildReply(List<ReplyDetail> replyDetails) {
//         if (replyDetails == null || replyDetails.isEmpty()) {
//             return null;
//         }
// 
//         return replyBuilder.buildReply(replyDetails);
//     }
// 
// }
// 
// Path: wechat-mp-sdk/src/main/java/org/usc/wechat/mp/sdk/vo/message/reply/detail/NewsDetail.java
// @XmlAccessorType(XmlAccessType.FIELD)
// public class NewsDetail extends AbstractToStringBuilder {
//     @XmlElement(name = "Title")
//     private String title;
// 
//     @XmlElement(name = "Description")
//     private String description;
// 
//     @XmlElement(name = "PicUrl")
//     private String picUrl;
// 
//     @XmlElement(name = "Url")
//     private String url;
// 
//     public NewsDetail() {
//     }
// 
//     public NewsDetail(String url) {
//         this.url = url;
//     }
// 
//     public NewsDetail(String title, String description, String picUrl, String url) {
//         this.title = title;
//         this.description = description;
//         this.picUrl = picUrl;
//         this.url = url;
//     }
// 
//     public String getTitle() {
//         return title;
//     }
// 
//     public void setTitle(String title) {
//         this.title = title;
//     }
// 
//     public String getDescription() {
//         return description;
//     }
// 
//     public void setDescription(String description) {
//         this.description = description;
//     }
// 
//     public String getPicUrl() {
//         return picUrl;
//     }
// 
//     public void setPicUrl(String picUrl) {
//         this.picUrl = picUrl;
//     }
// 
//     public String getUrl() {
//         return url;
//     }
// 
//     public void setUrl(String url) {
//         this.url = url;
//     }
// 
// }


// Path: wechat-mp-sdk/src/main/java/org/usc/wechat/mp/sdk/vo/message/reply/NewsReply.java
import java.util.List;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlElementWrapper;
import javax.xml.bind.annotation.XmlRootElement;
import org.usc.wechat.mp.sdk.factory.ReplyEnumFactory;
import org.usc.wechat.mp.sdk.vo.message.reply.detail.NewsDetail;

package org.usc.wechat.mp.sdk.vo.message.reply;




/**
 *
 * @author Shunli
 */
@XmlRootElement(name = "xml")
@XmlAccessorType(XmlAccessType.FIELD)
public class NewsReply extends Reply {
    @XmlElement(name = "ArticleCount")
    private int articleCount;

    @XmlElementWrapper(name = "Articles")
    @XmlElement(name = "item")
    private List<NewsDetail> articles;

    {
        super.setMsgType(ReplyEnumFactory.NEWS.getReplyType());
    }

    public NewsReply() {
    }

    public NewsReply(int articleCount, List<NewsDetail> articles) {