From 9dc82b994636702d1f20be2355c3637fac76f780 Mon Sep 17 00:00:00 2001 From: jinyu Date: Sat, 12 Mar 2016 18:06:12 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9EMultipleMessageHandlerAdapter?= =?UTF-8?q?=E5=A4=9A=E4=B8=AA=E6=B6=88=E6=81=AF=E9=80=82=E9=85=8D=E7=B1=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../MultipleMessageHandlerAdapter.java | 62 +++++++++++++++++++ 1 file changed, 62 insertions(+) create mode 100644 weixin4j-server/src/main/java/com/foxinmy/weixin4j/handler/MultipleMessageHandlerAdapter.java diff --git a/weixin4j-server/src/main/java/com/foxinmy/weixin4j/handler/MultipleMessageHandlerAdapter.java b/weixin4j-server/src/main/java/com/foxinmy/weixin4j/handler/MultipleMessageHandlerAdapter.java new file mode 100644 index 00000000..3b6e1384 --- /dev/null +++ b/weixin4j-server/src/main/java/com/foxinmy/weixin4j/handler/MultipleMessageHandlerAdapter.java @@ -0,0 +1,62 @@ +package com.foxinmy.weixin4j.handler; + +import java.util.HashSet; +import java.util.Set; + +import com.foxinmy.weixin4j.exception.WeixinException; +import com.foxinmy.weixin4j.request.WeixinMessage; +import com.foxinmy.weixin4j.request.WeixinRequest; + +/** + * 多个消息类型适配 + * + * @className MultipleMessageHandlerAdapter + * @author jy + * @date 2016年3月12日 + * @since JDK 1.6 + * @see + */ +public abstract class MultipleMessageHandlerAdapter implements + WeixinMessageHandler { + + private final Set> messageClasses; + + public MultipleMessageHandlerAdapter( + Class... messageClasses) { + if (messageClasses == null) { + throw new IllegalArgumentException("messageClasses not be empty"); + } + this.messageClasses = new HashSet>( + (int) Math.ceil(messageClasses.length * 0.75)); + for (Class clazz : messageClasses) { + this.messageClasses.add(clazz); + } + } + + @Override + public boolean canHandle(WeixinRequest request, WeixinMessage message, + Set nodeNames) throws WeixinException { + return message != null && messageClasses.contains(message.getClass()) + && canHandle0(request, message); + } + + /** + * 能否处理请求 + * + * @param request + * 微信请求 + * @param message + * 微信消息 + * @return true则执行doHandler + * @throws WeixinException + */ + public boolean canHandle0(WeixinRequest request, WeixinMessage message) + throws WeixinException { + return true; + } + + @Override + public int weight() { + return 1; + } +}