diff --git a/CHANGE.md b/CHANGE.md
index 3357e811..b107894d 100644
--- a/CHANGE.md
+++ b/CHANGE.md
@@ -419,4 +419,8 @@
+ **weixin4j-server**: 新增base64解编码类(来自apache)
- + 在WeixinProxy类新增VERSION字段
\ No newline at end of file
+ + 在WeixinProxy类新增VERSION字段
+
+* 2015-08-06
+
+ + **weixin4j-server**: 调整`LocationEventMessage`类中的经纬度字段类型为double
\ No newline at end of file
diff --git a/README.md b/README.md
index 61bbf735..3b7376f7 100644
--- a/README.md
+++ b/README.md
@@ -40,7 +40,7 @@ weixin4j
weixin4j-qy
1.5.1
-微信被动消息服务器(1.0.3,2015-07-04 released)
+微信回调消息服务器(1.0.3,2015-07-04 released)
com.foxinmy
@@ -72,8 +72,6 @@ weixin4j
接下来
------
-* 企业号消息服务
-
* 公众号第三方服务应用
* 硬件设备 & 摇一摇周边
diff --git a/weixin4j-server/src/main/java/com/foxinmy/weixin4j/dispatcher/WeixinMessageDispatcher.java b/weixin4j-server/src/main/java/com/foxinmy/weixin4j/dispatcher/WeixinMessageDispatcher.java
index 5aaf66f8..507c11e6 100644
--- a/weixin4j-server/src/main/java/com/foxinmy/weixin4j/dispatcher/WeixinMessageDispatcher.java
+++ b/weixin4j-server/src/main/java/com/foxinmy/weixin4j/dispatcher/WeixinMessageDispatcher.java
@@ -9,8 +9,6 @@ import io.netty.util.internal.logging.InternalLoggerFactory;
import java.io.ByteArrayInputStream;
import java.lang.reflect.Constructor;
import java.lang.reflect.Modifier;
-import java.lang.reflect.ParameterizedType;
-import java.lang.reflect.Type;
import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;
@@ -25,7 +23,6 @@ import javax.xml.transform.Source;
import javax.xml.transform.stream.StreamSource;
import com.foxinmy.weixin4j.exception.WeixinException;
-import com.foxinmy.weixin4j.handler.MessageHandlerAdapter;
import com.foxinmy.weixin4j.handler.WeixinMessageHandler;
import com.foxinmy.weixin4j.interceptor.WeixinMessageInterceptor;
import com.foxinmy.weixin4j.request.WeixinMessage;
@@ -210,28 +207,15 @@ public class WeixinMessageDispatcher {
ChannelHandlerContext context, WeixinRequest request,
WeixinMessageKey messageKey, Object message, Set nodeNames)
throws WeixinException {
- WeixinMessageHandler messageHandler = null;
WeixinMessageHandler[] messageHandlers = getMessageHandlers();
if (messageHandlers == null) {
return null;
}
+ WeixinMessageHandler messageHandler = null;
for (WeixinMessageHandler handler : messageHandlers) {
- if (handler instanceof MessageHandlerAdapter) {
- Class> genericType = genericTypeRead(handler);
- if (genericType == message.getClass()
- && handler.canHandle(request, message, nodeNames)) {
- messageHandler = handler;
- break;
- }
- }
- }
- if (messageHandler == null) {
- for (WeixinMessageHandler handler : messageHandlers) {
- if (!(handler instanceof MessageHandlerAdapter)
- && handler.canHandle(request, message, nodeNames)) {
- messageHandler = handler;
- break;
- }
+ if (handler.canHandle(request, message, nodeNames)) {
+ messageHandler = handler;
+ break;
}
}
return new MessageHandlerExecutor(context, messageHandler,
@@ -390,23 +374,6 @@ public class WeixinMessageDispatcher {
return unmarshaller;
}
- /**
- * 获得泛型类型
- *
- * @param object
- * @return
- */
- private Class> genericTypeRead(Object object) {
- Class> clazz = null;
- Type type = object.getClass().getGenericSuperclass();
- if (type instanceof ParameterizedType) {
- ParameterizedType ptype = ((ParameterizedType) type);
- Type[] args = ptype.getActualTypeArguments();
- clazz = (Class>) args[0];
- }
- return clazz;
- }
-
public void setMessageHandlerList(
List messageHandlerList) {
this.messageHandlerList = messageHandlerList;
diff --git a/weixin4j-server/src/main/java/com/foxinmy/weixin4j/handler/MessageHandlerAdapter.java b/weixin4j-server/src/main/java/com/foxinmy/weixin4j/handler/MessageHandlerAdapter.java
index f4491d20..74239f81 100644
--- a/weixin4j-server/src/main/java/com/foxinmy/weixin4j/handler/MessageHandlerAdapter.java
+++ b/weixin4j-server/src/main/java/com/foxinmy/weixin4j/handler/MessageHandlerAdapter.java
@@ -6,9 +6,10 @@ import com.foxinmy.weixin4j.exception.WeixinException;
import com.foxinmy.weixin4j.request.WeixinMessage;
import com.foxinmy.weixin4j.request.WeixinRequest;
import com.foxinmy.weixin4j.response.WeixinResponse;
+import com.foxinmy.weixin4j.util.ClassUtil;
/**
- * 消息处理的适配,主要对微信消息进行泛型转换
+ * 消息适配器
*
* @className MessageHandlerAdapter
* @author jy
@@ -23,7 +24,9 @@ public abstract class MessageHandlerAdapter implements
@Override
public boolean canHandle(WeixinRequest request, Object message,
Set nodeNames) throws WeixinException {
- return canHandle0(request, (M) message);
+ return message != null
+ && message.getClass() == ClassUtil.getGenericType(this)
+ && canHandle0(request, (M) message);
}
/**
diff --git a/weixin4j-server/src/main/java/com/foxinmy/weixin4j/util/ClassUtil.java b/weixin4j-server/src/main/java/com/foxinmy/weixin4j/util/ClassUtil.java
index 171b00db..5c8286a2 100644
--- a/weixin4j-server/src/main/java/com/foxinmy/weixin4j/util/ClassUtil.java
+++ b/weixin4j-server/src/main/java/com/foxinmy/weixin4j/util/ClassUtil.java
@@ -7,6 +7,8 @@ import java.io.FilenameFilter;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
+import java.lang.reflect.ParameterizedType;
+import java.lang.reflect.Type;
import java.net.JarURLConnection;
import java.net.URL;
import java.util.Enumeration;
@@ -159,6 +161,23 @@ public final class ClassUtil {
}
}
+ /**
+ * 获得泛型类型
+ *
+ * @param object
+ * @return
+ */
+ public static Class> getGenericType(Object object) {
+ Class> clazz = null;
+ Type type = object.getClass().getGenericSuperclass();
+ if (type instanceof ParameterizedType) {
+ ParameterizedType ptype = ((ParameterizedType) type);
+ Type[] args = ptype.getActualTypeArguments();
+ clazz = (Class>) args[0];
+ }
+ return clazz;
+ }
+
public static void main(String[] args) {
System.err
.println(getClasses(com.foxinmy.weixin4j.handler.WeixinMessageHandler.class
diff --git a/weixin4j-server/src/test/java/com/foxinmy/weixin4j/server/test/MessageServerStartup.java b/weixin4j-server/src/test/java/com/foxinmy/weixin4j/server/test/MessageServerStartup.java
index 96337f82..752b713d 100644
--- a/weixin4j-server/src/test/java/com/foxinmy/weixin4j/server/test/MessageServerStartup.java
+++ b/weixin4j-server/src/test/java/com/foxinmy/weixin4j/server/test/MessageServerStartup.java
@@ -113,6 +113,6 @@ public class MessageServerStartup {
}
public static void main(String[] args) throws Exception {
- new MessageServerStartup().test1();
+ new MessageServerStartup().test3();
}
}