被动响应消息测试

This commit is contained in:
Daniel Qian
2014-10-21 18:03:24 +08:00
parent 23e4a321ea
commit b69aa77fbc
26 changed files with 104 additions and 102 deletions

View File

@@ -3,7 +3,7 @@ package me.chanjar.weixin.enterprise.api;
import java.util.Map; import java.util.Map;
import me.chanjar.weixin.enterprise.bean.WxCpXmlMessage; import me.chanjar.weixin.enterprise.bean.WxCpXmlMessage;
import me.chanjar.weixin.enterprise.bean.WxXmlOutMessage; import me.chanjar.weixin.enterprise.bean.WxCpXmlOutMessage;
/** /**
* 处理微信推送消息的处理器接口 * 处理微信推送消息的处理器接口
@@ -18,6 +18,6 @@ public interface WxCpMessageHandler {
* @param context 上下文如果handler或interceptor之间有信息要传递可以用这个 * @param context 上下文如果handler或interceptor之间有信息要传递可以用这个
* @return xml格式的消息如果在异步规则里处理的话可以返回null * @return xml格式的消息如果在异步规则里处理的话可以返回null
*/ */
public WxXmlOutMessage handle(WxCpXmlMessage wxMessage, Map<String, Object> context); public WxCpXmlOutMessage handle(WxCpXmlMessage wxMessage, Map<String, Object> context);
} }

View File

