修改WeixinServerBootstrap类部分方法名

This commit is contained in:
jinyu 2015-05-08 23:41:42 +08:00
parent 51353276ac
commit b45f0c19b2
5 changed files with 100 additions and 54 deletions

View File

@ -19,7 +19,7 @@ weixin4j-server
public class MessageServerStartup{ public class MessageServerStartup{
public static void main(String[] args) { public static void main(String[] args) {
new WeixinServerBootstrap("开发者token").pushMessageHandler( new WeixinServerBootstrap("开发者token").addHandler(
DebugMessageHandler.global).startup(); DebugMessageHandler.global).startup();
} }
} }
@ -29,7 +29,7 @@ weixin4j-server
public class MessageServerStartup{ public class MessageServerStartup{
public static void main(String[] args) { public static void main(String[] args) {
new WeixinServerBootstrap("appid","开发者token","加密密钥").pushMessageHandler( new WeixinServerBootstrap("appid","开发者token","加密密钥").addHandler(
DebugMessageHandler.global).startup(); DebugMessageHandler.global).startup();
} }
} }
@ -53,7 +53,7 @@ weixin4j-server
} }
}; };
// 当消息类型为文本(text)时回复「HelloWorld」, 否则回复调试消息 // 当消息类型为文本(text)时回复「HelloWorld」, 否则回复调试消息
new WeixinServerBootstrap("appid","开发者token","加密密钥").pushMessageHandler(messageHandler, new WeixinServerBootstrap("appid","开发者token","加密密钥").addHandler(messageHandler,
DebugMessageHandler.global).startup(); DebugMessageHandler.global).startup();
} }
} }

View File

