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