diff --git a/weixin-java-common/src/main/java/me/chanjar/weixin/common/api/WxConsts.java b/weixin-java-common/src/main/java/me/chanjar/weixin/common/api/WxConsts.java index 37812de76..35a1a26ea 100644 --- a/weixin-java-common/src/main/java/me/chanjar/weixin/common/api/WxConsts.java +++ b/weixin-java-common/src/main/java/me/chanjar/weixin/common/api/WxConsts.java @@ -6,7 +6,7 @@ import java.util.Map; /** * 微信开发所使用到的常量类. * - * @author chanjarster & binarywang + * @author Daniel Qian & binarywang */ public class WxConsts { /** diff --git a/weixin-java-common/src/main/java/me/chanjar/weixin/common/api/WxErrorExceptionHandler.java b/weixin-java-common/src/main/java/me/chanjar/weixin/common/api/WxErrorExceptionHandler.java index 7a452df66..83242e2f7 100644 --- a/weixin-java-common/src/main/java/me/chanjar/weixin/common/api/WxErrorExceptionHandler.java +++ b/weixin-java-common/src/main/java/me/chanjar/weixin/common/api/WxErrorExceptionHandler.java @@ -4,6 +4,8 @@ import me.chanjar.weixin.common.error.WxErrorException; /** * WxErrorException处理器. + * + * @author Daniel Qian */ public interface WxErrorExceptionHandler { diff --git a/weixin-java-common/src/main/java/me/chanjar/weixin/common/api/WxMessageDuplicateChecker.java b/weixin-java-common/src/main/java/me/chanjar/weixin/common/api/WxMessageDuplicateChecker.java index fdb0cd81b..3993dab54 100644 --- a/weixin-java-common/src/main/java/me/chanjar/weixin/common/api/WxMessageDuplicateChecker.java +++ b/weixin-java-common/src/main/java/me/chanjar/weixin/common/api/WxMessageDuplicateChecker.java @@ -5,6 +5,8 @@ package me.chanjar.weixin.common.api; * 消息重复检查器. * 微信服务器在五秒内收不到响应会断掉连接,并且重新发起请求,总共重试三次 * + * + * @author Daniel Qian */ public interface WxMessageDuplicateChecker { diff --git a/weixin-java-common/src/main/java/me/chanjar/weixin/common/api/WxMessageInMemoryDuplicateChecker.java b/weixin-java-common/src/main/java/me/chanjar/weixin/common/api/WxMessageInMemoryDuplicateChecker.java index d8be08f44..c0f57c83c 100644 --- a/weixin-java-common/src/main/java/me/chanjar/weixin/common/api/WxMessageInMemoryDuplicateChecker.java +++ b/weixin-java-common/src/main/java/me/chanjar/weixin/common/api/WxMessageInMemoryDuplicateChecker.java @@ -9,6 +9,8 @@ import java.util.concurrent.atomic.AtomicBoolean; * 默认消息重复检查器. * 将每个消息id保存在内存里,每隔5秒清理已经过期的消息id,每个消息id的过期时间是15秒 * + * + * @author Daniel Qian */ public class WxMessageInMemoryDuplicateChecker implements WxMessageDuplicateChecker { diff --git a/weixin-java-common/src/main/java/me/chanjar/weixin/common/bean/WxAccessToken.java b/weixin-java-common/src/main/java/me/chanjar/weixin/common/bean/WxAccessToken.java index 632796515..3935e5f55 100644 --- a/weixin-java-common/src/main/java/me/chanjar/weixin/common/bean/WxAccessToken.java +++ b/weixin-java-common/src/main/java/me/chanjar/weixin/common/bean/WxAccessToken.java @@ -1,10 +1,15 @@ package me.chanjar.weixin.common.bean; +import java.io.Serializable; + import lombok.Data; import me.chanjar.weixin.common.util.json.WxGsonBuilder; -import java.io.Serializable; - +/** + * access token. + * + * @author Daniel Qian + */ @Data public class WxAccessToken implements Serializable { private static final long serialVersionUID = 8709719312922168909L; diff --git a/weixin-java-common/src/main/java/me/chanjar/weixin/common/bean/WxJsapiSignature.java b/weixin-java-common/src/main/java/me/chanjar/weixin/common/bean/WxJsapiSignature.java index fb585d36d..759f5e12f 100644 --- a/weixin-java-common/src/main/java/me/chanjar/weixin/common/bean/WxJsapiSignature.java +++ b/weixin-java-common/src/main/java/me/chanjar/weixin/common/bean/WxJsapiSignature.java @@ -1,16 +1,16 @@ package me.chanjar.weixin.common.bean; +import java.io.Serializable; + import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; -import java.io.Serializable; - /** * jspai signature. * - * @author chanjarster + * @author Daniel Qian */ @Data @Builder diff --git a/weixin-java-common/src/main/java/me/chanjar/weixin/common/bean/menu/WxMenuButton.java b/weixin-java-common/src/main/java/me/chanjar/weixin/common/bean/menu/WxMenuButton.java index d6d741333..5e0b9db96 100644 --- a/weixin-java-common/src/main/java/me/chanjar/weixin/common/bean/menu/WxMenuButton.java +++ b/weixin-java-common/src/main/java/me/chanjar/weixin/common/bean/menu/WxMenuButton.java @@ -10,6 +10,11 @@ import org.apache.commons.lang3.builder.ToStringStyle; import com.google.gson.annotations.SerializedName; import lombok.Data; +/** + * menu button. + * + * @author Daniel Qian + */ @Data public class WxMenuButton implements Serializable { private static final long serialVersionUID = -1070939403109776555L; diff --git a/weixin-java-common/src/main/java/me/chanjar/weixin/common/bean/menu/WxMenuRule.java b/weixin-java-common/src/main/java/me/chanjar/weixin/common/bean/menu/WxMenuRule.java index 021ba98b7..632279b92 100644 --- a/weixin-java-common/src/main/java/me/chanjar/weixin/common/bean/menu/WxMenuRule.java +++ b/weixin-java-common/src/main/java/me/chanjar/weixin/common/bean/menu/WxMenuRule.java @@ -8,6 +8,11 @@ import org.apache.commons.lang3.builder.ToStringStyle; import com.google.gson.annotations.SerializedName; import lombok.Data; +/** + * menu rule. + * + * @author Daniel Qian + */ @Data public class WxMenuRule implements Serializable { private static final long serialVersionUID = -4587181819499286670L; diff --git a/weixin-java-common/src/main/java/me/chanjar/weixin/common/bean/result/WxMediaUploadResult.java b/weixin-java-common/src/main/java/me/chanjar/weixin/common/bean/result/WxMediaUploadResult.java index 6c0bbc12d..49e680fab 100644 --- a/weixin-java-common/src/main/java/me/chanjar/weixin/common/bean/result/WxMediaUploadResult.java +++ b/weixin-java-common/src/main/java/me/chanjar/weixin/common/bean/result/WxMediaUploadResult.java @@ -8,6 +8,10 @@ import org.apache.commons.lang3.builder.ToStringStyle; import lombok.Data; import me.chanjar.weixin.common.util.json.WxGsonBuilder; +/** + * + * @author Daniel Qian + */ @Data public class WxMediaUploadResult implements Serializable { private static final long serialVersionUID = 330834334738622341L; diff --git a/weixin-java-common/src/main/java/me/chanjar/weixin/common/session/InternalSession.java b/weixin-java-common/src/main/java/me/chanjar/weixin/common/session/InternalSession.java index 77d4d2829..05cb41363 100644 --- a/weixin-java-common/src/main/java/me/chanjar/weixin/common/session/InternalSession.java +++ b/weixin-java-common/src/main/java/me/chanjar/weixin/common/session/InternalSession.java @@ -1,5 +1,9 @@ package me.chanjar.weixin.common.session; +/** + * + * @author Daniel Qian + */ public interface InternalSession { /** diff --git a/weixin-java-common/src/main/java/me/chanjar/weixin/common/session/InternalSessionManager.java b/weixin-java-common/src/main/java/me/chanjar/weixin/common/session/InternalSessionManager.java index a92e10715..e3d9ab835 100644 --- a/weixin-java-common/src/main/java/me/chanjar/weixin/common/session/InternalSessionManager.java +++ b/weixin-java-common/src/main/java/me/chanjar/weixin/common/session/InternalSessionManager.java @@ -1,5 +1,8 @@ package me.chanjar.weixin.common.session; +/** + * @author Daniel Qian + */ public interface InternalSessionManager { /** diff --git a/weixin-java-common/src/main/java/me/chanjar/weixin/common/session/StandardSession.java b/weixin-java-common/src/main/java/me/chanjar/weixin/common/session/StandardSession.java index 62b609271..3c4ec20c8 100644 --- a/weixin-java-common/src/main/java/me/chanjar/weixin/common/session/StandardSession.java +++ b/weixin-java-common/src/main/java/me/chanjar/weixin/common/session/StandardSession.java @@ -1,11 +1,18 @@ package me.chanjar.weixin.common.session; -import me.chanjar.weixin.common.util.res.StringManager; - -import java.util.*; +import java.util.Collections; +import java.util.Enumeration; +import java.util.HashSet; +import java.util.Map; +import java.util.Set; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.atomic.AtomicInteger; +import me.chanjar.weixin.common.util.res.StringManager; + +/** + * @author Daniel Qian + */ public class StandardSession implements WxSession, InternalSession { /** diff --git a/weixin-java-common/src/main/java/me/chanjar/weixin/common/session/StandardSessionFacade.java b/weixin-java-common/src/main/java/me/chanjar/weixin/common/session/StandardSessionFacade.java index e44930896..aa9f87713 100644 --- a/weixin-java-common/src/main/java/me/chanjar/weixin/common/session/StandardSessionFacade.java +++ b/weixin-java-common/src/main/java/me/chanjar/weixin/common/session/StandardSessionFacade.java @@ -2,6 +2,9 @@ package me.chanjar.weixin.common.session; import java.util.Enumeration; +/** + * @author Daniel Qian + */ public class StandardSessionFacade implements WxSession { /** diff --git a/weixin-java-common/src/main/java/me/chanjar/weixin/common/session/StandardSessionManager.java b/weixin-java-common/src/main/java/me/chanjar/weixin/common/session/StandardSessionManager.java index bfc0d0100..bf2e73587 100644 --- a/weixin-java-common/src/main/java/me/chanjar/weixin/common/session/StandardSessionManager.java +++ b/weixin-java-common/src/main/java/me/chanjar/weixin/common/session/StandardSessionManager.java @@ -1,15 +1,18 @@ package me.chanjar.weixin.common.session; -import me.chanjar.weixin.common.util.res.StringManager; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - import java.util.Map; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.atomic.AtomicBoolean; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import me.chanjar.weixin.common.util.res.StringManager; + /** - * 基于内存的session manager + * 基于内存的session manager. + * + * @author Daniel Qian */ public class StandardSessionManager implements WxSessionManager, InternalSessionManager { diff --git a/weixin-java-common/src/main/java/me/chanjar/weixin/common/session/TooManyActiveSessionsException.java b/weixin-java-common/src/main/java/me/chanjar/weixin/common/session/TooManyActiveSessionsException.java index fa1b45faf..114dd1c4e 100644 --- a/weixin-java-common/src/main/java/me/chanjar/weixin/common/session/TooManyActiveSessionsException.java +++ b/weixin-java-common/src/main/java/me/chanjar/weixin/common/session/TooManyActiveSessionsException.java @@ -19,6 +19,8 @@ package me.chanjar.weixin.common.session; /** * An exception that indicates the maximum number of active sessions has been * reached and the server is refusing to create any new sessions. + * + * @author Daniel Qian */ public class TooManyActiveSessionsException extends IllegalStateException { diff --git a/weixin-java-common/src/main/java/me/chanjar/weixin/common/session/WxSession.java b/weixin-java-common/src/main/java/me/chanjar/weixin/common/session/WxSession.java index 25bed2d27..3aa79f9ad 100644 --- a/weixin-java-common/src/main/java/me/chanjar/weixin/common/session/WxSession.java +++ b/weixin-java-common/src/main/java/me/chanjar/weixin/common/session/WxSession.java @@ -2,6 +2,9 @@ package me.chanjar.weixin.common.session; import java.util.Enumeration; +/** + * @author Daniel Qian + */ public interface WxSession { Object getAttribute(String name); diff --git a/weixin-java-common/src/main/java/me/chanjar/weixin/common/session/WxSessionManager.java b/weixin-java-common/src/main/java/me/chanjar/weixin/common/session/WxSessionManager.java index c966ddab2..789e27287 100644 --- a/weixin-java-common/src/main/java/me/chanjar/weixin/common/session/WxSessionManager.java +++ b/weixin-java-common/src/main/java/me/chanjar/weixin/common/session/WxSessionManager.java @@ -1,5 +1,8 @@ package me.chanjar.weixin.common.session; +/** + * @author Daniel Qian + */ public interface WxSessionManager { /** diff --git a/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/bean/WxCpXmlMessage.java b/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/bean/WxCpXmlMessage.java index 97380c4e9..abb880d2e 100644 --- a/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/bean/WxCpXmlMessage.java +++ b/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/bean/WxCpXmlMessage.java @@ -13,6 +13,7 @@ import org.apache.commons.lang3.builder.ToStringStyle; import com.thoughtworks.xstream.annotations.XStreamAlias; import com.thoughtworks.xstream.annotations.XStreamConverter; import lombok.Data; +import lombok.extern.slf4j.Slf4j; import me.chanjar.weixin.common.api.WxConsts; import me.chanjar.weixin.common.util.xml.XStreamCDataConverter; import me.chanjar.weixin.cp.config.WxCpConfigStorage; @@ -29,8 +30,9 @@ import me.chanjar.weixin.cp.util.xml.XStreamTransformer; * * @author Daniel Qian */ -@XStreamAlias("xml") @Data +@Slf4j +@XStreamAlias("xml") public class WxCpXmlMessage implements Serializable { private static final long serialVersionUID = -1042994982179476410L; @@ -52,6 +54,24 @@ public class WxCpXmlMessage implements Serializable { @XStreamAlias("CreateTime") private Long createTime; + /** + *
+ * 当接受用户消息时,可能会获得以下值:
+ * {@link WxConsts.XmlMsgType#TEXT}
+ * {@link WxConsts.XmlMsgType#IMAGE}
+ * {@link WxConsts.XmlMsgType#VOICE}
+ * {@link WxConsts.XmlMsgType#VIDEO}
+ * {@link WxConsts.XmlMsgType#LOCATION}
+ * {@link WxConsts.XmlMsgType#LINK}
+ * {@link WxConsts.XmlMsgType#EVENT}
+ * 当发送消息的时候使用:
+ * {@link WxConsts.XmlMsgType#TEXT}
+ * {@link WxConsts.XmlMsgType#IMAGE}
+ * {@link WxConsts.XmlMsgType#VOICE}
+ * {@link WxConsts.XmlMsgType#VIDEO}
+ * {@link WxConsts.XmlMsgType#NEWS}
+ *
+ */
@XStreamAlias("MsgType")
@XStreamConverter(value = XStreamCDataConverter.class)
private String msgType;
@@ -339,19 +359,16 @@ public class WxCpXmlMessage implements Serializable {
/**
* 从加密字符串转换.
*/
- public static WxCpXmlMessage fromEncryptedXml(
- String encryptedXml,
- WxCpConfigStorage wxCpConfigStorage,
- String timestamp, String nonce, String msgSignature) {
+ public static WxCpXmlMessage fromEncryptedXml(String encryptedXml, WxCpConfigStorage wxCpConfigStorage,
+ String timestamp, String nonce, String msgSignature) {
WxCpCryptUtil cryptUtil = new WxCpCryptUtil(wxCpConfigStorage);
String plainText = cryptUtil.decrypt(msgSignature, timestamp, nonce, encryptedXml);
+ log.debug("解密后的原始xml消息内容:{}", plainText);
return fromXml(plainText);
}
- public static WxCpXmlMessage fromEncryptedXml(
- InputStream is,
- WxCpConfigStorage wxCpConfigStorage,
- String timestamp, String nonce, String msgSignature) {
+ public static WxCpXmlMessage fromEncryptedXml(InputStream is, WxCpConfigStorage wxCpConfigStorage,
+ String timestamp, String nonce, String msgSignature) {
try {
return fromEncryptedXml(IOUtils.toString(is, "UTF-8"), wxCpConfigStorage, timestamp, nonce, msgSignature);
} catch (IOException e) {
@@ -359,36 +376,6 @@ public class WxCpXmlMessage implements Serializable {
}
}
- /**
- *
- * 当接受用户消息时,可能会获得以下值:
- * {@link WxConsts.XmlMsgType#TEXT}
- * {@link WxConsts.XmlMsgType#IMAGE}
- * {@link WxConsts.XmlMsgType#VOICE}
- * {@link WxConsts.XmlMsgType#VIDEO}
- * {@link WxConsts.XmlMsgType#LOCATION}
- * {@link WxConsts.XmlMsgType#LINK}
- * {@link WxConsts.XmlMsgType#EVENT}
- *
- */
- public String getMsgType() {
- return this.msgType;
- }
-
- /**
- *
- * 当发送消息的时候使用:
- * {@link WxConsts.XmlMsgType#TEXT}
- * {@link WxConsts.XmlMsgType#IMAGE}
- * {@link WxConsts.XmlMsgType#VOICE}
- * {@link WxConsts.XmlMsgType#VIDEO}
- * {@link WxConsts.XmlMsgType#NEWS}
- *
- */
- public void setMsgType(String msgType) {
- this.msgType = msgType;
- }
-
@Override
public String toString() {
return ToStringBuilder.reflectionToString(this, ToStringStyle.JSON_STYLE);
diff --git a/weixin-java-cp/src/test/java/me/chanjar/weixin/cp/demo/WxCpDemoServer.java b/weixin-java-cp/src/test/java/me/chanjar/weixin/cp/demo/WxCpDemoServer.java
index a9ab309c3..ff204a80f 100644
--- a/weixin-java-cp/src/test/java/me/chanjar/weixin/cp/demo/WxCpDemoServer.java
+++ b/weixin-java-cp/src/test/java/me/chanjar/weixin/cp/demo/WxCpDemoServer.java
@@ -1,6 +1,16 @@
package me.chanjar.weixin.cp.demo;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.Map;
+
+import org.eclipse.jetty.server.Server;
+import org.eclipse.jetty.servlet.ServletHandler;
+import org.eclipse.jetty.servlet.ServletHolder;
+
+import me.chanjar.weixin.common.error.WxErrorException;
import me.chanjar.weixin.common.session.WxSessionManager;
+import me.chanjar.weixin.cp.WxCpConsts;
import me.chanjar.weixin.cp.api.WxCpService;
import me.chanjar.weixin.cp.api.impl.WxCpServiceImpl;
import me.chanjar.weixin.cp.bean.WxCpXmlMessage;
@@ -9,13 +19,6 @@ import me.chanjar.weixin.cp.bean.WxCpXmlOutTextMessage;
import me.chanjar.weixin.cp.config.WxCpConfigStorage;
import me.chanjar.weixin.cp.message.WxCpMessageHandler;
import me.chanjar.weixin.cp.message.WxCpMessageRouter;
-import org.eclipse.jetty.server.Server;
-import org.eclipse.jetty.servlet.ServletHandler;
-import org.eclipse.jetty.servlet.ServletHolder;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.util.Map;
public class WxCpDemoServer {
@@ -78,9 +81,26 @@ public class WxCpDemoServer {
};
wxCpMessageRouter = new WxCpMessageRouter(wxCpService);
- wxCpMessageRouter.rule().async(false).content("哈哈") // 拦截内容为“哈哈”的消息
- .handler(handler).end().rule().async(false).content("oauth")
- .handler(oauth2handler).end();
+ wxCpMessageRouter.rule()
+ .async(false)
+ .content("哈哈") // 拦截内容为“哈哈”的消息
+ .handler(handler)
+ .end()
+ .rule()
+ .async(false)
+ .content("oauth")
+ .handler(oauth2handler)
+ .end()
+ .rule()
+ .event(WxCpConsts.EventType.CHANGE_CONTACT)
+ .handler(new WxCpMessageHandler() {
+ @Override
+ public WxCpXmlOutMessage handle(WxCpXmlMessage wxMessage, Map