From e9cb1b79de1cca3c9dacd8763d1ae2ebcb6ccfa4 Mon Sep 17 00:00:00 2001 From: Daniel Qian Date: Tue, 14 Oct 2014 16:23:00 +0800 Subject: [PATCH] =?UTF-8?q?=E8=A7=84=E8=8C=83package=EF=BC=8C=E4=B8=BA?= =?UTF-8?q?=E5=8F=91=E5=B8=83=E5=88=B0maven=20central=20repository?= =?UTF-8?q?=E5=81=9A=E5=87=86=E5=A4=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 1 + pom.xml | 240 +++++++++--------- .../chanjar}/weixin/api/WxConfigStorage.java | 4 +- .../chanjar}/weixin/api/WxConsts.java | 2 +- .../weixin/api/WxInMemoryConfigStorage.java | 4 +- .../chanjar}/weixin/api/WxMessageHandler.java | 6 +- .../weixin/api/WxMessageInterceptor.java | 4 +- .../chanjar}/weixin/api/WxMessageRouter.java | 6 +- .../chanjar}/weixin/api/WxService.java | 30 +-- .../chanjar}/weixin/api/WxServiceImpl.java | 52 ++-- .../chanjar}/weixin/bean/WxAccessToken.java | 4 +- .../chanjar}/weixin/bean/WxCustomMessage.java | 18 +- .../chanjar}/weixin/bean/WxGroup.java | 4 +- .../weixin/bean/WxMassGroupMessage.java | 6 +- .../chanjar}/weixin/bean/WxMassNews.java | 4 +- .../weixin/bean/WxMassOpenIdsMessage.java | 15 +- .../chanjar}/weixin/bean/WxMassVideo.java | 4 +- .../chanjar}/weixin/bean/WxMenu.java | 4 +- .../chanjar}/weixin/bean/WxXmlMessage.java | 10 +- .../weixin/bean/WxXmlOutImageMessage.java | 6 +- .../chanjar}/weixin/bean/WxXmlOutMessage.java | 18 +- .../weixin/bean/WxXmlOutMewsMessage.java | 6 +- .../weixin/bean/WxXmlOutMusicMessage.java | 6 +- .../weixin/bean/WxXmlOutTextMessage.java | 6 +- .../weixin/bean/WxXmlOutVideoMessage.java | 6 +- .../weixin/bean/WxXmlOutVoiceMessage.java | 6 +- .../bean/custombuilder/BaseBuilder.java | 4 +- .../bean/custombuilder/ImageBuilder.java | 6 +- .../bean/custombuilder/MusicBuilder.java | 6 +- .../bean/custombuilder/NewsBuilder.java | 9 +- .../bean/custombuilder/TextBuilder.java | 6 +- .../bean/custombuilder/VideoBuilder.java | 6 +- .../bean/custombuilder/VoiceBuilder.java | 6 +- .../bean/outxmlbuilder/BaseBuilder.java | 4 +- .../bean/outxmlbuilder/ImageBuilder.java | 4 +- .../bean/outxmlbuilder/MusicBuilder.java | 4 +- .../bean/outxmlbuilder/NewsBuilder.java | 6 +- .../bean/outxmlbuilder/TextBuilder.java | 4 +- .../bean/outxmlbuilder/VideoBuilder.java | 4 +- .../bean/outxmlbuilder/VoiceBuilder.java | 4 +- .../chanjar}/weixin/bean/result/WxError.java | 4 +- .../weixin/bean/result/WxMassSendResult.java | 4 +- .../bean/result/WxMassUploadResult.java | 4 +- .../bean/result/WxMediaUploadResult.java | 4 +- .../weixin/bean/result/WxQrCodeTicket.java | 4 +- .../chanjar}/weixin/bean/result/WxUser.java | 4 +- .../weixin/bean/result/WxUserList.java | 4 +- .../weixin/exception/WxErrorException.java | 4 +- .../chanjar}/weixin/util/fs/FileUtils.java | 2 +- .../util/http/InputStreamResponseHandler.java | 2 +- .../http/MediaDownloadRequestExecutor.java | 8 +- .../util/http/MediaUploadRequestExecutor.java | 8 +- .../util/http/QrCodeRequestExecutor.java | 10 +- .../weixin/util/http/RequestExecutor.java | 4 +- .../util/http/SimpleGetRequestExecutor.java | 6 +- .../util/http/SimplePostRequestExecutor.java | 7 +- .../weixin/util/http/Utf8ResponseHandler.java | 2 +- .../chanjar}/weixin/util/json/GsonHelper.java | 4 +- .../util/json/WxCustomMessageGsonAdapter.java | 9 +- .../weixin/util/json/WxGroupGsonAdapter.java | 6 +- .../weixin/util/json/WxGsonBuilder.java | 18 +- .../util/json/WxMassMessageGsonAdapter.java | 6 +- .../util/json/WxMassNewsGsonAdapter.java | 7 +- .../json/WxMassOpenIdsMessageGsonAdapter.java | 6 +- .../weixin/util/json/WxMenuGsonAdapter.java | 19 +- .../weixin/util/json/WxUserGsonAdapter.java | 6 +- .../util/json/WxUserListGsonAdapter.java | 6 +- .../weixin/util/xml/AdapterCDATA.java | 2 +- .../weixin/util/xml/MediaIdMarshaller.java | 2 +- .../weixin/util/xml/XmlTransformer.java | 2 +- .../chanjar}/weixin/api/ApiTestModule.java | 6 +- .../chanjar}/weixin/api/WxBaseAPITest.java | 4 +- .../weixin/api/WxCustomMessageAPITest.java | 9 +- .../chanjar}/weixin/api/WxGroupAPITest.java | 6 +- .../weixin/api/WxMassMessageAPITest.java | 22 +- .../chanjar}/weixin/api/WxMediaAPITest.java | 6 +- .../chanjar}/weixin/api/WxMenuAPITest.java | 8 +- .../weixin/api/WxMessageRouterTest.java | 9 +- .../chanjar}/weixin/api/WxQrCodeAPITest.java | 6 +- .../weixin/api/WxShortUrlAPITest.java | 4 +- .../chanjar}/weixin/api/WxUserAPITest.java | 10 +- .../weixin/bean/WxAccessTokenTest.java | 3 +- .../weixin/bean/WxCustomMessageTest.java | 7 +- .../chanjar}/weixin/bean/WxErrorTest.java | 4 +- .../chanjar}/weixin/bean/WxMenuTest.java | 5 +- .../weixin/bean/WxXmlMessageTest.java | 5 +- .../bean/WxXmlOutIMusicMessageTest.java | 4 +- .../weixin/bean/WxXmlOutINewsMessageTest.java | 4 +- .../bean/WxXmlOutIVideoMessageTest.java | 4 +- .../bean/WxXmlOutIVoiceMessageTest.java | 4 +- .../weixin/bean/WxXmlOutImageMessageTest.java | 4 +- .../weixin/bean/WxXmlOutTextMessageTest.java | 4 +- src/test/resources/test-config.sample.xml | 14 +- src/test/resources/testng.xml | 44 ++-- 94 files changed, 466 insertions(+), 449 deletions(-) rename src/main/java/{chanjarster => me/chanjar}/weixin/api/WxConfigStorage.java (83%) rename src/main/java/{chanjarster => me/chanjar}/weixin/api/WxConsts.java (99%) rename src/main/java/{chanjarster => me/chanjar}/weixin/api/WxInMemoryConfigStorage.java (94%) rename src/main/java/{chanjarster => me/chanjar}/weixin/api/WxMessageHandler.java (78%) rename src/main/java/{chanjarster => me/chanjar}/weixin/api/WxMessageInterceptor.java (85%) rename src/main/java/{chanjarster => me/chanjar}/weixin/api/WxMessageRouter.java (98%) rename src/main/java/{chanjarster => me/chanjar}/weixin/api/WxService.java (93%) rename src/main/java/{chanjarster => me/chanjar}/weixin/api/WxServiceImpl.java (91%) rename src/main/java/{chanjarster => me/chanjar}/weixin/bean/WxAccessToken.java (86%) rename src/main/java/{chanjarster => me/chanjar}/weixin/bean/WxCustomMessage.java (88%) rename src/main/java/{chanjarster => me/chanjar}/weixin/bean/WxGroup.java (90%) rename src/main/java/{chanjarster => me/chanjar}/weixin/bean/WxMassGroupMessage.java (90%) rename src/main/java/{chanjarster => me/chanjar}/weixin/bean/WxMassNews.java (97%) rename src/main/java/{chanjarster => me/chanjar}/weixin/bean/WxMassOpenIdsMessage.java (77%) rename src/main/java/{chanjarster => me/chanjar}/weixin/bean/WxMassVideo.java (89%) rename src/main/java/{chanjarster => me/chanjar}/weixin/bean/WxMenu.java (95%) rename src/main/java/{chanjarster => me/chanjar}/weixin/bean/WxXmlMessage.java (98%) rename src/main/java/{chanjarster => me/chanjar}/weixin/bean/WxXmlOutImageMessage.java (84%) rename src/main/java/{chanjarster => me/chanjar}/weixin/bean/WxXmlOutMessage.java (82%) rename src/main/java/{chanjarster => me/chanjar}/weixin/bean/WxXmlOutMewsMessage.java (94%) rename src/main/java/{chanjarster => me/chanjar}/weixin/bean/WxXmlOutMusicMessage.java (95%) rename src/main/java/{chanjarster => me/chanjar}/weixin/bean/WxXmlOutTextMessage.java (85%) rename src/main/java/{chanjarster => me/chanjar}/weixin/bean/WxXmlOutVideoMessage.java (93%) rename src/main/java/{chanjarster => me/chanjar}/weixin/bean/WxXmlOutVoiceMessage.java (84%) rename src/main/java/{chanjarster => me/chanjar}/weixin/bean/custombuilder/BaseBuilder.java (78%) rename src/main/java/{chanjarster => me/chanjar}/weixin/bean/custombuilder/ImageBuilder.java (80%) rename src/main/java/{chanjarster => me/chanjar}/weixin/bean/custombuilder/MusicBuilder.java (91%) rename src/main/java/{chanjarster => me/chanjar}/weixin/bean/custombuilder/NewsBuilder.java (70%) rename src/main/java/{chanjarster => me/chanjar}/weixin/bean/custombuilder/TextBuilder.java (80%) rename src/main/java/{chanjarster => me/chanjar}/weixin/bean/custombuilder/VideoBuilder.java (90%) rename src/main/java/{chanjarster => me/chanjar}/weixin/bean/custombuilder/VoiceBuilder.java (80%) rename src/main/java/{chanjarster => me/chanjar}/weixin/bean/outxmlbuilder/BaseBuilder.java (86%) rename src/main/java/{chanjarster => me/chanjar}/weixin/bean/outxmlbuilder/ImageBuilder.java (81%) rename src/main/java/{chanjarster => me/chanjar}/weixin/bean/outxmlbuilder/MusicBuilder.java (91%) rename src/main/java/{chanjarster => me/chanjar}/weixin/bean/outxmlbuilder/NewsBuilder.java (78%) rename src/main/java/{chanjarster => me/chanjar}/weixin/bean/outxmlbuilder/TextBuilder.java (81%) rename src/main/java/{chanjarster => me/chanjar}/weixin/bean/outxmlbuilder/VideoBuilder.java (88%) rename src/main/java/{chanjarster => me/chanjar}/weixin/bean/outxmlbuilder/VoiceBuilder.java (81%) rename src/main/java/{chanjarster => me/chanjar}/weixin/bean/result/WxError.java (98%) rename src/main/java/{chanjarster => me/chanjar}/weixin/bean/result/WxMassSendResult.java (92%) rename src/main/java/{chanjarster => me/chanjar}/weixin/bean/result/WxMassUploadResult.java (91%) rename src/main/java/{chanjarster => me/chanjar}/weixin/bean/result/WxMediaUploadResult.java (92%) rename src/main/java/{chanjarster => me/chanjar}/weixin/bean/result/WxQrCodeTicket.java (89%) rename src/main/java/{chanjarster => me/chanjar}/weixin/bean/result/WxUser.java (95%) rename src/main/java/{chanjarster => me/chanjar}/weixin/bean/result/WxUserList.java (91%) rename src/main/java/{chanjarster => me/chanjar}/weixin/exception/WxErrorException.java (78%) rename src/main/java/{chanjarster => me/chanjar}/weixin/util/fs/FileUtils.java (96%) rename src/main/java/{chanjarster => me/chanjar}/weixin/util/http/InputStreamResponseHandler.java (96%) rename src/main/java/{chanjarster => me/chanjar}/weixin/util/http/MediaDownloadRequestExecutor.java (92%) rename src/main/java/{chanjarster => me/chanjar}/weixin/util/http/MediaUploadRequestExecutor.java (87%) rename src/main/java/{chanjarster => me/chanjar}/weixin/util/http/QrCodeRequestExecutor.java (87%) rename src/main/java/{chanjarster => me/chanjar}/weixin/util/http/RequestExecutor.java (85%) rename src/main/java/{chanjarster => me/chanjar}/weixin/util/http/SimpleGetRequestExecutor.java (88%) rename src/main/java/{chanjarster => me/chanjar}/weixin/util/http/SimplePostRequestExecutor.java (88%) rename src/main/java/{chanjarster => me/chanjar}/weixin/util/http/Utf8ResponseHandler.java (96%) rename src/main/java/{chanjarster => me/chanjar}/weixin/util/json/GsonHelper.java (98%) rename src/main/java/{chanjarster => me/chanjar}/weixin/util/json/WxCustomMessageGsonAdapter.java (92%) rename src/main/java/{chanjarster => me/chanjar}/weixin/util/json/WxGroupGsonAdapter.java (96%) rename src/main/java/{chanjarster => me/chanjar}/weixin/util/json/WxGsonBuilder.java (70%) rename src/main/java/{chanjarster => me/chanjar}/weixin/util/json/WxMassMessageGsonAdapter.java (94%) rename src/main/java/{chanjarster => me/chanjar}/weixin/util/json/WxMassNewsGsonAdapter.java (89%) rename src/main/java/{chanjarster => me/chanjar}/weixin/util/json/WxMassOpenIdsMessageGsonAdapter.java (94%) rename src/main/java/{chanjarster => me/chanjar}/weixin/util/json/WxMenuGsonAdapter.java (86%) rename src/main/java/{chanjarster => me/chanjar}/weixin/util/json/WxUserGsonAdapter.java (95%) rename src/main/java/{chanjarster => me/chanjar}/weixin/util/json/WxUserListGsonAdapter.java (94%) rename src/main/java/{chanjarster => me/chanjar}/weixin/util/xml/AdapterCDATA.java (92%) rename src/main/java/{chanjarster => me/chanjar}/weixin/util/xml/MediaIdMarshaller.java (91%) rename src/main/java/{chanjarster => me/chanjar}/weixin/util/xml/XmlTransformer.java (98%) rename src/test/java/{chanjarster => me/chanjar}/weixin/api/ApiTestModule.java (88%) rename src/test/java/{chanjarster => me/chanjar}/weixin/api/WxBaseAPITest.java (92%) rename src/test/java/{chanjarster => me/chanjar}/weixin/api/WxCustomMessageAPITest.java (72%) rename src/test/java/{chanjarster => me/chanjar}/weixin/api/WxGroupAPITest.java (89%) rename src/test/java/{chanjarster => me/chanjar}/weixin/api/WxMassMessageAPITest.java (91%) rename src/test/java/{chanjarster => me/chanjar}/weixin/api/WxMediaAPITest.java (93%) rename src/test/java/{chanjarster => me/chanjar}/weixin/api/WxMenuAPITest.java (92%) rename src/test/java/{chanjarster => me/chanjar}/weixin/api/WxMessageRouterTest.java (95%) rename src/test/java/{chanjarster => me/chanjar}/weixin/api/WxQrCodeAPITest.java (89%) rename src/test/java/{chanjarster => me/chanjar}/weixin/api/WxShortUrlAPITest.java (86%) rename src/test/java/{chanjarster => me/chanjar}/weixin/api/WxUserAPITest.java (87%) rename src/test/java/{chanjarster => me/chanjar}/weixin/bean/WxAccessTokenTest.java (84%) rename src/test/java/{chanjarster => me/chanjar}/weixin/bean/WxCustomMessageTest.java (97%) rename src/test/java/{chanjarster => me/chanjar}/weixin/bean/WxErrorTest.java (92%) rename src/test/java/{chanjarster => me/chanjar}/weixin/bean/WxMenuTest.java (96%) rename src/test/java/{chanjarster => me/chanjar}/weixin/bean/WxXmlMessageTest.java (96%) rename src/test/java/{chanjarster => me/chanjar}/weixin/bean/WxXmlOutIMusicMessageTest.java (95%) rename src/test/java/{chanjarster => me/chanjar}/weixin/bean/WxXmlOutINewsMessageTest.java (96%) rename src/test/java/{chanjarster => me/chanjar}/weixin/bean/WxXmlOutIVideoMessageTest.java (94%) rename src/test/java/{chanjarster => me/chanjar}/weixin/bean/WxXmlOutIVoiceMessageTest.java (92%) rename src/test/java/{chanjarster => me/chanjar}/weixin/bean/WxXmlOutImageMessageTest.java (93%) rename src/test/java/{chanjarster => me/chanjar}/weixin/bean/WxXmlOutTextMessageTest.java (92%) diff --git a/.gitignore b/.gitignore index f8f0feaa..ba4f93dc 100644 --- a/.gitignore +++ b/.gitignore @@ -18,3 +18,4 @@ target src/test/resources/test-config.xml sw-pom.xml +*.iml diff --git a/pom.xml b/pom.xml index 51b25099..d2556f83 100644 --- a/pom.xml +++ b/pom.xml @@ -1,126 +1,128 @@ - 4.0.0 - chanjarster.weixin - weixin-java-tools - 1.0.0-SNAPSHOT - WeiXin Java Toolset - https://github.com/chanjarster/weixin-java - - UTF-8 - true - true - 4.3.5 - - - - junit - junit - 4.11 - test - - - org.apache.httpcomponents - fluent-hc - ${httpclient.version} - - - org.apache.httpcomponents - httpmime - ${httpclient.version} - - - javax.xml.bind - jaxb-api - 2.2.7 - - - com.sun.xml.bind - jaxb-impl - 2.2.7 - - - org.apache.oltu.oauth2 - org.apache.oltu.oauth2.client - 1.0.0 - - - com.google.code.gson - gson - 2.2.2 - - - org.testng - testng - 6.8.7 - test - - - org.mockito - mockito-all - 1.9.5 - test - - - com.google.inject - guice - 3.0 - test - - - org.apache.commons - commons-lang3 - 3.1 - - + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" + xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + 4.0.0 + me.chanjar + weixin-java-tools + 1.0.0 + WeiXin Java Tools + https://github.com/chanjarster/weixin-java + 用于开发微信公众号的Java工具 - - - - org.apache.maven.plugins - maven-surefire-plugin - 2.17 - - - src/test/resources/testng.xml - - - - - org.apache.maven.plugins - maven-source-plugin - 2.1.2 - - - attach-sources - - jar - - - - - - org.apache.maven.plugins - maven-javadoc-plugin - 2.9.1 - - - attach-javadocs - - jar - - - - - UTF-8 - zh_CN - - + + UTF-8 + true + true + 4.3.5 + + + + junit + junit + 4.11 + test + + + org.apache.httpcomponents + fluent-hc + ${httpclient.version} + + + org.apache.httpcomponents + httpmime + ${httpclient.version} + + + javax.xml.bind + jaxb-api + 2.2.7 + + + com.sun.xml.bind + jaxb-impl + 2.2.7 + + + org.apache.oltu.oauth2 + org.apache.oltu.oauth2.client + 1.0.0 + + + com.google.code.gson + gson + 2.2.2 + + + org.testng + testng + 6.8.7 + test + + + org.mockito + mockito-all + 1.9.5 + test + + + com.google.inject + guice + 3.0 + test + + + org.apache.commons + commons-lang3 + 3.1 + + - - + + + + org.apache.maven.plugins + maven-surefire-plugin + 2.17 + + + src/test/resources/testng.xml + + + + + org.apache.maven.plugins + maven-source-plugin + 2.1.2 + + + attach-sources + + jar + + + + + + org.apache.maven.plugins + maven-javadoc-plugin + 2.9.1 + + + attach-javadocs + + jar + + + + + UTF-8 + zh_CN + + + + + diff --git a/src/main/java/chanjarster/weixin/api/WxConfigStorage.java b/src/main/java/me/chanjar/weixin/api/WxConfigStorage.java similarity index 83% rename from src/main/java/chanjarster/weixin/api/WxConfigStorage.java rename to src/main/java/me/chanjar/weixin/api/WxConfigStorage.java index 41f3f7e2..105b965b 100644 --- a/src/main/java/chanjarster/weixin/api/WxConfigStorage.java +++ b/src/main/java/me/chanjar/weixin/api/WxConfigStorage.java @@ -1,6 +1,6 @@ -package chanjarster.weixin.api; +package me.chanjar.weixin.api; -import chanjarster.weixin.bean.WxAccessToken; +import me.chanjar.weixin.bean.WxAccessToken; /** * 微信客户端配置存储 diff --git a/src/main/java/chanjarster/weixin/api/WxConsts.java b/src/main/java/me/chanjar/weixin/api/WxConsts.java similarity index 99% rename from src/main/java/chanjarster/weixin/api/WxConsts.java rename to src/main/java/me/chanjar/weixin/api/WxConsts.java index e2d05676..317806fa 100644 --- a/src/main/java/chanjarster/weixin/api/WxConsts.java +++ b/src/main/java/me/chanjar/weixin/api/WxConsts.java @@ -1,4 +1,4 @@ -package chanjarster.weixin.api; +package me.chanjar.weixin.api; import java.util.HashMap; import java.util.Map; diff --git a/src/main/java/chanjarster/weixin/api/WxInMemoryConfigStorage.java b/src/main/java/me/chanjar/weixin/api/WxInMemoryConfigStorage.java similarity index 94% rename from src/main/java/chanjarster/weixin/api/WxInMemoryConfigStorage.java rename to src/main/java/me/chanjar/weixin/api/WxInMemoryConfigStorage.java index 5329a213..783da6c4 100644 --- a/src/main/java/chanjarster/weixin/api/WxInMemoryConfigStorage.java +++ b/src/main/java/me/chanjar/weixin/api/WxInMemoryConfigStorage.java @@ -1,6 +1,6 @@ -package chanjarster.weixin.api; +package me.chanjar.weixin.api; -import chanjarster.weixin.bean.WxAccessToken; +import me.chanjar.weixin.bean.WxAccessToken; /** * 基于内存的微信配置provider,在实际生产环境中应该将这些配置持久化 diff --git a/src/main/java/chanjarster/weixin/api/WxMessageHandler.java b/src/main/java/me/chanjar/weixin/api/WxMessageHandler.java similarity index 78% rename from src/main/java/chanjarster/weixin/api/WxMessageHandler.java rename to src/main/java/me/chanjar/weixin/api/WxMessageHandler.java index c21c07c1..b433f957 100644 --- a/src/main/java/chanjarster/weixin/api/WxMessageHandler.java +++ b/src/main/java/me/chanjar/weixin/api/WxMessageHandler.java @@ -1,9 +1,9 @@ -package chanjarster.weixin.api; +package me.chanjar.weixin.api; import java.util.Map; -import chanjarster.weixin.bean.WxXmlMessage; -import chanjarster.weixin.bean.WxXmlOutMessage; +import me.chanjar.weixin.bean.WxXmlMessage; +import me.chanjar.weixin.bean.WxXmlOutMessage; /** * 处理微信推送消息的处理器接口 diff --git a/src/main/java/chanjarster/weixin/api/WxMessageInterceptor.java b/src/main/java/me/chanjar/weixin/api/WxMessageInterceptor.java similarity index 85% rename from src/main/java/chanjarster/weixin/api/WxMessageInterceptor.java rename to src/main/java/me/chanjar/weixin/api/WxMessageInterceptor.java index 87309ac8..ff4e659c 100644 --- a/src/main/java/chanjarster/weixin/api/WxMessageInterceptor.java +++ b/src/main/java/me/chanjar/weixin/api/WxMessageInterceptor.java @@ -1,8 +1,8 @@ -package chanjarster.weixin.api; +package me.chanjar.weixin.api; import java.util.Map; -import chanjarster.weixin.bean.WxXmlMessage; +import me.chanjar.weixin.bean.WxXmlMessage; /** diff --git a/src/main/java/chanjarster/weixin/api/WxMessageRouter.java b/src/main/java/me/chanjar/weixin/api/WxMessageRouter.java similarity index 98% rename from src/main/java/chanjarster/weixin/api/WxMessageRouter.java rename to src/main/java/me/chanjar/weixin/api/WxMessageRouter.java index 90a2d911..2a651596 100644 --- a/src/main/java/chanjarster/weixin/api/WxMessageRouter.java +++ b/src/main/java/me/chanjar/weixin/api/WxMessageRouter.java @@ -1,4 +1,4 @@ -package chanjarster.weixin.api; +package me.chanjar.weixin.api; import java.util.ArrayList; import java.util.HashMap; @@ -8,8 +8,8 @@ import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.regex.Pattern; -import chanjarster.weixin.bean.WxXmlMessage; -import chanjarster.weixin.bean.WxXmlOutMessage; +import me.chanjar.weixin.bean.WxXmlMessage; +import me.chanjar.weixin.bean.WxXmlOutMessage; /** *
diff --git a/src/main/java/chanjarster/weixin/api/WxService.java b/src/main/java/me/chanjar/weixin/api/WxService.java
similarity index 93%
rename from src/main/java/chanjarster/weixin/api/WxService.java
rename to src/main/java/me/chanjar/weixin/api/WxService.java
index 1d92b991..c5db88bc 100644
--- a/src/main/java/chanjarster/weixin/api/WxService.java
+++ b/src/main/java/me/chanjar/weixin/api/WxService.java
@@ -1,24 +1,24 @@
-package chanjarster.weixin.api;
+package me.chanjar.weixin.api;
 
 import java.io.File;
 import java.io.IOException;
 import java.io.InputStream;
 import java.util.List;
 
