1 package com.foxinmy.weixin4j.handler;
2
3 import java.util.Set;
4
5 import com.foxinmy.weixin4j.request.WeixinMessage;
6 import com.foxinmy.weixin4j.request.WeixinRequest;
7 import com.foxinmy.weixin4j.response.WeixinResponse;
8 import com.foxinmy.weixin4j.util.ClassUtil;
9
10
11
12
13
14
15
16
17
18
19 @SuppressWarnings("unchecked")
20 public abstract class MessageHandlerAdapter<M extends WeixinMessage> implements
21 WeixinMessageHandler {
22
23 @Override
24 public boolean canHandle(WeixinRequest request, WeixinMessage message,
25 Set<String> nodeNames) {
26 return message != null
27 && message.getClass() == ClassUtil.getGenericType(getClass())
28 && canHandle0(request, (M) message);
29 }
30
31
32
33
34
35
36
37
38
39
40 protected boolean canHandle0(WeixinRequest request, M message) {
41 return true;
42 }
43
44 @Override
45 public WeixinResponse doHandle(WeixinRequest request, WeixinMessage message) {
46 return doHandle0((M) message);
47 }
48
49
50
51
52
53
54
55
56 protected abstract WeixinResponse doHandle0(M message);
57
58
59
60
61 @Override
62 public int weight() {
63 return 1;
64 }
65 }