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