-import chanjarster.weixin.bean.WxCustomMessage;
-import chanjarster.weixin.bean.WxGroup;
-import chanjarster.weixin.bean.WxMassGroupMessage;
-import chanjarster.weixin.bean.WxMassNews;
-import chanjarster.weixin.bean.WxMassOpenIdsMessage;
-import chanjarster.weixin.bean.WxMassVideo;
-import chanjarster.weixin.bean.WxMenu;
-import chanjarster.weixin.bean.result.WxMassSendResult;
-import chanjarster.weixin.bean.result.WxMassUploadResult;
-import chanjarster.weixin.bean.result.WxMediaUploadResult;
-import chanjarster.weixin.bean.result.WxQrCodeTicket;
-import chanjarster.weixin.bean.result.WxUser;
-import chanjarster.weixin.bean.result.WxUserList;
-import chanjarster.weixin.exception.WxErrorException;
+import me.chanjar.weixin.bean.WxCustomMessage;
+import me.chanjar.weixin.bean.WxGroup;
+import me.chanjar.weixin.bean.WxMassGroupMessage;
+import me.chanjar.weixin.bean.WxMassNews;
+import me.chanjar.weixin.bean.WxMassOpenIdsMessage;
+import me.chanjar.weixin.bean.WxMassVideo;
+import me.chanjar.weixin.bean.WxMenu;
+import me.chanjar.weixin.bean.result.WxMassSendResult;
+import me.chanjar.weixin.bean.result.WxMassUploadResult;
+import me.chanjar.weixin.bean.result.WxMediaUploadResult;
+import me.chanjar.weixin.bean.result.WxQrCodeTicket;
+import me.chanjar.weixin.bean.result.WxUser;
+import me.chanjar.weixin.bean.result.WxUserList;
+import me.chanjar.weixin.exception.WxErrorException;
 
 /**
  * 微信API的Service
diff --git a/src/main/java/chanjarster/weixin/api/WxServiceImpl.java b/src/main/java/me/chanjar/weixin/api/WxServiceImpl.java
similarity index 91%
rename from src/main/java/chanjarster/weixin/api/WxServiceImpl.java
rename to src/main/java/me/chanjar/weixin/api/WxServiceImpl.java
index ba4c4fe2..beb58053 100644
--- a/src/main/java/chanjarster/weixin/api/WxServiceImpl.java
+++ b/src/main/java/me/chanjar/weixin/api/WxServiceImpl.java
@@ -1,4 +1,4 @@
-package chanjarster.weixin.api;
+package me.chanjar.weixin.api;
 
 import java.io.File;
 import java.io.IOException;
@@ -10,6 +10,8 @@ import java.util.List;
 import java.util.UUID;
 import java.util.concurrent.atomic.AtomicBoolean;
 
+import me.chanjar.weixin.bean.WxCustomMessage;
+import me.chanjar.weixin.util.json.GsonHelper;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.http.client.ClientProtocolException;
 import org.apache.http.client.methods.CloseableHttpResponse;
@@ -18,31 +20,29 @@ import org.apache.http.impl.client.BasicResponseHandler;
 import org.apache.http.impl.client.CloseableHttpClient;
 import org.apache.http.impl.client.HttpClients;
 
-import chanjarster.weixin.bean.WxAccessToken;
-import chanjarster.weixin.bean.WxCustomMessage;
-import chanjarster.weixin.bean.WxGroup;
-import chanjarster.weixin.bean.WxMassGroupMessage;
-import chanjarster.weixin.bean.WxMassNews;
-import chanjarster.weixin.bean.WxMassOpenIdsMessage;
-import chanjarster.weixin.bean.WxMassVideo;
-import chanjarster.weixin.bean.WxMenu;
-import chanjarster.weixin.bean.result.WxError;
-import chanjarster.weixin.bean.result.WxMassSendResult;
-import chanjarster.weixin.bean.result.WxMassUploadResult;
-import chanjarster.weixin.bean.result.WxMediaUploadResult;
-import chanjarster.weixin.bean.result.WxQrCodeTicket;
-import chanjarster.weixin.bean.result.WxUser;
-import chanjarster.weixin.bean.result.WxUserList;
-import chanjarster.weixin.exception.WxErrorException;
-import chanjarster.weixin.util.fs.FileUtils;
-import chanjarster.weixin.util.http.MediaDownloadRequestExecutor;
-import chanjarster.weixin.util.http.MediaUploadRequestExecutor;
-import chanjarster.weixin.util.http.QrCodeRequestExecutor;
-import chanjarster.weixin.util.http.RequestExecutor;
-import chanjarster.weixin.util.http.SimpleGetRequestExecutor;
-import chanjarster.weixin.util.http.SimplePostRequestExecutor;
-import chanjarster.weixin.util.json.GsonHelper;
-import chanjarster.weixin.util.json.WxGsonBuilder;
+import me.chanjar.weixin.bean.WxAccessToken;
+import me.chanjar.weixin.bean.WxGroup;
+import me.chanjar.weixin.bean.WxMassGroupMessage;
+import me.chanjar.weixin.bean.WxMassNews;
+import me.chanjar.weixin.bean.WxMassOpenIdsMessage;
+import me.chanjar.weixin.bean.WxMassVideo;
+import me.chanjar.weixin.bean.WxMenu;
+import me.chanjar.weixin.bean.result.WxError;
+import me.chanjar.weixin.bean.result.WxMassSendResult;
+import me.chanjar.weixin.bean.result.WxMassUploadResult;
+import me.chanjar.weixin.bean.result.WxMediaUploadResult;
+import me.chanjar.weixin.bean.result.WxQrCodeTicket;
+import me.chanjar.weixin.bean.result.WxUser;
+import me.chanjar.weixin.bean.result.WxUserList;
+import me.chanjar.weixin.exception.WxErrorException;
+import me.chanjar.weixin.util.fs.FileUtils;
+import me.chanjar.weixin.util.http.MediaDownloadRequestExecutor;
+import me.chanjar.weixin.util.http.MediaUploadRequestExecutor;
+import me.chanjar.weixin.util.http.QrCodeRequestExecutor;
+import me.chanjar.weixin.util.http.RequestExecutor;
+import me.chanjar.weixin.util.http.SimpleGetRequestExecutor;
+import me.chanjar.weixin.util.http.SimplePostRequestExecutor;
+import me.chanjar.weixin.util.json.WxGsonBuilder;
 
 import com.google.gson.JsonElement;
 import com.google.gson.JsonObject;
diff --git a/src/main/java/chanjarster/weixin/bean/WxAccessToken.java b/src/main/java/me/chanjar/weixin/bean/WxAccessToken.java
similarity index 86%
rename from src/main/java/chanjarster/weixin/bean/WxAccessToken.java
rename to src/main/java/me/chanjar/weixin/bean/WxAccessToken.java
index 8c02f538..ecd6b3aa 100644
--- a/src/main/java/chanjarster/weixin/bean/WxAccessToken.java
+++ b/src/main/java/me/chanjar/weixin/bean/WxAccessToken.java
@@ -1,6 +1,6 @@
-package chanjarster.weixin.bean;
+package me.chanjar.weixin.bean;
 
-import chanjarster.weixin.util.json.WxGsonBuilder;
+import me.chanjar.weixin.util.json.WxGsonBuilder;
 
 public class WxAccessToken {
 
diff --git a/src/main/java/chanjarster/weixin/bean/WxCustomMessage.java b/src/main/java/me/chanjar/weixin/bean/WxCustomMessage.java
similarity index 88%
rename from src/main/java/chanjarster/weixin/bean/WxCustomMessage.java
rename to src/main/java/me/chanjar/weixin/bean/WxCustomMessage.java
index 965db491..48dd7220 100644
--- a/src/main/java/chanjarster/weixin/bean/WxCustomMessage.java
+++ b/src/main/java/me/chanjar/weixin/bean/WxCustomMessage.java
@@ -1,16 +1,16 @@
-package chanjarster.weixin.bean;
+package me.chanjar.weixin.bean;
 
 import java.util.ArrayList;
 import java.util.List;
 
-import chanjarster.weixin.api.WxConsts;
-import chanjarster.weixin.bean.custombuilder.ImageBuilder;
-import chanjarster.weixin.bean.custombuilder.MusicBuilder;
-import chanjarster.weixin.bean.custombuilder.NewsBuilder;
-import chanjarster.weixin.bean.custombuilder.TextBuilder;
-import chanjarster.weixin.bean.custombuilder.VideoBuilder;
-import chanjarster.weixin.bean.custombuilder.VoiceBuilder;
-import chanjarster.weixin.util.json.WxGsonBuilder;
+import me.chanjar.weixin.api.WxConsts;
+import me.chanjar.weixin.bean.custombuilder.ImageBuilder;
+import me.chanjar.weixin.bean.custombuilder.MusicBuilder;
+import me.chanjar.weixin.bean.custombuilder.NewsBuilder;
+import me.chanjar.weixin.bean.custombuilder.TextBuilder;
+import me.chanjar.weixin.bean.custombuilder.VideoBuilder;
+import me.chanjar.weixin.bean.custombuilder.VoiceBuilder;
+import me.chanjar.weixin.util.json.WxGsonBuilder;
 
 /**
  * 客服消息
diff --git a/src/main/java/chanjarster/weixin/bean/WxGroup.java b/src/main/java/me/chanjar/weixin/bean/WxGroup.java
similarity index 90%
rename from src/main/java/chanjarster/weixin/bean/WxGroup.java
rename to src/main/java/me/chanjar/weixin/bean/WxGroup.java
index 5ff23215..0174f562 100644
--- a/src/main/java/chanjarster/weixin/bean/WxGroup.java
+++ b/src/main/java/me/chanjar/weixin/bean/WxGroup.java
@@ -1,6 +1,6 @@
-package chanjarster.weixin.bean;
+package me.chanjar.weixin.bean;
 
-import chanjarster.weixin.util.json.WxGsonBuilder;
+import me.chanjar.weixin.util.json.WxGsonBuilder;
 
 /**
  * 微信用户分组
diff --git a/src/main/java/chanjarster/weixin/bean/WxMassGroupMessage.java b/src/main/java/me/chanjar/weixin/bean/WxMassGroupMessage.java
similarity index 90%
rename from src/main/java/chanjarster/weixin/bean/WxMassGroupMessage.java
rename to src/main/java/me/chanjar/weixin/bean/WxMassGroupMessage.java
index 39b87176..d52120f4 100644
--- a/src/main/java/chanjarster/weixin/bean/WxMassGroupMessage.java
+++ b/src/main/java/me/chanjar/weixin/bean/WxMassGroupMessage.java
@@ -1,7 +1,7 @@
-package chanjarster.weixin.bean;
+package me.chanjar.weixin.bean;
 
-import chanjarster.weixin.api.WxConsts;
-import chanjarster.weixin.util.json.WxGsonBuilder;
+import me.chanjar.weixin.api.WxConsts;
+import me.chanjar.weixin.util.json.WxGsonBuilder;
 
 /**
  * 分组群发的消息
diff --git a/src/main/java/chanjarster/weixin/bean/WxMassNews.java b/src/main/java/me/chanjar/weixin/bean/WxMassNews.java
similarity index 97%
rename from src/main/java/chanjarster/weixin/bean/WxMassNews.java
rename to src/main/java/me/chanjar/weixin/bean/WxMassNews.java
index 64c9e3bf..262c9adb 100644
--- a/src/main/java/chanjarster/weixin/bean/WxMassNews.java
+++ b/src/main/java/me/chanjar/weixin/bean/WxMassNews.java
@@ -1,9 +1,9 @@
-package chanjarster.weixin.bean;
+package me.chanjar.weixin.bean;
 
 import java.util.ArrayList;
 import java.util.List;
 
-import chanjarster.weixin.util.json.WxGsonBuilder;
+import me.chanjar.weixin.util.json.WxGsonBuilder;
 
 /**
  * 群发时用到的图文消息素材
diff --git a/src/main/java/chanjarster/weixin/bean/WxMassOpenIdsMessage.java b/src/main/java/me/chanjar/weixin/bean/WxMassOpenIdsMessage.java
similarity index 77%
rename from src/main/java/chanjarster/weixin/bean/WxMassOpenIdsMessage.java
rename to src/main/java/me/chanjar/weixin/bean/WxMassOpenIdsMessage.java
index 6593fe7c..2619672f 100644
--- a/src/main/java/chanjarster/weixin/bean/WxMassOpenIdsMessage.java
+++ b/src/main/java/me/chanjar/weixin/bean/WxMassOpenIdsMessage.java
@@ -1,10 +1,9 @@
-package chanjarster.weixin.bean;
+package me.chanjar.weixin.bean;
 
 import java.util.ArrayList;
 import java.util.List;
 
-import chanjarster.weixin.api.WxConsts;
-import chanjarster.weixin.util.json.WxGsonBuilder;
+import me.chanjar.weixin.util.json.WxGsonBuilder;
 
 /**
  * OpenId列表群发的消息
@@ -29,11 +28,11 @@ public class WxMassOpenIdsMessage {
   /**
    * 
    * 请使用
-   * {@link WxConsts#MASS_MSG_IMAGE}
-   * {@link WxConsts#MASS_MSG_NEWS}
-   * {@link WxConsts#MASS_MSG_TEXT}
-   * {@link WxConsts#MASS_MSG_VIDEO}
-   * {@link WxConsts#MASS_MSG_VOICE}
+   * {@link me.chanjar.weixin.api.WxConsts#MASS_MSG_IMAGE}
+   * {@link me.chanjar.weixin.api.WxConsts#MASS_MSG_NEWS}
+   * {@link me.chanjar.weixin.api.WxConsts#MASS_MSG_TEXT}
+   * {@link me.chanjar.weixin.api.WxConsts#MASS_MSG_VIDEO}
+   * {@link me.chanjar.weixin.api.WxConsts#MASS_MSG_VOICE}
    * 如果msgtype和media_id不匹配的话,会返回系统繁忙的错误
    * 
* @param msgtype diff --git a/src/main/java/chanjarster/weixin/bean/WxMassVideo.java b/src/main/java/me/chanjar/weixin/bean/WxMassVideo.java similarity index 89% rename from src/main/java/chanjarster/weixin/bean/WxMassVideo.java rename to src/main/java/me/chanjar/weixin/bean/WxMassVideo.java index 4ea243a3..a0522413 100644 --- a/src/main/java/chanjarster/weixin/bean/WxMassVideo.java +++ b/src/main/java/me/chanjar/weixin/bean/WxMassVideo.java @@ -1,6 +1,6 @@ -package chanjarster.weixin.bean; +package me.chanjar.weixin.bean; -import chanjarster.weixin.util.json.WxGsonBuilder; +import me.chanjar.weixin.util.json.WxGsonBuilder; /** * 群发时用到的视频素材 diff --git a/src/main/java/chanjarster/weixin/bean/WxMenu.java b/src/main/java/me/chanjar/weixin/bean/WxMenu.java similarity index 95% rename from src/main/java/chanjarster/weixin/bean/WxMenu.java rename to src/main/java/me/chanjar/weixin/bean/WxMenu.java index 0f95ff4e..06173aea 100644 --- a/src/main/java/chanjarster/weixin/bean/WxMenu.java +++ b/src/main/java/me/chanjar/weixin/bean/WxMenu.java @@ -1,11 +1,11 @@ -package chanjarster.weixin.bean; +package me.chanjar.weixin.bean; import java.io.InputStream; import java.io.InputStreamReader; import java.util.ArrayList; import java.util.List; -import chanjarster.weixin.util.json.WxGsonBuilder; +import me.chanjar.weixin.util.json.WxGsonBuilder; /** * 公众号菜单 diff --git a/src/main/java/chanjarster/weixin/bean/WxXmlMessage.java b/src/main/java/me/chanjar/weixin/bean/WxXmlMessage.java similarity index 98% rename from src/main/java/chanjarster/weixin/bean/WxXmlMessage.java rename to src/main/java/me/chanjar/weixin/bean/WxXmlMessage.java index 044ff645..f2f64c53 100644 --- a/src/main/java/chanjarster/weixin/bean/WxXmlMessage.java +++ b/src/main/java/me/chanjar/weixin/bean/WxXmlMessage.java @@ -1,4 +1,4 @@ -package chanjarster.weixin.bean; +package me.chanjar.weixin.bean; import java.io.InputStream; @@ -9,9 +9,9 @@ import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.XmlRootElement; import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter; -import chanjarster.weixin.api.WxConsts; -import chanjarster.weixin.util.xml.AdapterCDATA; -import chanjarster.weixin.util.xml.XmlTransformer; +import me.chanjar.weixin.api.WxConsts; +import me.chanjar.weixin.util.xml.AdapterCDATA; +import me.chanjar.weixin.util.xml.XmlTransformer; /** *
@@ -387,4 +387,4 @@ public class WxXmlMessage {
     ErrorCount = errorCount;
   }
 
-}
\ No newline at end of file
+}
diff --git a/src/main/java/chanjarster/weixin/bean/WxXmlOutImageMessage.java b/src/main/java/me/chanjar/weixin/bean/WxXmlOutImageMessage.java
similarity index 84%
rename from src/main/java/chanjarster/weixin/bean/WxXmlOutImageMessage.java
rename to src/main/java/me/chanjar/weixin/bean/WxXmlOutImageMessage.java
index 4065add4..8cd7da8f 100644
--- a/src/main/java/chanjarster/weixin/bean/WxXmlOutImageMessage.java
+++ b/src/main/java/me/chanjar/weixin/bean/WxXmlOutImageMessage.java
@@ -1,4 +1,4 @@
-package chanjarster.weixin.bean;
+package me.chanjar.weixin.bean;
 
 import javax.xml.bind.annotation.XmlAccessType;
 import javax.xml.bind.annotation.XmlAccessorType;
@@ -6,8 +6,8 @@ import javax.xml.bind.annotation.XmlElement;
 import javax.xml.bind.annotation.XmlRootElement;
 import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
 
-import chanjarster.weixin.api.WxConsts;
-import chanjarster.weixin.util.xml.MediaIdMarshaller;
+import me.chanjar.weixin.api.WxConsts;
+import me.chanjar.weixin.util.xml.MediaIdMarshaller;
 
 @XmlRootElement(name = "xml")
 @XmlAccessorType(XmlAccessType.FIELD)
diff --git a/src/main/java/chanjarster/weixin/bean/WxXmlOutMessage.java b/src/main/java/me/chanjar/weixin/bean/WxXmlOutMessage.java
similarity index 82%
rename from src/main/java/chanjarster/weixin/bean/WxXmlOutMessage.java
rename to src/main/java/me/chanjar/weixin/bean/WxXmlOutMessage.java
index c3f82539..55558d75 100644
--- a/src/main/java/chanjarster/weixin/bean/WxXmlOutMessage.java
+++ b/src/main/java/me/chanjar/weixin/bean/WxXmlOutMessage.java
@@ -1,4 +1,4 @@
-package chanjarster.weixin.bean;
+package me.chanjar.weixin.bean;
 
 import javax.xml.bind.JAXBException;
 import javax.xml.bind.annotation.XmlAccessType;
@@ -7,14 +7,14 @@ import javax.xml.bind.annotation.XmlElement;
 import javax.xml.bind.annotation.XmlRootElement;
 import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
 
-import chanjarster.weixin.bean.outxmlbuilder.ImageBuilder;
-import chanjarster.weixin.bean.outxmlbuilder.MusicBuilder;
-import chanjarster.weixin.bean.outxmlbuilder.NewsBuilder;
-import chanjarster.weixin.bean.outxmlbuilder.TextBuilder;
-import chanjarster.weixin.bean.outxmlbuilder.VideoBuilder;
-import chanjarster.weixin.bean.outxmlbuilder.VoiceBuilder;
-import chanjarster.weixin.util.xml.AdapterCDATA;
-import chanjarster.weixin.util.xml.XmlTransformer;
+import me.chanjar.weixin.bean.outxmlbuilder.ImageBuilder;
+import me.chanjar.weixin.bean.outxmlbuilder.MusicBuilder;
+import me.chanjar.weixin.bean.outxmlbuilder.NewsBuilder;
+import me.chanjar.weixin.bean.outxmlbuilder.TextBuilder;
+import me.chanjar.weixin.bean.outxmlbuilder.VideoBuilder;
+import me.chanjar.weixin.bean.outxmlbuilder.VoiceBuilder;
+import me.chanjar.weixin.util.xml.AdapterCDATA;
+import me.chanjar.weixin.util.xml.XmlTransformer;
 
 @XmlRootElement(name = "xml")
 @XmlAccessorType(XmlAccessType.FIELD)
diff --git a/src/main/java/chanjarster/weixin/bean/WxXmlOutMewsMessage.java b/src/main/java/me/chanjar/weixin/bean/WxXmlOutMewsMessage.java
similarity index 94%
rename from src/main/java/chanjarster/weixin/bean/WxXmlOutMewsMessage.java
rename to src/main/java/me/chanjar/weixin/bean/WxXmlOutMewsMessage.java
index 9d75d549..5d97600c 100644
--- a/src/main/java/chanjarster/weixin/bean/WxXmlOutMewsMessage.java
+++ b/src/main/java/me/chanjar/weixin/bean/WxXmlOutMewsMessage.java
@@ -1,4 +1,4 @@
-package chanjarster.weixin.bean;
+package me.chanjar.weixin.bean;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -10,8 +10,8 @@ import javax.xml.bind.annotation.XmlElementWrapper;
 import javax.xml.bind.annotation.XmlRootElement;
 import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
 
-import chanjarster.weixin.api.WxConsts;
-import chanjarster.weixin.util.xml.AdapterCDATA;
+import me.chanjar.weixin.api.WxConsts;
+import me.chanjar.weixin.util.xml.AdapterCDATA;
 
 @XmlRootElement(name = "xml")
 @XmlAccessorType(XmlAccessType.FIELD)
diff --git a/src/main/java/chanjarster/weixin/bean/WxXmlOutMusicMessage.java b/src/main/java/me/chanjar/weixin/bean/WxXmlOutMusicMessage.java
similarity index 95%
rename from src/main/java/chanjarster/weixin/bean/WxXmlOutMusicMessage.java
rename to src/main/java/me/chanjar/weixin/bean/WxXmlOutMusicMessage.java
index dc55ffd7..545b5274 100644
--- a/src/main/java/chanjarster/weixin/bean/WxXmlOutMusicMessage.java
+++ b/src/main/java/me/chanjar/weixin/bean/WxXmlOutMusicMessage.java
@@ -1,4 +1,4 @@
-package chanjarster.weixin.bean;
+package me.chanjar.weixin.bean;
 
 import javax.xml.bind.annotation.XmlAccessType;
 import javax.xml.bind.annotation.XmlAccessorType;
@@ -6,8 +6,8 @@ import javax.xml.bind.annotation.XmlElement;
 import javax.xml.bind.annotation.XmlRootElement;
 import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
 
-import chanjarster.weixin.api.WxConsts;
-import chanjarster.weixin.util.xml.AdapterCDATA;
+import me.chanjar.weixin.api.WxConsts;
+import me.chanjar.weixin.util.xml.AdapterCDATA;
 
 @XmlRootElement(name = "xml")
 @XmlAccessorType(XmlAccessType.FIELD)
diff --git a/src/main/java/chanjarster/weixin/bean/WxXmlOutTextMessage.java b/src/main/java/me/chanjar/weixin/bean/WxXmlOutTextMessage.java
similarity index 85%
rename from src/main/java/chanjarster/weixin/bean/WxXmlOutTextMessage.java
rename to src/main/java/me/chanjar/weixin/bean/WxXmlOutTextMessage.java
index 7accdf13..b140be2c 100644
--- a/src/main/java/chanjarster/weixin/bean/WxXmlOutTextMessage.java
+++ b/src/main/java/me/chanjar/weixin/bean/WxXmlOutTextMessage.java
@@ -1,4 +1,4 @@
-package chanjarster.weixin.bean;
+package me.chanjar.weixin.bean;
 
 import javax.xml.bind.annotation.XmlAccessType;
 import javax.xml.bind.annotation.XmlAccessorType;
@@ -6,8 +6,8 @@ import javax.xml.bind.annotation.XmlElement;
 import javax.xml.bind.annotation.XmlRootElement;
 import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
 
-import chanjarster.weixin.api.WxConsts;
-import chanjarster.weixin.util.xml.AdapterCDATA;
+import me.chanjar.weixin.api.WxConsts;
+import me.chanjar.weixin.util.xml.AdapterCDATA;
 
 @XmlRootElement(name = "xml")
 @XmlAccessorType(XmlAccessType.FIELD)
diff --git a/src/main/java/chanjarster/weixin/bean/WxXmlOutVideoMessage.java b/src/main/java/me/chanjar/weixin/bean/WxXmlOutVideoMessage.java
similarity index 93%
rename from src/main/java/chanjarster/weixin/bean/WxXmlOutVideoMessage.java
rename to src/main/java/me/chanjar/weixin/bean/WxXmlOutVideoMessage.java
index 34bfcb92..26a8d6bd 100644
--- a/src/main/java/chanjarster/weixin/bean/WxXmlOutVideoMessage.java
+++ b/src/main/java/me/chanjar/weixin/bean/WxXmlOutVideoMessage.java
@@ -1,4 +1,4 @@
-package chanjarster.weixin.bean;
+package me.chanjar.weixin.bean;
 
 import javax.xml.bind.annotation.XmlAccessType;
 import javax.xml.bind.annotation.XmlAccessorType;
@@ -6,8 +6,8 @@ import javax.xml.bind.annotation.XmlElement;
 import javax.xml.bind.annotation.XmlRootElement;
 import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
 
-import chanjarster.weixin.api.WxConsts;
-import chanjarster.weixin.util.xml.AdapterCDATA;
+import me.chanjar.weixin.api.WxConsts;
+import me.chanjar.weixin.util.xml.AdapterCDATA;
 
 @XmlRootElement(name = "xml")
 @XmlAccessorType(XmlAccessType.FIELD)
diff --git a/src/main/java/chanjarster/weixin/bean/WxXmlOutVoiceMessage.java b/src/main/java/me/chanjar/weixin/bean/WxXmlOutVoiceMessage.java
similarity index 84%
rename from src/main/java/chanjarster/weixin/bean/WxXmlOutVoiceMessage.java
rename to src/main/java/me/chanjar/weixin/bean/WxXmlOutVoiceMessage.java
index 4b6c8e96..df428c0b 100644
--- a/src/main/java/chanjarster/weixin/bean/WxXmlOutVoiceMessage.java
+++ b/src/main/java/me/chanjar/weixin/bean/WxXmlOutVoiceMessage.java
@@ -1,4 +1,4 @@
-package chanjarster.weixin.bean;
+package me.chanjar.weixin.bean;
 
 import javax.xml.bind.annotation.XmlAccessType;
 import javax.xml.bind.annotation.XmlAccessorType;
@@ -6,8 +6,8 @@ import javax.xml.bind.annotation.XmlElement;
 import javax.xml.bind.annotation.XmlRootElement;
 import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
 
-import chanjarster.weixin.api.WxConsts;
-import chanjarster.weixin.util.xml.MediaIdMarshaller;
+import me.chanjar.weixin.api.WxConsts;
+import me.chanjar.weixin.util.xml.MediaIdMarshaller;
 
 @XmlRootElement(name = "xml")
 @XmlAccessorType(XmlAccessType.FIELD)
diff --git a/src/main/java/chanjarster/weixin/bean/custombuilder/BaseBuilder.java b/src/main/java/me/chanjar/weixin/bean/custombuilder/BaseBuilder.java
similarity index 78%
rename from src/main/java/chanjarster/weixin/bean/custombuilder/BaseBuilder.java
rename to src/main/java/me/chanjar/weixin/bean/custombuilder/BaseBuilder.java
index 2930fc24..9cf19aaf 100644
--- a/src/main/java/chanjarster/weixin/bean/custombuilder/BaseBuilder.java
+++ b/src/main/java/me/chanjar/weixin/bean/custombuilder/BaseBuilder.java
@@ -1,6 +1,6 @@
-package chanjarster.weixin.bean.custombuilder;
+package me.chanjar.weixin.bean.custombuilder;
 
-import chanjarster.weixin.bean.WxCustomMessage;
+import me.chanjar.weixin.bean.WxCustomMessage;
 
 public class BaseBuilder {
   protected String msgtype;
diff --git a/src/main/java/chanjarster/weixin/bean/custombuilder/ImageBuilder.java b/src/main/java/me/chanjar/weixin/bean/custombuilder/ImageBuilder.java
similarity index 80%
rename from src/main/java/chanjarster/weixin/bean/custombuilder/ImageBuilder.java
rename to src/main/java/me/chanjar/weixin/bean/custombuilder/ImageBuilder.java
index 70b1c12a..3336d2b1 100644
--- a/src/main/java/chanjarster/weixin/bean/custombuilder/ImageBuilder.java
+++ b/src/main/java/me/chanjar/weixin/bean/custombuilder/ImageBuilder.java
@@ -1,7 +1,7 @@
-package chanjarster.weixin.bean.custombuilder;
+package me.chanjar.weixin.bean.custombuilder;
 
-import chanjarster.weixin.api.WxConsts;
-import chanjarster.weixin.bean.WxCustomMessage;
+import me.chanjar.weixin.api.WxConsts;
+import me.chanjar.weixin.bean.WxCustomMessage;
 
 /**
  * 获得消息builder
diff --git a/src/main/java/chanjarster/weixin/bean/custombuilder/MusicBuilder.java b/src/main/java/me/chanjar/weixin/bean/custombuilder/MusicBuilder.java
similarity index 91%
rename from src/main/java/chanjarster/weixin/bean/custombuilder/MusicBuilder.java
rename to src/main/java/me/chanjar/weixin/bean/custombuilder/MusicBuilder.java
index 2b84a89f..f6f7041a 100644
--- a/src/main/java/chanjarster/weixin/bean/custombuilder/MusicBuilder.java
+++ b/src/main/java/me/chanjar/weixin/bean/custombuilder/MusicBuilder.java
@@ -1,7 +1,7 @@
-package chanjarster.weixin.bean.custombuilder;
+package me.chanjar.weixin.bean.custombuilder;
 
-import chanjarster.weixin.api.WxConsts;
-import chanjarster.weixin.bean.WxCustomMessage;
+import me.chanjar.weixin.api.WxConsts;
+import me.chanjar.weixin.bean.WxCustomMessage;
 
 /**
  * 音乐消息builder
diff --git a/src/main/java/chanjarster/weixin/bean/custombuilder/NewsBuilder.java b/src/main/java/me/chanjar/weixin/bean/custombuilder/NewsBuilder.java
similarity index 70%
rename from src/main/java/chanjarster/weixin/bean/custombuilder/NewsBuilder.java
rename to src/main/java/me/chanjar/weixin/bean/custombuilder/NewsBuilder.java
index 7a7d9300..33a630da 100644
--- a/src/main/java/chanjarster/weixin/bean/custombuilder/NewsBuilder.java
+++ b/src/main/java/me/chanjar/weixin/bean/custombuilder/NewsBuilder.java
@@ -1,11 +1,10 @@
-package chanjarster.weixin.bean.custombuilder;
+package me.chanjar.weixin.bean.custombuilder;
 
 import java.util.ArrayList;
 import java.util.List;
 
-import chanjarster.weixin.api.WxConsts;
-import chanjarster.weixin.bean.WxCustomMessage;
-import chanjarster.weixin.bean.WxCustomMessage.WxArticle;
+import me.chanjar.weixin.api.WxConsts;
+import me.chanjar.weixin.bean.WxCustomMessage;
 
 /**
  * 图文消息builder
@@ -18,7 +17,7 @@ import chanjarster.weixin.bean.WxCustomMessage.WxArticle;
  */
 public final class NewsBuilder extends BaseBuilder {
 
-  private List articles = new ArrayList();
+  private List articles = new ArrayList();
   
   public NewsBuilder() {
     this.msgtype = WxConsts.CUSTOM_MSG_NEWS;
diff --git a/src/main/java/chanjarster/weixin/bean/custombuilder/TextBuilder.java b/src/main/java/me/chanjar/weixin/bean/custombuilder/TextBuilder.java
similarity index 80%
rename from src/main/java/chanjarster/weixin/bean/custombuilder/TextBuilder.java
rename to src/main/java/me/chanjar/weixin/bean/custombuilder/TextBuilder.java
index 19b89b41..61b029ef 100644
--- a/src/main/java/chanjarster/weixin/bean/custombuilder/TextBuilder.java
+++ b/src/main/java/me/chanjar/weixin/bean/custombuilder/TextBuilder.java
@@ -1,7 +1,7 @@
-package chanjarster.weixin.bean.custombuilder;
+package me.chanjar.weixin.bean.custombuilder;
 
-import chanjarster.weixin.api.WxConsts;
-import chanjarster.weixin.bean.WxCustomMessage;
+import me.chanjar.weixin.api.WxConsts;
+import me.chanjar.weixin.bean.WxCustomMessage;
 
 /**
  * 文本消息builder
diff --git a/src/main/java/chanjarster/weixin/bean/custombuilder/VideoBuilder.java b/src/main/java/me/chanjar/weixin/bean/custombuilder/VideoBuilder.java
similarity index 90%
rename from src/main/java/chanjarster/weixin/bean/custombuilder/VideoBuilder.java
rename to src/main/java/me/chanjar/weixin/bean/custombuilder/VideoBuilder.java
index 1cf22172..fd718dfa 100644
--- a/src/main/java/chanjarster/weixin/bean/custombuilder/VideoBuilder.java
+++ b/src/main/java/me/chanjar/weixin/bean/custombuilder/VideoBuilder.java
@@ -1,7 +1,7 @@
-package chanjarster.weixin.bean.custombuilder;
+package me.chanjar.weixin.bean.custombuilder;
 
-import chanjarster.weixin.api.WxConsts;
-import chanjarster.weixin.bean.WxCustomMessage;
+import me.chanjar.weixin.api.WxConsts;
+import me.chanjar.weixin.bean.WxCustomMessage;
 
 /**
  * 视频消息builder
diff --git a/src/main/java/chanjarster/weixin/bean/custombuilder/VoiceBuilder.java b/src/main/java/me/chanjar/weixin/bean/custombuilder/VoiceBuilder.java
similarity index 80%
rename from src/main/java/chanjarster/weixin/bean/custombuilder/VoiceBuilder.java
rename to src/main/java/me/chanjar/weixin/bean/custombuilder/VoiceBuilder.java
index e1853048..cf320d64 100644
--- a/src/main/java/chanjarster/weixin/bean/custombuilder/VoiceBuilder.java
+++ b/src/main/java/me/chanjar/weixin/bean/custombuilder/VoiceBuilder.java
@@ -1,7 +1,7 @@
-package chanjarster.weixin.bean.custombuilder;
+package me.chanjar.weixin.bean.custombuilder;
 
-import chanjarster.weixin.api.WxConsts;
-import chanjarster.weixin.bean.WxCustomMessage;
+import me.chanjar.weixin.api.WxConsts;
+import me.chanjar.weixin.bean.WxCustomMessage;
 
 /**
  * 语音消息builder
diff --git a/src/main/java/chanjarster/weixin/bean/outxmlbuilder/BaseBuilder.java b/src/main/java/me/chanjar/weixin/bean/outxmlbuilder/BaseBuilder.java
similarity index 86%
rename from src/main/java/chanjarster/weixin/bean/outxmlbuilder/BaseBuilder.java
rename to src/main/java/me/chanjar/weixin/bean/outxmlbuilder/BaseBuilder.java
index 0aee6c86..03d9985e 100644
--- a/src/main/java/chanjarster/weixin/bean/outxmlbuilder/BaseBuilder.java
+++ b/src/main/java/me/chanjar/weixin/bean/outxmlbuilder/BaseBuilder.java
@@ -1,6 +1,6 @@
-package chanjarster.weixin.bean.outxmlbuilder;
+package me.chanjar.weixin.bean.outxmlbuilder;
 
-import chanjarster.weixin.bean.WxXmlOutMessage;
+import me.chanjar.weixin.bean.WxXmlOutMessage;
 
 
 public abstract class BaseBuilder {
diff --git a/src/main/java/chanjarster/weixin/bean/outxmlbuilder/ImageBuilder.java b/src/main/java/me/chanjar/weixin/bean/outxmlbuilder/ImageBuilder.java
similarity index 81%
rename from src/main/java/chanjarster/weixin/bean/outxmlbuilder/ImageBuilder.java
rename to src/main/java/me/chanjar/weixin/bean/outxmlbuilder/ImageBuilder.java
index d7fcc3d3..0cb18ccc 100644
--- a/src/main/java/chanjarster/weixin/bean/outxmlbuilder/ImageBuilder.java
+++ b/src/main/java/me/chanjar/weixin/bean/outxmlbuilder/ImageBuilder.java
@@ -1,6 +1,6 @@
-package chanjarster.weixin.bean.outxmlbuilder;
+package me.chanjar.weixin.bean.outxmlbuilder;
 
-import chanjarster.weixin.bean.WxXmlOutImageMessage;
+import me.chanjar.weixin.bean.WxXmlOutImageMessage;
 
 /**
  * 图片消息builder
diff --git a/src/main/java/chanjarster/weixin/bean/outxmlbuilder/MusicBuilder.java b/src/main/java/me/chanjar/weixin/bean/outxmlbuilder/MusicBuilder.java
similarity index 91%
rename from src/main/java/chanjarster/weixin/bean/outxmlbuilder/MusicBuilder.java
rename to src/main/java/me/chanjar/weixin/bean/outxmlbuilder/MusicBuilder.java
index d9d243a5..23021425 100644
--- a/src/main/java/chanjarster/weixin/bean/outxmlbuilder/MusicBuilder.java
+++ b/src/main/java/me/chanjar/weixin/bean/outxmlbuilder/MusicBuilder.java
@@ -1,6 +1,6 @@
-package chanjarster.weixin.bean.outxmlbuilder;
+package me.chanjar.weixin.bean.outxmlbuilder;
 
-import chanjarster.weixin.bean.WxXmlOutMusicMessage;
+import me.chanjar.weixin.bean.WxXmlOutMusicMessage;
 
 /**
  * 音乐消息builder
diff --git a/src/main/java/chanjarster/weixin/bean/outxmlbuilder/NewsBuilder.java b/src/main/java/me/chanjar/weixin/bean/outxmlbuilder/NewsBuilder.java
similarity index 78%
rename from src/main/java/chanjarster/weixin/bean/outxmlbuilder/NewsBuilder.java
rename to src/main/java/me/chanjar/weixin/bean/outxmlbuilder/NewsBuilder.java
index d174c38a..6168705b 100644
--- a/src/main/java/chanjarster/weixin/bean/outxmlbuilder/NewsBuilder.java
+++ b/src/main/java/me/chanjar/weixin/bean/outxmlbuilder/NewsBuilder.java
@@ -1,10 +1,10 @@
-package chanjarster.weixin.bean.outxmlbuilder;
+package me.chanjar.weixin.bean.outxmlbuilder;
 
 import java.util.ArrayList;
 import java.util.List;
 
-import chanjarster.weixin.bean.WxXmlOutMewsMessage;
-import chanjarster.weixin.bean.WxXmlOutMewsMessage.Item;
+import me.chanjar.weixin.bean.WxXmlOutMewsMessage;
+import me.chanjar.weixin.bean.WxXmlOutMewsMessage.Item;
 
 /**
  * 图文消息builder
diff --git a/src/main/java/chanjarster/weixin/bean/outxmlbuilder/TextBuilder.java b/src/main/java/me/chanjar/weixin/bean/outxmlbuilder/TextBuilder.java
similarity index 81%
rename from src/main/java/chanjarster/weixin/bean/outxmlbuilder/TextBuilder.java
rename to src/main/java/me/chanjar/weixin/bean/outxmlbuilder/TextBuilder.java
index 8609ca63..56393a33 100644
--- a/src/main/java/chanjarster/weixin/bean/outxmlbuilder/TextBuilder.java
+++ b/src/main/java/me/chanjar/weixin/bean/outxmlbuilder/TextBuilder.java
@@ -1,6 +1,6 @@
-package chanjarster.weixin.bean.outxmlbuilder;
+package me.chanjar.weixin.bean.outxmlbuilder;
 
-import chanjarster.weixin.bean.WxXmlOutTextMessage;
+import me.chanjar.weixin.bean.WxXmlOutTextMessage;
 
 /**
  * 文本消息builder
diff --git a/src/main/java/chanjarster/weixin/bean/outxmlbuilder/VideoBuilder.java b/src/main/java/me/chanjar/weixin/bean/outxmlbuilder/VideoBuilder.java
similarity index 88%
rename from src/main/java/chanjarster/weixin/bean/outxmlbuilder/VideoBuilder.java
rename to src/main/java/me/chanjar/weixin/bean/outxmlbuilder/VideoBuilder.java
index 78151f1b..51046dbf 100644
--- a/src/main/java/chanjarster/weixin/bean/outxmlbuilder/VideoBuilder.java
+++ b/src/main/java/me/chanjar/weixin/bean/outxmlbuilder/VideoBuilder.java
@@ -1,6 +1,6 @@
-package chanjarster.weixin.bean.outxmlbuilder;
+package me.chanjar.weixin.bean.outxmlbuilder;
 
-import chanjarster.weixin.bean.WxXmlOutVideoMessage;
+import me.chanjar.weixin.bean.WxXmlOutVideoMessage;
 
 /**
  * 视频消息builder
diff --git a/src/main/java/chanjarster/weixin/bean/outxmlbuilder/VoiceBuilder.java b/src/main/java/me/chanjar/weixin/bean/outxmlbuilder/VoiceBuilder.java
similarity index 81%
rename from src/main/java/chanjarster/weixin/bean/outxmlbuilder/VoiceBuilder.java
rename to src/main/java/me/chanjar/weixin/bean/outxmlbuilder/VoiceBuilder.java
index f4b47004..73b820df 100644
--- a/src/main/java/chanjarster/weixin/bean/outxmlbuilder/VoiceBuilder.java
+++ b/src/main/java/me/chanjar/weixin/bean/outxmlbuilder/VoiceBuilder.java
@@ -1,6 +1,6 @@
-package chanjarster.weixin.bean.outxmlbuilder;
+package me.chanjar.weixin.bean.outxmlbuilder;
 
-import chanjarster.weixin.bean.WxXmlOutVoiceMessage;
+import me.chanjar.weixin.bean.WxXmlOutVoiceMessage;
 
 /**
  * 语音消息builder
diff --git a/src/main/java/chanjarster/weixin/bean/result/WxError.java b/src/main/java/me/chanjar/weixin/bean/result/WxError.java
similarity index 98%
rename from src/main/java/chanjarster/weixin/bean/result/WxError.java
rename to src/main/java/me/chanjar/weixin/bean/result/WxError.java
index 69a4ddef..7f944720 100644
--- a/src/main/java/chanjarster/weixin/bean/result/WxError.java
+++ b/src/main/java/me/chanjar/weixin/bean/result/WxError.java
@@ -1,9 +1,9 @@
-package chanjarster.weixin.bean.result;
+package me.chanjar.weixin.bean.result;
 
 import java.util.HashMap;
 import java.util.Map;
 
-import chanjarster.weixin.util.json.WxGsonBuilder;
+import me.chanjar.weixin.util.json.WxGsonBuilder;
 
 /**
  * 微信错误码说明
diff --git a/src/main/java/chanjarster/weixin/bean/result/WxMassSendResult.java b/src/main/java/me/chanjar/weixin/bean/result/WxMassSendResult.java
similarity index 92%
rename from src/main/java/chanjarster/weixin/bean/result/WxMassSendResult.java
rename to src/main/java/me/chanjar/weixin/bean/result/WxMassSendResult.java
index e31be461..b3c0a349 100644
--- a/src/main/java/chanjarster/weixin/bean/result/WxMassSendResult.java
+++ b/src/main/java/me/chanjar/weixin/bean/result/WxMassSendResult.java
@@ -1,6 +1,6 @@
-package chanjarster.weixin.bean.result;
+package me.chanjar.weixin.bean.result;
 
-import chanjarster.weixin.util.json.WxGsonBuilder;
+import me.chanjar.weixin.util.json.WxGsonBuilder;
 
 /**
  * 
diff --git a/src/main/java/chanjarster/weixin/bean/result/WxMassUploadResult.java b/src/main/java/me/chanjar/weixin/bean/result/WxMassUploadResult.java
similarity index 91%
rename from src/main/java/chanjarster/weixin/bean/result/WxMassUploadResult.java
rename to src/main/java/me/chanjar/weixin/bean/result/WxMassUploadResult.java
index 0f26813b..f12a2bd0 100644
--- a/src/main/java/chanjarster/weixin/bean/result/WxMassUploadResult.java
+++ b/src/main/java/me/chanjar/weixin/bean/result/WxMassUploadResult.java
@@ -1,6 +1,6 @@
-package chanjarster.weixin.bean.result;
+package me.chanjar.weixin.bean.result;
 
-import chanjarster.weixin.util.json.WxGsonBuilder;
+import me.chanjar.weixin.util.json.WxGsonBuilder;
 
 /**
  * 
diff --git a/src/main/java/chanjarster/weixin/bean/result/WxMediaUploadResult.java b/src/main/java/me/chanjar/weixin/bean/result/WxMediaUploadResult.java
similarity index 92%
rename from src/main/java/chanjarster/weixin/bean/result/WxMediaUploadResult.java
rename to src/main/java/me/chanjar/weixin/bean/result/WxMediaUploadResult.java
index c31f2572..ac0ba8e4 100644
--- a/src/main/java/chanjarster/weixin/bean/result/WxMediaUploadResult.java
+++ b/src/main/java/me/chanjar/weixin/bean/result/WxMediaUploadResult.java
@@ -1,6 +1,6 @@
-package chanjarster.weixin.bean.result;
+package me.chanjar.weixin.bean.result;
 
-import chanjarster.weixin.util.json.WxGsonBuilder;
+import me.chanjar.weixin.util.json.WxGsonBuilder;
 
 public class WxMediaUploadResult {
 
diff --git a/src/main/java/chanjarster/weixin/bean/result/WxQrCodeTicket.java b/src/main/java/me/chanjar/weixin/bean/result/WxQrCodeTicket.java
similarity index 89%
rename from src/main/java/chanjarster/weixin/bean/result/WxQrCodeTicket.java
rename to src/main/java/me/chanjar/weixin/bean/result/WxQrCodeTicket.java
index 28ee95ba..d9da02aa 100644
--- a/src/main/java/chanjarster/weixin/bean/result/WxQrCodeTicket.java
+++ b/src/main/java/me/chanjar/weixin/bean/result/WxQrCodeTicket.java
@@ -1,6 +1,6 @@
-package chanjarster.weixin.bean.result;
+package me.chanjar.weixin.bean.result;
 
-import chanjarster.weixin.util.json.WxGsonBuilder;
+import me.chanjar.weixin.util.json.WxGsonBuilder;
 
 /**
  * 换取二维码的Ticket
diff --git a/src/main/java/chanjarster/weixin/bean/result/WxUser.java b/src/main/java/me/chanjar/weixin/bean/result/WxUser.java
similarity index 95%
rename from src/main/java/chanjarster/weixin/bean/result/WxUser.java
rename to src/main/java/me/chanjar/weixin/bean/result/WxUser.java
index 5dfb786e..1893604a 100644
--- a/src/main/java/chanjarster/weixin/bean/result/WxUser.java
+++ b/src/main/java/me/chanjar/weixin/bean/result/WxUser.java
@@ -1,6 +1,6 @@
-package chanjarster.weixin.bean.result;
+package me.chanjar.weixin.bean.result;
 
-import chanjarster.weixin.util.json.WxGsonBuilder;
+import me.chanjar.weixin.util.json.WxGsonBuilder;
 
 /**
  * 微信用户信息
diff --git a/src/main/java/chanjarster/weixin/bean/result/WxUserList.java b/src/main/java/me/chanjar/weixin/bean/result/WxUserList.java
similarity index 91%
rename from src/main/java/chanjarster/weixin/bean/result/WxUserList.java
rename to src/main/java/me/chanjar/weixin/bean/result/WxUserList.java
index 9232e77e..7b20b396 100644
--- a/src/main/java/chanjarster/weixin/bean/result/WxUserList.java
+++ b/src/main/java/me/chanjar/weixin/bean/result/WxUserList.java
@@ -1,9 +1,9 @@
-package chanjarster.weixin.bean.result;
+package me.chanjar.weixin.bean.result;
 
 import java.util.ArrayList;
 import java.util.List;
 
-import chanjarster.weixin.util.json.WxGsonBuilder;
+import me.chanjar.weixin.util.json.WxGsonBuilder;
 
 
 /**
diff --git a/src/main/java/chanjarster/weixin/exception/WxErrorException.java b/src/main/java/me/chanjar/weixin/exception/WxErrorException.java
similarity index 78%
rename from src/main/java/chanjarster/weixin/exception/WxErrorException.java
rename to src/main/java/me/chanjar/weixin/exception/WxErrorException.java
index dd94294e..311d00fb 100644
--- a/src/main/java/chanjarster/weixin/exception/WxErrorException.java
+++ b/src/main/java/me/chanjar/weixin/exception/WxErrorException.java
@@ -1,6 +1,6 @@
-package chanjarster.weixin.exception;
+package me.chanjar.weixin.exception;
 
-import chanjarster.weixin.bean.result.WxError;
+import me.chanjar.weixin.bean.result.WxError;
 
 public class WxErrorException extends Exception {
 
diff --git a/src/main/java/chanjarster/weixin/util/fs/FileUtils.java b/src/main/java/me/chanjar/weixin/util/fs/FileUtils.java
similarity index 96%
rename from src/main/java/chanjarster/weixin/util/fs/FileUtils.java
rename to src/main/java/me/chanjar/weixin/util/fs/FileUtils.java
index 85386b60..1acc4561 100644
--- a/src/main/java/chanjarster/weixin/util/fs/FileUtils.java
+++ b/src/main/java/me/chanjar/weixin/util/fs/FileUtils.java
@@ -1,4 +1,4 @@
-package chanjarster.weixin.util.fs;
+package me.chanjar.weixin.util.fs;
 
 import java.io.File;
 import java.io.FileOutputStream;
diff --git a/src/main/java/chanjarster/weixin/util/http/InputStreamResponseHandler.java b/src/main/java/me/chanjar/weixin/util/http/InputStreamResponseHandler.java
similarity index 96%
rename from src/main/java/chanjarster/weixin/util/http/InputStreamResponseHandler.java
rename to src/main/java/me/chanjar/weixin/util/http/InputStreamResponseHandler.java
index 37d57790..8854e0f8 100644
--- a/src/main/java/chanjarster/weixin/util/http/InputStreamResponseHandler.java
+++ b/src/main/java/me/chanjar/weixin/util/http/InputStreamResponseHandler.java
@@ -1,4 +1,4 @@
-package chanjarster.weixin.util.http;
+package me.chanjar.weixin.util.http;
 
 import java.io.IOException;
 import java.io.InputStream;
diff --git a/src/main/java/chanjarster/weixin/util/http/MediaDownloadRequestExecutor.java b/src/main/java/me/chanjar/weixin/util/http/MediaDownloadRequestExecutor.java
similarity index 92%
rename from src/main/java/chanjarster/weixin/util/http/MediaDownloadRequestExecutor.java
rename to src/main/java/me/chanjar/weixin/util/http/MediaDownloadRequestExecutor.java
index 0433b783..b62ad35f 100644
--- a/src/main/java/chanjarster/weixin/util/http/MediaDownloadRequestExecutor.java
+++ b/src/main/java/me/chanjar/weixin/util/http/MediaDownloadRequestExecutor.java
@@ -1,4 +1,4 @@
-package chanjarster.weixin.util.http;
+package me.chanjar.weixin.util.http;
 
 import java.io.File;
 import java.io.IOException;
@@ -13,9 +13,9 @@ import org.apache.http.client.methods.CloseableHttpResponse;
 import org.apache.http.client.methods.HttpGet;
 import org.apache.http.entity.ContentType;
 
-import chanjarster.weixin.bean.result.WxError;
-import chanjarster.weixin.exception.WxErrorException;
-import chanjarster.weixin.util.fs.FileUtils;
+import me.chanjar.weixin.bean.result.WxError;
+import me.chanjar.weixin.exception.WxErrorException;
+import me.chanjar.weixin.util.fs.FileUtils;
 
 /**
  * 下载媒体文件请求执行器,请求的参数是String, 返回的结果是File
diff --git a/src/main/java/chanjarster/weixin/util/http/MediaUploadRequestExecutor.java b/src/main/java/me/chanjar/weixin/util/http/MediaUploadRequestExecutor.java
similarity index 87%
rename from src/main/java/chanjarster/weixin/util/http/MediaUploadRequestExecutor.java
rename to src/main/java/me/chanjar/weixin/util/http/MediaUploadRequestExecutor.java
index f0844c06..6bad642a 100644
--- a/src/main/java/chanjarster/weixin/util/http/MediaUploadRequestExecutor.java
+++ b/src/main/java/me/chanjar/weixin/util/http/MediaUploadRequestExecutor.java
@@ -1,4 +1,4 @@
-package chanjarster.weixin.util.http;
+package me.chanjar.weixin.util.http;
 
 import java.io.File;
 import java.io.IOException;
@@ -10,9 +10,9 @@ import org.apache.http.client.methods.HttpPost;
 import org.apache.http.entity.ContentType;
 import org.apache.http.entity.mime.MultipartEntityBuilder;
 
-import chanjarster.weixin.bean.result.WxError;
-import chanjarster.weixin.bean.result.WxMediaUploadResult;
-import chanjarster.weixin.exception.WxErrorException;
+import me.chanjar.weixin.bean.result.WxError;
+import me.chanjar.weixin.bean.result.WxMediaUploadResult;
+import me.chanjar.weixin.exception.WxErrorException;
 
 /**
  * 上传媒体文件请求执行器,请求的参数是File, 返回的结果是String
diff --git a/src/main/java/chanjarster/weixin/util/http/QrCodeRequestExecutor.java b/src/main/java/me/chanjar/weixin/util/http/QrCodeRequestExecutor.java
similarity index 87%
rename from src/main/java/chanjarster/weixin/util/http/QrCodeRequestExecutor.java
rename to src/main/java/me/chanjar/weixin/util/http/QrCodeRequestExecutor.java
index 8571bb72..b33fb501 100644
--- a/src/main/java/chanjarster/weixin/util/http/QrCodeRequestExecutor.java
+++ b/src/main/java/me/chanjar/weixin/util/http/QrCodeRequestExecutor.java
@@ -1,4 +1,4 @@
-package chanjarster.weixin.util.http;
+package me.chanjar.weixin.util.http;
 
 import java.io.File;
 import java.io.IOException;
@@ -12,10 +12,10 @@ import org.apache.http.client.methods.CloseableHttpResponse;
 import org.apache.http.client.methods.HttpGet;
 import org.apache.http.entity.ContentType;
 
-import chanjarster.weixin.bean.result.WxError;
-import chanjarster.weixin.bean.result.WxQrCodeTicket;
-import chanjarster.weixin.exception.WxErrorException;
-import chanjarster.weixin.util.fs.FileUtils;
+import me.chanjar.weixin.bean.result.WxError;
+import me.chanjar.weixin.bean.result.WxQrCodeTicket;
+import me.chanjar.weixin.exception.WxErrorException;
+import me.chanjar.weixin.util.fs.FileUtils;
 
 /**
  * 获得QrCode图片 请求执行器
diff --git a/src/main/java/chanjarster/weixin/util/http/RequestExecutor.java b/src/main/java/me/chanjar/weixin/util/http/RequestExecutor.java
similarity index 85%
rename from src/main/java/chanjarster/weixin/util/http/RequestExecutor.java
rename to src/main/java/me/chanjar/weixin/util/http/RequestExecutor.java
index e80bd61c..58901672 100644
--- a/src/main/java/chanjarster/weixin/util/http/RequestExecutor.java
+++ b/src/main/java/me/chanjar/weixin/util/http/RequestExecutor.java
@@ -1,4 +1,4 @@
-package chanjarster.weixin.util.http;
+package me.chanjar.weixin.util.http;
 
 import java.io.IOException;
 
@@ -6,7 +6,7 @@ import org.apache.http.client.ClientProtocolException;
 import org.apache.http.impl.client.CloseableHttpClient;
 import org.apache.http.impl.client.HttpClients;
 
-import chanjarster.weixin.exception.WxErrorException;
+import me.chanjar.weixin.exception.WxErrorException;
 
 /**
  * http请求执行器
diff --git a/src/main/java/chanjarster/weixin/util/http/SimpleGetRequestExecutor.java b/src/main/java/me/chanjar/weixin/util/http/SimpleGetRequestExecutor.java
similarity index 88%
rename from src/main/java/chanjarster/weixin/util/http/SimpleGetRequestExecutor.java
rename to src/main/java/me/chanjar/weixin/util/http/SimpleGetRequestExecutor.java
index 91ac1e58..62a81207 100644
--- a/src/main/java/chanjarster/weixin/util/http/SimpleGetRequestExecutor.java
+++ b/src/main/java/me/chanjar/weixin/util/http/SimpleGetRequestExecutor.java
@@ -1,4 +1,4 @@
-package chanjarster.weixin.util.http;
+package me.chanjar.weixin.util.http;
 
 import java.io.IOException;
 
@@ -6,8 +6,8 @@ import org.apache.http.client.ClientProtocolException;
 import org.apache.http.client.methods.CloseableHttpResponse;
 import org.apache.http.client.methods.HttpGet;
 
-import chanjarster.weixin.bean.result.WxError;
-import chanjarster.weixin.exception.WxErrorException;
+import me.chanjar.weixin.bean.result.WxError;
+import me.chanjar.weixin.exception.WxErrorException;
 
 /**
  * 简单的GET请求执行器,请求的参数是String, 返回的结果也是String
diff --git a/src/main/java/chanjarster/weixin/util/http/SimplePostRequestExecutor.java b/src/main/java/me/chanjar/weixin/util/http/SimplePostRequestExecutor.java
similarity index 88%
rename from src/main/java/chanjarster/weixin/util/http/SimplePostRequestExecutor.java
rename to src/main/java/me/chanjar/weixin/util/http/SimplePostRequestExecutor.java
index 4f3c5bc4..acd33086 100644
--- a/src/main/java/chanjarster/weixin/util/http/SimplePostRequestExecutor.java
+++ b/src/main/java/me/chanjar/weixin/util/http/SimplePostRequestExecutor.java
@@ -1,16 +1,15 @@
-package chanjarster.weixin.util.http;
+package me.chanjar.weixin.util.http;
 
 import java.io.IOException;
 
+import me.chanjar.weixin.bean.result.WxError;
+import me.chanjar.weixin.exception.WxErrorException;
 import org.apache.http.Consts;
 import org.apache.http.client.ClientProtocolException;
 import org.apache.http.client.methods.CloseableHttpResponse;
 import org.apache.http.client.methods.HttpPost;
 import org.apache.http.entity.StringEntity;
 
-import chanjarster.weixin.bean.result.WxError;
-import chanjarster.weixin.exception.WxErrorException;
-
 /**
  * 简单的POST请求执行器,请求的参数是String, 返回的结果也是String
  * @author chanjarster
diff --git a/src/main/java/chanjarster/weixin/util/http/Utf8ResponseHandler.java b/src/main/java/me/chanjar/weixin/util/http/Utf8ResponseHandler.java
similarity index 96%
rename from src/main/java/chanjarster/weixin/util/http/Utf8ResponseHandler.java
rename to src/main/java/me/chanjar/weixin/util/http/Utf8ResponseHandler.java
index 384205e5..3c19c132 100644
--- a/src/main/java/chanjarster/weixin/util/http/Utf8ResponseHandler.java
+++ b/src/main/java/me/chanjar/weixin/util/http/Utf8ResponseHandler.java
@@ -1,4 +1,4 @@
-package chanjarster.weixin.util.http;
+package me.chanjar.weixin.util.http;
 
 import java.io.IOException;
 
diff --git a/src/main/java/chanjarster/weixin/util/json/GsonHelper.java b/src/main/java/me/chanjar/weixin/util/json/GsonHelper.java
similarity index 98%
rename from src/main/java/chanjarster/weixin/util/json/GsonHelper.java
rename to src/main/java/me/chanjar/weixin/util/json/GsonHelper.java
index 7487b9fc..4dc16de0 100644
--- a/src/main/java/chanjarster/weixin/util/json/GsonHelper.java
+++ b/src/main/java/me/chanjar/weixin/util/json/GsonHelper.java
@@ -6,7 +6,7 @@
  * arose from modification of the original source, or other redistribution of this source
  * is not permitted without written permission of the KINGSTAR MEDIA SOLUTIONS LTD.
  */
-package chanjarster.weixin.util.json;
+package me.chanjar.weixin.util.json;
 
 
 import com.google.gson.JsonElement;
@@ -112,4 +112,4 @@ public class GsonHelper {
 		return r == null ? 0f : r;
 	}
 	
-}
\ No newline at end of file
+}
diff --git a/src/main/java/chanjarster/weixin/util/json/WxCustomMessageGsonAdapter.java b/src/main/java/me/chanjar/weixin/util/json/WxCustomMessageGsonAdapter.java
similarity index 92%
rename from src/main/java/chanjarster/weixin/util/json/WxCustomMessageGsonAdapter.java
rename to src/main/java/me/chanjar/weixin/util/json/WxCustomMessageGsonAdapter.java
index 9520c26d..70821659 100644
--- a/src/main/java/chanjarster/weixin/util/json/WxCustomMessageGsonAdapter.java
+++ b/src/main/java/me/chanjar/weixin/util/json/WxCustomMessageGsonAdapter.java
@@ -6,13 +6,12 @@
  * arose from modification of the original source, or other redistribution of this source
  * is not permitted without written permission of the KINGSTAR MEDIA SOLUTIONS LTD.
  */
