| @@ -7,6 +7,6 @@ import me.chanjar.weixin.common.exception.WxErrorException; | |||||
| */ | */ | ||||
| public interface WxErrorExceptionHandler { | public interface WxErrorExceptionHandler { | ||||
| public void handle(WxErrorException e); | |||||
| void handle(WxErrorException e); | |||||
| } | } | ||||
| @@ -22,6 +22,6 @@ public interface WxMessageDuplicateChecker { | |||||
| * @param messageId messageId需要根据上面讲的方式构造 | * @param messageId messageId需要根据上面讲的方式构造 | ||||
| * @return 如果是重复消息,返回true,否则返回false | * @return 如果是重复消息,返回true,否则返回false | ||||
| */ | */ | ||||
| public boolean isDuplicate(String messageId); | |||||
| boolean isDuplicate(String messageId); | |||||
| } | } | ||||
| @@ -87,11 +87,7 @@ public class WxMessageInMemoryDuplicateChecker implements WxMessageDuplicateChec | |||||
| } | } | ||||
| checkBackgroundProcessStarted(); | checkBackgroundProcessStarted(); | ||||
| Long timestamp = msgId2Timestamp.putIfAbsent(messageId, System.currentTimeMillis()); | Long timestamp = msgId2Timestamp.putIfAbsent(messageId, System.currentTimeMillis()); | ||||
| if (timestamp == null) { | |||||
| // 第一次接收到这个消息 | |||||
| return false; | |||||
| } | |||||
| return true; | |||||
| return timestamp != null; | |||||
| } | } | ||||
| @@ -13,7 +13,7 @@ public interface InternalSession { | |||||
| * | * | ||||
| * @param isValid The new value for the <code>isValid</code> flag | * @param isValid The new value for the <code>isValid</code> flag | ||||
| */ | */ | ||||
| public void setValid(boolean isValid); | |||||
| void setValid(boolean isValid); | |||||
| /** | /** | ||||
| * Return the <code>isValid</code> flag for this session. | * Return the <code>isValid</code> flag for this session. | ||||
| @@ -28,14 +28,14 @@ public interface InternalSessionManager { | |||||
| * @exception IllegalStateException if a new session cannot be | * @exception IllegalStateException if a new session cannot be | ||||
| * instantiated for any reason | * instantiated for any reason | ||||
| */ | */ | ||||
| public InternalSession createSession(String sessionId); | |||||
| InternalSession createSession(String sessionId); | |||||
| /** | /** | ||||
| * Remove this Session from the active Sessions for this Manager. | * Remove this Session from the active Sessions for this Manager. | ||||
| * | * | ||||
| * @param session Session to be removed | * @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. | * Remove this Session from the active Sessions for this Manager. | ||||
| @@ -43,7 +43,7 @@ public interface InternalSessionManager { | |||||
| * @param session Session to be removed | * @param session Session to be removed | ||||
| * @param update Should the expiration statistics be updated | * @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. | * 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 | * Implements the Manager interface, direct call to processExpires | ||||
| */ | */ | ||||
| public void backgroundProcess(); | |||||
| void backgroundProcess(); | |||||
| /** | /** | ||||
| * Set the default maximum inactive interval (in seconds) | * Set the default maximum inactive interval (in seconds) | ||||
| @@ -323,9 +323,8 @@ public class StandardSession implements WxSession, InternalSession { | |||||
| if (!attributes.equals(session.attributes)) return false; | if (!attributes.equals(session.attributes)) return false; | ||||
| if (!facade.equals(session.facade)) return false; | if (!facade.equals(session.facade)) return false; | ||||
| if (!id.equals(session.id)) return false; | if (!id.equals(session.id)) return false; | ||||
| if (!manager.equals(session.manager)) return false; | |||||
| return manager.equals(session.manager); | |||||
| return true; | |||||
| } | } | ||||
| @Override | @Override | ||||
| @@ -4,14 +4,14 @@ import java.util.Enumeration; | |||||
| public interface WxSession { | public interface WxSession { | ||||
| public Object getAttribute(String name); | |||||
| Object getAttribute(String name); | |||||
| public Enumeration<String> getAttributeNames(); | |||||
| Enumeration<String> 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(); | |||||
| } | } | ||||
| @@ -5,12 +5,12 @@ public interface WxSessionManager { | |||||
| /** | /** | ||||
| * 获取某个sessionId对应的session,如果sessionId没有对应的session,则新建一个并返回。 | * 获取某个sessionId对应的session,如果sessionId没有对应的session,则新建一个并返回。 | ||||
| */ | */ | ||||
| public WxSession getSession(String sessionId); | |||||
| WxSession getSession(String sessionId); | |||||
| /** | /** | ||||
| * 获取某个sessionId对应的session,如果sessionId没有对应的session,若create为true则新建一个,否则返回null。 | * 获取某个sessionId对应的session,如果sessionId没有对应的session,若create为true则新建一个,否则返回null。 | ||||
| */ | */ | ||||
| public WxSession getSession(String sessionId, boolean create); | |||||
| WxSession getSession(String sessionId, boolean create); | |||||
| } | } | ||||
| @@ -14,7 +14,7 @@ public class InputStreamResponseHandler implements ResponseHandler<InputStream> | |||||
| public static final ResponseHandler<InputStream> INSTANCE = new InputStreamResponseHandler(); | public static final ResponseHandler<InputStream> 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 StatusLine statusLine = response.getStatusLine(); | ||||
| final HttpEntity entity = response.getEntity(); | final HttpEntity entity = response.getEntity(); | ||||
| if (statusLine.getStatusCode() >= 300) { | if (statusLine.getStatusCode() >= 300) { | ||||
| @@ -39,7 +39,7 @@ public class MediaDownloadRequestExecutor implements RequestExecutor<File, Strin | |||||
| @Override | @Override | ||||
| public File execute(CloseableHttpClient httpclient, HttpHost httpProxy, String uri, String queryParam) throws WxErrorException, ClientProtocolException, IOException { | |||||
| public File execute(CloseableHttpClient httpclient, HttpHost httpProxy, String uri, String queryParam) throws WxErrorException, IOException { | |||||
| if (queryParam != null) { | if (queryParam != null) { | ||||
| if (uri.indexOf('?') == -1) { | if (uri.indexOf('?') == -1) { | ||||
| uri += '?'; | uri += '?'; | ||||
| @@ -25,7 +25,7 @@ import java.io.IOException; | |||||
| public class MediaUploadRequestExecutor implements RequestExecutor<WxMediaUploadResult, File> { | public class MediaUploadRequestExecutor implements RequestExecutor<WxMediaUploadResult, File> { | ||||
| @Override | @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); | HttpPost httpPost = new HttpPost(uri); | ||||
| if (httpProxy != null) { | if (httpProxy != null) { | ||||
| RequestConfig config = RequestConfig.custom().setProxy(httpProxy).build(); | RequestConfig config = RequestConfig.custom().setProxy(httpProxy).build(); | ||||
| @@ -26,6 +26,6 @@ public interface RequestExecutor<T, E> { | |||||
| * @throws ClientProtocolException | * @throws ClientProtocolException | ||||
| * @throws IOException | * @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; | |||||
| } | } | ||||
| @@ -19,7 +19,7 @@ import java.io.IOException; | |||||
| public class SimpleGetRequestExecutor implements RequestExecutor<String, String> { | public class SimpleGetRequestExecutor implements RequestExecutor<String, String> { | ||||
| @Override | @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 (queryParam != null) { | ||||
| if (uri.indexOf('?') == -1) { | if (uri.indexOf('?') == -1) { | ||||
| uri += '?'; | uri += '?'; | ||||
| @@ -21,7 +21,7 @@ import java.io.IOException; | |||||
| public class SimplePostRequestExecutor implements RequestExecutor<String, String> { | public class SimplePostRequestExecutor implements RequestExecutor<String, String> { | ||||
| @Override | @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); | HttpPost httpPost = new HttpPost(uri); | ||||
| if (httpProxy != null) { | if (httpProxy != null) { | ||||
| RequestConfig config = RequestConfig.custom().setProxy(httpProxy).build(); | RequestConfig config = RequestConfig.custom().setProxy(httpProxy).build(); | ||||
| @@ -19,7 +19,7 @@ public class Utf8ResponseHandler implements ResponseHandler<String> { | |||||
| public static final ResponseHandler<String> INSTANCE = new Utf8ResponseHandler(); | public static final ResponseHandler<String> 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 StatusLine statusLine = response.getStatusLine(); | ||||
| final HttpEntity entity = response.getEntity(); | final HttpEntity entity = response.getEntity(); | ||||
| if (statusLine.getStatusCode() >= 300) { | if (statusLine.getStatusCode() >= 300) { | ||||
| @@ -91,7 +91,7 @@ public class GsonHelper { | |||||
| public static boolean getAsPrimitiveBool(JsonElement element) { | public static boolean getAsPrimitiveBool(JsonElement element) { | ||||
| Boolean r = getAsBoolean(element); | Boolean r = getAsBoolean(element); | ||||
| return r == null ? false : r.booleanValue(); | |||||
| return r != null && r.booleanValue(); | |||||
| } | } | ||||
| public static Double getAsDouble(JsonElement element) { | public static Double getAsDouble(JsonElement element) { | ||||
| @@ -211,10 +211,7 @@ public class StringManager { | |||||
| @Override | @Override | ||||
| protected boolean removeEldestEntry( | protected boolean removeEldestEntry( | ||||
| Map.Entry<Locale,StringManager> eldest) { | Map.Entry<Locale,StringManager> eldest) { | ||||
| if (size() > (LOCALE_CACHE_SIZE - 1)) { | |||||
| return true; | |||||
| } | |||||
| return false; | |||||
| return size() > (LOCALE_CACHE_SIZE - 1); | |||||
| } | } | ||||
| }; | }; | ||||
| managers.put(packageName, map); | managers.put(packageName, map); | ||||
| @@ -12,61 +12,61 @@ import java.io.File; | |||||
| */ | */ | ||||
| public interface WxCpConfigStorage { | public interface WxCpConfigStorage { | ||||
| public String getAccessToken(); | |||||
| String getAccessToken(); | |||||
| public boolean isAccessTokenExpired(); | |||||
| boolean isAccessTokenExpired(); | |||||
| /** | /** | ||||
| * 强制将access token过期掉 | * 强制将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过期掉 | * 强制将jsapi ticket过期掉 | ||||
| */ | */ | ||||
| public void expireJsapiTicket(); | |||||
| void expireJsapiTicket(); | |||||
| /** | /** | ||||
| * 应该是线程安全的 | * 应该是线程安全的 | ||||
| * @param jsapiTicket | * @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 | * http client builder | ||||
| * @return ApacheHttpClientBuilder | * @return ApacheHttpClientBuilder | ||||
| */ | */ | ||||
| public ApacheHttpClientBuilder getApacheHttpClientBuilder(); | |||||
| ApacheHttpClientBuilder getApacheHttpClientBuilder(); | |||||
| } | } | ||||
| @@ -22,9 +22,9 @@ public interface WxCpMessageHandler { | |||||
| * @param sessionManager | * @param sessionManager | ||||
| * @return xml格式的消息,如果在异步规则里处理的话,可以返回null | * @return xml格式的消息,如果在异步规则里处理的话,可以返回null | ||||
| */ | */ | ||||
| public WxCpXmlOutMessage handle(WxCpXmlMessage wxMessage, | |||||
| Map<String, Object> context, | |||||
| WxCpService wxCpService, | |||||
| WxSessionManager sessionManager) throws WxErrorException; | |||||
| WxCpXmlOutMessage handle(WxCpXmlMessage wxMessage, | |||||
| Map<String, Object> context, | |||||
| WxCpService wxCpService, | |||||
| WxSessionManager sessionManager) throws WxErrorException; | |||||
| } | } | ||||
| @@ -22,9 +22,9 @@ public interface WxCpMessageInterceptor { | |||||
| * @param sessionManager | * @param sessionManager | ||||
| * @return true代表OK,false代表不OK | * @return true代表OK,false代表不OK | ||||
| */ | */ | ||||
| public boolean intercept(WxCpXmlMessage wxMessage, | |||||
| Map<String, Object> context, | |||||
| WxCpService wxCpService, | |||||
| WxSessionManager sessionManager) throws WxErrorException; | |||||
| boolean intercept(WxCpXmlMessage wxMessage, | |||||
| Map<String, Object> context, | |||||
| WxCpService wxCpService, | |||||
| WxSessionManager sessionManager) throws WxErrorException; | |||||
| } | } | ||||
| @@ -10,6 +10,6 @@ public interface WxCpMessageMatcher { | |||||
| /** | /** | ||||
| * 消息是否匹配某种模式 | * 消息是否匹配某种模式 | ||||
| */ | */ | ||||
| public boolean match(WxCpXmlMessage message); | |||||
| boolean match(WxCpXmlMessage message); | |||||
| } | } | ||||
| @@ -210,10 +210,7 @@ public class WxCpMessageRouter { | |||||
| messageId = String.valueOf(wxMessage.getMsgId()); | messageId = String.valueOf(wxMessage.getMsgId()); | ||||
| } | } | ||||
| if (messageDuplicateChecker.isDuplicate(messageId)) { | |||||
| return true; | |||||
| } | |||||
| return false; | |||||
| return messageDuplicateChecker.isDuplicate(messageId); | |||||
| } | } | ||||
| @@ -70,7 +70,7 @@ public interface WxCpService { | |||||
| * @see #getJsapiTicket(boolean) | * @see #getJsapiTicket(boolean) | ||||
| * @throws WxErrorException | * @throws WxErrorException | ||||
| */ | */ | ||||
| public String getJsapiTicket() throws WxErrorException; | |||||
| String getJsapiTicket() throws WxErrorException; | |||||
| /** | /** | ||||
| * <pre> | * <pre> | ||||
| @@ -82,7 +82,7 @@ public interface WxCpService { | |||||
| * @param forceRefresh 强制刷新 | * @param forceRefresh 强制刷新 | ||||
| * @throws WxErrorException | * @throws WxErrorException | ||||
| */ | */ | ||||
| public String getJsapiTicket(boolean forceRefresh) throws WxErrorException; | |||||
| String getJsapiTicket(boolean forceRefresh) throws WxErrorException; | |||||
| /** | /** | ||||
| * <pre> | * <pre> | ||||
| @@ -92,7 +92,7 @@ public interface WxCpService { | |||||
| * </pre> | * </pre> | ||||
| * @param url url | * @param url url | ||||
| */ | */ | ||||
| public WxJsapiSignature createJsapiSignature(String url) throws WxErrorException; | |||||
| WxJsapiSignature createJsapiSignature(String url) throws WxErrorException; | |||||
| /** | /** | ||||
| * <pre> | * <pre> | ||||
| @@ -49,7 +49,6 @@ public class WxCpMessageRouterTest { | |||||
| } | } | ||||
| }).handler(new WxEchoCpMessageHandler(sb, "matcher")).end() | }).handler(new WxEchoCpMessageHandler(sb, "matcher")).end() | ||||
| .rule().async(async).handler(new WxEchoCpMessageHandler(sb, "ALL")).end(); | .rule().async(async).handler(new WxEchoCpMessageHandler(sb, "ALL")).end(); | ||||
| ; | |||||
| } | } | ||||
| @Test(dataProvider="messages-1") | @Test(dataProvider="messages-1") | ||||
| @@ -13,89 +13,89 @@ import java.io.File; | |||||
| */ | */ | ||||
| public interface WxMpConfigStorage { | public interface WxMpConfigStorage { | ||||
| public String getAccessToken(); | |||||
| String getAccessToken(); | |||||
| public boolean isAccessTokenExpired(); | |||||
| boolean isAccessTokenExpired(); | |||||
| /** | /** | ||||
| * 强制将access token过期掉 | * 强制将access token过期掉 | ||||
| */ | */ | ||||
| public void expireAccessToken(); | |||||
| void expireAccessToken(); | |||||
| /** | /** | ||||
| * 应该是线程安全的 | * 应该是线程安全的 | ||||
| * @param accessToken | * @param accessToken | ||||
| */ | */ | ||||
| public void updateAccessToken(WxAccessToken accessToken); | |||||
| void updateAccessToken(WxAccessToken accessToken); | |||||
| /** | /** | ||||
| * 应该是线程安全的 | * 应该是线程安全的 | ||||
| * @param accessToken | * @param accessToken | ||||
| * @param expiresIn | * @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过期掉 | * 强制将jsapi ticket过期掉 | ||||
| */ | */ | ||||
| public void expireJsapiTicket(); | |||||
| void expireJsapiTicket(); | |||||
| /** | /** | ||||
| * 应该是线程安全的 | * 应该是线程安全的 | ||||
| * @param jsapiTicket | * @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过期掉 | * 强制将卡券api ticket过期掉 | ||||
| */ | */ | ||||
| public void expireCardApiTicket(); | |||||
| void expireCardApiTicket(); | |||||
| /** | /** | ||||
| * 应该是线程安全的 | * 应该是线程安全的 | ||||
| * @param cardApiTicket | * @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 | * http client builder | ||||
| * @return ApacheHttpClientBuilder | * @return ApacheHttpClientBuilder | ||||
| */ | */ | ||||
| public ApacheHttpClientBuilder getApacheHttpClientBuilder(); | |||||
| ApacheHttpClientBuilder getApacheHttpClientBuilder(); | |||||
| } | } | ||||
| @@ -22,7 +22,7 @@ public interface WxMpGroupService { | |||||
| * | * | ||||
| * @param name 分组名字(30个字符以内) | * @param name 分组名字(30个字符以内) | ||||
| */ | */ | ||||
| public WxMpGroup groupCreate(String name) throws WxErrorException; | |||||
| WxMpGroup groupCreate(String name) throws WxErrorException; | |||||
| /** | /** | ||||
| * <pre> | * <pre> | ||||
| @@ -30,7 +30,7 @@ public interface WxMpGroupService { | |||||
| * 详情请见: http://mp.weixin.qq.com/wiki/index.php?title=分组管理接口 | * 详情请见: http://mp.weixin.qq.com/wiki/index.php?title=分组管理接口 | ||||
| * </pre> | * </pre> | ||||
| */ | */ | ||||
| public List<WxMpGroup> groupGet() throws WxErrorException; | |||||
| List<WxMpGroup> groupGet() throws WxErrorException; | |||||
| /** | /** | ||||
| * <pre> | * <pre> | ||||
| @@ -40,7 +40,7 @@ public interface WxMpGroupService { | |||||
| * | * | ||||
| * @param openid 微信用户的openid | * @param openid 微信用户的openid | ||||
| */ | */ | ||||
| public long userGetGroup(String openid) throws WxErrorException; | |||||
| long userGetGroup(String openid) throws WxErrorException; | |||||
| /** | /** | ||||
| * <pre> | * <pre> | ||||
| @@ -52,7 +52,7 @@ public interface WxMpGroupService { | |||||
| * | * | ||||
| * @param group 要更新的group,group的id,name必须设置 | * @param group 要更新的group,group的id,name必须设置 | ||||
| */ | */ | ||||
| public void groupUpdate(WxMpGroup group) throws WxErrorException; | |||||
| void groupUpdate(WxMpGroup group) throws WxErrorException; | |||||
| /** | /** | ||||
| * <pre> | * <pre> | ||||
| @@ -65,5 +65,5 @@ public interface WxMpGroupService { | |||||
| * @param openid 用户openid | * @param openid 用户openid | ||||
| * @param to_groupid 移动到的分组id | * @param to_groupid 移动到的分组id | ||||
| */ | */ | ||||
| public void userUpdateGroup(String openid, long to_groupid) throws WxErrorException; | |||||
| void userUpdateGroup(String openid, long to_groupid) throws WxErrorException; | |||||
| } | } | ||||
| @@ -25,7 +25,7 @@ public interface WxMpMaterialService { | |||||
| * @throws WxErrorException | * @throws WxErrorException | ||||
| * @see #mediaUpload(String, String, InputStream) | * @see #mediaUpload(String, String, InputStream) | ||||
| */ | */ | ||||
| public WxMediaUploadResult mediaUpload(String mediaType, File file) throws WxErrorException; | |||||
| WxMediaUploadResult mediaUpload(String mediaType, File file) throws WxErrorException; | |||||
| /** | /** | ||||
| * <pre> | * <pre> | ||||
| @@ -39,7 +39,7 @@ public interface WxMpMaterialService { | |||||
| * @return 保存到本地的临时文件 | * @return 保存到本地的临时文件 | ||||
| * @throws WxErrorException | * @throws WxErrorException | ||||
| */ | */ | ||||
| public File mediaDownload(String media_id) throws WxErrorException; | |||||
| File mediaDownload(String media_id) throws WxErrorException; | |||||
| /** | /** | ||||
| * <pre> | * <pre> | ||||
| @@ -51,7 +51,7 @@ public interface WxMpMaterialService { | |||||
| * @return WxMediaImgUploadResult 返回图片url | * @return WxMediaImgUploadResult 返回图片url | ||||
| * @throws WxErrorException | * @throws WxErrorException | ||||
| */ | */ | ||||
| public WxMediaImgUploadResult mediaImgUpload(File file) throws WxErrorException; | |||||
| WxMediaImgUploadResult mediaImgUpload(File file) throws WxErrorException; | |||||
| /** | /** | ||||
| * <pre> | * <pre> | ||||
| @@ -72,7 +72,7 @@ public interface WxMpMaterialService { | |||||
| * @param inputStream 输入流 | * @param inputStream 输入流 | ||||
| * @throws WxErrorException | * @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; | |||||
| /** | /** | ||||
| * <pre> | * <pre> | ||||
| @@ -90,7 +90,7 @@ public interface WxMpMaterialService { | |||||
| * @param mediaType 媒体类型, 请看{@link me.chanjar.weixin.common.api.WxConsts} | * @param mediaType 媒体类型, 请看{@link me.chanjar.weixin.common.api.WxConsts} | ||||
| * @param material 上传的素材, 请看{@link me.chanjar.weixin.mp.bean.WxMpMaterial} | * @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; | |||||
| /** | /** | ||||
| * <pre> | * <pre> | ||||
| @@ -101,7 +101,7 @@ public interface WxMpMaterialService { | |||||
| * | * | ||||
| * @param news 上传的图文消息, 请看{@link me.chanjar.weixin.mp.bean.WxMpMaterialNews} | * @param news 上传的图文消息, 请看{@link me.chanjar.weixin.mp.bean.WxMpMaterialNews} | ||||
| */ | */ | ||||
| public WxMpMaterialUploadResult materialNewsUpload(WxMpMaterialNews news) throws WxErrorException; | |||||
| WxMpMaterialUploadResult materialNewsUpload(WxMpMaterialNews news) throws WxErrorException; | |||||
| /** | /** | ||||
| * <pre> | * <pre> | ||||
| @@ -112,7 +112,7 @@ public interface WxMpMaterialService { | |||||
| * | * | ||||
| * @param media_id 永久素材的id | * @param media_id 永久素材的id | ||||
| */ | */ | ||||
| public InputStream materialImageOrVoiceDownload(String media_id) throws WxErrorException; | |||||
| InputStream materialImageOrVoiceDownload(String media_id) throws WxErrorException; | |||||
| /** | /** | ||||
| * <pre> | * <pre> | ||||
| @@ -123,7 +123,7 @@ public interface WxMpMaterialService { | |||||
| * | * | ||||
| * @param media_id 永久素材的id | * @param media_id 永久素材的id | ||||
| */ | */ | ||||
| public WxMpMaterialVideoInfoResult materialVideoInfo(String media_id) throws WxErrorException; | |||||
| WxMpMaterialVideoInfoResult materialVideoInfo(String media_id) throws WxErrorException; | |||||
| /** | /** | ||||
| * <pre> | * <pre> | ||||
| @@ -134,7 +134,7 @@ public interface WxMpMaterialService { | |||||
| * | * | ||||
| * @param media_id 永久素材的id | * @param media_id 永久素材的id | ||||
| */ | */ | ||||
| public WxMpMaterialNews materialNewsInfo(String media_id) throws WxErrorException; | |||||
| WxMpMaterialNews materialNewsInfo(String media_id) throws WxErrorException; | |||||
| /** | /** | ||||
| * <pre> | * <pre> | ||||
| @@ -145,7 +145,7 @@ public interface WxMpMaterialService { | |||||
| * | * | ||||
| * @param wxMpMaterialArticleUpdate 用来更新图文素材的bean, 请看{@link me.chanjar.weixin.mp.bean.WxMpMaterialArticleUpdate} | * @param wxMpMaterialArticleUpdate 用来更新图文素材的bean, 请看{@link me.chanjar.weixin.mp.bean.WxMpMaterialArticleUpdate} | ||||
| */ | */ | ||||
| public boolean materialNewsUpdate(WxMpMaterialArticleUpdate wxMpMaterialArticleUpdate) throws WxErrorException; | |||||
| boolean materialNewsUpdate(WxMpMaterialArticleUpdate wxMpMaterialArticleUpdate) throws WxErrorException; | |||||
| /** | /** | ||||
| * <pre> | * <pre> | ||||
| @@ -156,7 +156,7 @@ public interface WxMpMaterialService { | |||||
| * | * | ||||
| * @param media_id 永久素材的id | * @param media_id 永久素材的id | ||||
| */ | */ | ||||
| public boolean materialDelete(String media_id) throws WxErrorException; | |||||
| boolean materialDelete(String media_id) throws WxErrorException; | |||||
| /** | /** | ||||
| * <pre> | * <pre> | ||||
| @@ -165,7 +165,7 @@ public interface WxMpMaterialService { | |||||
| * 详情请见: http://mp.weixin.qq.com/wiki/16/8cc64f8c189674b421bee3ed403993b8.html | * 详情请见: http://mp.weixin.qq.com/wiki/16/8cc64f8c189674b421bee3ed403993b8.html | ||||
| * </pre> | * </pre> | ||||
| */ | */ | ||||
| public WxMpMaterialCountResult materialCount() throws WxErrorException; | |||||
| WxMpMaterialCountResult materialCount() throws WxErrorException; | |||||
| /** | /** | ||||
| * <pre> | * <pre> | ||||
| @@ -177,7 +177,7 @@ public interface WxMpMaterialService { | |||||
| * @param offset 从全部素材的该偏移位置开始返回,0表示从第一个素材 返回 | * @param offset 从全部素材的该偏移位置开始返回,0表示从第一个素材 返回 | ||||
| * @param count 返回素材的数量,取值在1到20之间 | * @param count 返回素材的数量,取值在1到20之间 | ||||
| */ | */ | ||||
| public WxMpMaterialNewsBatchGetResult materialNewsBatchGet(int offset, int count) throws WxErrorException; | |||||
| WxMpMaterialNewsBatchGetResult materialNewsBatchGet(int offset, int count) throws WxErrorException; | |||||
| /** | /** | ||||
| * <pre> | * <pre> | ||||
| @@ -190,6 +190,6 @@ public interface WxMpMaterialService { | |||||
| * @param offset 从全部素材的该偏移位置开始返回,0表示从第一个素材 返回 | * @param offset 从全部素材的该偏移位置开始返回,0表示从第一个素材 返回 | ||||
| * @param count 返回素材的数量,取值在1到20之间 | * @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; | |||||
| } | } | ||||
| @@ -18,7 +18,7 @@ public interface WxMpMenuService { | |||||
| * 详情请见:http://mp.weixin.qq.com/wiki/0/c48ccd12b69ae023159b4bfaa7c39c20.html | * 详情请见:http://mp.weixin.qq.com/wiki/0/c48ccd12b69ae023159b4bfaa7c39c20.html | ||||
| * </pre> | * </pre> | ||||
| */ | */ | ||||
| public void menuCreate(WxMenu menu) throws WxErrorException; | |||||
| void menuCreate(WxMenu menu) throws WxErrorException; | |||||
| /** | /** | ||||
| * <pre> | * <pre> | ||||
| @@ -26,7 +26,7 @@ public interface WxMpMenuService { | |||||
| * 详情请见: http://mp.weixin.qq.com/wiki/index.php?title=自定义菜单删除接口 | * 详情请见: http://mp.weixin.qq.com/wiki/index.php?title=自定义菜单删除接口 | ||||
| * </pre> | * </pre> | ||||
| */ | */ | ||||
| public void menuDelete() throws WxErrorException; | |||||
| void menuDelete() throws WxErrorException; | |||||
| /** | /** | ||||
| * <pre> | * <pre> | ||||
| @@ -36,7 +36,7 @@ public interface WxMpMenuService { | |||||
| * | * | ||||
| * @param menuid | * @param menuid | ||||
| */ | */ | ||||
| public void menuDelete(String menuid) throws WxErrorException; | |||||
| void menuDelete(String menuid) throws WxErrorException; | |||||
| /** | /** | ||||
| * <pre> | * <pre> | ||||
| @@ -44,7 +44,7 @@ public interface WxMpMenuService { | |||||
| * 详情请见: http://mp.weixin.qq.com/wiki/index.php?title=自定义菜单查询接口 | * 详情请见: http://mp.weixin.qq.com/wiki/index.php?title=自定义菜单查询接口 | ||||
| * </pre> | * </pre> | ||||
| */ | */ | ||||
| public WxMenu menuGet() throws WxErrorException; | |||||
| WxMenu menuGet() throws WxErrorException; | |||||
| /** | /** | ||||
| * <pre> | * <pre> | ||||
| @@ -54,6 +54,6 @@ public interface WxMpMenuService { | |||||
| * | * | ||||
| * @param userid 可以是粉丝的OpenID,也可以是粉丝的微信号。 | * @param userid 可以是粉丝的OpenID,也可以是粉丝的微信号。 | ||||
| */ | */ | ||||
| public WxMenu menuTryMatch(String userid) throws WxErrorException; | |||||
| WxMenu menuTryMatch(String userid) throws WxErrorException; | |||||
| } | } | ||||
| @@ -21,9 +21,9 @@ public interface WxMpMessageHandler { | |||||
| * @param sessionManager | * @param sessionManager | ||||
| * @return xml格式的消息,如果在异步规则里处理的话,可以返回null | * @return xml格式的消息,如果在异步规则里处理的话,可以返回null | ||||
| */ | */ | ||||
| public WxMpXmlOutMessage handle(WxMpXmlMessage wxMessage, | |||||
| Map<String, Object> context, | |||||
| WxMpService wxMpService, | |||||
| WxSessionManager sessionManager) throws WxErrorException; | |||||
| WxMpXmlOutMessage handle(WxMpXmlMessage wxMessage, | |||||
| Map<String, Object> context, | |||||
| WxMpService wxMpService, | |||||
| WxSessionManager sessionManager) throws WxErrorException; | |||||
| } | } | ||||
| @@ -22,9 +22,9 @@ public interface WxMpMessageInterceptor { | |||||
| * @param sessionManager | * @param sessionManager | ||||
| * @return true代表OK,false代表不OK | * @return true代表OK,false代表不OK | ||||
| */ | */ | ||||
| public boolean intercept(WxMpXmlMessage wxMessage, | |||||
| Map<String, Object> context, | |||||
| WxMpService wxMpService, | |||||
| WxSessionManager sessionManager) throws WxErrorException; | |||||
| boolean intercept(WxMpXmlMessage wxMessage, | |||||
| Map<String, Object> context, | |||||
| WxMpService wxMpService, | |||||
| WxSessionManager sessionManager) throws WxErrorException; | |||||
| } | } | ||||
| @@ -11,6 +11,6 @@ public interface WxMpMessageMatcher { | |||||
| * 消息是否匹配某种模式 | * 消息是否匹配某种模式 | ||||
| * @param message | * @param message | ||||
| */ | */ | ||||
| public boolean match(WxMpXmlMessage message); | |||||
| boolean match(WxMpXmlMessage message); | |||||
| } | } | ||||
| @@ -209,10 +209,7 @@ public class WxMpMessageRouter { | |||||
| messageId.append(wxMessage.getMsgId()); | messageId.append(wxMessage.getMsgId()); | ||||
| } | } | ||||
| if (messageDuplicateChecker.isDuplicate(messageId.toString())) { | |||||
| return true; | |||||
| } | |||||
| return false; | |||||
| return messageDuplicateChecker.isDuplicate(messageId.toString()); | |||||
| } | } | ||||
| @@ -21,7 +21,7 @@ public interface WxMpQrcodeService { | |||||
| * @param scene_id 参数。 | * @param scene_id 参数。 | ||||
| * @param expire_seconds 过期秒数,默认60秒,最小60秒,最大1800秒 | * @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; | |||||
| /** | /** | ||||
| * <pre> | * <pre> | ||||
| @@ -31,7 +31,7 @@ public interface WxMpQrcodeService { | |||||
| * | * | ||||
| * @param scene_id 参数。永久二维码时最大值为100000(目前参数只支持1--100000) | * @param scene_id 参数。永久二维码时最大值为100000(目前参数只支持1--100000) | ||||
| */ | */ | ||||
| public WxMpQrCodeTicket qrCodeCreateLastTicket(int scene_id) throws WxErrorException; | |||||
| WxMpQrCodeTicket qrCodeCreateLastTicket(int scene_id) throws WxErrorException; | |||||
| /** | /** | ||||
| * <pre> | * <pre> | ||||
| @@ -41,7 +41,7 @@ public interface WxMpQrcodeService { | |||||
| * | * | ||||
| * @param scene_str 参数。字符串类型长度现在为1到64 | * @param scene_str 参数。字符串类型长度现在为1到64 | ||||
| */ | */ | ||||
| public WxMpQrCodeTicket qrCodeCreateLastTicket(String scene_str) throws WxErrorException; | |||||
| WxMpQrCodeTicket qrCodeCreateLastTicket(String scene_str) throws WxErrorException; | |||||
| /** | /** | ||||
| * <pre> | * <pre> | ||||
| @@ -51,7 +51,7 @@ public interface WxMpQrcodeService { | |||||
| * | * | ||||
| * @param ticket 二维码ticket | * @param ticket 二维码ticket | ||||
| */ | */ | ||||
| public File qrCodePicture(WxMpQrCodeTicket ticket) throws WxErrorException; | |||||
| File qrCodePicture(WxMpQrCodeTicket ticket) throws WxErrorException; | |||||
| /** | /** | ||||
| * <pre> | * <pre> | ||||
| @@ -62,7 +62,7 @@ public interface WxMpQrcodeService { | |||||
| * @param ticket 二维码ticket | * @param ticket 二维码ticket | ||||
| * @param needShortUrl 是否需要压缩的二维码地址 | * @param needShortUrl 是否需要压缩的二维码地址 | ||||
| */ | */ | ||||
| public String qrCodePictureUrl(String ticket, boolean needShortUrl) throws WxErrorException; | |||||
| String qrCodePictureUrl(String ticket, boolean needShortUrl) throws WxErrorException; | |||||
| /** | /** | ||||
| * <pre> | * <pre> | ||||
| @@ -72,6 +72,6 @@ public interface WxMpQrcodeService { | |||||
| * | * | ||||
| * @param ticket 二维码ticket | * @param ticket 二维码ticket | ||||
| */ | */ | ||||
| public String qrCodePictureUrl(String ticket) throws WxErrorException; | |||||
| String qrCodePictureUrl(String ticket) throws WxErrorException; | |||||
| } | } | ||||
| @@ -25,7 +25,7 @@ public interface WxMpUserService { | |||||
| * @param openid 用户openid | * @param openid 用户openid | ||||
| * @param remark 备注名 | * @param remark 备注名 | ||||
| */ | */ | ||||
| public void userUpdateRemark(String openid, String remark) throws WxErrorException; | |||||
| void userUpdateRemark(String openid, String remark) throws WxErrorException; | |||||
| /** | /** | ||||
| * <pre> | * <pre> | ||||
| @@ -36,7 +36,7 @@ public interface WxMpUserService { | |||||
| * @param openid 用户openid | * @param openid 用户openid | ||||
| * @param lang 语言,zh_CN 简体(默认),zh_TW 繁体,en 英语 | * @param lang 语言,zh_CN 简体(默认),zh_TW 繁体,en 英语 | ||||
| */ | */ | ||||
| public WxMpUser userInfo(String openid, String lang) throws WxErrorException; | |||||
| WxMpUser userInfo(String openid, String lang) throws WxErrorException; | |||||
| /** | /** | ||||
| * <pre> | * <pre> | ||||
| @@ -46,7 +46,7 @@ public interface WxMpUserService { | |||||
| * | * | ||||
| * @param next_openid 可选,第一个拉取的OPENID,null为从头开始拉取 | * @param next_openid 可选,第一个拉取的OPENID,null为从头开始拉取 | ||||
| */ | */ | ||||
| public WxMpUserList userList(String next_openid) throws WxErrorException; | |||||
| WxMpUserList userList(String next_openid) throws WxErrorException; | |||||
| /** | /** | ||||
| * <pre> | * <pre> | ||||
| @@ -24,7 +24,7 @@ public class MaterialDeleteRequestExecutor implements RequestExecutor<Boolean, S | |||||
| super(); | super(); | ||||
| } | } | ||||
| public Boolean execute(CloseableHttpClient httpclient, HttpHost httpProxy, String uri, String materialId) throws WxErrorException, ClientProtocolException, IOException { | |||||
| public Boolean execute(CloseableHttpClient httpclient, HttpHost httpProxy, String uri, String materialId) throws WxErrorException, IOException { | |||||
| HttpPost httpPost = new HttpPost(uri); | HttpPost httpPost = new HttpPost(uri); | ||||
| if (httpProxy != null) { | if (httpProxy != null) { | ||||
| RequestConfig config = RequestConfig.custom().setProxy(httpProxy).build(); | RequestConfig config = RequestConfig.custom().setProxy(httpProxy).build(); | ||||
| @@ -25,7 +25,7 @@ public class MaterialNewsInfoRequestExecutor implements RequestExecutor<WxMpMate | |||||
| super(); | super(); | ||||
| } | } | ||||
| public WxMpMaterialNews execute(CloseableHttpClient httpclient, HttpHost httpProxy, String uri, String materialId) throws WxErrorException, ClientProtocolException, IOException { | |||||
| public WxMpMaterialNews execute(CloseableHttpClient httpclient, HttpHost httpProxy, String uri, String materialId) throws WxErrorException, IOException { | |||||
| HttpPost httpPost = new HttpPost(uri); | HttpPost httpPost = new HttpPost(uri); | ||||
| if (httpProxy != null) { | if (httpProxy != null) { | ||||
| RequestConfig config = RequestConfig.custom().setProxy(httpProxy).build(); | RequestConfig config = RequestConfig.custom().setProxy(httpProxy).build(); | ||||
| @@ -23,7 +23,7 @@ import java.util.Map; | |||||
| public class MaterialUploadRequestExecutor implements RequestExecutor<WxMpMaterialUploadResult, WxMpMaterial> { | public class MaterialUploadRequestExecutor implements RequestExecutor<WxMpMaterialUploadResult, WxMpMaterial> { | ||||
| @Override | @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); | HttpPost httpPost = new HttpPost(uri); | ||||
| if (httpProxy != null) { | if (httpProxy != null) { | ||||
| RequestConfig response = RequestConfig.custom().setProxy(httpProxy).build(); | RequestConfig response = RequestConfig.custom().setProxy(httpProxy).build(); | ||||
| @@ -24,7 +24,7 @@ public class MaterialVideoInfoRequestExecutor implements RequestExecutor<WxMpMat | |||||
| super(); | super(); | ||||
| } | } | ||||
| public WxMpMaterialVideoInfoResult execute(CloseableHttpClient httpclient, HttpHost httpProxy, String uri, String materialId) throws WxErrorException, ClientProtocolException, IOException { | |||||
| public WxMpMaterialVideoInfoResult execute(CloseableHttpClient httpclient, HttpHost httpProxy, String uri, String materialId) throws WxErrorException, IOException { | |||||
| HttpPost httpPost = new HttpPost(uri); | HttpPost httpPost = new HttpPost(uri); | ||||
| if (httpProxy != null) { | if (httpProxy != null) { | ||||
| RequestConfig config = RequestConfig.custom().setProxy(httpProxy).build(); | RequestConfig config = RequestConfig.custom().setProxy(httpProxy).build(); | ||||
| @@ -34,7 +34,7 @@ public class MaterialVoiceAndImageDownloadRequestExecutor implements RequestExec | |||||
| this.tmpDirFile = tmpDirFile; | this.tmpDirFile = tmpDirFile; | ||||
| } | } | ||||
| public InputStream execute(CloseableHttpClient httpclient, HttpHost httpProxy, String uri, String materialId) throws WxErrorException, ClientProtocolException, IOException { | |||||
| public InputStream execute(CloseableHttpClient httpclient, HttpHost httpProxy, String uri, String materialId) throws WxErrorException, IOException { | |||||
| HttpPost httpPost = new HttpPost(uri); | HttpPost httpPost = new HttpPost(uri); | ||||
| if (httpProxy != null) { | if (httpProxy != null) { | ||||
| RequestConfig config = RequestConfig.custom().setProxy(httpProxy).build(); | RequestConfig config = RequestConfig.custom().setProxy(httpProxy).build(); | ||||
| @@ -24,7 +24,7 @@ import java.io.IOException; | |||||
| */ | */ | ||||
| public class MediaImgUploadRequestExecutor implements RequestExecutor<WxMediaImgUploadResult, File> { | public class MediaImgUploadRequestExecutor implements RequestExecutor<WxMediaImgUploadResult, File> { | ||||
| @Override | @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); | HttpPost httpPost = new HttpPost(uri); | ||||
| if (httpProxy != null) { | if (httpProxy != null) { | ||||
| RequestConfig config = RequestConfig.custom().setProxy(httpProxy).build(); | RequestConfig config = RequestConfig.custom().setProxy(httpProxy).build(); | ||||
| @@ -31,7 +31,7 @@ public class QrCodeRequestExecutor implements RequestExecutor<File, WxMpQrCodeTi | |||||
| @Override | @Override | ||||
| public File execute(CloseableHttpClient httpclient, HttpHost httpProxy, String uri, | public File execute(CloseableHttpClient httpclient, HttpHost httpProxy, String uri, | ||||
| WxMpQrCodeTicket ticket) throws WxErrorException, ClientProtocolException, IOException { | |||||
| WxMpQrCodeTicket ticket) throws WxErrorException, IOException { | |||||
| if (ticket != null) { | if (ticket != null) { | ||||
| if (uri.indexOf('?') == -1) { | if (uri.indexOf('?') == -1) { | ||||
| uri += '?'; | uri += '?'; | ||||
| @@ -18,7 +18,7 @@ public class WxLongTimeJsonSerializer extends JsonSerializer<Long> { | |||||
| @Override | @Override | ||||
| public void serialize(Long value, JsonGenerator gen, | public void serialize(Long value, JsonGenerator gen, | ||||
| SerializerProvider serializers) | SerializerProvider serializers) | ||||
| throws IOException, JsonProcessingException { | |||||
| throws IOException { | |||||
| gen.writeString(DF.format(value * 1000)); | gen.writeString(DF.format(value * 1000)); | ||||
| } | } | ||||
| } | } | ||||
| @@ -21,7 +21,7 @@ public class WxMpUserGsonAdapter implements JsonDeserializer<WxMpUser> { | |||||
| WxMpUser wxMpUser = new WxMpUser(); | WxMpUser wxMpUser = new WxMpUser(); | ||||
| Integer subscribe = GsonHelper.getInteger(o, "subscribe"); | Integer subscribe = GsonHelper.getInteger(o, "subscribe"); | ||||
| if (subscribe != null) { | 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.setCity(GsonHelper.getString(o, "city")); | ||||
| wxMpUser.setCountry(GsonHelper.getString(o, "country")); | wxMpUser.setCountry(GsonHelper.getString(o, "country")); | ||||
| @@ -49,7 +49,6 @@ public class WxMpMessageRouterTest { | |||||
| } | } | ||||
| }).handler(new WxEchoMpMessageHandler(sb, "matcher")).end() | }).handler(new WxEchoMpMessageHandler(sb, "matcher")).end() | ||||
| .rule().async(async).handler(new WxEchoMpMessageHandler(sb, "ALL")).end(); | .rule().async(async).handler(new WxEchoMpMessageHandler(sb, "ALL")).end(); | ||||
| ; | |||||
| } | } | ||||
| @Test(dataProvider="messages-1") | @Test(dataProvider="messages-1") | ||||