From fbbd670b0fc1467662188fb4dfd67be4a8c6b6a0 Mon Sep 17 00:00:00 2001 From: jinyu Date: Tue, 29 Dec 2015 20:31:32 +0800 Subject: [PATCH] up --- .../dispatcher/WeixinMessageDispatcher.java | 27 ++++++++++--------- 1 file changed, 15 insertions(+), 12 deletions(-) diff --git a/weixin4j-server/src/main/java/com/foxinmy/weixin4j/dispatcher/WeixinMessageDispatcher.java b/weixin4j-server/src/main/java/com/foxinmy/weixin4j/dispatcher/WeixinMessageDispatcher.java index aed10c88..7796e911 100644 --- a/weixin4j-server/src/main/java/com/foxinmy/weixin4j/dispatcher/WeixinMessageDispatcher.java +++ b/weixin4j-server/src/main/java/com/foxinmy/weixin4j/dispatcher/WeixinMessageDispatcher.java @@ -205,15 +205,26 @@ public class WeixinMessageDispatcher { if (messageHandlers == null) { return null; } - WeixinMessageHandler messageHandler = null; + List matchedMessageHandlers = new ArrayList(); for (WeixinMessageHandler handler : messageHandlers) { if (handler.canHandle(request, message, nodeNames)) { - messageHandler = handler; + matchedMessageHandlers.add(handler); break; } } - return new MessageHandlerExecutor(context, messageHandler, - getMessageInterceptors()); + if (matchedMessageHandlers.isEmpty()) { + return null; + } + Collections.sort(matchedMessageHandlers, + new Comparator() { + @Override + public int compare(WeixinMessageHandler m1, + WeixinMessageHandler m2) { + return m2.weight() - m1.weight(); + } + }); + return new MessageHandlerExecutor(context, + matchedMessageHandlers.get(0), getMessageInterceptors()); } /** @@ -258,14 +269,6 @@ public class WeixinMessageDispatcher { } if (messageHandlerList != null && !this.messageHandlerList.isEmpty()) { - Collections.sort(messageHandlerList, - new Comparator() { - @Override - public int compare(WeixinMessageHandler m1, - WeixinMessageHandler m2) { - return m2.weight() - m1.weight(); - } - }); this.messageHandlers = this.messageHandlerList .toArray(new WeixinMessageHandler[this.messageHandlerList .size()]);