-package chanjarster.weixin.util.json;
+package me.chanjar.weixin.util.json;
 
 import java.lang.reflect.Type;
 
-import chanjarster.weixin.api.WxConsts;
-import chanjarster.weixin.bean.WxCustomMessage;
-import chanjarster.weixin.bean.WxCustomMessage.WxArticle;
+import me.chanjar.weixin.api.WxConsts;
+import me.chanjar.weixin.bean.WxCustomMessage;
 
 import com.google.gson.JsonArray;
 import com.google.gson.JsonElement;
@@ -71,7 +70,7 @@ public class WxCustomMessageGsonAdapter implements JsonSerializer, JsonDeserial
     return group;
   }
   
-}
\ No newline at end of file
+}
diff --git a/src/main/java/chanjarster/weixin/util/json/WxGsonBuilder.java b/src/main/java/me/chanjar/weixin/util/json/WxGsonBuilder.java
similarity index 70%
rename from src/main/java/chanjarster/weixin/util/json/WxGsonBuilder.java
rename to src/main/java/me/chanjar/weixin/util/json/WxGsonBuilder.java
index 7040d00f..a7342ce4 100644
--- a/src/main/java/chanjarster/weixin/util/json/WxGsonBuilder.java
+++ b/src/main/java/me/chanjar/weixin/util/json/WxGsonBuilder.java
@@ -1,13 +1,13 @@
-package chanjarster.weixin.util.json;
+package me.chanjar.weixin.util.json;
 
