diff --git a/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/api/WxCpTpService.java b/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/api/WxCpTpService.java index ad2f403af..1e3852c50 100644 --- a/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/api/WxCpTpService.java +++ b/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/api/WxCpTpService.java @@ -27,13 +27,16 @@ public interface WxCpTpService { * @param timestamp 时间戳 * @param nonce 随机数 * @param data 微信传输过来的数据,有可能是echoStr,有可能是xml消息 + * @return the boolean */ boolean checkSignature(String msgSignature, String timestamp, String nonce, String data); /** * 获取suite_access_token, 不强制刷新suite_access_token * - * @see #getSuiteAccessToken(boolean) + * @return the suite access token + * @throws WxErrorException the wx error exception + * @see #getSuiteAccessToken(boolean) #getSuiteAccessToken(boolean) */ String getSuiteAccessToken() throws WxErrorException; @@ -47,13 +50,17 @@ public interface WxCpTpService { * * * @param forceRefresh 强制刷新 + * @return the suite access token + * @throws WxErrorException the wx error exception */ String getSuiteAccessToken(boolean forceRefresh) throws WxErrorException; /** * 获得suite_ticket,不强制刷新suite_ticket * - * @see #getSuiteTicket(boolean) + * @return the suite ticket + * @throws WxErrorException the wx error exception + * @see #getSuiteTicket(boolean) #getSuiteTicket(boolean) */ String getSuiteTicket() throws WxErrorException; @@ -66,6 +73,8 @@ public interface WxCpTpService { * * * @param forceRefresh 强制刷新 + * @return the suite ticket + * @throws WxErrorException the wx error exception */ String getSuiteTicket(boolean forceRefresh) throws WxErrorException; @@ -73,6 +82,8 @@ public interface WxCpTpService { * 小程序登录凭证校验 * * @param jsCode 登录时获取的 code + * @return the wx cp ma js code 2 session result + * @throws WxErrorException the wx error exception */ WxCpMaJsCode2SessionResult jsCode2Session(String jsCode) throws WxErrorException; @@ -81,6 +92,8 @@ public interface WxCpTpService { * * @param authCorpid 授权方corpid * @param permanentCode 永久授权码,通过get_permanent_code获取 + * @return the corp token + * @throws WxErrorException the wx error exception */ WxAccessToken getCorpToken(String authCorpid, String permanentCode) throws WxErrorException; @@ -88,7 +101,8 @@ public interface WxCpTpService { * 获取企业永久授权码 . * * @param authCode . - * @return . + * @return . permanent code + * @throws WxErrorException the wx error exception */ @Deprecated WxCpTpCorp getPermanentCode(String authCode) throws WxErrorException; @@ -99,13 +113,11 @@ public interface WxCpTpService { * 原来的方法实现不全 * * - * @param authCode - * @return - * + * @param authCode the auth code + * @return permanent code info + * @throws WxErrorException the wx error exception * @author yuan - * @since 2020-03-18 - * - * @throws WxErrorException + * @since 2020 -03-18 */ WxCpTpPermanentCodeInfo getPermanentCodeInfo(String authCode) throws WxErrorException; @@ -113,28 +125,31 @@ public interface WxCpTpService { *
* 获取预授权链接 *+ * * @param redirectUri 授权完成后的回调网址 - * @param state a-zA-Z0-9的参数值(不超过128个字节),用于第三方自行校验session,防止跨域攻击 - * @return - * @throws WxErrorException + * @param state a-zA-Z0-9的参数值(不超过128个字节),用于第三方自行校验session,防止跨域攻击 + * @return pre auth url + * @throws WxErrorException the wx error exception */ - String getPreAuthUrl(String redirectUri,String state) throws WxErrorException; + String getPreAuthUrl(String redirectUri, String state) throws WxErrorException; /** * 获取企业的授权信息 * - * @param authCorpId 授权企业的corpId + * @param authCorpId 授权企业的corpId * @param permanentCode 授权企业的永久授权码 - * @return - * @throws WxErrorException + * @return auth info + * @throws WxErrorException the wx error exception */ - WxCpTpAuthInfo getAuthInfo(String authCorpId,String permanentCode) throws WxErrorException; + WxCpTpAuthInfo getAuthInfo(String authCorpId, String permanentCode) throws WxErrorException; /** * 当本Service没有实现某个API的时候,可以用这个,针对所有微信API中的GET请求. * * @param url 接口地址 * @param queryParam 请求参数 + * @return the string + * @throws WxErrorException the wx error exception */ String get(String url, String queryParam) throws WxErrorException; @@ -143,6 +158,8 @@ public interface WxCpTpService { * * @param url 接口地址 * @param postData 请求body字符串 + * @return the string + * @throws WxErrorException the wx error exception */ String post(String url, String postData) throws WxErrorException; @@ -153,11 +170,13 @@ public interface WxCpTpService { * 可以参考,{@link MediaUploadRequestExecutor}的实现方法 * * + * @param
@@ -49,9 +50,9 @@ import me.chanjar.weixin.cp.bean.message.WxCpXmlOutMessage; * * @author Daniel Qian */ +@Slf4j public class WxCpMessageRouter { private static final int DEFAULT_THREAD_POOL_SIZE = 100; - private final Logger log = LoggerFactory.getLogger(WxCpMessageRouter.class); private final Listrules = new ArrayList<>(); private final WxCpService wxCpService; @@ -156,37 +157,31 @@ public class WxCpMessageRouter { // 返回最后一个非异步的rule的执行结果 if (rule.isAsync()) { futures.add( - this.executorService.submit(new Runnable() { - @Override - public void run() { - rule.service(wxMessage, context, WxCpMessageRouter.this.wxCpService, WxCpMessageRouter.this.sessionManager, WxCpMessageRouter.this.exceptionHandler); - } + this.executorService.submit(() -> { + rule.service(wxMessage, context, WxCpMessageRouter.this.wxCpService, WxCpMessageRouter.this.sessionManager, WxCpMessageRouter.this.exceptionHandler); }) ); } else { res = rule.service(wxMessage, context, this.wxCpService, this.sessionManager, this.exceptionHandler); // 在同步操作结束,session访问结束 - this.log.debug("End session access: async=false, sessionId={}", wxMessage.getFromUserName()); + log.debug("End session access: async=false, sessionId={}", wxMessage.getFromUserName()); sessionEndAccess(wxMessage); } } if (futures.size() > 0) { - this.executorService.submit(new Runnable() { - @Override - public void run() { - for (Future future : futures) { - try { - future.get(); - WxCpMessageRouter.this.log.debug("End session access: async=true, sessionId={}", wxMessage.getFromUserName()); - // 异步操作结束,session访问结束 - sessionEndAccess(wxMessage); - } catch (InterruptedException e) { - WxCpMessageRouter.this.log.error("Error happened when wait task finish", e); - Thread.currentThread().interrupt(); - } catch (ExecutionException e) { - WxCpMessageRouter.this.log.error("Error happened when wait task finish", e); - } + this.executorService.submit(() -> { + for (Future future : futures) { + try { + future.get(); + log.debug("End session access: async=true, sessionId={}", wxMessage.getFromUserName()); + // 异步操作结束,session访问结束 + sessionEndAccess(wxMessage); + } catch (InterruptedException e) { + log.error("Error happened when wait task finish", e); + Thread.currentThread().interrupt(); + } catch (ExecutionException e) { + log.error("Error happened when wait task finish", e); } } }); @@ -198,7 +193,7 @@ public class WxCpMessageRouter { * 处理微信消息. */ public WxCpXmlOutMessage route(final WxCpXmlMessage wxMessage) { - return this.route(wxMessage, new HashMap (2)); + return this.route(wxMessage, new HashMap<>(2)); } private boolean isMsgDuplicated(WxCpXmlMessage wxMessage) { diff --git a/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/message/WxCpMessageRouterRule.java b/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/message/WxCpMessageRouterRule.java index 3c7b5c66f..739bb0330 100644 --- a/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/message/WxCpMessageRouterRule.java +++ b/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/message/WxCpMessageRouterRule.java @@ -1,5 +1,6 @@ package me.chanjar.weixin.cp.message; +import lombok.Data; import me.chanjar.weixin.common.api.WxErrorExceptionHandler; import me.chanjar.weixin.common.error.WxErrorException; import me.chanjar.weixin.common.session.WxSessionManager; @@ -8,14 +9,16 @@ import me.chanjar.weixin.cp.bean.message.WxCpXmlMessage; import me.chanjar.weixin.cp.bean.message.WxCpXmlOutMessage; import org.apache.commons.lang3.StringUtils; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.util.*; import java.util.regex.Pattern; +/** + * The type Wx cp message router rule. + * + * @author Daniel Qian + */ +@Data public class WxCpMessageRouterRule { - private final WxCpMessageRouter routerBuilder; private boolean async = true; @@ -44,6 +47,11 @@ public class WxCpMessageRouterRule { private List interceptors = new ArrayList<>(); + /** + * Instantiates a new Wx cp message router rule. + * + * @param routerBuilder the router builder + */ protected WxCpMessageRouterRule(WxCpMessageRouter routerBuilder) { this.routerBuilder = routerBuilder; } @@ -51,7 +59,8 @@ public class WxCpMessageRouterRule { /** * 设置是否异步执行,默认是true * - * @param async + * @param async the async + * @return the wx cp message router rule */ public WxCpMessageRouterRule async(boolean async) { this.async = async; @@ -61,7 +70,8 @@ public class WxCpMessageRouterRule { /** * 如果agentId匹配 * - * @param agentId + * @param agentId the agent id + * @return the wx cp message router rule */ public WxCpMessageRouterRule agentId(Integer agentId) { this.agentId = agentId; @@ -71,7 +81,8 @@ public class WxCpMessageRouterRule { /** * 如果msgType等于某值 * - * @param msgType + * @param msgType the msg type + * @return the wx cp message router rule */ public WxCpMessageRouterRule msgType(String msgType) { this.msgType = msgType; @@ -81,7 +92,8 @@ public class WxCpMessageRouterRule { /** * 如果event等于某值 * - * @param event + * @param event the event + * @return the wx cp message router rule */ public WxCpMessageRouterRule event(String event) { this.event = event; @@ -91,7 +103,8 @@ public class WxCpMessageRouterRule { /** * 如果eventKey等于某值 * - * @param eventKey + * @param eventKey the event key + * @return the wx cp message router rule */ public WxCpMessageRouterRule eventKey(String eventKey) { this.eventKey = eventKey; @@ -100,6 +113,9 @@ public class WxCpMessageRouterRule { /** * 如果eventKey匹配该正则表达式 + * + * @param regex the regex + * @return the wx cp message router rule */ public WxCpMessageRouterRule eventKeyRegex(String regex) { this.eventKeyRegex = regex; @@ -109,7 +125,8 @@ public class WxCpMessageRouterRule { /** * 如果content等于某值 * - * @param content + * @param content the content + * @return the wx cp message router rule */ public WxCpMessageRouterRule content(String content) { this.content = content; @@ -119,7 +136,8 @@ public class WxCpMessageRouterRule { /** * 如果content匹配该正则表达式 * - * @param regex + * @param regex the regex + * @return the wx cp message router rule */ public WxCpMessageRouterRule rContent(String regex) { this.rContent = regex; @@ -129,7 +147,8 @@ public class WxCpMessageRouterRule { /** * 如果fromUser等于某值 * - * @param fromUser + * @param fromUser the from user + * @return the wx cp message router rule */ public WxCpMessageRouterRule fromUser(String fromUser) { this.fromUser = fromUser; @@ -139,7 +158,8 @@ public class WxCpMessageRouterRule { /** * 如果消息匹配某个matcher,用在用户需要自定义更复杂的匹配规则的时候 * - * @param matcher + * @param matcher the matcher + * @return the wx cp message router rule */ public WxCpMessageRouterRule matcher(WxCpMessageMatcher matcher) { this.matcher = matcher; @@ -149,7 +169,8 @@ public class WxCpMessageRouterRule { /** * 设置微信消息拦截器 * - * @param interceptor + * @param interceptor the interceptor + * @return the wx cp message router rule */ public WxCpMessageRouterRule interceptor(WxCpMessageInterceptor interceptor) { return interceptor(interceptor, (WxCpMessageInterceptor[]) null); @@ -158,15 +179,14 @@ public class WxCpMessageRouterRule { /** * 设置微信消息拦截器 * - * @param interceptor - * @param otherInterceptors + * @param interceptor the interceptor + * @param otherInterceptors the other interceptors + * @return the wx cp message router rule */ public WxCpMessageRouterRule interceptor(WxCpMessageInterceptor interceptor, WxCpMessageInterceptor... otherInterceptors) { this.interceptors.add(interceptor); if (otherInterceptors != null && otherInterceptors.length > 0) { - for (WxCpMessageInterceptor i : otherInterceptors) { - this.interceptors.add(i); - } + Collections.addAll(this.interceptors, otherInterceptors); } return this; } @@ -174,7 +194,8 @@ public class WxCpMessageRouterRule { /** * 设置微信消息处理器 * - * @param handler + * @param handler the handler + * @return the wx cp message router rule */ public WxCpMessageRouterRule handler(WxCpMessageHandler handler) { return handler(handler, (WxCpMessageHandler[]) null); @@ -183,21 +204,22 @@ public class WxCpMessageRouterRule { /** * 设置微信消息处理器 * - * @param handler - * @param otherHandlers + * @param handler the handler + * @param otherHandlers the other handlers + * @return the wx cp message router rule */ public WxCpMessageRouterRule handler(WxCpMessageHandler handler, WxCpMessageHandler... otherHandlers) { this.handlers.add(handler); if (otherHandlers != null && otherHandlers.length > 0) { - for (WxCpMessageHandler i : otherHandlers) { - this.handlers.add(i); - } + Collections.addAll(this.handlers, otherHandlers); } return this; } /** * 规则结束,代表如果一个消息匹配该规则,那么它将不再会进入其他规则 + * + * @return the wx cp message router */ public WxCpMessageRouter end() { this.routerBuilder.getRules().add(this); @@ -206,12 +228,20 @@ public class WxCpMessageRouterRule { /** * 规则结束,但是消息还会进入其他规则 + * + * @return the wx cp message router */ public WxCpMessageRouter next() { this.reEnter = true; return end(); } + /** + * Test boolean. + * + * @param wxMessage the wx message + * @return the boolean + */ protected boolean test(WxCpXmlMessage wxMessage) { return (this.fromUser == null || this.fromUser.equals(wxMessage.getFromUserName())) @@ -237,7 +267,11 @@ public class WxCpMessageRouterRule { /** * 处理微信推送过来的消息 * - * @param wxMessage + * @param wxMessage the wx message + * @param context the context + * @param wxCpService the wx cp service + * @param sessionManager the session manager + * @param exceptionHandler the exception handler * @return true 代表继续执行别的router,false 代表停止执行别的router */ protected WxCpXmlOutMessage service(WxCpXmlMessage wxMessage, @@ -274,60 +308,5 @@ public class WxCpMessageRouterRule { } - public void setFromUser(String fromUser) { - this.fromUser = fromUser; - } - - public void setMsgType(String msgType) { - this.msgType = msgType; - } - - public void setEvent(String event) { - this.event = event; - } - - public void setEventKey(String eventKey) { - this.eventKey = eventKey; - } - - public void setContent(String content) { - this.content = content; - } - - public void setrContent(String rContent) { - this.rContent = rContent; - } - - public void setMatcher(WxCpMessageMatcher matcher) { - this.matcher = matcher; - } - - public void setAgentId(Integer agentId) { - this.agentId = agentId; - } - - public void setHandlers(List handlers) { - this.handlers = handlers; - } - - public void setInterceptors(List interceptors) { - this.interceptors = interceptors; - } - - public boolean isAsync() { - return this.async; - } - - public void setAsync(boolean async) { - this.async = async; - } - - public boolean isReEnter() { - return this.reEnter; - } - - public void setReEnter(boolean reEnter) { - this.reEnter = reEnter; - } } 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 2067e03eb..52bc8e2ab 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,24 +1,19 @@ package me.chanjar.weixin.cp.demo; -import java.io.IOException; -import java.io.InputStream; -import java.util.Map; - +import me.chanjar.weixin.cp.api.WxCpService; +import me.chanjar.weixin.cp.api.impl.WxCpServiceImpl; +import me.chanjar.weixin.cp.bean.message.WxCpXmlOutMessage; +import me.chanjar.weixin.cp.bean.message.WxCpXmlOutTextMessage; +import me.chanjar.weixin.cp.config.WxCpConfigStorage; +import me.chanjar.weixin.cp.constant.WxCpConsts; +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 me.chanjar.weixin.common.error.WxErrorException; -import me.chanjar.weixin.common.session.WxSessionManager; -import me.chanjar.weixin.cp.constant.WxCpConsts; -import me.chanjar.weixin.cp.api.WxCpService; -import me.chanjar.weixin.cp.api.impl.WxCpServiceImpl; -import me.chanjar.weixin.cp.bean.message.WxCpXmlMessage; -import me.chanjar.weixin.cp.bean.message.WxCpXmlOutMessage; -import me.chanjar.weixin.cp.bean.message.WxCpXmlOutTextMessage; -import me.chanjar.weixin.cp.config.WxCpConfigStorage; -import me.chanjar.weixin.cp.message.WxCpMessageHandler; -import me.chanjar.weixin.cp.message.WxCpMessageRouter; +import java.io.IOException; +import java.io.InputStream; public class WxCpDemoServer { @@ -54,30 +49,20 @@ public class WxCpDemoServer { wxCpService = new WxCpServiceImpl(); wxCpService.setWxCpConfigStorage(config); - WxCpMessageHandler handler = new WxCpMessageHandler() { - @Override - public WxCpXmlOutMessage handle(WxCpXmlMessage wxMessage, - Map context, WxCpService wxService, - WxSessionManager sessionManager) { - WxCpXmlOutTextMessage m = WxCpXmlOutMessage.TEXT().content("测试加密消息") - .fromUser(wxMessage.getToUserName()) - .toUser(wxMessage.getFromUserName()).build(); - return m; - } + WxCpMessageHandler handler = (wxMessage, context, wxService, sessionManager) -> { + WxCpXmlOutTextMessage m = WxCpXmlOutMessage.TEXT().content("测试加密消息") + .fromUser(wxMessage.getToUserName()) + .toUser(wxMessage.getFromUserName()).build(); + return m; }; - WxCpMessageHandler oauth2handler = new WxCpMessageHandler() { - @Override - public WxCpXmlOutMessage handle(WxCpXmlMessage wxMessage, - Map context, WxCpService wxService, - WxSessionManager sessionManager) { - String href = "测试oauth2"; - return WxCpXmlOutMessage.TEXT().content(href) - .fromUser(wxMessage.getToUserName()) - .toUser(wxMessage.getFromUserName()).build(); - } + WxCpMessageHandler oauth2handler = (wxMessage, context, wxService, sessionManager) -> { + String href = "测试oauth2"; + return WxCpXmlOutMessage.TEXT().content(href) + .fromUser(wxMessage.getToUserName()) + .toUser(wxMessage.getFromUserName()).build(); }; wxCpMessageRouter = new WxCpMessageRouter(wxCpService); @@ -93,12 +78,9 @@ public class WxCpDemoServer { .end() .rule() .event(WxCpConsts.EventType.CHANGE_CONTACT) - .handler(new WxCpMessageHandler() { - @Override - public WxCpXmlOutMessage handle(WxCpXmlMessage wxMessage, Map context, WxCpService wxCpService, WxSessionManager sessionManager) throws WxErrorException { - System.out.println("通讯录发生变更"); - return null; - } + .handler((wxMessage, context, wxCpService, sessionManager) -> { + System.out.println("通讯录发生变更"); + return null; }) .end(); diff --git a/weixin-java-cp/src/test/java/me/chanjar/weixin/cp/demo/WxCpEndpointServlet.java b/weixin-java-cp/src/test/java/me/chanjar/weixin/cp/demo/WxCpEndpointServlet.java index 3f48c3213..a5e785ffd 100644 --- a/weixin-java-cp/src/test/java/me/chanjar/weixin/cp/demo/WxCpEndpointServlet.java +++ b/weixin-java-cp/src/test/java/me/chanjar/weixin/cp/demo/WxCpEndpointServlet.java @@ -61,7 +61,6 @@ public class WxCpEndpointServlet extends HttpServlet { response.getWriter().write(outMessage.toEncryptedXml(this.wxCpConfigStorage)); } - return; } } diff --git a/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/message/WxMaMessageRouter.java b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/message/WxMaMessageRouter.java index e932da641..031c688c5 100644 --- a/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/message/WxMaMessageRouter.java +++ b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/message/WxMaMessageRouter.java @@ -45,7 +45,7 @@ public class WxMaMessageRouter { this.wxMaService = wxMaService; ThreadFactory namedThreadFactory = new ThreadFactoryBuilder().setNameFormat("WxMaMessageRouter-pool-%d").build(); this.executorService = new ThreadPoolExecutor(DEFAULT_THREAD_POOL_SIZE, DEFAULT_THREAD_POOL_SIZE, - 0L, TimeUnit.MILLISECONDS, new LinkedBlockingQueue (), namedThreadFactory); + 0L, TimeUnit.MILLISECONDS, new LinkedBlockingQueue<>(), namedThreadFactory); this.sessionManager = new StandardSessionManager(); this.exceptionHandler = new LogExceptionHandler(); this.messageDuplicateChecker = new WxMessageInMemoryDuplicateChecker(); @@ -88,11 +88,8 @@ public class WxMaMessageRouter { // 返回最后一个非异步的rule的执行结果 if (rule.isAsync()) { futures.add( - this.executorService.submit(new Runnable() { - @Override - public void run() { - rule.service(wxMessage, context, WxMaMessageRouter.this.wxMaService, WxMaMessageRouter.this.sessionManager, WxMaMessageRouter.this.exceptionHandler); - } + this.executorService.submit(() -> { + rule.service(wxMessage, context, WxMaMessageRouter.this.wxMaService, WxMaMessageRouter.this.sessionManager, WxMaMessageRouter.this.exceptionHandler); }) ); } else { @@ -104,18 +101,15 @@ public class WxMaMessageRouter { } if (futures.size() > 0) { - this.executorService.submit(new Runnable() { - @Override - public void run() { - for (Future> future : futures) { - try { - future.get(); - WxMaMessageRouter.this.log.debug("End session access: async=true, sessionId={}", wxMessage.getFromUser()); - // 异步操作结束,session访问结束 - sessionEndAccess(wxMessage); - } catch (InterruptedException | ExecutionException e) { - WxMaMessageRouter.this.log.error("Error happened when wait task finish", e); - } + this.executorService.submit(() -> { + for (Future> future : futures) { + try { + future.get(); + WxMaMessageRouter.this.log.debug("End session access: async=true, sessionId={}", wxMessage.getFromUser()); + // 异步操作结束,session访问结束 + sessionEndAccess(wxMessage); + } catch (InterruptedException | ExecutionException e) { + WxMaMessageRouter.this.log.error("Error happened when wait task finish", e); } } }); @@ -124,7 +118,7 @@ public class WxMaMessageRouter { } public WxMaXmlOutMessage route(final WxMaMessage wxMessage) { - return this.route(wxMessage, new HashMap (2)); + return this.route(wxMessage, new HashMap<>(2)); } private boolean isMsgDuplicated(WxMaMessage wxMessage) { diff --git a/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/message/WxMaMessageRouterRule.java b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/message/WxMaMessageRouterRule.java index 41f3e9957..99181e043 100644 --- a/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/message/WxMaMessageRouterRule.java +++ b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/message/WxMaMessageRouterRule.java @@ -6,10 +6,7 @@ import me.chanjar.weixin.common.api.WxErrorExceptionHandler; import me.chanjar.weixin.common.error.WxErrorException; import me.chanjar.weixin.common.session.WxSessionManager; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.util.*; import java.util.regex.Pattern; /** @@ -135,9 +132,7 @@ public class WxMaMessageRouterRule { public WxMaMessageRouterRule interceptor(WxMaMessageInterceptor interceptor, WxMaMessageInterceptor... otherInterceptors) { this.interceptors.add(interceptor); if (otherInterceptors != null && otherInterceptors.length > 0) { - for (WxMaMessageInterceptor i : otherInterceptors) { - this.interceptors.add(i); - } + Collections.addAll(this.interceptors, otherInterceptors); } return this; } @@ -155,9 +150,7 @@ public class WxMaMessageRouterRule { public WxMaMessageRouterRule handler(WxMaMessageHandler handler, WxMaMessageHandler... otherHandlers) { this.handlers.add(handler); if (otherHandlers != null && otherHandlers.length > 0) { - for (WxMaMessageHandler i : otherHandlers) { - this.handlers.add(i); - } + Collections.addAll(this.handlers, otherHandlers); } return this; } diff --git a/weixin-java-open/src/main/java/me/chanjar/weixin/open/api/impl/WxOpenMpServiceImpl.java b/weixin-java-open/src/main/java/me/chanjar/weixin/open/api/impl/WxOpenMpServiceImpl.java index 5efa429ad..ab0a9055b 100644 --- a/weixin-java-open/src/main/java/me/chanjar/weixin/open/api/impl/WxOpenMpServiceImpl.java +++ b/weixin-java-open/src/main/java/me/chanjar/weixin/open/api/impl/WxOpenMpServiceImpl.java @@ -1,9 +1,8 @@ package me.chanjar.weixin.open.api.impl; import me.chanjar.weixin.common.error.WxErrorException; -import me.chanjar.weixin.mp.config.WxMpConfigStorage; import me.chanjar.weixin.mp.api.impl.WxMpServiceImpl; -import me.chanjar.weixin.mp.bean.result.WxMpOAuth2AccessToken; +import me.chanjar.weixin.mp.config.WxMpConfigStorage; import me.chanjar.weixin.open.api.WxOpenComponentService; /**