From 3d6778f83a7dae453e35c3d39a3d50037872e52e Mon Sep 17 00:00:00 2001 From: BinaryWang Date: Wed, 27 Jul 2016 17:57:13 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BB=A3=E7=A0=81=E4=BC=98=E5=8C=96=EF=BC=8C?= =?UTF-8?q?=E7=94=B1IDEA=E8=87=AA=E5=8A=A8=E8=BF=9B=E8=A1=8C=E7=9A=84Code?= =?UTF-8?q?=20Cleanup?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/api/WxErrorExceptionHandler.java | 2 +- .../common/api/WxMessageDuplicateChecker.java | 2 +- .../WxMessageInMemoryDuplicateChecker.java | 6 +- .../common/session/InternalSession.java | 2 +- .../session/InternalSessionManager.java | 8 +-- .../common/session/StandardSession.java | 3 +- .../weixin/common/session/WxSession.java | 10 ++-- .../common/session/WxSessionManager.java | 4 +- .../util/http/InputStreamResponseHandler.java | 2 +- .../http/MediaDownloadRequestExecutor.java | 2 +- .../util/http/MediaUploadRequestExecutor.java | 2 +- .../common/util/http/RequestExecutor.java | 2 +- .../util/http/SimpleGetRequestExecutor.java | 2 +- .../util/http/SimplePostRequestExecutor.java | 2 +- .../common/util/http/Utf8ResponseHandler.java | 2 +- .../weixin/common/util/json/GsonHelper.java | 2 +- .../weixin/common/util/res/StringManager.java | 5 +- .../weixin/cp/api/WxCpConfigStorage.java | 44 +++++++-------- .../weixin/cp/api/WxCpMessageHandler.java | 8 +-- .../weixin/cp/api/WxCpMessageInterceptor.java | 8 +-- .../weixin/cp/api/WxCpMessageMatcher.java | 2 +- .../weixin/cp/api/WxCpMessageRouter.java | 5 +- .../me/chanjar/weixin/cp/api/WxCpService.java | 6 +- .../weixin/cp/api/WxCpMessageRouterTest.java | 1 - .../weixin/mp/api/WxMpConfigStorage.java | 56 +++++++++---------- .../weixin/mp/api/WxMpGroupService.java | 10 ++-- .../weixin/mp/api/WxMpMaterialService.java | 28 +++++----- .../weixin/mp/api/WxMpMenuService.java | 10 ++-- .../weixin/mp/api/WxMpMessageHandler.java | 8 +-- .../weixin/mp/api/WxMpMessageInterceptor.java | 8 +-- .../weixin/mp/api/WxMpMessageMatcher.java | 2 +- .../weixin/mp/api/WxMpMessageRouter.java | 5 +- .../weixin/mp/api/WxMpQrcodeService.java | 12 ++-- .../weixin/mp/api/WxMpUserService.java | 6 +- .../http/MaterialDeleteRequestExecutor.java | 2 +- .../http/MaterialNewsInfoRequestExecutor.java | 2 +- .../http/MaterialUploadRequestExecutor.java | 2 +- .../MaterialVideoInfoRequestExecutor.java | 2 +- ...lVoiceAndImageDownloadRequestExecutor.java | 2 +- .../http/MediaImgUploadRequestExecutor.java | 2 +- .../mp/util/http/QrCodeRequestExecutor.java | 2 +- .../util/json/WxLongTimeJsonSerializer.java | 2 +- .../mp/util/json/WxMpUserGsonAdapter.java | 2 +- .../weixin/mp/api/WxMpMessageRouterTest.java | 1 - 44 files changed, 140 insertions(+), 156 deletions(-) diff --git a/weixin-java-common/src/main/java/me/chanjar/weixin/common/api/WxErrorExceptionHandler.java b/weixin-java-common/src/main/java/me/chanjar/weixin/common/api/WxErrorExceptionHandler.java index 9abda804b..d6acf55b5 100644 --- a/weixin-java-common/src/main/java/me/chanjar/weixin/common/api/WxErrorExceptionHandler.java +++ b/weixin-java-common/src/main/java/me/chanjar/weixin/common/api/WxErrorExceptionHandler.java @@ -7,6 +7,6 @@ import me.chanjar.weixin.common.exception.WxErrorException; */ public interface WxErrorExceptionHandler { - public void handle(WxErrorException e); + void handle(WxErrorException e); } diff --git a/weixin-java-common/src/main/java/me/chanjar/weixin/common/api/WxMessageDuplicateChecker.java b/weixin-java-common/src/main/java/me/chanjar/weixin/common/api/WxMessageDuplicateChecker.java index 6cdb689a1..2bcc98f8e 100644 --- a/weixin-java-common/src/main/java/me/chanjar/weixin/common/api/WxMessageDuplicateChecker.java +++ b/weixin-java-common/src/main/java/me/chanjar/weixin/common/api/WxMessageDuplicateChecker.java @@ -22,6 +22,6 @@ public interface WxMessageDuplicateChecker { * @param messageId messageId需要根据上面讲的方式构造 * @return 如果是重复消息,返回true,否则返回false */ - public boolean isDuplicate(String messageId); + boolean isDuplicate(String messageId); } diff --git a/weixin-java-common/src/main/java/me/chanjar/weixin/common/api/WxMessageInMemoryDuplicateChecker.java b/weixin-java-common/src/main/java/me/chanjar/weixin/common/api/WxMessageInMemoryDuplicateChecker.java index 1efc7a27e..5b0f4e4e3 100644 --- a/weixin-java-common/src/main/java/me/chanjar/weixin/common/api/WxMessageInMemoryDuplicateChecker.java +++ b/weixin-java-common/src/main/java/me/chanjar/weixin/common/api/WxMessageInMemoryDuplicateChecker.java @@ -87,11 +87,7 @@ public class WxMessageInMemoryDuplicateChecker implements WxMessageDuplicateChec } checkBackgroundProcessStarted(); Long timestamp = msgId2Timestamp.putIfAbsent(messageId, System.currentTimeMillis()); - if (timestamp == null) { - // 第一次接收到这个消息 - return false; - } - return true; + return timestamp != null; } diff --git a/weixin-java-common/src/main/java/me/chanjar/weixin/common/session/InternalSession.java b/weixin-java-common/src/main/java/me/chanjar/weixin/common/session/InternalSession.java index 79a7f4dbd..283672af7 100644 --- a/weixin-java-common/src/main/java/me/chanjar/weixin/common/session/InternalSession.java +++ b/weixin-java-common/src/main/java/me/chanjar/weixin/common/session/InternalSession.java @@ -13,7 +13,7 @@ public interface InternalSession { * * @param isValid The new value for the isValid flag */ - public void setValid(boolean isValid); + void setValid(boolean isValid); /** * Return the isValid flag for this session. diff --git a/weixin-java-common/src/main/java/me/chanjar/weixin/common/session/InternalSessionManager.java b/weixin-java-common/src/main/java/me/chanjar/weixin/common/session/InternalSessionManager.java index 556d8ab8e..bb9a8dca5 100644 --- a/weixin-java-common/src/main/java/me/chanjar/weixin/common/session/InternalSessionManager.java +++ b/weixin-java-common/src/main/java/me/chanjar/weixin/common/session/InternalSessionManager.java @@ -28,14 +28,14 @@ public interface InternalSessionManager { * @exception IllegalStateException if a new session cannot be * instantiated for any reason */ - public InternalSession createSession(String sessionId); + InternalSession createSession(String sessionId); /** * Remove this Session from the active Sessions for this Manager. * * @param session Session to be removed */ - public void remove(InternalSession session); + void remove(InternalSession session); /** * Remove this Session from the active Sessions for this Manager. @@ -43,7 +43,7 @@ public interface InternalSessionManager { * @param session Session to be removed * @param update Should the expiration statistics be updated */ - public void remove(InternalSession session, boolean update); + void remove(InternalSession session, boolean update); /** * Add this Session to the set of active Sessions for this Manager. @@ -71,7 +71,7 @@ public interface InternalSessionManager { /** * Implements the Manager interface, direct call to processExpires */ - public void backgroundProcess(); + void backgroundProcess(); /** * Set the default maximum inactive interval (in seconds) diff --git a/weixin-java-common/src/main/java/me/chanjar/weixin/common/session/StandardSession.java b/weixin-java-common/src/main/java/me/chanjar/weixin/common/session/StandardSession.java index d9827308a..b482c2b7c 100644 --- a/weixin-java-common/src/main/java/me/chanjar/weixin/common/session/StandardSession.java +++ b/weixin-java-common/src/main/java/me/chanjar/weixin/common/session/StandardSession.java @@ -323,9 +323,8 @@ public class StandardSession implements WxSession, InternalSession { if (!attributes.equals(session.attributes)) return false; if (!facade.equals(session.facade)) return false; if (!id.equals(session.id)) return false; - if (!manager.equals(session.manager)) return false; + return manager.equals(session.manager); - return true; } @Override diff --git a/weixin-java-common/src/main/java/me/chanjar/weixin/common/session/WxSession.java b/weixin-java-common/src/main/java/me/chanjar/weixin/common/session/WxSession.java index 816b172b6..25bed2d27 100644 --- a/weixin-java-common/src/main/java/me/chanjar/weixin/common/session/WxSession.java +++ b/weixin-java-common/src/main/java/me/chanjar/weixin/common/session/WxSession.java @@ -4,14 +4,14 @@ import java.util.Enumeration; public interface WxSession { - public Object getAttribute(String name); + Object getAttribute(String name); - public Enumeration getAttributeNames(); + Enumeration getAttributeNames(); - public void setAttribute(String name, Object value); + void setAttribute(String name, Object value); - public void removeAttribute(String name); + void removeAttribute(String name); - public void invalidate(); + void invalidate(); } diff --git a/weixin-java-common/src/main/java/me/chanjar/weixin/common/session/WxSessionManager.java b/weixin-java-common/src/main/java/me/chanjar/weixin/common/session/WxSessionManager.java index 9f74162ee..c966ddab2 100644 --- a/weixin-java-common/src/main/java/me/chanjar/weixin/common/session/WxSessionManager.java +++ b/weixin-java-common/src/main/java/me/chanjar/weixin/common/session/WxSessionManager.java @@ -5,12 +5,12 @@ public interface WxSessionManager { /** * 获取某个sessionId对应的session,如果sessionId没有对应的session,则新建一个并返回。 */ - public WxSession getSession(String sessionId); + WxSession getSession(String sessionId); /** * 获取某个sessionId对应的session,如果sessionId没有对应的session,若create为true则新建一个,否则返回null。 */ - public WxSession getSession(String sessionId, boolean create); + WxSession getSession(String sessionId, boolean create); } diff --git a/weixin-java-common/src/main/java/me/chanjar/weixin/common/util/http/InputStreamResponseHandler.java b/weixin-java-common/src/main/java/me/chanjar/weixin/common/util/http/InputStreamResponseHandler.java index cf7f26cfb..1bf13b9c6 100644 --- a/weixin-java-common/src/main/java/me/chanjar/weixin/common/util/http/InputStreamResponseHandler.java +++ b/weixin-java-common/src/main/java/me/chanjar/weixin/common/util/http/InputStreamResponseHandler.java @@ -14,7 +14,7 @@ public class InputStreamResponseHandler implements ResponseHandler public static final ResponseHandler INSTANCE = new InputStreamResponseHandler(); - public InputStream handleResponse(final HttpResponse response) throws HttpResponseException, IOException { + public InputStream handleResponse(final HttpResponse response) throws IOException { final StatusLine statusLine = response.getStatusLine(); final HttpEntity entity = response.getEntity(); if (statusLine.getStatusCode() >= 300) { diff --git a/weixin-java-common/src/main/java/me/chanjar/weixin/common/util/http/MediaDownloadRequestExecutor.java b/weixin-java-common/src/main/java/me/chanjar/weixin/common/util/http/MediaDownloadRequestExecutor.java index c0bd21ce7..306ac258a 100644 --- a/weixin-java-common/src/main/java/me/chanjar/weixin/common/util/http/MediaDownloadRequestExecutor.java +++ b/weixin-java-common/src/main/java/me/chanjar/weixin/common/util/http/MediaDownloadRequestExecutor.java @@ -39,7 +39,7 @@ public class MediaDownloadRequestExecutor implements RequestExecutor { @Override - public WxMediaUploadResult execute(CloseableHttpClient httpclient, HttpHost httpProxy, String uri, File file) throws WxErrorException, ClientProtocolException, IOException { + public WxMediaUploadResult execute(CloseableHttpClient httpclient, HttpHost httpProxy, String uri, File file) throws WxErrorException, IOException { HttpPost httpPost = new HttpPost(uri); if (httpProxy != null) { RequestConfig config = RequestConfig.custom().setProxy(httpProxy).build(); diff --git a/weixin-java-common/src/main/java/me/chanjar/weixin/common/util/http/RequestExecutor.java b/weixin-java-common/src/main/java/me/chanjar/weixin/common/util/http/RequestExecutor.java index 1172a2fcb..50f524680 100644 --- a/weixin-java-common/src/main/java/me/chanjar/weixin/common/util/http/RequestExecutor.java +++ b/weixin-java-common/src/main/java/me/chanjar/weixin/common/util/http/RequestExecutor.java @@ -26,6 +26,6 @@ public interface RequestExecutor { * @throws ClientProtocolException * @throws IOException */ - public T execute(CloseableHttpClient httpclient, HttpHost httpProxy, String uri, E data) throws WxErrorException, ClientProtocolException, IOException; + T execute(CloseableHttpClient httpclient, HttpHost httpProxy, String uri, E data) throws WxErrorException, IOException; } diff --git a/weixin-java-common/src/main/java/me/chanjar/weixin/common/util/http/SimpleGetRequestExecutor.java b/weixin-java-common/src/main/java/me/chanjar/weixin/common/util/http/SimpleGetRequestExecutor.java index 5a1fb3283..36852377c 100644 --- a/weixin-java-common/src/main/java/me/chanjar/weixin/common/util/http/SimpleGetRequestExecutor.java +++ b/weixin-java-common/src/main/java/me/chanjar/weixin/common/util/http/SimpleGetRequestExecutor.java @@ -19,7 +19,7 @@ import java.io.IOException; public class SimpleGetRequestExecutor implements RequestExecutor { @Override - public String execute(CloseableHttpClient httpclient, HttpHost httpProxy, String uri, String queryParam) throws WxErrorException, ClientProtocolException, IOException { + public String execute(CloseableHttpClient httpclient, HttpHost httpProxy, String uri, String queryParam) throws WxErrorException, IOException { if (queryParam != null) { if (uri.indexOf('?') == -1) { uri += '?'; diff --git a/weixin-java-common/src/main/java/me/chanjar/weixin/common/util/http/SimplePostRequestExecutor.java b/weixin-java-common/src/main/java/me/chanjar/weixin/common/util/http/SimplePostRequestExecutor.java index 1613c96cf..e60ee06fe 100644 --- a/weixin-java-common/src/main/java/me/chanjar/weixin/common/util/http/SimplePostRequestExecutor.java +++ b/weixin-java-common/src/main/java/me/chanjar/weixin/common/util/http/SimplePostRequestExecutor.java @@ -21,7 +21,7 @@ import java.io.IOException; public class SimplePostRequestExecutor implements RequestExecutor { @Override - public String execute(CloseableHttpClient httpclient, HttpHost httpProxy, String uri, String postEntity) throws WxErrorException, ClientProtocolException, IOException { + public String execute(CloseableHttpClient httpclient, HttpHost httpProxy, String uri, String postEntity) throws WxErrorException, IOException { HttpPost httpPost = new HttpPost(uri); if (httpProxy != null) { RequestConfig config = RequestConfig.custom().setProxy(httpProxy).build(); diff --git a/weixin-java-common/src/main/java/me/chanjar/weixin/common/util/http/Utf8ResponseHandler.java b/weixin-java-common/src/main/java/me/chanjar/weixin/common/util/http/Utf8ResponseHandler.java index bad067c08..1ca1929aa 100644 --- a/weixin-java-common/src/main/java/me/chanjar/weixin/common/util/http/Utf8ResponseHandler.java +++ b/weixin-java-common/src/main/java/me/chanjar/weixin/common/util/http/Utf8ResponseHandler.java @@ -19,7 +19,7 @@ public class Utf8ResponseHandler implements ResponseHandler { public static final ResponseHandler INSTANCE = new Utf8ResponseHandler(); - public String handleResponse(final HttpResponse response) throws HttpResponseException, IOException { + public String handleResponse(final HttpResponse response) throws IOException { final StatusLine statusLine = response.getStatusLine(); final HttpEntity entity = response.getEntity(); if (statusLine.getStatusCode() >= 300) { diff --git a/weixin-java-common/src/main/java/me/chanjar/weixin/common/util/json/GsonHelper.java b/weixin-java-common/src/main/java/me/chanjar/weixin/common/util/json/GsonHelper.java index 614e28e29..9c274569c 100644 --- a/weixin-java-common/src/main/java/me/chanjar/weixin/common/util/json/GsonHelper.java +++ b/weixin-java-common/src/main/java/me/chanjar/weixin/common/util/json/GsonHelper.java @@ -91,7 +91,7 @@ public class GsonHelper { public static boolean getAsPrimitiveBool(JsonElement element) { Boolean r = getAsBoolean(element); - return r == null ? false : r.booleanValue(); + return r != null && r.booleanValue(); } public static Double getAsDouble(JsonElement element) { diff --git a/weixin-java-common/src/main/java/me/chanjar/weixin/common/util/res/StringManager.java b/weixin-java-common/src/main/java/me/chanjar/weixin/common/util/res/StringManager.java index 4668ec25d..0abe4d89a 100644 --- a/weixin-java-common/src/main/java/me/chanjar/weixin/common/util/res/StringManager.java +++ b/weixin-java-common/src/main/java/me/chanjar/weixin/common/util/res/StringManager.java @@ -211,10 +211,7 @@ public class StringManager { @Override protected boolean removeEldestEntry( Map.Entry eldest) { - if (size() > (LOCALE_CACHE_SIZE - 1)) { - return true; - } - return false; + return size() > (LOCALE_CACHE_SIZE - 1); } }; managers.put(packageName, map); diff --git a/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/api/WxCpConfigStorage.java b/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/api/WxCpConfigStorage.java index 38e6135a2..2b2ccf1d0 100644 --- a/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/api/WxCpConfigStorage.java +++ b/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/api/WxCpConfigStorage.java @@ -12,61 +12,61 @@ import java.io.File; */ public interface WxCpConfigStorage { - public String getAccessToken(); + String getAccessToken(); - public boolean isAccessTokenExpired(); + boolean isAccessTokenExpired(); /** * 强制将access token过期掉 */ - public void expireAccessToken(); + void expireAccessToken(); - public void updateAccessToken(WxAccessToken accessToken); + void updateAccessToken(WxAccessToken accessToken); - public void updateAccessToken(String accessToken, int expiresIn); + void updateAccessToken(String accessToken, int expiresIn); - public String getJsapiTicket(); + String getJsapiTicket(); - public boolean isJsapiTicketExpired(); + boolean isJsapiTicketExpired(); /** * 强制将jsapi ticket过期掉 */ - public void expireJsapiTicket(); + void expireJsapiTicket(); /** * 应该是线程安全的 * @param jsapiTicket */ - public void updateJsapiTicket(String jsapiTicket, int expiresInSeconds); + void updateJsapiTicket(String jsapiTicket, int expiresInSeconds); - public String getCorpId(); + String getCorpId(); - public String getCorpSecret(); + String getCorpSecret(); - public String getAgentId(); + String getAgentId(); - public String getToken(); + String getToken(); - public String getAesKey(); + String getAesKey(); - public long getExpiresTime(); + long getExpiresTime(); - public String getOauth2redirectUri(); + String getOauth2redirectUri(); - public String getHttp_proxy_host(); + String getHttp_proxy_host(); - public int getHttp_proxy_port(); + int getHttp_proxy_port(); - public String getHttp_proxy_username(); + String getHttp_proxy_username(); - public String getHttp_proxy_password(); + String getHttp_proxy_password(); - public File getTmpDirFile(); + File getTmpDirFile(); /** * http client builder * @return ApacheHttpClientBuilder */ - public ApacheHttpClientBuilder getApacheHttpClientBuilder(); + ApacheHttpClientBuilder getApacheHttpClientBuilder(); } diff --git a/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/api/WxCpMessageHandler.java b/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/api/WxCpMessageHandler.java index e4ee9ec76..36649c46a 100644 --- a/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/api/WxCpMessageHandler.java +++ b/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/api/WxCpMessageHandler.java @@ -22,9 +22,9 @@ public interface WxCpMessageHandler { * @param sessionManager * @return xml格式的消息,如果在异步规则里处理的话,可以返回null */ - public WxCpXmlOutMessage handle(WxCpXmlMessage wxMessage, - Map context, - WxCpService wxCpService, - WxSessionManager sessionManager) throws WxErrorException; + WxCpXmlOutMessage handle(WxCpXmlMessage wxMessage, + Map context, + WxCpService wxCpService, + WxSessionManager sessionManager) throws WxErrorException; } diff --git a/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/api/WxCpMessageInterceptor.java b/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/api/WxCpMessageInterceptor.java index f17e7954b..e6de0e69f 100644 --- a/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/api/WxCpMessageInterceptor.java +++ b/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/api/WxCpMessageInterceptor.java @@ -22,9 +22,9 @@ public interface WxCpMessageInterceptor { * @param sessionManager * @return true代表OK,false代表不OK */ - public boolean intercept(WxCpXmlMessage wxMessage, - Map context, - WxCpService wxCpService, - WxSessionManager sessionManager) throws WxErrorException; + boolean intercept(WxCpXmlMessage wxMessage, + Map context, + WxCpService wxCpService, + WxSessionManager sessionManager) throws WxErrorException; } diff --git a/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/api/WxCpMessageMatcher.java b/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/api/WxCpMessageMatcher.java index 09fbdd210..c2c62b936 100644 --- a/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/api/WxCpMessageMatcher.java +++ b/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/api/WxCpMessageMatcher.java @@ -10,6 +10,6 @@ public interface WxCpMessageMatcher { /** * 消息是否匹配某种模式 */ - public boolean match(WxCpXmlMessage message); + boolean match(WxCpXmlMessage message); } diff --git a/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/api/WxCpMessageRouter.java b/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/api/WxCpMessageRouter.java index 96b4e77de..f7e5286ba 100644 --- a/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/api/WxCpMessageRouter.java +++ b/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/api/WxCpMessageRouter.java @@ -210,10 +210,7 @@ public class WxCpMessageRouter { messageId = String.valueOf(wxMessage.getMsgId()); } - if (messageDuplicateChecker.isDuplicate(messageId)) { - return true; - } - return false; + return messageDuplicateChecker.isDuplicate(messageId); } diff --git a/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/api/WxCpService.java b/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/api/WxCpService.java index 33de577d0..7cf9332a7 100644 --- a/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/api/WxCpService.java +++ b/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/api/WxCpService.java @@ -70,7 +70,7 @@ public interface WxCpService { * @see #getJsapiTicket(boolean) * @throws WxErrorException */ - public String getJsapiTicket() throws WxErrorException; + String getJsapiTicket() throws WxErrorException; /** *
@@ -82,7 +82,7 @@ public interface WxCpService {
    * @param forceRefresh 强制刷新
    * @throws WxErrorException
    */
-  public String getJsapiTicket(boolean forceRefresh) throws WxErrorException;
+  String getJsapiTicket(boolean forceRefresh) throws WxErrorException;
 
   /**
    * 
@@ -92,7 +92,7 @@ public interface WxCpService {
    * 
* @param url url */ - public WxJsapiSignature createJsapiSignature(String url) throws WxErrorException; + WxJsapiSignature createJsapiSignature(String url) throws WxErrorException; /** *
diff --git a/weixin-java-cp/src/test/java/me/chanjar/weixin/cp/api/WxCpMessageRouterTest.java b/weixin-java-cp/src/test/java/me/chanjar/weixin/cp/api/WxCpMessageRouterTest.java
index aac58a104..ccf981dd0 100644
--- a/weixin-java-cp/src/test/java/me/chanjar/weixin/cp/api/WxCpMessageRouterTest.java
+++ b/weixin-java-cp/src/test/java/me/chanjar/weixin/cp/api/WxCpMessageRouterTest.java
@@ -49,7 +49,6 @@ public class WxCpMessageRouterTest {
         }
       }).handler(new WxEchoCpMessageHandler(sb, "matcher")).end()
       .rule().async(async).handler(new WxEchoCpMessageHandler(sb, "ALL")).end();
-    ;
   }
   
   @Test(dataProvider="messages-1")
diff --git a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/WxMpConfigStorage.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/WxMpConfigStorage.java
index d57b94a86..0cf9d2e1b 100644
--- a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/WxMpConfigStorage.java
+++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/WxMpConfigStorage.java
@@ -13,89 +13,89 @@ import java.io.File;
  */
 public interface WxMpConfigStorage {
 
-  public String getAccessToken();
+  String getAccessToken();
 
-  public boolean isAccessTokenExpired();
+  boolean isAccessTokenExpired();
 
   /**
    * 强制将access token过期掉
    */
-  public void expireAccessToken();
+  void expireAccessToken();
 
   /**
    * 应该是线程安全的
    * @param accessToken
    */
-  public void updateAccessToken(WxAccessToken accessToken);
+  void updateAccessToken(WxAccessToken accessToken);
 
   /**
    * 应该是线程安全的
    * @param accessToken
    * @param expiresIn
    */
-  public void updateAccessToken(String accessToken, int expiresIn);
+  void updateAccessToken(String accessToken, int expiresIn);
 
-  public String getJsapiTicket();
+  String getJsapiTicket();
 
-  public boolean isJsapiTicketExpired();
+  boolean isJsapiTicketExpired();
 
   /**
    * 强制将jsapi ticket过期掉
    */
-  public void expireJsapiTicket();
+  void expireJsapiTicket();
 
   /**
    * 应该是线程安全的
    * @param jsapiTicket
    */
-  public void updateJsapiTicket(String jsapiTicket, int expiresInSeconds);
+  void updateJsapiTicket(String jsapiTicket, int expiresInSeconds);
 
-  public String getCardApiTicket();
+  String getCardApiTicket();
 
-  public boolean isCardApiTicketExpired();
+  boolean isCardApiTicketExpired();
 
   /**
    * 强制将卡券api ticket过期掉
    */
-  public void expireCardApiTicket();
+  void expireCardApiTicket();
 
   /**
    * 应该是线程安全的
    * @param cardApiTicket
    */
-  public void updateCardApiTicket(String cardApiTicket, int expiresInSeconds);
+  void updateCardApiTicket(String cardApiTicket, int expiresInSeconds);
 
-  public String getAppId();
+  String getAppId();
 
-  public String getSecret();
+  String getSecret();
 
-  public String getPartnerId();
+  String getPartnerId();
   
-  public String getPartnerKey();
+  String getPartnerKey();
 
-  public String getToken();
+  String getToken();
 
-  public String getAesKey();
+  String getAesKey();
 
-  public long getExpiresTime();
+  long getExpiresTime();
 
-  public String getOauth2redirectUri();
+  String getOauth2redirectUri();
 
-  public String getHttp_proxy_host();
+  String getHttp_proxy_host();
 
-  public int getHttp_proxy_port();
+  int getHttp_proxy_port();
 
-  public String getHttp_proxy_username();
+  String getHttp_proxy_username();
 
-  public String getHttp_proxy_password();
+  String getHttp_proxy_password();
   
-  public File getTmpDirFile();
+  File getTmpDirFile();
 
-  public SSLContext getSSLContext();
+  SSLContext getSSLContext();
 
   /**
    * http client builder
    * @return ApacheHttpClientBuilder
    */
-  public ApacheHttpClientBuilder getApacheHttpClientBuilder();
+  ApacheHttpClientBuilder getApacheHttpClientBuilder();
 }
diff --git a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/WxMpGroupService.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/WxMpGroupService.java
index 80cadd55e..80bcf524d 100644
--- a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/WxMpGroupService.java
+++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/WxMpGroupService.java
@@ -22,7 +22,7 @@ public interface WxMpGroupService {
    *
    * @param name 分组名字(30个字符以内)
    */
-  public WxMpGroup groupCreate(String name) throws WxErrorException;
+  WxMpGroup groupCreate(String name) throws WxErrorException;
 
   /**
    * 
@@ -30,7 +30,7 @@ public interface WxMpGroupService {
    * 详情请见: http://mp.weixin.qq.com/wiki/index.php?title=分组管理接口
    * 
*/ - public List groupGet() throws WxErrorException; + List groupGet() throws WxErrorException; /** *
@@ -40,7 +40,7 @@ public interface WxMpGroupService {
    *
    * @param openid 微信用户的openid
    */
-  public long userGetGroup(String openid) throws WxErrorException;
+  long userGetGroup(String openid) throws WxErrorException;
 
   /**
    * 
@@ -52,7 +52,7 @@ public interface WxMpGroupService {
    *
    * @param group 要更新的group,group的id,name必须设置
    */
-  public void groupUpdate(WxMpGroup group) throws WxErrorException;
+  void groupUpdate(WxMpGroup group) throws WxErrorException;
 
   /**
    * 
@@ -65,5 +65,5 @@ public interface WxMpGroupService {
    * @param openid     用户openid
    * @param to_groupid 移动到的分组id
    */
-  public void userUpdateGroup(String openid, long to_groupid) throws WxErrorException;
+  void userUpdateGroup(String openid, long to_groupid) throws WxErrorException;
 }
diff --git a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/WxMpMaterialService.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/WxMpMaterialService.java
index 7254a0080..2325ccac3 100644
--- a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/WxMpMaterialService.java
+++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/WxMpMaterialService.java
@@ -25,7 +25,7 @@ public interface WxMpMaterialService {
    * @throws WxErrorException
    * @see #mediaUpload(String, String, InputStream)
    */
-  public WxMediaUploadResult mediaUpload(String mediaType, File file) throws WxErrorException;
+  WxMediaUploadResult mediaUpload(String mediaType, File file) throws WxErrorException;
 
   /**
    * 
@@ -39,7 +39,7 @@ public interface WxMpMaterialService {
    * @return 保存到本地的临时文件
    * @throws WxErrorException
    */
-  public File mediaDownload(String media_id) throws WxErrorException;
+  File mediaDownload(String media_id) throws WxErrorException;
 
   /**
    * 
@@ -51,7 +51,7 @@ public interface WxMpMaterialService {
    * @return WxMediaImgUploadResult 返回图片url
    * @throws WxErrorException
    */
-  public WxMediaImgUploadResult mediaImgUpload(File file) throws WxErrorException;
+  WxMediaImgUploadResult mediaImgUpload(File file) throws WxErrorException;
 
   /**
    * 
@@ -72,7 +72,7 @@ public interface WxMpMaterialService {
    * @param inputStream 输入流
    * @throws WxErrorException
    */
-  public WxMediaUploadResult mediaUpload(String mediaType, String fileType, InputStream inputStream) throws WxErrorException, IOException;
+  WxMediaUploadResult mediaUpload(String mediaType, String fileType, InputStream inputStream) throws WxErrorException, IOException;
 
   /**
    * 
@@ -90,7 +90,7 @@ public interface WxMpMaterialService {
    * @param mediaType 媒体类型, 请看{@link me.chanjar.weixin.common.api.WxConsts}
    * @param material  上传的素材, 请看{@link me.chanjar.weixin.mp.bean.WxMpMaterial}
    */
-  public WxMpMaterialUploadResult materialFileUpload(String mediaType, WxMpMaterial material) throws WxErrorException;
+  WxMpMaterialUploadResult materialFileUpload(String mediaType, WxMpMaterial material) throws WxErrorException;
 
   /**
    * 
@@ -101,7 +101,7 @@ public interface WxMpMaterialService {
    *
    * @param news 上传的图文消息, 请看{@link me.chanjar.weixin.mp.bean.WxMpMaterialNews}
    */
-  public WxMpMaterialUploadResult materialNewsUpload(WxMpMaterialNews news) throws WxErrorException;
+  WxMpMaterialUploadResult materialNewsUpload(WxMpMaterialNews news) throws WxErrorException;
 
   /**
    * 
@@ -112,7 +112,7 @@ public interface WxMpMaterialService {
    *
    * @param media_id 永久素材的id
    */
-  public InputStream materialImageOrVoiceDownload(String media_id) throws WxErrorException;
+  InputStream materialImageOrVoiceDownload(String media_id) throws WxErrorException;
 
   /**
    * 
@@ -123,7 +123,7 @@ public interface WxMpMaterialService {
    *
    * @param media_id 永久素材的id
    */
-  public WxMpMaterialVideoInfoResult materialVideoInfo(String media_id) throws WxErrorException;
+  WxMpMaterialVideoInfoResult materialVideoInfo(String media_id) throws WxErrorException;
 
   /**
    * 
@@ -134,7 +134,7 @@ public interface WxMpMaterialService {
    *
    * @param media_id 永久素材的id
    */
-  public WxMpMaterialNews materialNewsInfo(String media_id) throws WxErrorException;
+  WxMpMaterialNews materialNewsInfo(String media_id) throws WxErrorException;
 
   /**
    * 
@@ -145,7 +145,7 @@ public interface WxMpMaterialService {
    *
    * @param wxMpMaterialArticleUpdate 用来更新图文素材的bean, 请看{@link me.chanjar.weixin.mp.bean.WxMpMaterialArticleUpdate}
    */
-  public boolean materialNewsUpdate(WxMpMaterialArticleUpdate wxMpMaterialArticleUpdate) throws WxErrorException;
+  boolean materialNewsUpdate(WxMpMaterialArticleUpdate wxMpMaterialArticleUpdate) throws WxErrorException;
 
   /**
    * 
@@ -156,7 +156,7 @@ public interface WxMpMaterialService {
    *
    * @param media_id 永久素材的id
    */
-  public boolean materialDelete(String media_id) throws WxErrorException;
+  boolean materialDelete(String media_id) throws WxErrorException;
 
   /**
    * 
@@ -165,7 +165,7 @@ public interface WxMpMaterialService {
    * 详情请见: http://mp.weixin.qq.com/wiki/16/8cc64f8c189674b421bee3ed403993b8.html
    * 
*/ - public WxMpMaterialCountResult materialCount() throws WxErrorException; + WxMpMaterialCountResult materialCount() throws WxErrorException; /** *
@@ -177,7 +177,7 @@ public interface WxMpMaterialService {
    * @param offset 从全部素材的该偏移位置开始返回,0表示从第一个素材 返回
    * @param count  返回素材的数量,取值在1到20之间
    */
-  public WxMpMaterialNewsBatchGetResult materialNewsBatchGet(int offset, int count) throws WxErrorException;
+  WxMpMaterialNewsBatchGetResult materialNewsBatchGet(int offset, int count) throws WxErrorException;
 
   /**
    * 
@@ -190,6 +190,6 @@ public interface WxMpMaterialService {
    * @param offset 从全部素材的该偏移位置开始返回,0表示从第一个素材 返回
    * @param count  返回素材的数量,取值在1到20之间
    */
-  public WxMpMaterialFileBatchGetResult materialFileBatchGet(String type, int offset, int count) throws WxErrorException;
+  WxMpMaterialFileBatchGetResult materialFileBatchGet(String type, int offset, int count) throws WxErrorException;
 
 }
diff --git a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/WxMpMenuService.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/WxMpMenuService.java
index 670921dbc..31ce48d3a 100644
--- a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/WxMpMenuService.java
+++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/WxMpMenuService.java
@@ -18,7 +18,7 @@ public interface WxMpMenuService {
    * 详情请见:http://mp.weixin.qq.com/wiki/0/c48ccd12b69ae023159b4bfaa7c39c20.html
    * 
*/ - public void menuCreate(WxMenu menu) throws WxErrorException; + void menuCreate(WxMenu menu) throws WxErrorException; /** *
@@ -26,7 +26,7 @@ public interface WxMpMenuService {
    * 详情请见: http://mp.weixin.qq.com/wiki/index.php?title=自定义菜单删除接口
    * 
*/ - public void menuDelete() throws WxErrorException; + void menuDelete() throws WxErrorException; /** *
@@ -36,7 +36,7 @@ public interface WxMpMenuService {
    *
    * @param menuid
    */
-  public void menuDelete(String menuid) throws WxErrorException;
+  void menuDelete(String menuid) throws WxErrorException;
 
   /**
    * 
@@ -44,7 +44,7 @@ public interface WxMpMenuService {
    * 详情请见: http://mp.weixin.qq.com/wiki/index.php?title=自定义菜单查询接口
    * 
*/ - public WxMenu menuGet() throws WxErrorException; + WxMenu menuGet() throws WxErrorException; /** *
@@ -54,6 +54,6 @@ public interface WxMpMenuService {
    *
    * @param userid 可以是粉丝的OpenID,也可以是粉丝的微信号。
    */
-  public WxMenu menuTryMatch(String userid) throws WxErrorException;
+  WxMenu menuTryMatch(String userid) throws WxErrorException;
 
 }
diff --git a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/WxMpMessageHandler.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/WxMpMessageHandler.java
index 0fbc589c5..dae2a238b 100644
--- a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/WxMpMessageHandler.java
+++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/WxMpMessageHandler.java
@@ -21,9 +21,9 @@ public interface WxMpMessageHandler {
    * @param sessionManager
    * @return xml格式的消息,如果在异步规则里处理的话,可以返回null
    */
-  public WxMpXmlOutMessage handle(WxMpXmlMessage wxMessage,
-                                  Map context,
-                                  WxMpService wxMpService,
-                                  WxSessionManager sessionManager) throws WxErrorException;
+  WxMpXmlOutMessage handle(WxMpXmlMessage wxMessage,
+                           Map context,
+                           WxMpService wxMpService,
+                           WxSessionManager sessionManager) throws WxErrorException;
 
 }
diff --git a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/WxMpMessageInterceptor.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/WxMpMessageInterceptor.java
index 4b60c450a..3fcd6d951 100644
--- a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/WxMpMessageInterceptor.java
+++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/WxMpMessageInterceptor.java
@@ -22,9 +22,9 @@ public interface WxMpMessageInterceptor {
    * @param sessionManager
    * @return true代表OK,false代表不OK
    */
-  public boolean intercept(WxMpXmlMessage wxMessage,
-                            Map context,
-                            WxMpService wxMpService,
-                            WxSessionManager sessionManager) throws WxErrorException;
+  boolean intercept(WxMpXmlMessage wxMessage,
+                    Map context,
+                    WxMpService wxMpService,
+                    WxSessionManager sessionManager) throws WxErrorException;
 
 }
diff --git a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/WxMpMessageMatcher.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/WxMpMessageMatcher.java
index c4e3c456e..68798ae26 100644
--- a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/WxMpMessageMatcher.java
+++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/WxMpMessageMatcher.java
@@ -11,6 +11,6 @@ public interface WxMpMessageMatcher {
    * 消息是否匹配某种模式
    * @param message
    */
-  public boolean match(WxMpXmlMessage message);
+  boolean match(WxMpXmlMessage message);
 
 }
diff --git a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/WxMpMessageRouter.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/WxMpMessageRouter.java
index 73d0cabe7..1de7ba904 100644
--- a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/WxMpMessageRouter.java
+++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/WxMpMessageRouter.java
@@ -209,10 +209,7 @@ public class WxMpMessageRouter {
       messageId.append(wxMessage.getMsgId());
     }
 
-    if (messageDuplicateChecker.isDuplicate(messageId.toString())) {
-      return true;
-    }
-    return false;
+    return messageDuplicateChecker.isDuplicate(messageId.toString());
 
   }
 
diff --git a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/WxMpQrcodeService.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/WxMpQrcodeService.java
index 2015ae1b6..7997a70df 100644
--- a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/WxMpQrcodeService.java
+++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/WxMpQrcodeService.java
@@ -21,7 +21,7 @@ public interface WxMpQrcodeService {
    * @param scene_id       参数。
    * @param expire_seconds 过期秒数,默认60秒,最小60秒,最大1800秒
    */
-  public WxMpQrCodeTicket qrCodeCreateTmpTicket(int scene_id, Integer expire_seconds) throws WxErrorException;
+  WxMpQrCodeTicket qrCodeCreateTmpTicket(int scene_id, Integer expire_seconds) throws WxErrorException;
 
   /**
    * 
@@ -31,7 +31,7 @@ public interface WxMpQrcodeService {
    *
    * @param scene_id 参数。永久二维码时最大值为100000(目前参数只支持1--100000)
    */
-  public WxMpQrCodeTicket qrCodeCreateLastTicket(int scene_id) throws WxErrorException;
+  WxMpQrCodeTicket qrCodeCreateLastTicket(int scene_id) throws WxErrorException;
 
   /**
    * 
@@ -41,7 +41,7 @@ public interface WxMpQrcodeService {
    *
    * @param scene_str 参数。字符串类型长度现在为1到64
    */
-  public WxMpQrCodeTicket qrCodeCreateLastTicket(String scene_str) throws WxErrorException;
+  WxMpQrCodeTicket qrCodeCreateLastTicket(String scene_str) throws WxErrorException;
 
   /**
    * 
@@ -51,7 +51,7 @@ public interface WxMpQrcodeService {
    *
    * @param ticket 二维码ticket
    */
-  public File qrCodePicture(WxMpQrCodeTicket ticket) throws WxErrorException;
+  File qrCodePicture(WxMpQrCodeTicket ticket) throws WxErrorException;
 
   /**
    * 
@@ -62,7 +62,7 @@ public interface WxMpQrcodeService {
    * @param ticket       二维码ticket
    * @param needShortUrl 是否需要压缩的二维码地址
    */
-  public String qrCodePictureUrl(String ticket, boolean needShortUrl) throws WxErrorException;
+  String qrCodePictureUrl(String ticket, boolean needShortUrl) throws WxErrorException;
 
   /**
    * 
@@ -72,6 +72,6 @@ public interface WxMpQrcodeService {
    *
    * @param ticket 二维码ticket
    */
-  public String qrCodePictureUrl(String ticket) throws WxErrorException;
+  String qrCodePictureUrl(String ticket) throws WxErrorException;
 
 }
diff --git a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/WxMpUserService.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/WxMpUserService.java
index 818087b4a..0705e990a 100644
--- a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/WxMpUserService.java
+++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/WxMpUserService.java
@@ -25,7 +25,7 @@ public interface WxMpUserService {
    * @param openid 用户openid
    * @param remark 备注名
    */
-  public void userUpdateRemark(String openid, String remark) throws WxErrorException;
+  void userUpdateRemark(String openid, String remark) throws WxErrorException;
 
   /**
    * 
@@ -36,7 +36,7 @@ public interface WxMpUserService {
    * @param openid 用户openid
    * @param lang   语言,zh_CN 简体(默认),zh_TW 繁体,en 英语
    */
-  public WxMpUser userInfo(String openid, String lang) throws WxErrorException;
+  WxMpUser userInfo(String openid, String lang) throws WxErrorException;
 
   /**
    * 
@@ -46,7 +46,7 @@ public interface WxMpUserService {
    *
    * @param next_openid 可选,第一个拉取的OPENID,null为从头开始拉取
    */
-  public WxMpUserList userList(String next_openid) throws WxErrorException;
+  WxMpUserList userList(String next_openid) throws WxErrorException;
 
   /**
    * 
diff --git a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/util/http/MaterialDeleteRequestExecutor.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/util/http/MaterialDeleteRequestExecutor.java
index 751261bfd..e0529bd32 100644
--- a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/util/http/MaterialDeleteRequestExecutor.java
+++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/util/http/MaterialDeleteRequestExecutor.java
@@ -24,7 +24,7 @@ public class MaterialDeleteRequestExecutor implements RequestExecutor {
 
   @Override
-  public WxMpMaterialUploadResult execute(CloseableHttpClient httpclient, HttpHost httpProxy, String uri, WxMpMaterial material) throws WxErrorException, ClientProtocolException, IOException {
+  public WxMpMaterialUploadResult execute(CloseableHttpClient httpclient, HttpHost httpProxy, String uri, WxMpMaterial material) throws WxErrorException, IOException {
     HttpPost httpPost = new HttpPost(uri);
     if (httpProxy != null) {
       RequestConfig response = RequestConfig.custom().setProxy(httpProxy).build();
diff --git a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/util/http/MaterialVideoInfoRequestExecutor.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/util/http/MaterialVideoInfoRequestExecutor.java
index c9698b493..1434c8ebf 100644
--- a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/util/http/MaterialVideoInfoRequestExecutor.java
+++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/util/http/MaterialVideoInfoRequestExecutor.java
@@ -24,7 +24,7 @@ public class MaterialVideoInfoRequestExecutor implements RequestExecutor {
   @Override
-  public WxMediaImgUploadResult execute(CloseableHttpClient httpclient, HttpHost httpProxy, String uri, File data) throws WxErrorException, ClientProtocolException, IOException {
+  public WxMediaImgUploadResult execute(CloseableHttpClient httpclient, HttpHost httpProxy, String uri, File data) throws WxErrorException, IOException {
     HttpPost httpPost = new HttpPost(uri);
     if (httpProxy != null) {
       RequestConfig config = RequestConfig.custom().setProxy(httpProxy).build();
diff --git a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/util/http/QrCodeRequestExecutor.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/util/http/QrCodeRequestExecutor.java
index a643c68da..96e444e7f 100644
--- a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/util/http/QrCodeRequestExecutor.java
+++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/util/http/QrCodeRequestExecutor.java
@@ -31,7 +31,7 @@ public class QrCodeRequestExecutor implements RequestExecutor {
   @Override
   public void serialize(Long value, JsonGenerator gen,
       SerializerProvider serializers)
-      throws IOException, JsonProcessingException {
+      throws IOException {
     gen.writeString(DF.format(value * 1000));
   }
 }
diff --git a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/util/json/WxMpUserGsonAdapter.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/util/json/WxMpUserGsonAdapter.java
index 0b80e90ad..060c362a1 100644
--- a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/util/json/WxMpUserGsonAdapter.java
+++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/util/json/WxMpUserGsonAdapter.java
@@ -21,7 +21,7 @@ public class WxMpUserGsonAdapter implements JsonDeserializer {
     WxMpUser wxMpUser = new WxMpUser();
     Integer subscribe = GsonHelper.getInteger(o, "subscribe");
     if (subscribe != null) {
-      wxMpUser.setSubscribe(new Integer(0).equals(subscribe) ? false : true);
+      wxMpUser.setSubscribe(!new Integer(0).equals(subscribe));
     }
     wxMpUser.setCity(GsonHelper.getString(o, "city"));
     wxMpUser.setCountry(GsonHelper.getString(o, "country"));
diff --git a/weixin-java-mp/src/test/java/me/chanjar/weixin/mp/api/WxMpMessageRouterTest.java b/weixin-java-mp/src/test/java/me/chanjar/weixin/mp/api/WxMpMessageRouterTest.java
index bcc78edd1..a6cb0a63e 100644
--- a/weixin-java-mp/src/test/java/me/chanjar/weixin/mp/api/WxMpMessageRouterTest.java
+++ b/weixin-java-mp/src/test/java/me/chanjar/weixin/mp/api/WxMpMessageRouterTest.java
@@ -49,7 +49,6 @@ public class WxMpMessageRouterTest {
         }
       }).handler(new WxEchoMpMessageHandler(sb, "matcher")).end()
       .rule().async(async).handler(new WxEchoMpMessageHandler(sb, "ALL")).end();
-    ;
   }
   
   @Test(dataProvider="messages-1")