-import chanjarster.weixin.bean.WxCustomMessage;
-import chanjarster.weixin.bean.WxGroup;
-import chanjarster.weixin.bean.WxMassGroupMessage;
-import chanjarster.weixin.bean.WxMassNews;
-import chanjarster.weixin.bean.WxMassOpenIdsMessage;
-import chanjarster.weixin.bean.WxMenu;
-import chanjarster.weixin.bean.result.WxUser;
-import chanjarster.weixin.bean.result.WxUserList;
+import me.chanjar.weixin.bean.WxCustomMessage;
+import me.chanjar.weixin.bean.WxGroup;
+import me.chanjar.weixin.bean.WxMassGroupMessage;
+import me.chanjar.weixin.bean.WxMassNews;
+import me.chanjar.weixin.bean.WxMassOpenIdsMessage;
+import me.chanjar.weixin.bean.WxMenu;
+import me.chanjar.weixin.bean.result.WxUser;
+import me.chanjar.weixin.bean.result.WxUserList;
 
 import com.google.gson.Gson;
 import com.google.gson.GsonBuilder;
diff --git a/src/main/java/chanjarster/weixin/util/json/WxMassMessageGsonAdapter.java b/src/main/java/me/chanjar/weixin/util/json/WxMassMessageGsonAdapter.java
similarity index 94%
rename from src/main/java/chanjarster/weixin/util/json/WxMassMessageGsonAdapter.java
rename to src/main/java/me/chanjar/weixin/util/json/WxMassMessageGsonAdapter.java
index dd8632bb..fb78ab4f 100644
--- a/src/main/java/chanjarster/weixin/util/json/WxMassMessageGsonAdapter.java
+++ b/src/main/java/me/chanjar/weixin/util/json/WxMassMessageGsonAdapter.java
@@ -6,12 +6,12 @@
  * arose from modification of the original source, or other redistribution of this source
  * is not permitted without written permission of the KINGSTAR MEDIA SOLUTIONS LTD.
  */