@ -5,6 +5,8 @@ import io.netty.handler.codec.http.DefaultFullHttpResponse;
import io.netty.handler.codec.http.HttpResponseStatus; import io.netty.handler.codec.http.HttpResponseStatus;
import io.netty.handler.codec.http.HttpVersion; import io.netty.handler.codec.http.HttpVersion;
import java.lang.reflect.Constructor;
import java.lang.reflect.Modifier;
import java.util.LinkedList; import java.util.LinkedList;
import java.util.List; import java.util.List;
@ -23,6 +25,7 @@ import com.foxinmy.weixin4j.type.EncryptType;
import com.foxinmy.weixin4j.util.ClassUtil; import com.foxinmy.weixin4j.util.ClassUtil;
import com.foxinmy.weixin4j.util.Consts; import com.foxinmy.weixin4j.util.Consts;
import com.foxinmy.weixin4j.util.HttpUtil; import com.foxinmy.weixin4j.util.HttpUtil;
import com.foxinmy.weixin4j.util.ReflectionUtil;
/** /**
* 微信消息分发器 * 微信消息分发器
@ -139,15 +142,19 @@ public class WeixinMessageDispatcher {
} }
} else { } else {
for (Class<?> clazz : messageHandlerClass) { for (Class<?> clazz : messageHandlerClass) {
if (clazz.isInterface()
|| Modifier.isAbstract(clazz.getModifiers())) {
continue;
}
try { try {
messageHandlerList.add((WeixinMessageHandler) clazz Constructor<?> ctor = clazz
.newInstance()); .getDeclaredConstructor();
} catch (InstantiationException ex) { ReflectionUtil.makeAccessible(ctor);
messageHandlerList.add((WeixinMessageHandler) ctor
.newInstance((Object[]) null));
} catch (Exception ex) {
throw new WeixinException(clazz.getName() throw new WeixinException(clazz.getName()
+ " Is it an abstract class?", ex); + " instantiate fail", ex);
} catch (IllegalAccessException ex) {
throw new WeixinException(clazz.getName()
+ " Is the constructor accessible?", ex);
} }
} }
} }
@ -180,16 +187,20 @@ public class WeixinMessageDispatcher {
} }
} else { } else {
for (Class<?> clazz : messageInterceptorClass) { for (Class<?> clazz : messageInterceptorClass) {
if (clazz.isInterface()
|| Modifier.isAbstract(clazz.getModifiers())) {
continue;
}
try { try {
Constructor<?> ctor = clazz
.getDeclaredConstructor();
ReflectionUtil.makeAccessible(ctor);
messageInterceptorList messageInterceptorList
.add((WeixinMessageInterceptor) clazz .add((WeixinMessageInterceptor) ctor
.newInstance()); .newInstance((Object[]) null));
} catch (InstantiationException ex) { } catch (Exception ex) {
throw new WeixinException(clazz.getName() throw new WeixinException(clazz.getName()
+ " Is it an abstract class?", ex); + " instantiate fail", ex);
} catch (IllegalAccessException ex) {
throw new WeixinException(clazz.getName()
+ " Is the constructor accessible?", ex);
} }
} }
} }

View File

@ -142,56 +142,92 @@ public final class WeixinServerBootstrap {
} }
} }
public WeixinServerBootstrap pushMessageHandler( /**
* 添加一个或者多个消息处理器
*
* @param messageHandler
* 消息处理器
* @return
*/
public WeixinServerBootstrap addHandler(
WeixinMessageHandler... messageHandler) { WeixinMessageHandler... messageHandler) {
messageHandlerList.addAll(Arrays.asList(messageHandler)); messageHandlerList.addAll(Arrays.asList(messageHandler));
return this; return this;
} }
public WeixinServerBootstrap pushFirstMessageHandler( /**
* 将某个消息处理器插入到头部
*
* @param messageHandler
* 消息处理器
* @return
*/
public WeixinServerBootstrap insertFirstHandler(
WeixinMessageHandler messageHandler) { WeixinMessageHandler messageHandler) {
messageHandlerList.add(0, messageHandler); messageHandlerList.add(0, messageHandler);
return this; return this;
} }
public WeixinServerBootstrap pushLastMessageHandler( /**
WeixinMessageHandler messageHandler) { * 插入一个或多个消息拦截器
messageHandlerList.add(messageHandlerList.size(), messageHandler); *
return this; * @param messageInterceptor
} * 消息拦截器
* @return
public WeixinServerBootstrap pushMessageInterceptor( */
public WeixinServerBootstrap addInterceptor(
WeixinMessageInterceptor... messageInterceptor) { WeixinMessageInterceptor... messageInterceptor) {
messageInterceptorList.addAll(Arrays.asList(messageInterceptor)); messageInterceptorList.addAll(Arrays.asList(messageInterceptor));
return this; return this;
} }
public WeixinServerBootstrap pushFirstMessageInterceptor( /**
* 将某个消息拦截器插入到头部
*
* @param messageInterceptor
* 消息拦截器
* @return
*/
public WeixinServerBootstrap insertFirstInterceptor(
WeixinMessageInterceptor messageInterceptor) { WeixinMessageInterceptor messageInterceptor) {
messageInterceptorList.add(0, messageInterceptor); messageInterceptorList.add(0, messageInterceptor);
return this; return this;
} }
public WeixinServerBootstrap pushLastMessageInterceptor( /**
WeixinMessageInterceptor messageInterceptor) { * 按照包名去添加消息处理器
messageInterceptorList.add(messageInterceptorList.size(), *
messageInterceptor); * @param messageHandlerPackages
return this; * 消息处理器所在的包名
} * @return
*/
public WeixinServerBootstrap messageHandlerPackagesToScan( public WeixinServerBootstrap handlerPackagesToScan(
String... messageHandlerPackages) { String... messageHandlerPackages) {
messageDispatcher.setMessageHandlerPackages(messageHandlerPackages); messageDispatcher.setMessageHandlerPackages(messageHandlerPackages);
return this; return this;
} }
public WeixinServerBootstrap messageInterceptorPackagesToScan( /**
* 按照包名去添加消息拦截器
*
* @param messageInterceptorPackages
* 消息拦截器所在的包名
* @return
*/
public WeixinServerBootstrap interceptorPackagesToScan(
String... messageInterceptorPackages) { String... messageInterceptorPackages) {
messageDispatcher messageDispatcher
.setMessageInterceptorPackages(messageInterceptorPackages); .setMessageInterceptorPackages(messageInterceptorPackages);
return this; return this;
} }
/**
* 声明处理器跟拦截器类实例化的构造工厂,否则通过Class.newInstance的方式构造
*
* @param beanFactory
* Bean构造工厂
* @return
*/
public WeixinServerBootstrap resolveBeanFactory(BeanFactory beanFactory) { public WeixinServerBootstrap resolveBeanFactory(BeanFactory beanFactory) {
messageDispatcher.setBeanFactory(beanFactory); messageDispatcher.setBeanFactory(beanFactory);
return this; return this;

View File

@ -79,12 +79,8 @@ public final class ClassUtil {
packageName + "." + file.getName())); packageName + "." + file.getName()));
} else { } else {
try { try {
Class<?> clazz = Class.forName(packageName + "." classes.add(Class.forName(packageName + "."
+ file.getName().replace(".class", "")); + file.getName().replace(".class", "")));
if (clazz.isInterface()) {
continue;
}
classes.add(clazz);
} catch (ClassNotFoundException e) { } catch (ClassNotFoundException e) {
; ;
} }
@ -119,12 +115,8 @@ public final class ClassUtil {
continue; continue;
} }
try { try {
Class<?> clazz = Class.forName(entryName.replaceAll("/", ".") classes.add(Class.forName(entryName.replaceAll("/", ".")
.replace(".class", "")); .replace(".class", "")));
if (clazz.isInterface()) {
continue;
}
classes.add(clazz);
} catch (ClassNotFoundException e) { } catch (ClassNotFoundException e) {
; ;
} }

