From 1388060891e57d02f458aae5574fff3bf87e9f3e Mon Sep 17 00:00:00 2001 From: BinaryWang Date: Thu, 8 Sep 2016 15:19:05 +0800 Subject: [PATCH] fix warnings --- .../weixin/cp/api/WxCpServiceImpl.java | 185 +++++++++++------- 1 file changed, 111 insertions(+), 74 deletions(-) diff --git a/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/api/WxCpServiceImpl.java b/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/api/WxCpServiceImpl.java index 84cb614a..741daf15 100644 --- a/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/api/WxCpServiceImpl.java +++ b/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/api/WxCpServiceImpl.java @@ -1,12 +1,28 @@ package me.chanjar.weixin.cp.api; +import java.io.File; +import java.io.IOException; +import java.io.InputStream; +import java.util.List; +import java.util.UUID; + +import org.apache.http.HttpHost; +import org.apache.http.client.ClientProtocolException; +import org.apache.http.client.config.RequestConfig; +import org.apache.http.client.methods.CloseableHttpResponse; +import org.apache.http.client.methods.HttpGet; +import org.apache.http.impl.client.BasicResponseHandler; +import org.apache.http.impl.client.CloseableHttpClient; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + import com.google.gson.JsonArray; import com.google.gson.JsonElement; import com.google.gson.JsonObject; +import com.google.gson.JsonParser; import com.google.gson.JsonPrimitive; -import com.google.gson.internal.Streams; import com.google.gson.reflect.TypeToken; -import com.google.gson.stream.JsonReader; + import me.chanjar.weixin.common.bean.WxAccessToken; import me.chanjar.weixin.common.bean.WxJsapiSignature; import me.chanjar.weixin.common.bean.menu.WxMenu; @@ -20,30 +36,20 @@ import me.chanjar.weixin.common.util.RandomUtils; import me.chanjar.weixin.common.util.StringUtils; import me.chanjar.weixin.common.util.crypto.SHA1; import me.chanjar.weixin.common.util.fs.FileUtils; -import me.chanjar.weixin.common.util.http.*; +import me.chanjar.weixin.common.util.http.ApacheHttpClientBuilder; +import me.chanjar.weixin.common.util.http.DefaultApacheHttpClientBuilder; +import me.chanjar.weixin.common.util.http.MediaDownloadRequestExecutor; +import me.chanjar.weixin.common.util.http.MediaUploadRequestExecutor; +import me.chanjar.weixin.common.util.http.RequestExecutor; +import me.chanjar.weixin.common.util.http.SimpleGetRequestExecutor; +import me.chanjar.weixin.common.util.http.SimplePostRequestExecutor; +import me.chanjar.weixin.common.util.http.URIUtil; import me.chanjar.weixin.common.util.json.GsonHelper; import me.chanjar.weixin.cp.bean.WxCpDepart; import me.chanjar.weixin.cp.bean.WxCpMessage; import me.chanjar.weixin.cp.bean.WxCpTag; import me.chanjar.weixin.cp.bean.WxCpUser; import me.chanjar.weixin.cp.util.json.WxCpGsonBuilder; -import org.apache.http.HttpHost; -import org.apache.http.client.ClientProtocolException; -import org.apache.http.client.config.RequestConfig; -import org.apache.http.client.methods.CloseableHttpResponse; -import org.apache.http.client.methods.HttpGet; -import org.apache.http.impl.client.BasicResponseHandler; -import org.apache.http.impl.client.CloseableHttpClient; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import java.io.File; -import java.io.IOException; -import java.io.InputStream; -import java.io.StringReader; -import java.security.NoSuchAlgorithmException; -import java.util.List; -import java.util.UUID; public class WxCpServiceImpl implements WxCpService { @@ -72,42 +78,48 @@ public class WxCpServiceImpl implements WxCpService { private int retrySleepMillis = 1000; private int maxRetryTimes = 5; + @Override public boolean checkSignature(String msgSignature, String timestamp, String nonce, String data) { try { - return SHA1.gen(wxCpConfigStorage.getToken(), timestamp, nonce, data).equals(msgSignature); + return SHA1.gen(this.wxCpConfigStorage.getToken(), timestamp, nonce, data) + .equals(msgSignature); } catch (Exception e) { return false; } } + @Override public void userAuthenticated(String userId) throws WxErrorException { String url = "https://qyapi.weixin.qq.com/cgi-bin/user/authsucc?userid=" + userId; get(url, null); } + @Override public String getAccessToken() throws WxErrorException { return getAccessToken(false); } + @Override public String getAccessToken(boolean forceRefresh) throws WxErrorException { if (forceRefresh) { - wxCpConfigStorage.expireAccessToken(); + this.wxCpConfigStorage.expireAccessToken(); } - if (wxCpConfigStorage.isAccessTokenExpired()) { - synchronized (globalAccessTokenRefreshLock) { - if (wxCpConfigStorage.isAccessTokenExpired()) { + if (this.wxCpConfigStorage.isAccessTokenExpired()) { + synchronized (this.globalAccessTokenRefreshLock) { + if (this.wxCpConfigStorage.isAccessTokenExpired()) { String url = "https://qyapi.weixin.qq.com/cgi-bin/gettoken?" - + "&corpid=" + wxCpConfigStorage.getCorpId() - + "&corpsecret=" + wxCpConfigStorage.getCorpSecret(); + + "&corpid=" + this.wxCpConfigStorage.getCorpId() + "&corpsecret=" + + this.wxCpConfigStorage.getCorpSecret(); try { HttpGet httpGet = new HttpGet(url); - if (httpProxy != null) { - RequestConfig config = RequestConfig.custom().setProxy(httpProxy).build(); + if (this.httpProxy != null) { + RequestConfig config = RequestConfig.custom() + .setProxy(this.httpProxy).build(); httpGet.setConfig(config); } - CloseableHttpClient httpclient = getHttpclient(); String resultContent = null; - try (CloseableHttpResponse response = httpclient.execute(httpGet)) { + try (CloseableHttpClient httpclient = getHttpclient(); + CloseableHttpResponse response = httpclient.execute(httpGet)) { resultContent = new BasicResponseHandler().handleResponse(response); } finally { httpGet.releaseConnection(); @@ -117,7 +129,8 @@ public class WxCpServiceImpl implements WxCpService { throw new WxErrorException(error); } WxAccessToken accessToken = WxAccessToken.fromJson(resultContent); - wxCpConfigStorage.updateAccessToken(accessToken.getAccessToken(), accessToken.getExpiresIn()); + this.wxCpConfigStorage.updateAccessToken( + accessToken.getAccessToken(), accessToken.getExpiresIn()); } catch (ClientProtocolException e) { throw new RuntimeException(e); } catch (IOException e) { @@ -126,33 +139,37 @@ public class WxCpServiceImpl implements WxCpService { } } } - return wxCpConfigStorage.getAccessToken(); + return this.wxCpConfigStorage.getAccessToken(); } + @Override public String getJsapiTicket() throws WxErrorException { return getJsapiTicket(false); } + @Override public String getJsapiTicket(boolean forceRefresh) throws WxErrorException { if (forceRefresh) { - wxCpConfigStorage.expireJsapiTicket(); + this.wxCpConfigStorage.expireJsapiTicket(); } - if (wxCpConfigStorage.isJsapiTicketExpired()) { - synchronized (globalJsapiTicketRefreshLock) { - if (wxCpConfigStorage.isJsapiTicketExpired()) { + if (this.wxCpConfigStorage.isJsapiTicketExpired()) { + synchronized (this.globalJsapiTicketRefreshLock) { + if (this.wxCpConfigStorage.isJsapiTicketExpired()) { String url = "https://qyapi.weixin.qq.com/cgi-bin/get_jsapi_ticket"; String responseContent = execute(new SimpleGetRequestExecutor(), url, null); - JsonElement tmpJsonElement = Streams.parse(new JsonReader(new StringReader(responseContent))); + JsonElement tmpJsonElement = new JsonParser().parse(responseContent); JsonObject tmpJsonObject = tmpJsonElement.getAsJsonObject(); String jsapiTicket = tmpJsonObject.get("ticket").getAsString(); int expiresInSeconds = tmpJsonObject.get("expires_in").getAsInt(); - wxCpConfigStorage.updateJsapiTicket(jsapiTicket, expiresInSeconds); + this.wxCpConfigStorage.updateJsapiTicket(jsapiTicket, + expiresInSeconds); } } } - return wxCpConfigStorage.getJsapiTicket(); + return this.wxCpConfigStorage.getJsapiTicket(); } + @Override public WxJsapiSignature createJsapiSignature(String url) throws WxErrorException { long timestamp = System.currentTimeMillis() / 1000; String noncestr = RandomUtils.getRandomStr(); @@ -175,6 +192,7 @@ public class WxCpServiceImpl implements WxCpService { return jsapiSignature; } + @Override public void messageSend(WxCpMessage message) throws WxErrorException { String url = "https://qyapi.weixin.qq.com/cgi-bin/message/send"; post(url, message.toJson()); @@ -182,18 +200,19 @@ public class WxCpServiceImpl implements WxCpService { @Override public void menuCreate(WxMenu menu) throws WxErrorException { - menuCreate(wxCpConfigStorage.getAgentId(), menu); + menuCreate(this.wxCpConfigStorage.getAgentId(), menu); } @Override public void menuCreate(String agentId, WxMenu menu) throws WxErrorException { - String url = "https://qyapi.weixin.qq.com/cgi-bin/menu/create?agentid=" + wxCpConfigStorage.getAgentId(); + String url = "https://qyapi.weixin.qq.com/cgi-bin/menu/create?agentid=" + + this.wxCpConfigStorage.getAgentId(); post(url, menu.toJson()); } @Override public void menuDelete() throws WxErrorException { - menuDelete(wxCpConfigStorage.getAgentId()); + menuDelete(this.wxCpConfigStorage.getAgentId()); } @Override @@ -204,7 +223,7 @@ public class WxCpServiceImpl implements WxCpService { @Override public WxMenu menuGet() throws WxErrorException { - return menuGet(wxCpConfigStorage.getAgentId()); + return menuGet(this.wxCpConfigStorage.getAgentId()); } @Override @@ -222,42 +241,52 @@ public class WxCpServiceImpl implements WxCpService { } } + @Override public WxMediaUploadResult mediaUpload(String mediaType, String fileType, InputStream inputStream) throws WxErrorException, IOException { return mediaUpload(mediaType, FileUtils.createTmpFile(inputStream, UUID.randomUUID().toString(), fileType)); } + @Override public WxMediaUploadResult mediaUpload(String mediaType, File file) throws WxErrorException { String url = "https://qyapi.weixin.qq.com/cgi-bin/media/upload?type=" + mediaType; return execute(new MediaUploadRequestExecutor(), url, file); } + @Override public File mediaDownload(String media_id) throws WxErrorException { String url = "https://qyapi.weixin.qq.com/cgi-bin/media/get"; - return execute(new MediaDownloadRequestExecutor(wxCpConfigStorage.getTmpDirFile()), url, "media_id=" + media_id); + return execute( + new MediaDownloadRequestExecutor( + this.wxCpConfigStorage.getTmpDirFile()), + url, "media_id=" + media_id); } + @Override public Integer departCreate(WxCpDepart depart) throws WxErrorException { String url = "https://qyapi.weixin.qq.com/cgi-bin/department/create"; String responseContent = execute( new SimplePostRequestExecutor(), url, depart.toJson()); - JsonElement tmpJsonElement = Streams.parse(new JsonReader(new StringReader(responseContent))); + JsonElement tmpJsonElement = new JsonParser().parse(responseContent); return GsonHelper.getAsInteger(tmpJsonElement.getAsJsonObject().get("id")); } + @Override public void departUpdate(WxCpDepart group) throws WxErrorException { String url = "https://qyapi.weixin.qq.com/cgi-bin/department/update"; post(url, group.toJson()); } + @Override public void departDelete(Integer departId) throws WxErrorException { String url = "https://qyapi.weixin.qq.com/cgi-bin/department/delete?id=" + departId; get(url, null); } + @Override public List departGet() throws WxErrorException { String url = "https://qyapi.weixin.qq.com/cgi-bin/department/list"; String responseContent = get(url, null); @@ -265,7 +294,7 @@ public class WxCpServiceImpl implements WxCpService { * 操蛋的微信API,创建时返回的是 { group : { id : ..., name : ...} } * 查询时返回的是 { groups : [ { id : ..., name : ..., count : ... }, ... ] } */ - JsonElement tmpJsonElement = Streams.parse(new JsonReader(new StringReader(responseContent))); + JsonElement tmpJsonElement = new JsonParser().parse(responseContent); return WxCpGsonBuilder.INSTANCE.create() .fromJson( tmpJsonElement.getAsJsonObject().get("department"), @@ -325,7 +354,7 @@ public class WxCpServiceImpl implements WxCpService { } String responseContent = get(url, params); - JsonElement tmpJsonElement = Streams.parse(new JsonReader(new StringReader(responseContent))); + JsonElement tmpJsonElement = new JsonParser().parse(responseContent); return WxCpGsonBuilder.INSTANCE.create() .fromJson( tmpJsonElement.getAsJsonObject().get("userlist"), @@ -348,7 +377,7 @@ public class WxCpServiceImpl implements WxCpService { } String responseContent = get(url, params); - JsonElement tmpJsonElement = Streams.parse(new JsonReader(new StringReader(responseContent))); + JsonElement tmpJsonElement = new JsonParser().parse(responseContent); return WxCpGsonBuilder.INSTANCE.create() .fromJson( tmpJsonElement.getAsJsonObject().get("userlist"), @@ -363,7 +392,7 @@ public class WxCpServiceImpl implements WxCpService { JsonObject o = new JsonObject(); o.addProperty("tagname", tagName); String responseContent = post(url, o.toString()); - JsonElement tmpJsonElement = Streams.parse(new JsonReader(new StringReader(responseContent))); + JsonElement tmpJsonElement = new JsonParser().parse(responseContent); return tmpJsonElement.getAsJsonObject().get("tagid").getAsString(); } @@ -386,7 +415,7 @@ public class WxCpServiceImpl implements WxCpService { public List tagGet() throws WxErrorException { String url = "https://qyapi.weixin.qq.com/cgi-bin/tag/list"; String responseContent = get(url, null); - JsonElement tmpJsonElement = Streams.parse(new JsonReader(new StringReader(responseContent))); + JsonElement tmpJsonElement = new JsonParser().parse(responseContent); return WxCpGsonBuilder.INSTANCE.create() .fromJson( tmpJsonElement.getAsJsonObject().get("taglist"), @@ -399,7 +428,7 @@ public class WxCpServiceImpl implements WxCpService { public List tagGetUsers(String tagId) throws WxErrorException { String url = "https://qyapi.weixin.qq.com/cgi-bin/tag/get?tagid=" + tagId; String responseContent = get(url, null); - JsonElement tmpJsonElement = Streams.parse(new JsonReader(new StringReader(responseContent))); + JsonElement tmpJsonElement = new JsonParser().parse(responseContent); return WxCpGsonBuilder.INSTANCE.create() .fromJson( tmpJsonElement.getAsJsonObject().get("userlist"), @@ -454,7 +483,7 @@ public class WxCpServiceImpl implements WxCpService { @Override public String oauth2buildAuthorizationUrl(String redirectUri, String state) { String url = "https://open.weixin.qq.com/connect/oauth2/authorize?"; - url += "appid=" + wxCpConfigStorage.getCorpId(); + url += "appid=" + this.wxCpConfigStorage.getCorpId(); url += "&redirect_uri=" + URIUtil.encodeURIComponent(redirectUri); url += "&response_type=code"; url += "&scope=snsapi_base"; @@ -467,7 +496,7 @@ public class WxCpServiceImpl implements WxCpService { @Override public String[] oauth2getUserInfo(String code) throws WxErrorException { - return oauth2getUserInfo(wxCpConfigStorage.getAgentId(), code); + return oauth2getUserInfo(this.wxCpConfigStorage.getAgentId(), code); } @Override @@ -476,7 +505,7 @@ public class WxCpServiceImpl implements WxCpService { + "code=" + code + "&agendid=" + agentId; String responseText = get(url, null); - JsonElement je = Streams.parse(new JsonReader(new StringReader(responseText))); + JsonElement je = new JsonParser().parse(responseText); JsonObject jo = je.getAsJsonObject(); return new String[]{GsonHelper.getString(jo, "UserId"), GsonHelper.getString(jo, "DeviceId")}; } @@ -490,7 +519,7 @@ public class WxCpServiceImpl implements WxCpService { jsonObject.addProperty("invite_tips", inviteTips); } String responseContent = post(url, jsonObject.toString()); - JsonElement tmpJsonElement = Streams.parse(new JsonReader(new StringReader(responseContent))); + JsonElement tmpJsonElement = new JsonParser().parse(responseContent); return tmpJsonElement.getAsJsonObject().get("type").getAsInt(); } @@ -498,7 +527,7 @@ public class WxCpServiceImpl implements WxCpService { public String[] getCallbackIp() throws WxErrorException { String url = "https://qyapi.weixin.qq.com/cgi-bin/getcallbackip"; String responseContent = get(url, null); - JsonElement tmpJsonElement = Streams.parse(new JsonReader(new StringReader(responseContent))); + JsonElement tmpJsonElement = new JsonParser().parse(responseContent); JsonArray jsonArray = tmpJsonElement.getAsJsonObject().get("ip_list").getAsJsonArray(); String[] ips = new String[jsonArray.size()]; for (int i = 0; i < jsonArray.size(); i++) { @@ -507,10 +536,12 @@ public class WxCpServiceImpl implements WxCpService { return ips; } + @Override public String get(String url, String queryParam) throws WxErrorException { return execute(new SimpleGetRequestExecutor(), url, queryParam); } + @Override public String post(String url, String postData) throws WxErrorException { return execute(new SimplePostRequestExecutor(), url, postData); } @@ -518,6 +549,7 @@ public class WxCpServiceImpl implements WxCpService { /** * 向微信端发送请求,在这里执行的策略是当发生access_token过期时才去刷新,然后重新执行请求,而不是全局定时请求 */ + @Override public T execute(RequestExecutor executor, String uri, E data) throws WxErrorException { int retryTimes = 0; do { @@ -529,9 +561,10 @@ public class WxCpServiceImpl implements WxCpService { * -1 系统繁忙, 1000ms后重试 */ if (error.getErrorCode() == -1) { - int sleepMillis = retrySleepMillis * (1 << retryTimes); + int sleepMillis = this.retrySleepMillis * (1 << retryTimes); try { - log.debug("微信系统繁忙,{}ms 后重试(第{}次)", sleepMillis, retryTimes + 1); + this.log.debug("微信系统繁忙,{}ms 后重试(第{}次)", sleepMillis, + retryTimes + 1); Thread.sleep(sleepMillis); } catch (InterruptedException e1) { throw new RuntimeException(e1); @@ -540,7 +573,7 @@ public class WxCpServiceImpl implements WxCpService { throw e; } } - } while (++retryTimes < maxRetryTimes); + } while (++retryTimes < this.maxRetryTimes); throw new RuntimeException("微信服务端异常,超出重试次数"); } @@ -555,7 +588,8 @@ public class WxCpServiceImpl implements WxCpService { uriWithAccessToken += uri.indexOf('?') == -1 ? "?access_token=" + accessToken : "&access_token=" + accessToken; try { - return executor.execute(getHttpclient(), httpProxy, uriWithAccessToken, data); + return executor.execute(getHttpclient(), this.httpProxy, + uriWithAccessToken, data); } catch (WxErrorException e) { WxError error = e.getError(); /* @@ -565,7 +599,7 @@ public class WxCpServiceImpl implements WxCpService { */ if (error.getErrorCode() == 42001 || error.getErrorCode() == 40001) { // 强制设置wxCpConfigStorage它的access token过期了,这样在下一次请求里就会刷新access token - wxCpConfigStorage.expireAccessToken(); + this.wxCpConfigStorage.expireAccessToken(); return execute(executor, uri, data); } if (error.getErrorCode() != 0) { @@ -580,21 +614,24 @@ public class WxCpServiceImpl implements WxCpService { } protected CloseableHttpClient getHttpclient() { - return httpClient; + return this.httpClient; } + @Override public void setWxCpConfigStorage(WxCpConfigStorage wxConfigProvider) { this.wxCpConfigStorage = wxConfigProvider; - ApacheHttpClientBuilder apacheHttpClientBuilder = wxCpConfigStorage.getApacheHttpClientBuilder(); + ApacheHttpClientBuilder apacheHttpClientBuilder = this.wxCpConfigStorage + .getApacheHttpClientBuilder(); if (null == apacheHttpClientBuilder) { apacheHttpClientBuilder = DefaultApacheHttpClientBuilder.get(); } - apacheHttpClientBuilder.httpProxyHost(wxCpConfigStorage.getHttp_proxy_host()) - .httpProxyPort(wxCpConfigStorage.getHttp_proxy_port()) - .httpProxyUsername(wxCpConfigStorage.getHttp_proxy_username()) - .httpProxyPassword(wxCpConfigStorage.getHttp_proxy_password()); + apacheHttpClientBuilder + .httpProxyHost(this.wxCpConfigStorage.getHttp_proxy_host()) + .httpProxyPort(this.wxCpConfigStorage.getHttp_proxy_port()) + .httpProxyUsername(this.wxCpConfigStorage.getHttp_proxy_username()) + .httpProxyPassword(this.wxCpConfigStorage.getHttp_proxy_password()); - httpClient = apacheHttpClientBuilder.build(); + this.httpClient = apacheHttpClientBuilder.build(); } @Override @@ -610,18 +647,18 @@ public class WxCpServiceImpl implements WxCpService { @Override public WxSession getSession(String id) { - if (sessionManager == null) { + if (this.sessionManager == null) { return null; } - return sessionManager.getSession(id); + return this.sessionManager.getSession(id); } @Override public WxSession getSession(String id, boolean create) { - if (sessionManager == null) { + if (this.sessionManager == null) { return null; } - return sessionManager.getSession(id, create); + return this.sessionManager.getSession(id, create); } @@ -653,7 +690,7 @@ public class WxCpServiceImpl implements WxCpService { } public File getTmpDirFile() { - return tmpDirFile; + return this.tmpDirFile; } public void setTmpDirFile(File tmpDirFile) {