-package chanjarster.weixin.util.json;
+package me.chanjar.weixin.util.json;
 
 import java.lang.reflect.Type;
 
-import chanjarster.weixin.api.WxConsts;
-import chanjarster.weixin.bean.WxMassGroupMessage;
+import me.chanjar.weixin.api.WxConsts;
+import me.chanjar.weixin.bean.WxMassGroupMessage;
 
 import com.google.gson.JsonElement;
 import com.google.gson.JsonObject;
diff --git a/src/main/java/chanjarster/weixin/util/json/WxMassNewsGsonAdapter.java b/src/main/java/me/chanjar/weixin/util/json/WxMassNewsGsonAdapter.java
similarity index 89%
rename from src/main/java/chanjarster/weixin/util/json/WxMassNewsGsonAdapter.java
rename to src/main/java/me/chanjar/weixin/util/json/WxMassNewsGsonAdapter.java
index 125379db..73e0c37c 100644
--- a/src/main/java/chanjarster/weixin/util/json/WxMassNewsGsonAdapter.java
+++ b/src/main/java/me/chanjar/weixin/util/json/WxMassNewsGsonAdapter.java
@@ -6,12 +6,11 @@
  * arose from modification of the original source, or other redistribution of this source
  * is not permitted without written permission of the KINGSTAR MEDIA SOLUTIONS LTD.
  */