View File

@ -21,7 +21,7 @@ import com.foxinmy.weixin4j.startup.WeixinServerBootstrap;
public class MessageServerStarup { public class MessageServerStarup {
final String appid = "appid"; final String appid = "appid";
final String token = "token"; final String token = "carsonliu13450438112";
final String aesKey = "aeskey"; final String aesKey = "aeskey";
/** /**
@ -31,8 +31,8 @@ public class MessageServerStarup {
*/ */
public void test1() throws WeixinException { public void test1() throws WeixinException {
// 所有请求都回复调试的文本消息 // 所有请求都回复调试的文本消息
new WeixinServerBootstrap(token).pushMessageHandler( new WeixinServerBootstrap(token).addHandler(DebugMessageHandler.global)
DebugMessageHandler.global).startup(); .startup();
} }
/** /**
@ -42,7 +42,7 @@ public class MessageServerStarup {
*/ */
public void test2() throws WeixinException { public void test2() throws WeixinException {
// 所有请求都回复调试的文本消息 // 所有请求都回复调试的文本消息
new WeixinServerBootstrap(appid, token, aesKey).pushMessageHandler( new WeixinServerBootstrap(appid, token, aesKey).addHandler(
DebugMessageHandler.global).startup(); DebugMessageHandler.global).startup();
} }
@ -67,11 +67,18 @@ public class MessageServerStarup {
} }
}; };
// 当消息类型为文本(text)时回复HelloWorld, 否则回复调试消息 // 当消息类型为文本(text)时回复HelloWorld, 否则回复调试消息
new WeixinServerBootstrap(appid, token, aesKey).pushMessageHandler( new WeixinServerBootstrap(appid, token, aesKey).addHandler(
messageHandler, DebugMessageHandler.global).startup(); messageHandler, DebugMessageHandler.global).startup();
} }
public static void main(String[] args) throws WeixinException { public void test4() throws WeixinException {
// 扫描包加载消息处理器
String packageToScan = "com.foxinmy.weixin4j.handler";
new WeixinServerBootstrap(token).handlerPackagesToScan(packageToScan)
.startup();
}
public static void main(String[] args) throws WeixinException {
new MessageServerStarup().test4();
} }
} }