1 package com.foxinmy.weixin4j.handler;
2
3 import java.util.HashSet;
4 import java.util.Set;
5
6 import com.foxinmy.weixin4j.request.WeixinMessage;
7 import com.foxinmy.weixin4j.request.WeixinRequest;
8
9
10
11
12
13
14
15
16
17
18 public abstract class MultipleMessageHandlerAdapter implements WeixinMessageHandler {
19
20 private final Set<Class<? extends WeixinMessage>> messageClasses;
21
22 public MultipleMessageHandlerAdapter(Class<? extends WeixinMessage>... messageClasses) {
23 if (messageClasses == null) {
24 throw new IllegalArgumentException("messageClasses not be empty");
25 }
26 this.messageClasses = new HashSet<Class<? extends WeixinMessage>>(
27 Math.max((int) (messageClasses.length / .75f) + 1, 16));
28 for (Class<? extends WeixinMessage> clazz : messageClasses) {
29 this.messageClasses.add(clazz);
30 }
31 }
32
33 @Override
34 public boolean canHandle(WeixinRequest request, WeixinMessage message, Set<String> nodeNames) {
35 return message != null && messageClasses.contains(message.getClass()) && canHandle0(request, message);
36 }
37
38
39
40
41
42
43
44
45
46
47
48 protected boolean canHandle0(WeixinRequest request, WeixinMessage message) {
49 return true;
50 }
51
52 @Override
53 public int weight() {
54 return 1;
55 }
56 }