-package chanjarster.weixin.util.json;
+package me.chanjar.weixin.util.json;
 
 import java.lang.reflect.Type;
 
-import chanjarster.weixin.bean.WxMassNews;
-import chanjarster.weixin.bean.WxMassNews.WxMassNewsArticle;
+import me.chanjar.weixin.bean.WxMassNews;
 
 import com.google.gson.JsonArray;
 import com.google.gson.JsonElement;
@@ -30,7 +29,7 @@ public class WxMassNewsGsonAdapter implements JsonSerializer {
     JsonObject newsJson = new JsonObject();
     
     JsonArray articleJsonArray = new JsonArray();
-    for (WxMassNewsArticle article : message.getArticles()) {
+    for (WxMassNews.WxMassNewsArticle article : message.getArticles()) {
       JsonObject articleJson = new JsonObject();
       articleJson.addProperty("thumb_media_id", article.getThumb_media_id());
       articleJson.addProperty("title", article.getTitle());
diff --git a/src/main/java/chanjarster/weixin/util/json/WxMassOpenIdsMessageGsonAdapter.java b/src/main/java/me/chanjar/weixin/util/json/WxMassOpenIdsMessageGsonAdapter.java
similarity index 94%
rename from src/main/java/chanjarster/weixin/util/json/WxMassOpenIdsMessageGsonAdapter.java
rename to src/main/java/me/chanjar/weixin/util/json/WxMassOpenIdsMessageGsonAdapter.java
index a4311d58..66033e9f 100644
--- a/src/main/java/chanjarster/weixin/util/json/WxMassOpenIdsMessageGsonAdapter.java
+++ b/src/main/java/me/chanjar/weixin/util/json/WxMassOpenIdsMessageGsonAdapter.java
@@ -6,12 +6,12 @@
  * arose from modification of the original source, or other redistribution of this source
  * is not permitted without written permission of the KINGSTAR MEDIA SOLUTIONS LTD.
  */
-package chanjarster.weixin.util.json;
+package me.chanjar.weixin.util.json;
 
 import java.lang.reflect.Type;
 
-import chanjarster.weixin.api.WxConsts;
-import chanjarster.weixin.bean.WxMassOpenIdsMessage;
+import me.chanjar.weixin.api.WxConsts;
+import me.chanjar.weixin.bean.WxMassOpenIdsMessage;
 
 import com.google.gson.JsonArray;
 import com.google.gson.JsonElement;
diff --git a/src/main/java/chanjarster/weixin/util/json/WxMenuGsonAdapter.java b/src/main/java/me/chanjar/weixin/util/json/WxMenuGsonAdapter.java
similarity index 86%
rename from src/main/java/chanjarster/weixin/util/json/WxMenuGsonAdapter.java
rename to src/main/java/me/chanjar/weixin/util/json/WxMenuGsonAdapter.java
index 78b6cc74..b267a760 100644
--- a/src/main/java/chanjarster/weixin/util/json/WxMenuGsonAdapter.java
+++ b/src/main/java/me/chanjar/weixin/util/json/WxMenuGsonAdapter.java
@@ -6,12 +6,11 @@
  * arose from modification of the original source, or other redistribution of this source
  * is not permitted without written permission of the KINGSTAR MEDIA SOLUTIONS LTD.
  */
-package chanjarster.weixin.util.json;
+package me.chanjar.weixin.util.json;
 
 import java.lang.reflect.Type;
 
-import chanjarster.weixin.bean.WxMenu;
-import chanjarster.weixin.bean.WxMenu.WxMenuButton;
+import me.chanjar.weixin.bean.WxMenu;
 
 import com.google.gson.JsonArray;
 import com.google.gson.JsonDeserializationContext;
@@ -33,7 +32,7 @@ public class WxMenuGsonAdapter implements JsonSerializer, JsonDeserializ
     JsonObject json = new JsonObject();
 
     JsonArray buttonArray = new JsonArray();
-    for (WxMenuButton button : menu.getButton()) {
+    for (WxMenu.WxMenuButton button : menu.getButton()) {
       JsonObject buttonJson = convertToJson(button);
       buttonArray.add(buttonJson);
     }
@@ -42,7 +41,7 @@ public class WxMenuGsonAdapter implements JsonSerializer, JsonDeserializ
     return json;
   }
 
-  protected JsonObject convertToJson(WxMenuButton button) {
+  protected JsonObject convertToJson(WxMenu.WxMenuButton button) {
     JsonObject buttonJson = new JsonObject();
     buttonJson.addProperty("type", button.getType());
     buttonJson.addProperty("name", button.getName());
@@ -50,7 +49,7 @@ public class WxMenuGsonAdapter implements JsonSerializer, JsonDeserializ
     buttonJson.addProperty("url", button.getUrl());
     if (button.getSub_button() != null && button.getSub_button().size() > 0) {
       JsonArray buttonArray = new JsonArray();
-      for (WxMenuButton sub_button : button.getSub_button()) {
+      for (WxMenu.WxMenuButton sub_button : button.getSub_button()) {
         buttonArray.add(convertToJson(sub_button));
       }
       buttonJson.add("sub_button", buttonArray);
@@ -69,7 +68,7 @@ public class WxMenuGsonAdapter implements JsonSerializer, JsonDeserializ
     JsonArray buttonsJson = menuJson.get("button").getAsJsonArray();
     for (int i = 0; i < buttonsJson.size(); i++) {
       JsonObject buttonJson = buttonsJson.get(i).getAsJsonObject();
-      WxMenuButton button = convertFromJson(buttonJson);
+      WxMenu.WxMenuButton button = convertFromJson(buttonJson);
       menu.getButton().add(button);
       if (buttonJson.get("sub_button") == null || buttonJson.get("sub_button").isJsonNull()) {
         continue;
@@ -83,8 +82,8 @@ public class WxMenuGsonAdapter implements JsonSerializer, JsonDeserializ
     return menu;
   }
   
-  protected WxMenuButton convertFromJson(JsonObject json) {
-    WxMenuButton button = new WxMenuButton();
+  protected WxMenu.WxMenuButton convertFromJson(JsonObject json) {
+    WxMenu.WxMenuButton button = new WxMenu.WxMenuButton();
     button.setName(GsonHelper.getString(json, "name"));
     button.setKey(GsonHelper.getString(json, "key"));
     button.setUrl(GsonHelper.getString(json, "url"));
@@ -92,4 +91,4 @@ public class WxMenuGsonAdapter implements JsonSerializer, JsonDeserializ
     return button;
   }
 
-}
\ No newline at end of file
+}
diff --git a/src/main/java/chanjarster/weixin/util/json/WxUserGsonAdapter.java b/src/main/java/me/chanjar/weixin/util/json/WxUserGsonAdapter.java
similarity index 95%
rename from src/main/java/chanjarster/weixin/util/json/WxUserGsonAdapter.java
rename to src/main/java/me/chanjar/weixin/util/json/WxUserGsonAdapter.java
index 609ff615..4c2a6c4c 100644
--- a/src/main/java/chanjarster/weixin/util/json/WxUserGsonAdapter.java
+++ b/src/main/java/me/chanjar/weixin/util/json/WxUserGsonAdapter.java
@@ -6,11 +6,11 @@
  * arose from modification of the original source, or other redistribution of this source
  * is not permitted without written permission of the KINGSTAR MEDIA SOLUTIONS LTD.
  */
-package chanjarster.weixin.util.json;
+package me.chanjar.weixin.util.json;
 
 import java.lang.reflect.Type;
 
-import chanjarster.weixin.bean.result.WxUser;
+import me.chanjar.weixin.bean.result.WxUser;
 
 import com.google.gson.JsonDeserializationContext;
 import com.google.gson.JsonDeserializer;
@@ -49,4 +49,4 @@ public class WxUserGsonAdapter implements JsonDeserializer {
     return wxUser;
   }
 
-}
\ No newline at end of file
+}
diff --git a/src/main/java/chanjarster/weixin/util/json/WxUserListGsonAdapter.java b/src/main/java/me/chanjar/weixin/util/json/WxUserListGsonAdapter.java
similarity index 94%
rename from src/main/java/chanjarster/weixin/util/json/WxUserListGsonAdapter.java
rename to src/main/java/me/chanjar/weixin/util/json/WxUserListGsonAdapter.java
index 7fdbb930..e865307f 100644
--- a/src/main/java/chanjarster/weixin/util/json/WxUserListGsonAdapter.java
+++ b/src/main/java/me/chanjar/weixin/util/json/WxUserListGsonAdapter.java
@@ -6,11 +6,11 @@
  * arose from modification of the original source, or other redistribution of this source
  * is not permitted without written permission of the KINGSTAR MEDIA SOLUTIONS LTD.
  */
-package chanjarster.weixin.util.json;
+package me.chanjar.weixin.util.json;
 
 import java.lang.reflect.Type;
 
-import chanjarster.weixin.bean.result.WxUserList;
+import me.chanjar.weixin.bean.result.WxUserList;
 
 import com.google.gson.JsonArray;
 import com.google.gson.JsonDeserializationContext;
@@ -39,4 +39,4 @@ public class WxUserListGsonAdapter implements JsonDeserializer {
     return wxUserList;
   }
 
-}
\ No newline at end of file
+}
diff --git a/src/main/java/chanjarster/weixin/util/xml/AdapterCDATA.java b/src/main/java/me/chanjar/weixin/util/xml/AdapterCDATA.java
similarity index 92%
rename from src/main/java/chanjarster/weixin/util/xml/AdapterCDATA.java
rename to src/main/java/me/chanjar/weixin/util/xml/AdapterCDATA.java
index 84b96fdf..edcceed8 100644
--- a/src/main/java/chanjarster/weixin/util/xml/AdapterCDATA.java
+++ b/src/main/java/me/chanjar/weixin/util/xml/AdapterCDATA.java
@@ -1,4 +1,4 @@
-package chanjarster.weixin.util.xml;
+package me.chanjar.weixin.util.xml;
 
 import javax.xml.bind.annotation.adapters.XmlAdapter;
 
diff --git a/src/main/java/chanjarster/weixin/util/xml/MediaIdMarshaller.java b/src/main/java/me/chanjar/weixin/util/xml/MediaIdMarshaller.java
similarity index 91%
rename from src/main/java/chanjarster/weixin/util/xml/MediaIdMarshaller.java
rename to src/main/java/me/chanjar/weixin/util/xml/MediaIdMarshaller.java
index a21da89a..39225136 100644
--- a/src/main/java/chanjarster/weixin/util/xml/MediaIdMarshaller.java
+++ b/src/main/java/me/chanjar/weixin/util/xml/MediaIdMarshaller.java
@@ -1,4 +1,4 @@
-package chanjarster.weixin.util.xml;
+package me.chanjar.weixin.util.xml;
 
 import javax.xml.bind.annotation.adapters.XmlAdapter;
 
diff --git a/src/main/java/chanjarster/weixin/util/xml/XmlTransformer.java b/src/main/java/me/chanjar/weixin/util/xml/XmlTransformer.java
similarity index 98%
rename from src/main/java/chanjarster/weixin/util/xml/XmlTransformer.java
rename to src/main/java/me/chanjar/weixin/util/xml/XmlTransformer.java
index 081fc67f..b6fb5f2b 100644
--- a/src/main/java/chanjarster/weixin/util/xml/XmlTransformer.java
+++ b/src/main/java/me/chanjar/weixin/util/xml/XmlTransformer.java
@@ -1,4 +1,4 @@
-package chanjarster.weixin.util.xml;
+package me.chanjar.weixin.util.xml;
 
 import java.io.IOException;
 import java.io.InputStream;
diff --git a/src/test/java/chanjarster/weixin/api/ApiTestModule.java b/src/test/java/me/chanjar/weixin/api/ApiTestModule.java
similarity index 88%
rename from src/test/java/chanjarster/weixin/api/ApiTestModule.java
rename to src/test/java/me/chanjar/weixin/api/ApiTestModule.java
index ef95f193..369a7dbd 100644
--- a/src/test/java/chanjarster/weixin/api/ApiTestModule.java
+++ b/src/test/java/me/chanjar/weixin/api/ApiTestModule.java
@@ -1,4 +1,4 @@
-package chanjarster.weixin.api;
+package me.chanjar.weixin.api;
 
 import java.io.InputStream;
 
@@ -7,7 +7,9 @@ import javax.xml.bind.annotation.XmlAccessType;
 import javax.xml.bind.annotation.XmlAccessorType;
 import javax.xml.bind.annotation.XmlRootElement;
 
-import chanjarster.weixin.util.xml.XmlTransformer;
+import me.chanjar.weixin.api.WxInMemoryConfigStorage;
+import me.chanjar.weixin.api.WxServiceImpl;
+import me.chanjar.weixin.util.xml.XmlTransformer;
 
 import com.google.inject.Binder;
 import com.google.inject.Module;
diff --git a/src/test/java/chanjarster/weixin/api/WxBaseAPITest.java b/src/test/java/me/chanjar/weixin/api/WxBaseAPITest.java
similarity index 92%
rename from src/test/java/chanjarster/weixin/api/WxBaseAPITest.java
rename to src/test/java/me/chanjar/weixin/api/WxBaseAPITest.java
index 8c17a2a0..e4d84678 100644
--- a/src/test/java/chanjarster/weixin/api/WxBaseAPITest.java
+++ b/src/test/java/me/chanjar/weixin/api/WxBaseAPITest.java
@@ -1,11 +1,11 @@
-package chanjarster.weixin.api;
+package me.chanjar.weixin.api;
 
 import org.apache.commons.lang3.StringUtils;
 import org.testng.Assert;
 import org.testng.annotations.Guice;
 import org.testng.annotations.Test;
 
-import chanjarster.weixin.exception.WxErrorException;
+import me.chanjar.weixin.exception.WxErrorException;
 
 import com.google.inject.Inject;
 
diff --git a/src/test/java/chanjarster/weixin/api/WxCustomMessageAPITest.java b/src/test/java/me/chanjar/weixin/api/WxCustomMessageAPITest.java
similarity index 72%
rename from src/test/java/chanjarster/weixin/api/WxCustomMessageAPITest.java
rename to src/test/java/me/chanjar/weixin/api/WxCustomMessageAPITest.java
index 77cdd596..da7e7bb0 100644
--- a/src/test/java/chanjarster/weixin/api/WxCustomMessageAPITest.java
+++ b/src/test/java/me/chanjar/weixin/api/WxCustomMessageAPITest.java
@@ -1,11 +1,10 @@
-package chanjarster.weixin.api;
+package me.chanjar.weixin.api;
 
 import org.testng.annotations.Guice;
 import org.testng.annotations.Test;
 
-import chanjarster.weixin.api.ApiTestModule.WxXmlConfigStorage;
-import chanjarster.weixin.bean.WxCustomMessage;
-import chanjarster.weixin.exception.WxErrorException;
+import me.chanjar.weixin.bean.WxCustomMessage;
+import me.chanjar.weixin.exception.WxErrorException;
 
 import com.google.inject.Inject;
 
@@ -22,7 +21,7 @@ public class WxCustomMessageAPITest {
   protected WxServiceImpl wxService;
 
   public void testSendCustomMessage() throws WxErrorException {
-    WxXmlConfigStorage configStorage = (WxXmlConfigStorage) wxService.wxConfigStorage;
+    ApiTestModule.WxXmlConfigStorage configStorage = (ApiTestModule.WxXmlConfigStorage) wxService.wxConfigStorage;
     WxCustomMessage message = new WxCustomMessage();
     message.setMsgtype(WxConsts.CUSTOM_MSG_TEXT);
     message.setTouser(configStorage.getOpenId());
diff --git a/src/test/java/chanjarster/weixin/api/WxGroupAPITest.java b/src/test/java/me/chanjar/weixin/api/WxGroupAPITest.java
similarity index 89%
rename from src/test/java/chanjarster/weixin/api/WxGroupAPITest.java
rename to src/test/java/me/chanjar/weixin/api/WxGroupAPITest.java
index aa4a3da2..74abb563 100644
--- a/src/test/java/chanjarster/weixin/api/WxGroupAPITest.java
+++ b/src/test/java/me/chanjar/weixin/api/WxGroupAPITest.java
@@ -1,4 +1,4 @@
-package chanjarster.weixin.api;
+package me.chanjar.weixin.api;
 
 import java.util.List;
 
@@ -6,8 +6,8 @@ import org.testng.Assert;
 import org.testng.annotations.Guice;
 import org.testng.annotations.Test;
 
-import chanjarster.weixin.bean.WxGroup;
-import chanjarster.weixin.exception.WxErrorException;
+import me.chanjar.weixin.bean.WxGroup;
+import me.chanjar.weixin.exception.WxErrorException;
 
 import com.google.inject.Inject;
 
diff --git a/src/test/java/chanjarster/weixin/api/WxMassMessageAPITest.java b/src/test/java/me/chanjar/weixin/api/WxMassMessageAPITest.java
similarity index 91%
rename from src/test/java/chanjarster/weixin/api/WxMassMessageAPITest.java
rename to src/test/java/me/chanjar/weixin/api/WxMassMessageAPITest.java
index 13dff2d1..c942ce38 100644
--- a/src/test/java/chanjarster/weixin/api/WxMassMessageAPITest.java
+++ b/src/test/java/me/chanjar/weixin/api/WxMassMessageAPITest.java
@@ -1,4 +1,4 @@
-package chanjarster.weixin.api;
+package me.chanjar.weixin.api;
 
 import java.io.IOException;
 import java.io.InputStream;
@@ -8,16 +8,16 @@ import org.testng.annotations.DataProvider;
 import org.testng.annotations.Guice;
 import org.testng.annotations.Test;
 
-import chanjarster.weixin.api.ApiTestModule.WxXmlConfigStorage;
-import chanjarster.weixin.bean.WxMassGroupMessage;
-import chanjarster.weixin.bean.WxMassNews;
-import chanjarster.weixin.bean.WxMassNews.WxMassNewsArticle;
-import chanjarster.weixin.bean.WxMassOpenIdsMessage;
-import chanjarster.weixin.bean.WxMassVideo;
-import chanjarster.weixin.bean.result.WxMassSendResult;
-import chanjarster.weixin.bean.result.WxMassUploadResult;
-import chanjarster.weixin.bean.result.WxMediaUploadResult;
-import chanjarster.weixin.exception.WxErrorException;
+import me.chanjar.weixin.api.ApiTestModule.WxXmlConfigStorage;
+import me.chanjar.weixin.bean.WxMassGroupMessage;
+import me.chanjar.weixin.bean.WxMassNews;
+import me.chanjar.weixin.bean.WxMassNews.WxMassNewsArticle;
+import me.chanjar.weixin.bean.WxMassOpenIdsMessage;
+import me.chanjar.weixin.bean.WxMassVideo;
+import me.chanjar.weixin.bean.result.WxMassSendResult;
+import me.chanjar.weixin.bean.result.WxMassUploadResult;
+import me.chanjar.weixin.bean.result.WxMediaUploadResult;
+import me.chanjar.weixin.exception.WxErrorException;
 
 import com.google.inject.Inject;
 
diff --git a/src/test/java/chanjarster/weixin/api/WxMediaAPITest.java b/src/test/java/me/chanjar/weixin/api/WxMediaAPITest.java
similarity index 93%
rename from src/test/java/chanjarster/weixin/api/WxMediaAPITest.java
rename to src/test/java/me/chanjar/weixin/api/WxMediaAPITest.java
index b10ce586..ff5ec5fa 100644
--- a/src/test/java/chanjarster/weixin/api/WxMediaAPITest.java
+++ b/src/test/java/me/chanjar/weixin/api/WxMediaAPITest.java
@@ -1,4 +1,4 @@
-package chanjarster.weixin.api;
+package me.chanjar.weixin.api;
 
 import java.io.IOException;
 import java.io.InputStream;
@@ -10,8 +10,8 @@ import org.testng.annotations.DataProvider;
 import org.testng.annotations.Guice;
 import org.testng.annotations.Test;
 
-import chanjarster.weixin.bean.result.WxMediaUploadResult;
-import chanjarster.weixin.exception.WxErrorException;
+import me.chanjar.weixin.bean.result.WxMediaUploadResult;
+import me.chanjar.weixin.exception.WxErrorException;
 
 import com.google.inject.Inject;
 
diff --git a/src/test/java/chanjarster/weixin/api/WxMenuAPITest.java b/src/test/java/me/chanjar/weixin/api/WxMenuAPITest.java
similarity index 92%
rename from src/test/java/chanjarster/weixin/api/WxMenuAPITest.java
rename to src/test/java/me/chanjar/weixin/api/WxMenuAPITest.java
index ab8304d7..f85f2ed4 100644
--- a/src/test/java/chanjarster/weixin/api/WxMenuAPITest.java
+++ b/src/test/java/me/chanjar/weixin/api/WxMenuAPITest.java
@@ -1,4 +1,4 @@
-package chanjarster.weixin.api;
+package me.chanjar.weixin.api;
 
 import javax.xml.bind.JAXBException;
 
@@ -9,9 +9,9 @@ import org.testng.annotations.Test;
 
 import com.google.inject.Inject;
 
-import chanjarster.weixin.bean.WxMenu;
-import chanjarster.weixin.bean.WxMenu.WxMenuButton;
-import chanjarster.weixin.exception.WxErrorException;
+import me.chanjar.weixin.bean.WxMenu;
+import me.chanjar.weixin.bean.WxMenu.WxMenuButton;
+import me.chanjar.weixin.exception.WxErrorException;
 
 /**
  * 测试菜单
diff --git a/src/test/java/chanjarster/weixin/api/WxMessageRouterTest.java b/src/test/java/me/chanjar/weixin/api/WxMessageRouterTest.java
similarity index 95%
rename from src/test/java/chanjarster/weixin/api/WxMessageRouterTest.java
rename to src/test/java/me/chanjar/weixin/api/WxMessageRouterTest.java
index 00268659..e7319a62 100644
--- a/src/test/java/chanjarster/weixin/api/WxMessageRouterTest.java
+++ b/src/test/java/me/chanjar/weixin/api/WxMessageRouterTest.java
@@ -1,13 +1,16 @@
-package chanjarster.weixin.api;
+package me.chanjar.weixin.api;
 
 import java.util.Map;
 
+import me.chanjar.weixin.api.WxConsts;
+import me.chanjar.weixin.api.WxMessageHandler;
+import me.chanjar.weixin.api.WxMessageRouter;
 import org.testng.Assert;
 import org.testng.annotations.DataProvider;
 import org.testng.annotations.Test;
 
-import chanjarster.weixin.bean.WxXmlMessage;
-import chanjarster.weixin.bean.WxXmlOutMessage;
+import me.chanjar.weixin.bean.WxXmlMessage;
+import me.chanjar.weixin.bean.WxXmlOutMessage;
 
 /**
  * 测试消息路由器
diff --git a/src/test/java/chanjarster/weixin/api/WxQrCodeAPITest.java b/src/test/java/me/chanjar/weixin/api/WxQrCodeAPITest.java
similarity index 89%
rename from src/test/java/chanjarster/weixin/api/WxQrCodeAPITest.java
rename to src/test/java/me/chanjar/weixin/api/WxQrCodeAPITest.java
index c95fb863..1c07072f 100644
--- a/src/test/java/chanjarster/weixin/api/WxQrCodeAPITest.java
+++ b/src/test/java/me/chanjar/weixin/api/WxQrCodeAPITest.java
@@ -1,4 +1,4 @@
-package chanjarster.weixin.api;
+package me.chanjar.weixin.api;
 
 import java.io.File;
 
@@ -6,8 +6,8 @@ import org.testng.Assert;
 import org.testng.annotations.Guice;
 import org.testng.annotations.Test;
 
-import chanjarster.weixin.bean.result.WxQrCodeTicket;
-import chanjarster.weixin.exception.WxErrorException;
+import me.chanjar.weixin.bean.result.WxQrCodeTicket;
+import me.chanjar.weixin.exception.WxErrorException;
 
 import com.google.inject.Inject;
 
diff --git a/src/test/java/chanjarster/weixin/api/WxShortUrlAPITest.java b/src/test/java/me/chanjar/weixin/api/WxShortUrlAPITest.java
similarity index 86%
rename from src/test/java/chanjarster/weixin/api/WxShortUrlAPITest.java
rename to src/test/java/me/chanjar/weixin/api/WxShortUrlAPITest.java
index d4cd31d7..3df6e217 100644
--- a/src/test/java/chanjarster/weixin/api/WxShortUrlAPITest.java
+++ b/src/test/java/me/chanjar/weixin/api/WxShortUrlAPITest.java
@@ -1,10 +1,10 @@
-package chanjarster.weixin.api;
+package me.chanjar.weixin.api;
 
 import org.testng.Assert;
 import org.testng.annotations.Guice;
 import org.testng.annotations.Test;
 
-import chanjarster.weixin.exception.WxErrorException;
+import me.chanjar.weixin.exception.WxErrorException;
 
 import com.google.inject.Inject;
 
diff --git a/src/test/java/chanjarster/weixin/api/WxUserAPITest.java b/src/test/java/me/chanjar/weixin/api/WxUserAPITest.java
similarity index 87%
rename from src/test/java/chanjarster/weixin/api/WxUserAPITest.java
rename to src/test/java/me/chanjar/weixin/api/WxUserAPITest.java
index 64a0e030..d2e351ed 100644
--- a/src/test/java/chanjarster/weixin/api/WxUserAPITest.java
+++ b/src/test/java/me/chanjar/weixin/api/WxUserAPITest.java
@@ -1,13 +1,13 @@
-package chanjarster.weixin.api;
+package me.chanjar.weixin.api;
 
 import org.testng.Assert;
 import org.testng.annotations.Guice;
 import org.testng.annotations.Test;
 
-import chanjarster.weixin.api.ApiTestModule.WxXmlConfigStorage;
-import chanjarster.weixin.bean.result.WxUser;
-import chanjarster.weixin.bean.result.WxUserList;
-import chanjarster.weixin.exception.WxErrorException;
+import me.chanjar.weixin.api.ApiTestModule.WxXmlConfigStorage;
+import me.chanjar.weixin.bean.result.WxUser;
+import me.chanjar.weixin.bean.result.WxUserList;
+import me.chanjar.weixin.exception.WxErrorException;
 
 import com.google.inject.Inject;
 
diff --git a/src/test/java/chanjarster/weixin/bean/WxAccessTokenTest.java b/src/test/java/me/chanjar/weixin/bean/WxAccessTokenTest.java
similarity index 84%
rename from src/test/java/chanjarster/weixin/bean/WxAccessTokenTest.java
rename to src/test/java/me/chanjar/weixin/bean/WxAccessTokenTest.java
index 2115eb12..8f123b7c 100644
--- a/src/test/java/chanjarster/weixin/bean/WxAccessTokenTest.java
+++ b/src/test/java/me/chanjar/weixin/bean/WxAccessTokenTest.java
@@ -1,5 +1,6 @@
-package chanjarster.weixin.bean;
+package me.chanjar.weixin.bean;
 
+import me.chanjar.weixin.bean.WxAccessToken;
 import org.testng.Assert;
 import org.testng.annotations.Test;
 
diff --git a/src/test/java/chanjarster/weixin/bean/WxCustomMessageTest.java b/src/test/java/me/chanjar/weixin/bean/WxCustomMessageTest.java
similarity index 97%
rename from src/test/java/chanjarster/weixin/bean/WxCustomMessageTest.java
rename to src/test/java/me/chanjar/weixin/bean/WxCustomMessageTest.java
index 022647d3..d96e928b 100644
--- a/src/test/java/chanjarster/weixin/bean/WxCustomMessageTest.java
+++ b/src/test/java/me/chanjar/weixin/bean/WxCustomMessageTest.java
@@ -1,10 +1,11 @@
-package chanjarster.weixin.bean;
+package me.chanjar.weixin.bean;
 
+import me.chanjar.weixin.bean.WxCustomMessage;
 import org.testng.Assert;
 import org.testng.annotations.Test;
 
-import chanjarster.weixin.api.WxConsts;
-import chanjarster.weixin.bean.WxCustomMessage.WxArticle;
+import me.chanjar.weixin.api.WxConsts;
+import me.chanjar.weixin.bean.WxCustomMessage.WxArticle;
 
 @Test
 public class WxCustomMessageTest {
diff --git a/src/test/java/chanjarster/weixin/bean/WxErrorTest.java b/src/test/java/me/chanjar/weixin/bean/WxErrorTest.java
similarity index 92%
rename from src/test/java/chanjarster/weixin/bean/WxErrorTest.java
rename to src/test/java/me/chanjar/weixin/bean/WxErrorTest.java
index 4b82e925..e3a8e5f7 100644
--- a/src/test/java/chanjarster/weixin/bean/WxErrorTest.java
+++ b/src/test/java/me/chanjar/weixin/bean/WxErrorTest.java
@@ -1,9 +1,9 @@
-package chanjarster.weixin.bean;
+package me.chanjar.weixin.bean;
 
 import org.testng.Assert;
 import org.testng.annotations.Test;
 
-import chanjarster.weixin.bean.result.WxError;
+import me.chanjar.weixin.bean.result.WxError;
 
 @Test
 public class WxErrorTest {
diff --git a/src/test/java/chanjarster/weixin/bean/WxMenuTest.java b/src/test/java/me/chanjar/weixin/bean/WxMenuTest.java
similarity index 96%
rename from src/test/java/chanjarster/weixin/bean/WxMenuTest.java
rename to src/test/java/me/chanjar/weixin/bean/WxMenuTest.java
index 7ac2794f..c9a0ceb9 100644
--- a/src/test/java/chanjarster/weixin/bean/WxMenuTest.java
+++ b/src/test/java/me/chanjar/weixin/bean/WxMenuTest.java
@@ -1,10 +1,11 @@
-package chanjarster.weixin.bean;
+package me.chanjar.weixin.bean;
 
+import me.chanjar.weixin.bean.WxMenu;
 import org.testng.Assert;
 import org.testng.annotations.DataProvider;
 import org.testng.annotations.Test;
 
-import chanjarster.weixin.bean.WxMenu.WxMenuButton;
+import me.chanjar.weixin.bean.WxMenu.WxMenuButton;
 
 @Test
 public class WxMenuTest {
diff --git a/src/test/java/chanjarster/weixin/bean/WxXmlMessageTest.java b/src/test/java/me/chanjar/weixin/bean/WxXmlMessageTest.java
similarity index 96%
rename from src/test/java/chanjarster/weixin/bean/WxXmlMessageTest.java
rename to src/test/java/me/chanjar/weixin/bean/WxXmlMessageTest.java
index a1fbad8f..6db20bd1 100644
--- a/src/test/java/chanjarster/weixin/bean/WxXmlMessageTest.java
+++ b/src/test/java/me/chanjar/weixin/bean/WxXmlMessageTest.java
@@ -1,9 +1,10 @@
-package chanjarster.weixin.bean;
+package me.chanjar.weixin.bean;
 
+import me.chanjar.weixin.bean.WxXmlMessage;
 import org.testng.Assert;
 import org.testng.annotations.Test;
 
-import chanjarster.weixin.api.WxConsts;
+import me.chanjar.weixin.api.WxConsts;
 
 @Test
 public class WxXmlMessageTest {
diff --git a/src/test/java/chanjarster/weixin/bean/WxXmlOutIMusicMessageTest.java b/src/test/java/me/chanjar/weixin/bean/WxXmlOutIMusicMessageTest.java
similarity index 95%
rename from src/test/java/chanjarster/weixin/bean/WxXmlOutIMusicMessageTest.java
rename to src/test/java/me/chanjar/weixin/bean/WxXmlOutIMusicMessageTest.java
index 4076b37c..01a78852 100644
--- a/src/test/java/chanjarster/weixin/bean/WxXmlOutIMusicMessageTest.java
+++ b/src/test/java/me/chanjar/weixin/bean/WxXmlOutIMusicMessageTest.java
@@ -1,5 +1,7 @@
-package chanjarster.weixin.bean;
+package me.chanjar.weixin.bean;
 
+import me.chanjar.weixin.bean.WxXmlOutMessage;
+import me.chanjar.weixin.bean.WxXmlOutMusicMessage;
 import org.testng.Assert;
 import org.testng.annotations.Test;
 
diff --git a/src/test/java/chanjarster/weixin/bean/WxXmlOutINewsMessageTest.java b/src/test/java/me/chanjar/weixin/bean/WxXmlOutINewsMessageTest.java
similarity index 96%
rename from src/test/java/chanjarster/weixin/bean/WxXmlOutINewsMessageTest.java
rename to src/test/java/me/chanjar/weixin/bean/WxXmlOutINewsMessageTest.java
index 9aad8c5e..70073a56 100644
--- a/src/test/java/chanjarster/weixin/bean/WxXmlOutINewsMessageTest.java
+++ b/src/test/java/me/chanjar/weixin/bean/WxXmlOutINewsMessageTest.java
@@ -1,5 +1,7 @@
-package chanjarster.weixin.bean;
+package me.chanjar.weixin.bean;
 
+import me.chanjar.weixin.bean.WxXmlOutMessage;
+import me.chanjar.weixin.bean.WxXmlOutMewsMessage;
 import org.testng.Assert;
 import org.testng.annotations.Test;
 
diff --git a/src/test/java/chanjarster/weixin/bean/WxXmlOutIVideoMessageTest.java b/src/test/java/me/chanjar/weixin/bean/WxXmlOutIVideoMessageTest.java
similarity index 94%
rename from src/test/java/chanjarster/weixin/bean/WxXmlOutIVideoMessageTest.java
rename to src/test/java/me/chanjar/weixin/bean/WxXmlOutIVideoMessageTest.java
index df979241..40c82072 100644
--- a/src/test/java/chanjarster/weixin/bean/WxXmlOutIVideoMessageTest.java
+++ b/src/test/java/me/chanjar/weixin/bean/WxXmlOutIVideoMessageTest.java
@@ -1,5 +1,7 @@
-package chanjarster.weixin.bean;
+package me.chanjar.weixin.bean;
 
+import me.chanjar.weixin.bean.WxXmlOutMessage;
+import me.chanjar.weixin.bean.WxXmlOutVideoMessage;
 import org.testng.Assert;
 import org.testng.annotations.Test;
 
diff --git a/src/test/java/chanjarster/weixin/bean/WxXmlOutIVoiceMessageTest.java b/src/test/java/me/chanjar/weixin/bean/WxXmlOutIVoiceMessageTest.java
similarity index 92%
rename from src/test/java/chanjarster/weixin/bean/WxXmlOutIVoiceMessageTest.java
rename to src/test/java/me/chanjar/weixin/bean/WxXmlOutIVoiceMessageTest.java
index 2babe03d..ea1055ec 100644
--- a/src/test/java/chanjarster/weixin/bean/WxXmlOutIVoiceMessageTest.java
+++ b/src/test/java/me/chanjar/weixin/bean/WxXmlOutIVoiceMessageTest.java
@@ -1,5 +1,7 @@
-package chanjarster.weixin.bean;
+package me.chanjar.weixin.bean;
 
+import me.chanjar.weixin.bean.WxXmlOutMessage;
+import me.chanjar.weixin.bean.WxXmlOutVoiceMessage;
 import org.testng.Assert;
 import org.testng.annotations.Test;
 
diff --git a/src/test/java/chanjarster/weixin/bean/WxXmlOutImageMessageTest.java b/src/test/java/me/chanjar/weixin/bean/WxXmlOutImageMessageTest.java
similarity index 93%
rename from src/test/java/chanjarster/weixin/bean/WxXmlOutImageMessageTest.java
rename to src/test/java/me/chanjar/weixin/bean/WxXmlOutImageMessageTest.java
index 908e707a..a36b98c4 100644
--- a/src/test/java/chanjarster/weixin/bean/WxXmlOutImageMessageTest.java
+++ b/src/test/java/me/chanjar/weixin/bean/WxXmlOutImageMessageTest.java
@@ -1,5 +1,7 @@
-package chanjarster.weixin.bean;
+package me.chanjar.weixin.bean;
 
+import me.chanjar.weixin.bean.WxXmlOutImageMessage;
+import me.chanjar.weixin.bean.WxXmlOutMessage;
 import org.testng.Assert;
 import org.testng.annotations.Test;
 
diff --git a/src/test/java/chanjarster/weixin/bean/WxXmlOutTextMessageTest.java b/src/test/java/me/chanjar/weixin/bean/WxXmlOutTextMessageTest.java
similarity index 92%
rename from src/test/java/chanjarster/weixin/bean/WxXmlOutTextMessageTest.java
rename to src/test/java/me/chanjar/weixin/bean/WxXmlOutTextMessageTest.java
index c889df04..b8291f99 100644
--- a/src/test/java/chanjarster/weixin/bean/WxXmlOutTextMessageTest.java
+++ b/src/test/java/me/chanjar/weixin/bean/WxXmlOutTextMessageTest.java
@@ -1,5 +1,7 @@
-package chanjarster.weixin.bean;
+package me.chanjar.weixin.bean;
 
+import me.chanjar.weixin.bean.WxXmlOutMessage;
+import me.chanjar.weixin.bean.WxXmlOutTextMessage;
 import org.testng.Assert;
 import org.testng.annotations.Test;
 
diff --git a/src/test/resources/test-config.sample.xml b/src/test/resources/test-config.sample.xml
index 9c78a3b1..1586364a 100644
--- a/src/test/resources/test-config.sample.xml
+++ b/src/test/resources/test-config.sample.xml
@@ -1,8 +1,8 @@
 
-  
-  
-   
-  
-  
-  
-
\ No newline at end of file
+    
+    
+    
+    
+    
+    
+
diff --git a/src/test/resources/testng.xml b/src/test/resources/testng.xml
index 538b0146..7bfed9b7 100644
--- a/src/test/resources/testng.xml
+++ b/src/test/resources/testng.xml
@@ -3,32 +3,32 @@
 
 	
 		
-			
-			
-			
-			
-			
-			
-			
-			
-			
-			
+			
+			
+			
+			
+			
+			
+			
+			
+			
+			
 		
 	
 
 	
 		
-			
-			
-			
-			
-			
-			
-			
-			
-			
-			
-			
+			
+			
+			
+			
+			
+			
+			
+			
+			
+			
+			
 		
 	
-
\ No newline at end of file
+