@@ -9,7 +9,7 @@ import java.util.concurrent.Executors;
import java.util.regex.Pattern; import java.util.regex.Pattern;
import me.chanjar.weixin.enterprise.bean.WxCpXmlMessage; import me.chanjar.weixin.enterprise.bean.WxCpXmlMessage;
import me.chanjar.weixin.enterprise.bean.WxXmlOutMessage; import me.chanjar.weixin.enterprise.bean.WxCpXmlOutMessage;
/** /**
* <pre> * <pre>
@@ -57,7 +57,7 @@ public class WxCpMessageRouter {
* 处理微信消息 * 处理微信消息
* @param wxMessage * @param wxMessage
*/ */
public WxXmlOutMessage route(final WxCpXmlMessage wxMessage) { public WxCpXmlOutMessage route(final WxCpXmlMessage wxMessage) {
final List<Rule> matchRules = new ArrayList<Rule>(); final List<Rule> matchRules = new ArrayList<Rule>();
// 收集匹配的规则 // 收集匹配的规则
for (final Rule rule : rules) { for (final Rule rule : rules) {
@@ -86,7 +86,7 @@ public class WxCpMessageRouter {
return null; return null;
} }
WxXmlOutMessage res = null; WxCpXmlOutMessage res = null;
for (final Rule rule : matchRules) { for (final Rule rule : matchRules) {
// 返回最后一个匹配规则的结果 // 返回最后一个匹配规则的结果
res = rule.service(wxMessage); res = rule.service(wxMessage);
@@ -270,7 +270,7 @@ public class WxCpMessageRouter {
* @param wxMessage * @param wxMessage
* @return true 代表继续执行别的routerfalse 代表停止执行别的router * @return true 代表继续执行别的routerfalse 代表停止执行别的router
*/ */
protected WxXmlOutMessage service(WxCpXmlMessage wxMessage) { protected WxCpXmlOutMessage service(WxCpXmlMessage wxMessage) {
Map<String, Object> context = new HashMap<String, Object>(); Map<String, Object> context = new HashMap<String, Object>();
// 如果拦截器不通过 // 如果拦截器不通过
for (WxCpMessageInterceptor interceptor : this.interceptors) { for (WxCpMessageInterceptor interceptor : this.interceptors) {
@@ -280,7 +280,7 @@ public class WxCpMessageRouter {
} }
// 交给handler处理 // 交给handler处理
WxXmlOutMessage res = null; WxCpXmlOutMessage res = null;
for (WxCpMessageHandler handler : this.handlers) { for (WxCpMessageHandler handler : this.handlers) {
// 返回最后handler的结果 // 返回最后handler的结果
res = handler.handle(wxMessage, context); res = handler.handle(wxMessage, context);

View File

@@ -34,6 +34,9 @@ public class WxCpXmlMessage {
// 以下都是微信推送过来的消息的xml的element所对应的属性 // 以下都是微信推送过来的消息的xml的element所对应的属性
/////////////////////// ///////////////////////
@XmlElement(name="AgentID")
private Integer agentId;
@XmlElement(name = "ToUserName") @XmlElement(name = "ToUserName")
@XmlJavaTypeAdapter(AdapterCDATA.class) @XmlJavaTypeAdapter(AdapterCDATA.class)
private String toUserName; private String toUserName;
@@ -161,6 +164,14 @@ public class WxCpXmlMessage {
@XmlElement(name = "SendLocationInfo") @XmlElement(name = "SendLocationInfo")
private SendLocationInfo sendLocationInfo = new SendLocationInfo(); private SendLocationInfo sendLocationInfo = new SendLocationInfo();
public Integer getAgentId() {
return agentId;
}
public void setAgentId(Integer agentId) {
this.agentId = agentId;
}
public String getToUserName() { public String getToUserName() {
return toUserName; return toUserName;
} }
@@ -380,7 +391,7 @@ public class WxCpXmlMessage {
this.fromUserName = fromUserName; this.fromUserName = fromUserName;
} }
public static WxCpXmlMessage fromXml(String xml) { protected static WxCpXmlMessage fromXml(String xml) {
try { try {
return XmlTransformer.fromXml(WxCpXmlMessage.class, xml); return XmlTransformer.fromXml(WxCpXmlMessage.class, xml);
} catch (JAXBException e) { } catch (JAXBException e) {
@@ -388,7 +399,7 @@ public class WxCpXmlMessage {
} }
} }
public static WxCpXmlMessage fromXml(InputStream is) { protected static WxCpXmlMessage fromXml(InputStream is) {
try { try {
return XmlTransformer.fromXml(WxCpXmlMessage.class, is); return XmlTransformer.fromXml(WxCpXmlMessage.class, is);
} catch (JAXBException e) { } catch (JAXBException e) {

View File

@@ -11,13 +11,13 @@ import me.chanjar.weixin.enterprise.util.xml.MediaIdMarshaller;
@XmlRootElement(name = "xml") @XmlRootElement(name = "xml")
@XmlAccessorType(XmlAccessType.FIELD) @XmlAccessorType(XmlAccessType.FIELD)
public class WxXmlOutImageMessage extends WxXmlOutMessage { public class WxCpXmlOutImageMessage extends WxCpXmlOutMessage {
@XmlElement(name="Image") @XmlElement(name="Image")
@XmlJavaTypeAdapter(MediaIdMarshaller.class) @XmlJavaTypeAdapter(MediaIdMarshaller.class)
private String mediaId; private String mediaId;
public WxXmlOutImageMessage() { public WxCpXmlOutImageMessage() {
this.msgType = WxConsts.XML_MSG_IMAGE; this.msgType = WxConsts.XML_MSG_IMAGE;
} }

View File

@@ -20,7 +20,7 @@ import me.chanjar.weixin.enterprise.util.xml.XmlTransformer;
@XmlRootElement(name = "xml") @XmlRootElement(name = "xml")
@XmlAccessorType(XmlAccessType.FIELD) @XmlAccessorType(XmlAccessType.FIELD)
public class WxXmlOutMessage { public class WxCpXmlOutMessage {
@XmlElement(name="ToUserName") @XmlElement(name="ToUserName")
@XmlJavaTypeAdapter(AdapterCDATA.class) @XmlJavaTypeAdapter(AdapterCDATA.class)
@@ -69,7 +69,7 @@ public class WxXmlOutMessage {
this.msgType = msgType; this.msgType = msgType;
} }
public String toXml() { protected String toXml() {
try { try {
return XmlTransformer.toXml((Class)this.getClass(), this); return XmlTransformer.toXml((Class)this.getClass(), this);
} catch (JAXBException e) { } catch (JAXBException e) {

View File

@@ -15,7 +15,7 @@ import me.chanjar.weixin.enterprise.util.xml.AdapterCDATA;
@XmlRootElement(name = "xml") @XmlRootElement(name = "xml")
@XmlAccessorType(XmlAccessType.FIELD) @XmlAccessorType(XmlAccessType.FIELD)
public class WxXmlOutMewsMessage extends WxXmlOutMessage { public class WxCpXmlOutMewsMessage extends WxCpXmlOutMessage {
@XmlElement(name = "ArticleCount") @XmlElement(name = "ArticleCount")
protected int articleCount; protected int articleCount;
@@ -24,7 +24,7 @@ public class WxXmlOutMewsMessage extends WxXmlOutMessage {
@XmlElement(name = "item") @XmlElement(name = "item")
protected final List<Item> articles = new ArrayList<Item>(); protected final List<Item> articles = new ArrayList<Item>();
public WxXmlOutMewsMessage() { public WxCpXmlOutMewsMessage() {
this.msgType = WxConsts.XML_MSG_NEWS; this.msgType = WxConsts.XML_MSG_NEWS;
} }

View File

@@ -11,12 +11,12 @@ import me.chanjar.weixin.enterprise.util.xml.AdapterCDATA;
@XmlRootElement(name = "xml") @XmlRootElement(name = "xml")
@XmlAccessorType(XmlAccessType.FIELD) @XmlAccessorType(XmlAccessType.FIELD)
public class WxXmlOutMusicMessage extends WxXmlOutMessage { public class WxCpXmlOutMusicMessage extends WxCpXmlOutMessage {
@XmlElement(name = "Music") @XmlElement(name = "Music")
protected final Music music = new Music(); protected final Music music = new Music();
public WxXmlOutMusicMessage() { public WxCpXmlOutMusicMessage() {
this.msgType = WxConsts.XML_MSG_MUSIC; this.msgType = WxConsts.XML_MSG_MUSIC;
} }

View File

@@ -11,13 +11,13 @@ import me.chanjar.weixin.enterprise.util.xml.AdapterCDATA;
@XmlRootElement(name = "xml") @XmlRootElement(name = "xml")
@XmlAccessorType(XmlAccessType.FIELD) @XmlAccessorType(XmlAccessType.FIELD)
public class WxXmlOutTextMessage extends WxXmlOutMessage { public class WxCpXmlOutTextMessage extends WxCpXmlOutMessage {
@XmlElement(name="Content") @XmlElement(name="Content")
@XmlJavaTypeAdapter(AdapterCDATA.class) @XmlJavaTypeAdapter(AdapterCDATA.class)
private String content; private String content;
public WxXmlOutTextMessage() { public WxCpXmlOutTextMessage() {
this.msgType = WxConsts.XML_MSG_TEXT; this.msgType = WxConsts.XML_MSG_TEXT;
} }

View File

@@ -11,12 +11,12 @@ import me.chanjar.weixin.enterprise.util.xml.AdapterCDATA;
@XmlRootElement(name = "xml") @XmlRootElement(name = "xml")
@XmlAccessorType(XmlAccessType.FIELD) @XmlAccessorType(XmlAccessType.FIELD)
public class WxXmlOutVideoMessage extends WxXmlOutMessage { public class WxCpXmlOutVideoMessage extends WxCpXmlOutMessage {
@XmlElement(name = "Video") @XmlElement(name = "Video")
protected final Video video = new Video(); protected final Video video = new Video();
public WxXmlOutVideoMessage() { public WxCpXmlOutVideoMessage() {
this.msgType = WxConsts.XML_MSG_VIDEO; this.msgType = WxConsts.XML_MSG_VIDEO;
} }

View File

@@ -11,13 +11,13 @@ import me.chanjar.weixin.enterprise.util.xml.MediaIdMarshaller;
@XmlRootElement(name = "xml") @XmlRootElement(name = "xml")
@XmlAccessorType(XmlAccessType.FIELD) @XmlAccessorType(XmlAccessType.FIELD)
public class WxXmlOutVoiceMessage extends WxXmlOutMessage { public class WxCpXmlOutVoiceMessage extends WxCpXmlOutMessage {
@XmlElement(name="Voice") @XmlElement(name="Voice")
@XmlJavaTypeAdapter(MediaIdMarshaller.class) @XmlJavaTypeAdapter(MediaIdMarshaller.class)
private String mediaId; private String mediaId;
public WxXmlOutVoiceMessage() { public WxCpXmlOutVoiceMessage() {
this.msgType = WxConsts.XML_MSG_VOICE; this.msgType = WxConsts.XML_MSG_VOICE;
} }

View File

@@ -1,6 +1,6 @@
package me.chanjar.weixin.enterprise.bean.outxmlbuilder; package me.chanjar.weixin.enterprise.bean.outxmlbuilder;
import me.chanjar.weixin.enterprise.bean.WxXmlOutMessage; import me.chanjar.weixin.enterprise.bean.WxCpXmlOutMessage;
public abstract class BaseBuilder<BuilderType, ValueType> { public abstract class BaseBuilder<BuilderType, ValueType> {
@@ -20,7 +20,7 @@ public abstract class BaseBuilder<BuilderType, ValueType> {
public abstract ValueType build(); public abstract ValueType build();
public void setCommon(WxXmlOutMessage m) { public void setCommon(WxCpXmlOutMessage m) {
m.setToUserName(this.toUserName); m.setToUserName(this.toUserName);
m.setFromUserName(this.fromUserName); m.setFromUserName(this.fromUserName);
m.setCreateTime(System.currentTimeMillis() / 1000l); m.setCreateTime(System.currentTimeMillis() / 1000l);

View File

@@ -1,12 +1,12 @@
package me.chanjar.weixin.enterprise.bean.outxmlbuilder; package me.chanjar.weixin.enterprise.bean.outxmlbuilder;
import me.chanjar.weixin.enterprise.bean.WxXmlOutImageMessage; import me.chanjar.weixin.enterprise.bean.WxCpXmlOutImageMessage;
/** /**
* 图片消息builder * 图片消息builder
* @author Daniel Qian * @author Daniel Qian
*/ */
public final class ImageBuilder extends BaseBuilder<ImageBuilder, WxXmlOutImageMessage> { public final class ImageBuilder extends BaseBuilder<ImageBuilder, WxCpXmlOutImageMessage> {
private String mediaId; private String mediaId;
@@ -15,8 +15,8 @@ public final class ImageBuilder extends BaseBuilder<ImageBuilder, WxXmlOutImageM
return this; return this;
} }
public WxXmlOutImageMessage build() { public WxCpXmlOutImageMessage build() {
WxXmlOutImageMessage m = new WxXmlOutImageMessage(); WxCpXmlOutImageMessage m = new WxCpXmlOutImageMessage();
setCommon(m); setCommon(m);
m.setMediaId(this.mediaId); m.setMediaId(this.mediaId);
return m; return m;

View File

@@ -1,13 +1,13 @@
package me.chanjar.weixin.enterprise.bean.outxmlbuilder; package me.chanjar.weixin.enterprise.bean.outxmlbuilder;
import me.chanjar.weixin.enterprise.bean.WxXmlOutMusicMessage; import me.chanjar.weixin.enterprise.bean.WxCpXmlOutMusicMessage;
/** /**
* 音乐消息builder * 音乐消息builder
* *
* @author Daniel Qian * @author Daniel Qian
*/ */
public final class MusicBuilder extends BaseBuilder<MusicBuilder, WxXmlOutMusicMessage> { public final class MusicBuilder extends BaseBuilder<MusicBuilder, WxCpXmlOutMusicMessage> {
private String title; private String title;
private String description; private String description;
@@ -40,8 +40,8 @@ public final class MusicBuilder extends BaseBuilder<MusicBuilder, WxXmlOutMusicM
return this; return this;
} }
public WxXmlOutMusicMessage build() { public WxCpXmlOutMusicMessage build() {
WxXmlOutMusicMessage m = new WxXmlOutMusicMessage(); WxCpXmlOutMusicMessage m = new WxCpXmlOutMusicMessage();
setCommon(m); setCommon(m);
m.setTitle(title); m.setTitle(title);
m.setDescription(description); m.setDescription(description);

View File

@@ -3,14 +3,14 @@ package me.chanjar.weixin.enterprise.bean.outxmlbuilder;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import me.chanjar.weixin.enterprise.bean.WxXmlOutMewsMessage; import me.chanjar.weixin.enterprise.bean.WxCpXmlOutMewsMessage;
import me.chanjar.weixin.enterprise.bean.WxXmlOutMewsMessage.Item; import me.chanjar.weixin.enterprise.bean.WxCpXmlOutMewsMessage.Item;
/** /**
* 图文消息builder * 图文消息builder
* @author Daniel Qian * @author Daniel Qian
*/ */
public final class NewsBuilder extends BaseBuilder<NewsBuilder, WxXmlOutMewsMessage> { public final class NewsBuilder extends BaseBuilder<NewsBuilder, WxCpXmlOutMewsMessage> {
protected final List<Item> articles = new ArrayList<Item>(); protected final List<Item> articles = new ArrayList<Item>();
@@ -19,8 +19,8 @@ public final class NewsBuilder extends BaseBuilder<NewsBuilder, WxXmlOutMewsMess
return this; return this;
} }
public WxXmlOutMewsMessage build() { public WxCpXmlOutMewsMessage build() {
WxXmlOutMewsMessage m = new WxXmlOutMewsMessage(); WxCpXmlOutMewsMessage m = new WxCpXmlOutMewsMessage();
for(Item item : articles) { for(Item item : articles) {
m.addArticle(item); m.addArticle(item);
} }

View File

@@ -1,13 +1,13 @@
package me.chanjar.weixin.enterprise.bean.outxmlbuilder; package me.chanjar.weixin.enterprise.bean.outxmlbuilder;
import me.chanjar.weixin.enterprise.bean.WxXmlOutTextMessage; import me.chanjar.weixin.enterprise.bean.WxCpXmlOutTextMessage;
/** /**
* 文本消息builder * 文本消息builder
* @author Daniel Qian * @author Daniel Qian
* *
*/ */
public final class TextBuilder extends BaseBuilder<TextBuilder, WxXmlOutTextMessage> { public final class TextBuilder extends BaseBuilder<TextBuilder, WxCpXmlOutTextMessage> {
private String content; private String content;
public TextBuilder content(String content) { public TextBuilder content(String content) {
@@ -15,8 +15,8 @@ public final class TextBuilder extends BaseBuilder<TextBuilder, WxXmlOutTextMess
return this; return this;
} }
public WxXmlOutTextMessage build() { public WxCpXmlOutTextMessage build() {
WxXmlOutTextMessage m = new WxXmlOutTextMessage(); WxCpXmlOutTextMessage m = new WxCpXmlOutTextMessage();
setCommon(m); setCommon(m);
m.setContent(this.content); m.setContent(this.content);
return m; return m;

View File

@@ -1,13 +1,13 @@
package me.chanjar.weixin.enterprise.bean.outxmlbuilder; package me.chanjar.weixin.enterprise.bean.outxmlbuilder;
import me.chanjar.weixin.enterprise.bean.WxXmlOutVideoMessage; import me.chanjar.weixin.enterprise.bean.WxCpXmlOutVideoMessage;
/** /**
* 视频消息builder * 视频消息builder
* @author Daniel Qian * @author Daniel Qian
* *
*/ */
public final class VideoBuilder extends BaseBuilder<VideoBuilder, WxXmlOutVideoMessage> { public final class VideoBuilder extends BaseBuilder<VideoBuilder, WxCpXmlOutVideoMessage> {
private String mediaId; private String mediaId;
private String title; private String title;
@@ -26,8 +26,8 @@ public final class VideoBuilder extends BaseBuilder<VideoBuilder, WxXmlOutVideoM
return this; return this;
} }
public WxXmlOutVideoMessage build() { public WxCpXmlOutVideoMessage build() {
WxXmlOutVideoMessage m = new WxXmlOutVideoMessage(); WxCpXmlOutVideoMessage m = new WxCpXmlOutVideoMessage();
setCommon(m); setCommon(m);
m.setTitle(title); m.setTitle(title);
m.setDescription(description); m.setDescription(description);

View File

@@ -1,12 +1,12 @@
package me.chanjar.weixin.enterprise.bean.outxmlbuilder; package me.chanjar.weixin.enterprise.bean.outxmlbuilder;
import me.chanjar.weixin.enterprise.bean.WxXmlOutVoiceMessage; import me.chanjar.weixin.enterprise.bean.WxCpXmlOutVoiceMessage;
/** /**
* 语音消息builder * 语音消息builder
* @author Daniel Qian * @author Daniel Qian
*/ */
public final class VoiceBuilder extends BaseBuilder<VoiceBuilder, WxXmlOutVoiceMessage> { public final class VoiceBuilder extends BaseBuilder<VoiceBuilder, WxCpXmlOutVoiceMessage> {
private String mediaId; private String mediaId;
@@ -15,8 +15,8 @@ public final class VoiceBuilder extends BaseBuilder<VoiceBuilder, WxXmlOutVoiceM
return this; return this;
} }
public WxXmlOutVoiceMessage build() { public WxCpXmlOutVoiceMessage build() {
WxXmlOutVoiceMessage m = new WxXmlOutVoiceMessage(); WxCpXmlOutVoiceMessage m = new WxCpXmlOutVoiceMessage();
setCommon(m); setCommon(m);
m.setMediaId(mediaId); m.setMediaId(mediaId);
return m; return m;

View File

@@ -8,7 +8,6 @@ import java.io.Writer;
import javax.xml.bind.*; import javax.xml.bind.*;
import me.chanjar.weixin.enterprise.bean.*;
import me.chanjar.weixin.enterprise.bean.*; import me.chanjar.weixin.enterprise.bean.*;
import org.xml.sax.InputSource; import org.xml.sax.InputSource;
@@ -78,13 +77,13 @@ public class XmlTransformer {
*/ */
try { try {
return JAXBContext.newInstance( return JAXBContext.newInstance(
WxXmlOutMessage.class, WxCpXmlOutMessage.class,
WxXmlOutImageMessage.class, WxCpXmlOutImageMessage.class,
WxXmlOutMewsMessage.class, WxCpXmlOutMewsMessage.class,
WxXmlOutMusicMessage.class, WxCpXmlOutMusicMessage.class,
WxXmlOutTextMessage.class, WxCpXmlOutTextMessage.class,
WxXmlOutVideoMessage.class, WxCpXmlOutVideoMessage.class,
WxXmlOutVoiceMessage.class, WxCpXmlOutVoiceMessage.class,
WxCpXmlMessage.class); WxCpXmlMessage.class);
} catch (JAXBException e) { } catch (JAXBException e) {
throw new RuntimeException(e); throw new RuntimeException(e);

View File

@@ -3,12 +3,11 @@ package me.chanjar.weixin.enterprise.api;
import java.util.Map; import java.util.Map;
import me.chanjar.weixin.enterprise.bean.WxCpXmlMessage; import me.chanjar.weixin.enterprise.bean.WxCpXmlMessage;
import me.chanjar.weixin.enterprise.bean.WxCpXmlOutMessage;
import org.testng.Assert; import org.testng.Assert;
import org.testng.annotations.DataProvider; import org.testng.annotations.DataProvider;
import org.testng.annotations.Test; import org.testng.annotations.Test;
import me.chanjar.weixin.enterprise.bean.WxXmlOutMessage;
/** /**
* 测试消息路由器 * 测试消息路由器
* @author Daniel Qian * @author Daniel Qian
@@ -67,7 +66,7 @@ public class WxCpMessageRouterTest {
final WxCpMessageRouter router = new WxCpMessageRouter(); final WxCpMessageRouter router = new WxCpMessageRouter();
router.rule().handler(new WxCpMessageHandler() { router.rule().handler(new WxCpMessageHandler() {
@Override @Override
public WxXmlOutMessage handle(WxCpXmlMessage wxMessage, Map<String, Object> context) { public WxCpXmlOutMessage handle(WxCpXmlMessage wxMessage, Map<String, Object> context) {
return null; return null;
} }
}).end(); }).end();
@@ -149,7 +148,7 @@ public class WxCpMessageRouterTest {
} }
@Override @Override
public WxXmlOutMessage handle(WxCpXmlMessage wxMessage, Map<String, Object> context) { public WxCpXmlOutMessage handle(WxCpXmlMessage wxMessage, Map<String, Object> context) {
sb.append(this.echoStr).append(','); sb.append(this.echoStr).append(',');
return null; return null;
} }

View File

@@ -1,15 +1,13 @@
package me.chanjar.weixin.enterprise.bean; package me.chanjar.weixin.enterprise.bean;
import me.chanjar.weixin.enterprise.bean.WxXmlOutImageMessage;
import me.chanjar.weixin.enterprise.bean.WxXmlOutMessage;
import org.testng.Assert; import org.testng.Assert;
import org.testng.annotations.Test; import org.testng.annotations.Test;
@Test @Test
public class WxXmlOutImageMessageTest { public class WxCpXmlOutImageMessageTest {
public void test() { public void test() {
WxXmlOutImageMessage m = new WxXmlOutImageMessage(); WxCpXmlOutImageMessage m = new WxCpXmlOutImageMessage();
m.setMediaId("ddfefesfsdfef"); m.setMediaId("ddfefesfsdfef");
m.setCreateTime(1122l); m.setCreateTime(1122l);
m.setFromUserName("from"); m.setFromUserName("from");
@@ -28,7 +26,7 @@ public class WxXmlOutImageMessageTest {
} }
public void testBuild() { public void testBuild() {
WxXmlOutImageMessage m = WxXmlOutMessage.IMAGE().mediaId("ddfefesfsdfef").fromUser("from").toUser("to").build(); WxCpXmlOutImageMessage m = WxCpXmlOutMessage.IMAGE().mediaId("ddfefesfsdfef").fromUser("from").toUser("to").build();
String expected = "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>" String expected = "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>"
+ "<xml>" + "<xml>"
+ "<ToUserName><![CDATA[to]]></ToUserName>" + "<ToUserName><![CDATA[to]]></ToUserName>"

View File

@@ -1,15 +1,13 @@
package me.chanjar.weixin.enterprise.bean; package me.chanjar.weixin.enterprise.bean;
import me.chanjar.weixin.enterprise.bean.WxXmlOutMessage;
import me.chanjar.weixin.enterprise.bean.WxXmlOutMusicMessage;
import org.testng.Assert; import org.testng.Assert;
import org.testng.annotations.Test; import org.testng.annotations.Test;
@Test @Test
public class WxXmlOutMusicMessageTest { public class WxCpXmlOutMusicMessageTest {
public void test() { public void test() {
WxXmlOutMusicMessage m = new WxXmlOutMusicMessage(); WxCpXmlOutMusicMessage m = new WxCpXmlOutMusicMessage();
m.setTitle("title"); m.setTitle("title");
m.setDescription("ddfff"); m.setDescription("ddfff");
m.setHqMusicUrl("hQMusicUrl"); m.setHqMusicUrl("hQMusicUrl");
@@ -38,7 +36,7 @@ public class WxXmlOutMusicMessageTest {
} }
public void testBuild() { public void testBuild() {
WxXmlOutMusicMessage m = WxXmlOutMessage.MUSIC() WxCpXmlOutMusicMessage m = WxCpXmlOutMessage.MUSIC()
.fromUser("fromUser") .fromUser("fromUser")
.toUser("toUser") .toUser("toUser")
.title("title") .title("title")

View File

@@ -1,20 +1,18 @@
package me.chanjar.weixin.enterprise.bean; package me.chanjar.weixin.enterprise.bean;
import me.chanjar.weixin.enterprise.bean.WxXmlOutMessage;
import me.chanjar.weixin.enterprise.bean.WxXmlOutMewsMessage;
import org.testng.Assert; import org.testng.Assert;
import org.testng.annotations.Test; import org.testng.annotations.Test;
@Test @Test
public class WxXmlOutNewsMessageTest { public class WxCpXmlOutNewsMessageTest {
public void test() { public void test() {
WxXmlOutMewsMessage m = new WxXmlOutMewsMessage(); WxCpXmlOutMewsMessage m = new WxCpXmlOutMewsMessage();
m.setCreateTime(1122l); m.setCreateTime(1122l);
m.setFromUserName("fromUser"); m.setFromUserName("fromUser");
m.setToUserName("toUser"); m.setToUserName("toUser");
WxXmlOutMewsMessage.Item item = new WxXmlOutMewsMessage.Item(); WxCpXmlOutMewsMessage.Item item = new WxCpXmlOutMewsMessage.Item();
item.setDescription("description"); item.setDescription("description");
item.setPicUrl("picUrl"); item.setPicUrl("picUrl");
item.setTitle("title"); item.setTitle("title");
@@ -48,13 +46,13 @@ public class WxXmlOutNewsMessageTest {
} }
public void testBuild() { public void testBuild() {
WxXmlOutMewsMessage.Item item = new WxXmlOutMewsMessage.Item(); WxCpXmlOutMewsMessage.Item item = new WxCpXmlOutMewsMessage.Item();
item.setDescription("description"); item.setDescription("description");
item.setPicUrl("picUrl"); item.setPicUrl("picUrl");
item.setTitle("title"); item.setTitle("title");
item.setUrl("url"); item.setUrl("url");
WxXmlOutMewsMessage m = WxXmlOutMessage.NEWS() WxCpXmlOutMewsMessage m = WxCpXmlOutMessage.NEWS()
.fromUser("fromUser") .fromUser("fromUser")
.toUser("toUser") .toUser("toUser")
.addArticle(item) .addArticle(item)

View File

@@ -1,15 +1,13 @@
package me.chanjar.weixin.enterprise.bean; package me.chanjar.weixin.enterprise.bean;
import me.chanjar.weixin.enterprise.bean.WxXmlOutMessage;
import me.chanjar.weixin.enterprise.bean.WxXmlOutTextMessage;
import org.testng.Assert; import org.testng.Assert;
import org.testng.annotations.Test; import org.testng.annotations.Test;
@Test @Test
public class WxXmlOutTextMessageTest { public class WxCpXmlOutTextMessageTest {
public void test() { public void test() {
WxXmlOutTextMessage m = new WxXmlOutTextMessage(); WxCpXmlOutTextMessage m = new WxCpXmlOutTextMessage();
m.setContent("content"); m.setContent("content");
m.setCreateTime(1122l); m.setCreateTime(1122l);
m.setFromUserName("from"); m.setFromUserName("from");
@@ -28,7 +26,7 @@ public class WxXmlOutTextMessageTest {
} }
public void testBuild() { public void testBuild() {
WxXmlOutTextMessage m = WxXmlOutMessage.TEXT().content("content").fromUser("from").toUser("to").build(); WxCpXmlOutTextMessage m = WxCpXmlOutMessage.TEXT().content("content").fromUser("from").toUser("to").build();
String expected = "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>" String expected = "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>"
+ "<xml>" + "<xml>"
+ "<ToUserName><![CDATA[to]]></ToUserName>" + "<ToUserName><![CDATA[to]]></ToUserName>"

View File

@@ -1,15 +1,13 @@
package me.chanjar.weixin.enterprise.bean; package me.chanjar.weixin.enterprise.bean;
import me.chanjar.weixin.enterprise.bean.WxXmlOutMessage;
import me.chanjar.weixin.enterprise.bean.WxXmlOutVideoMessage;
import org.testng.Assert; import org.testng.Assert;
import org.testng.annotations.Test; import org.testng.annotations.Test;
@Test @Test
public class WxXmlOutVideoMessageTest { public class WxCpXmlOutVideoMessageTest {
public void test() { public void test() {
WxXmlOutVideoMessage m = new WxXmlOutVideoMessage(); WxCpXmlOutVideoMessage m = new WxCpXmlOutVideoMessage();
m.setMediaId("media_id"); m.setMediaId("media_id");
m.setTitle("title"); m.setTitle("title");
m.setDescription("ddfff"); m.setDescription("ddfff");
@@ -34,7 +32,7 @@ public class WxXmlOutVideoMessageTest {
} }
public void testBuild() { public void testBuild() {
WxXmlOutVideoMessage m = WxXmlOutMessage.VIDEO() WxCpXmlOutVideoMessage m = WxCpXmlOutMessage.VIDEO()
.mediaId("media_id") .mediaId("media_id")
.fromUser("fromUser") .fromUser("fromUser")
.toUser("toUser") .toUser("toUser")

View File

@@ -1,15 +1,13 @@
package me.chanjar.weixin.enterprise.bean; package me.chanjar.weixin.enterprise.bean;
import me.chanjar.weixin.enterprise.bean.WxXmlOutMessage;
import me.chanjar.weixin.enterprise.bean.WxXmlOutVoiceMessage;
import org.testng.Assert; import org.testng.Assert;
import org.testng.annotations.Test; import org.testng.annotations.Test;
@Test @Test
public class WxXmlOutVoiceMessageTest { public class WxCpXmlOutVoiceMessageTest {
public void test() { public void test() {
WxXmlOutVoiceMessage m = new WxXmlOutVoiceMessage(); WxCpXmlOutVoiceMessage m = new WxCpXmlOutVoiceMessage();
m.setMediaId("ddfefesfsdfef"); m.setMediaId("ddfefesfsdfef");
m.setCreateTime(1122l); m.setCreateTime(1122l);
m.setFromUserName("from"); m.setFromUserName("from");
@@ -28,7 +26,7 @@ public class WxXmlOutVoiceMessageTest {
} }
public void testBuild() { public void testBuild() {
WxXmlOutVoiceMessage m = WxXmlOutMessage.VOICE().mediaId("ddfefesfsdfef").fromUser("from").toUser("to").build(); WxCpXmlOutVoiceMessage m = WxCpXmlOutMessage.VOICE().mediaId("ddfefesfsdfef").fromUser("from").toUser("to").build();
String expected = "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>" String expected = "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>"
+ "<xml>" + "<xml>"
+ "<ToUserName><![CDATA[to]]></ToUserName>" + "<ToUserName><![CDATA[to]]></ToUserName>"

View File

@@ -2,10 +2,9 @@ package me.chanjar.weixin.enterprise.demo;
import me.chanjar.weixin.enterprise.api.*; import me.chanjar.weixin.enterprise.api.*;
import me.chanjar.weixin.enterprise.bean.WxCpXmlMessage; import me.chanjar.weixin.enterprise.bean.WxCpXmlMessage;
import me.chanjar.weixin.enterprise.bean.WxXmlOutMessage; import me.chanjar.weixin.enterprise.bean.WxCpXmlOutMessage;
import me.chanjar.weixin.enterprise.bean.WxXmlOutTextMessage; import me.chanjar.weixin.enterprise.bean.WxCpXmlOutTextMessage;
import me.chanjar.weixin.enterprise.util.crypto.WxCryptUtil; import me.chanjar.weixin.enterprise.util.crypto.WxCryptUtil;
import org.apache.commons.io.IOUtils;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import javax.servlet.ServletException; import javax.servlet.ServletException;
@@ -38,10 +37,13 @@ public class WxCpTestServlet extends HttpServlet {
wxCpService.setWxCpConfigStorage(config); wxCpService.setWxCpConfigStorage(config);
WxCpMessageHandler handler = new WxCpMessageHandler() { WxCpMessageHandler handler = new WxCpMessageHandler() {
@Override public WxXmlOutMessage handle(WxCpXmlMessage wxMessage, Map<String, Object> context) { @Override public WxCpXmlOutMessage handle(WxCpXmlMessage wxMessage, Map<String, Object> context) {
WxXmlOutTextMessage m WxCpXmlOutTextMessage m = WxCpXmlOutMessage
= WxXmlOutMessage.TEXT().content("测试加密消息").fromUser(wxMessage.getToUserName()) .TEXT()
.toUser(wxMessage.getFromUserName()).build(); .content("测试加密消息")
.fromUser(wxMessage.getToUserName())
.toUser(wxMessage.getFromUserName())
.build();
return m; return m;
} }
}; };
@@ -85,8 +87,11 @@ public class WxCpTestServlet extends HttpServlet {
WxCpXmlMessage inMessage = WxCpXmlMessage.fromEncryptedXml(request.getInputStream(), wxCpConfigStorage, timestamp, nonce, msgSignature); WxCpXmlMessage inMessage = WxCpXmlMessage.fromEncryptedXml(request.getInputStream(), wxCpConfigStorage, timestamp, nonce, msgSignature);
// WxXmlOutMessage outMessage = wxCpMessageRouter.route(inMessage); WxCpXmlOutMessage outMessage = wxCpMessageRouter.route(inMessage);
if (outMessage != null) {
response.getWriter().write(outMessage.toEncryptedXml(wxCpConfigStorage));
}
return; return;
} }