1 package com.foxinmy.weixin4j.interceptor;
2
3 import com.foxinmy.weixin4j.handler.WeixinMessageHandler;
4 import com.foxinmy.weixin4j.request.WeixinMessage;
5 import com.foxinmy.weixin4j.request.WeixinRequest;
6 import com.foxinmy.weixin4j.response.WeixinResponse;
7
8 import io.netty.channel.ChannelHandlerContext;
9
10 /**
11 * 微信消息拦截器
12 *
13 * @className WeixinMessageInterceptor
14 * @author jinyu(foxinmy@gmail.com)
15 * @date 2015年5月7日
16 * @since JDK 1.6
17 * @see MessageInterceptorAdapter
18 */
19 public interface WeixinMessageInterceptor {
20
21 /**
22 * 执行handler前
23 *
24 * @param context
25 * 通道环境
26 * @param request
27 * 微信请求
28 * @param message
29 * 微信消息
30 * @param handler
31 * 消息处理器
32 * @return 返回true执行下一个拦截器
33 * @throws WeixinException
34 */
35 boolean preHandle(ChannelHandlerContext context, WeixinRequest request,
36 WeixinMessage message, WeixinMessageHandler handler);
37
38 /**
39 * 执行handler后
40 *
41 * @param context
42 * 通道环境
43 * @param request
44 * 微信请求
45 * @param response
46 * 微信响应
47 * @param message
48 * 微信消息
49 * @param handler
50 * 消息处理器
51 * @throws WeixinException
52 */
53 void postHandle(ChannelHandlerContext context, WeixinRequest request,
54 WeixinResponse response, WeixinMessage message,
55 WeixinMessageHandler handler);
56
57 /**
58 * 全部执行后
59 *
60 * @param context
61 * 通道环境
62 * @param request
63 * 微信请求
64 * @param message
65 * 微信消息
66 * @param handler
67 * 消息处理器
68 * @param exception
69 * 执行异常
70 * @throws WeixinException
71 */
72 void afterCompletion(ChannelHandlerContext context, WeixinRequest request,
73 WeixinResponse response, WeixinMessage message,
74 WeixinMessageHandler handler, Exception exception);
75
76 /**
77 * 用于匹配到多个MessageHandler时权重降序排列,数字越大优先级越高
78 *
79 * @return 权重
80 */
81 int weight();
82 }