Browse Source

fix some warnings in common modules

master
BinaryWang 8 years ago
parent
commit
6f297ae95a
30 changed files with 185 additions and 178 deletions
  1. +1
    -1
      weixin-java-common/src/main/java/me/chanjar/weixin/common/api/WxConsts.java
  2. +7
    -7
      weixin-java-common/src/main/java/me/chanjar/weixin/common/api/WxMessageInMemoryDuplicateChecker.java
  3. +2
    -2
      weixin-java-common/src/main/java/me/chanjar/weixin/common/bean/WxAccessToken.java
  4. +9
    -9
      weixin-java-common/src/main/java/me/chanjar/weixin/common/bean/WxCardApiSignature.java
  5. +5
    -5
      weixin-java-common/src/main/java/me/chanjar/weixin/common/bean/WxJsapiSignature.java
  6. +4
    -4
      weixin-java-common/src/main/java/me/chanjar/weixin/common/bean/menu/WxMenu.java
  7. +7
    -7
      weixin-java-common/src/main/java/me/chanjar/weixin/common/bean/menu/WxMenuButton.java
  8. +7
    -7
      weixin-java-common/src/main/java/me/chanjar/weixin/common/bean/menu/WxMenuRule.java
  9. +6
    -6
      weixin-java-common/src/main/java/me/chanjar/weixin/common/bean/result/WxError.java
  10. +6
    -6
      weixin-java-common/src/main/java/me/chanjar/weixin/common/bean/result/WxMediaUploadResult.java
  11. +1
    -1
      weixin-java-common/src/main/java/me/chanjar/weixin/common/exception/WxErrorException.java
  12. +48
    -48
      weixin-java-common/src/main/java/me/chanjar/weixin/common/session/StandardSession.java
  13. +6
    -6
      weixin-java-common/src/main/java/me/chanjar/weixin/common/session/StandardSessionFacade.java
  14. +25
    -25
      weixin-java-common/src/main/java/me/chanjar/weixin/common/session/StandardSessionManager.java
  15. +2
    -2
      weixin-java-common/src/main/java/me/chanjar/weixin/common/session/TooManyActiveSessionsException.java
  16. +1
    -1
      weixin-java-common/src/main/java/me/chanjar/weixin/common/util/LogExceptionHandler.java
  17. +6
    -6
      weixin-java-common/src/main/java/me/chanjar/weixin/common/util/crypto/ByteGroup.java
  18. +1
    -1
      weixin-java-common/src/main/java/me/chanjar/weixin/common/util/crypto/PKCS7Encoder.java
  19. +10
    -10
      weixin-java-common/src/main/java/me/chanjar/weixin/common/util/crypto/WxCryptUtil.java
  20. +1
    -0
      weixin-java-common/src/main/java/me/chanjar/weixin/common/util/http/InputStreamResponseHandler.java
  21. +1
    -1
      weixin-java-common/src/main/java/me/chanjar/weixin/common/util/http/MediaDownloadRequestExecutor.java
  22. +1
    -1
      weixin-java-common/src/main/java/me/chanjar/weixin/common/util/http/URIUtil.java
  23. +1
    -0
      weixin-java-common/src/main/java/me/chanjar/weixin/common/util/http/Utf8ResponseHandler.java
  24. +1
    -0
      weixin-java-common/src/main/java/me/chanjar/weixin/common/util/json/WxAccessTokenAdapter.java
  25. +1
    -0
      weixin-java-common/src/main/java/me/chanjar/weixin/common/util/json/WxErrorAdapter.java
  26. +1
    -0
      weixin-java-common/src/main/java/me/chanjar/weixin/common/util/json/WxMediaUploadResultAdapter.java
  27. +2
    -0
      weixin-java-common/src/main/java/me/chanjar/weixin/common/util/json/WxMenuGsonAdapter.java
  28. +8
    -8
      weixin-java-common/src/main/java/me/chanjar/weixin/common/util/res/StringManager.java
  29. +2
    -2
      weixin-java-common/src/main/java/me/chanjar/weixin/common/util/xml/XStreamInitializer.java
  30. +12
    -12
      weixin-java-common/src/test/java/me/chanjar/weixin/common/util/crypto/WxCryptUtilTest.java

+ 1
- 1
weixin-java-common/src/main/java/me/chanjar/weixin/common/api/WxConsts.java View File

@@ -61,7 +61,7 @@ public class WxConsts {
/** /**
* 群发反馈消息代码所对应的文字描述 * 群发反馈消息代码所对应的文字描述
*/ */
public static final Map<String, String> MASS_ST_2_DESC = new HashMap<String, String>();
public static final Map<String, String> MASS_ST_2_DESC = new HashMap<>();
/////////////////////// ///////////////////////
// 微信端推送过来的事件类型 // 微信端推送过来的事件类型
/////////////////////// ///////////////////////


+ 7
- 7
weixin-java-common/src/main/java/me/chanjar/weixin/common/api/WxMessageInMemoryDuplicateChecker.java View File

@@ -25,7 +25,7 @@ public class WxMessageInMemoryDuplicateChecker implements WxMessageDuplicateChec
/** /**
* 消息id->消息时间戳的map * 消息id->消息时间戳的map
*/ */
private final ConcurrentHashMap<String, Long> msgId2Timestamp = new ConcurrentHashMap<String, Long>();
private final ConcurrentHashMap<String, Long> msgId2Timestamp = new ConcurrentHashMap<>();


/** /**
* 后台清理线程是否已经开启 * 后台清理线程是否已经开启
@@ -56,7 +56,7 @@ public class WxMessageInMemoryDuplicateChecker implements WxMessageDuplicateChec
} }


protected void checkBackgroundProcessStarted() { protected void checkBackgroundProcessStarted() {
if (backgroundProcessStarted.getAndSet(true)) {
if (this.backgroundProcessStarted.getAndSet(true)) {
return; return;
} }
Thread t = new Thread(new Runnable() { Thread t = new Thread(new Runnable() {
@@ -64,11 +64,11 @@ public class WxMessageInMemoryDuplicateChecker implements WxMessageDuplicateChec
public void run() { public void run() {
try { try {
while (true) { while (true) {
Thread.sleep(clearPeriod);
Thread.sleep(WxMessageInMemoryDuplicateChecker.this.clearPeriod);
Long now = System.currentTimeMillis(); Long now = System.currentTimeMillis();
for (Map.Entry<String, Long> entry : msgId2Timestamp.entrySet()) {
if (now - entry.getValue() > timeToLive) {
msgId2Timestamp.entrySet().remove(entry);
for (Map.Entry<String, Long> entry : WxMessageInMemoryDuplicateChecker.this.msgId2Timestamp.entrySet()) {
if (now - entry.getValue() > WxMessageInMemoryDuplicateChecker.this.timeToLive) {
WxMessageInMemoryDuplicateChecker.this.msgId2Timestamp.entrySet().remove(entry);
} }
} }
} }
@@ -87,7 +87,7 @@ public class WxMessageInMemoryDuplicateChecker implements WxMessageDuplicateChec
return false; return false;
} }
checkBackgroundProcessStarted(); checkBackgroundProcessStarted();
Long timestamp = msgId2Timestamp.putIfAbsent(messageId, System.currentTimeMillis());
Long timestamp = this.msgId2Timestamp.putIfAbsent(messageId, System.currentTimeMillis());
return timestamp != null; return timestamp != null;
} }




+ 2
- 2
weixin-java-common/src/main/java/me/chanjar/weixin/common/bean/WxAccessToken.java View File

@@ -16,7 +16,7 @@ public class WxAccessToken implements Serializable {
} }


public String getAccessToken() { public String getAccessToken() {
return accessToken;
return this.accessToken;
} }


public void setAccessToken(String accessToken) { public void setAccessToken(String accessToken) {
@@ -24,7 +24,7 @@ public class WxAccessToken implements Serializable {
} }


public int getExpiresIn() { public int getExpiresIn() {
return expiresIn;
return this.expiresIn;
} }


public void setExpiresIn(int expiresIn) { public void setExpiresIn(int expiresIn) {


+ 9
- 9
weixin-java-common/src/main/java/me/chanjar/weixin/common/bean/WxCardApiSignature.java View File

@@ -39,7 +39,7 @@ public class WxCardApiSignature implements Serializable {
} }


public String getAppId() { public String getAppId() {
return appId;
return this.appId;
} }


public void setAppId(String appId) { public void setAppId(String appId) {
@@ -47,7 +47,7 @@ public class WxCardApiSignature implements Serializable {
} }


public String getCardId() { public String getCardId() {
return cardId;
return this.cardId;
} }


public void setCardId(String cardId) { public void setCardId(String cardId) {
@@ -55,7 +55,7 @@ public class WxCardApiSignature implements Serializable {
} }


public String getCardType() { public String getCardType() {
return cardType;
return this.cardType;
} }


public void setCardType(String cardType) { public void setCardType(String cardType) {
@@ -63,7 +63,7 @@ public class WxCardApiSignature implements Serializable {
} }


public String getLocationId() { public String getLocationId() {
return locationId;
return this.locationId;
} }


public void setLocationId(String locationId) { public void setLocationId(String locationId) {
@@ -71,7 +71,7 @@ public class WxCardApiSignature implements Serializable {
} }


public String getCode() { public String getCode() {
return code;
return this.code;
} }


public void setCode(String code) { public void setCode(String code) {
@@ -79,7 +79,7 @@ public class WxCardApiSignature implements Serializable {
} }


public String getOpenId() { public String getOpenId() {
return openId;
return this.openId;
} }


public void setOpenId(String openId) { public void setOpenId(String openId) {
@@ -87,7 +87,7 @@ public class WxCardApiSignature implements Serializable {
} }


public Long getTimestamp() { public Long getTimestamp() {
return timestamp;
return this.timestamp;
} }


public void setTimestamp(Long timestamp) { public void setTimestamp(Long timestamp) {
@@ -95,7 +95,7 @@ public class WxCardApiSignature implements Serializable {
} }


public String getNonceStr() { public String getNonceStr() {
return nonceStr;
return this.nonceStr;
} }


public void setNonceStr(String nonceStr) { public void setNonceStr(String nonceStr) {
@@ -103,7 +103,7 @@ public class WxCardApiSignature implements Serializable {
} }


public String getSignature() { public String getSignature() {
return signature;
return this.signature;
} }


public void setSignature(String signature) { public void setSignature(String signature) {


+ 5
- 5
weixin-java-common/src/main/java/me/chanjar/weixin/common/bean/WxJsapiSignature.java View File

@@ -19,7 +19,7 @@ public class WxJsapiSignature implements Serializable {
private String signature; private String signature;


public String getSignature() { public String getSignature() {
return signature;
return this.signature;
} }


public void setSignature(String signature) { public void setSignature(String signature) {
@@ -27,7 +27,7 @@ public class WxJsapiSignature implements Serializable {
} }


public String getNoncestr() { public String getNoncestr() {
return noncestr;
return this.noncestr;
} }


public void setNoncestr(String noncestr) { public void setNoncestr(String noncestr) {
@@ -35,7 +35,7 @@ public class WxJsapiSignature implements Serializable {
} }


public long getTimestamp() { public long getTimestamp() {
return timestamp;
return this.timestamp;
} }


public void setTimestamp(long timestamp) { public void setTimestamp(long timestamp) {
@@ -43,7 +43,7 @@ public class WxJsapiSignature implements Serializable {
} }


public String getUrl() { public String getUrl() {
return url;
return this.url;
} }


public void setUrl(String url) { public void setUrl(String url) {
@@ -51,7 +51,7 @@ public class WxJsapiSignature implements Serializable {
} }


public String getAppid() { public String getAppid() {
return appid;
return this.appid;
} }


public void setAppid(String appid) { public void setAppid(String appid) {


+ 4
- 4
weixin-java-common/src/main/java/me/chanjar/weixin/common/bean/menu/WxMenu.java View File

@@ -19,7 +19,7 @@ public class WxMenu implements Serializable {


private static final long serialVersionUID = -7083914585539687746L; private static final long serialVersionUID = -7083914585539687746L;


private List<WxMenuButton> buttons = new ArrayList<WxMenuButton>();
private List<WxMenuButton> buttons = new ArrayList<>();


private WxMenuRule matchRule; private WxMenuRule matchRule;


@@ -40,7 +40,7 @@ public class WxMenu implements Serializable {
} }


public List<WxMenuButton> getButtons() { public List<WxMenuButton> getButtons() {
return buttons;
return this.buttons;
} }


public void setButtons(List<WxMenuButton> buttons) { public void setButtons(List<WxMenuButton> buttons) {
@@ -48,7 +48,7 @@ public class WxMenu implements Serializable {
} }


public WxMenuRule getMatchRule() { public WxMenuRule getMatchRule() {
return matchRule;
return this.matchRule;
} }


public void setMatchRule(WxMenuRule matchRule) { public void setMatchRule(WxMenuRule matchRule) {
@@ -62,7 +62,7 @@ public class WxMenu implements Serializable {
@Override @Override
public String toString() { public String toString() {
return "WxMenu{" + return "WxMenu{" +
"buttons=" + buttons +
"buttons=" + this.buttons +
'}'; '}';
} }




+ 7
- 7
weixin-java-common/src/main/java/me/chanjar/weixin/common/bean/menu/WxMenuButton.java View File

@@ -14,7 +14,7 @@ public class WxMenuButton {
private String url; private String url;
private String mediaId; private String mediaId;


private List<WxMenuButton> subButtons = new ArrayList<WxMenuButton>();
private List<WxMenuButton> subButtons = new ArrayList<>();


@Override @Override
public String toString() { public String toString() {
@@ -23,7 +23,7 @@ public class WxMenuButton {
} }
public String getType() { public String getType() {
return type;
return this.type;
} }


public void setType(String type) { public void setType(String type) {
@@ -31,7 +31,7 @@ public class WxMenuButton {
} }


public String getName() { public String getName() {
return name;
return this.name;
} }


public void setName(String name) { public void setName(String name) {
@@ -39,7 +39,7 @@ public class WxMenuButton {
} }


public String getKey() { public String getKey() {
return key;
return this.key;
} }


public void setKey(String key) { public void setKey(String key) {
@@ -47,7 +47,7 @@ public class WxMenuButton {
} }


public String getUrl() { public String getUrl() {
return url;
return this.url;
} }


public void setUrl(String url) { public void setUrl(String url) {
@@ -55,7 +55,7 @@ public class WxMenuButton {
} }


public List<WxMenuButton> getSubButtons() { public List<WxMenuButton> getSubButtons() {
return subButtons;
return this.subButtons;
} }


public void setSubButtons(List<WxMenuButton> subButtons) { public void setSubButtons(List<WxMenuButton> subButtons) {
@@ -63,7 +63,7 @@ public class WxMenuButton {
} }


public String getMediaId() { public String getMediaId() {
return mediaId;
return this.mediaId;
} }


public void setMediaId(String mediaId) { public void setMediaId(String mediaId) {


+ 7
- 7
weixin-java-common/src/main/java/me/chanjar/weixin/common/bean/menu/WxMenuRule.java View File

@@ -13,7 +13,7 @@ public class WxMenuRule {
private String language; private String language;


public String getTagId() { public String getTagId() {
return tagId;
return this.tagId;
} }


public void setTagId(String tagId) { public void setTagId(String tagId) {
@@ -21,7 +21,7 @@ public class WxMenuRule {
} }


public String getSex() { public String getSex() {
return sex;
return this.sex;
} }


public void setSex(String sex) { public void setSex(String sex) {
@@ -29,7 +29,7 @@ public class WxMenuRule {
} }


public String getCountry() { public String getCountry() {
return country;
return this.country;
} }


public void setCountry(String country) { public void setCountry(String country) {
@@ -37,7 +37,7 @@ public class WxMenuRule {
} }


public String getProvince() { public String getProvince() {
return province;
return this.province;
} }


public void setProvince(String province) { public void setProvince(String province) {
@@ -45,7 +45,7 @@ public class WxMenuRule {
} }


public String getCity() { public String getCity() {
return city;
return this.city;
} }


public void setCity(String city) { public void setCity(String city) {
@@ -53,7 +53,7 @@ public class WxMenuRule {
} }


public String getClientPlatformType() { public String getClientPlatformType() {
return clientPlatformType;
return this.clientPlatformType;
} }


public void setClientPlatformType(String clientPlatformType) { public void setClientPlatformType(String clientPlatformType) {
@@ -61,7 +61,7 @@ public class WxMenuRule {
} }


public String getLanguage() { public String getLanguage() {
return language;
return this.language;
} }


public void setLanguage(String language) { public void setLanguage(String language) {


+ 6
- 6
weixin-java-common/src/main/java/me/chanjar/weixin/common/bean/result/WxError.java View File

@@ -29,7 +29,7 @@ public class WxError implements Serializable {
} }


public int getErrorCode() { public int getErrorCode() {
return errorCode;
return this.errorCode;
} }


public void setErrorCode(int errorCode) { public void setErrorCode(int errorCode) {
@@ -37,7 +37,7 @@ public class WxError implements Serializable {
} }


public String getErrorMsg() { public String getErrorMsg() {
return errorMsg;
return this.errorMsg;
} }


public void setErrorMsg(String errorMsg) { public void setErrorMsg(String errorMsg) {
@@ -45,7 +45,7 @@ public class WxError implements Serializable {
} }


public String getJson() { public String getJson() {
return json;
return this.json;
} }


public void setJson(String json) { public void setJson(String json) {
@@ -54,10 +54,10 @@ public class WxError implements Serializable {


@Override @Override
public String toString() { public String toString() {
if (json != null) {
return json;
if (this.json != null) {
return this.json;
} }
return "错误: Code=" + errorCode + ", Msg=" + errorMsg;
return "错误: Code=" + this.errorCode + ", Msg=" + this.errorMsg;
} }


public static class Builder { public static class Builder {


+ 6
- 6
weixin-java-common/src/main/java/me/chanjar/weixin/common/bean/result/WxMediaUploadResult.java View File

@@ -17,7 +17,7 @@ public class WxMediaUploadResult implements Serializable {
} }


public String getType() { public String getType() {
return type;
return this.type;
} }


public void setType(String type) { public void setType(String type) {
@@ -25,7 +25,7 @@ public class WxMediaUploadResult implements Serializable {
} }


public String getMediaId() { public String getMediaId() {
return mediaId;
return this.mediaId;
} }


public void setMediaId(String mediaId) { public void setMediaId(String mediaId) {
@@ -33,7 +33,7 @@ public class WxMediaUploadResult implements Serializable {
} }


public long getCreatedAt() { public long getCreatedAt() {
return createdAt;
return this.createdAt;
} }


public void setCreatedAt(long createdAt) { public void setCreatedAt(long createdAt) {
@@ -41,7 +41,7 @@ public class WxMediaUploadResult implements Serializable {
} }


public String getThumbMediaId() { public String getThumbMediaId() {
return thumbMediaId;
return this.thumbMediaId;
} }


public void setThumbMediaId(String thumbMediaId) { public void setThumbMediaId(String thumbMediaId) {
@@ -50,8 +50,8 @@ public class WxMediaUploadResult implements Serializable {


@Override @Override
public String toString() { public String toString() {
return "WxUploadResult [type=" + type + ", media_id=" + mediaId + ", thumb_media_id=" + thumbMediaId
+ ", created_at=" + createdAt + "]";
return "WxUploadResult [type=" + this.type + ", media_id=" + this.mediaId + ", thumb_media_id=" + this.thumbMediaId
+ ", created_at=" + this.createdAt + "]";
} }


} }

+ 1
- 1
weixin-java-common/src/main/java/me/chanjar/weixin/common/exception/WxErrorException.java View File

@@ -14,7 +14,7 @@ public class WxErrorException extends Exception {
} }


public WxError getError() { public WxError getError() {
return error;
return this.error;
} }






+ 48
- 48
weixin-java-common/src/main/java/me/chanjar/weixin/common/session/StandardSession.java View File

@@ -18,7 +18,7 @@ public class StandardSession implements WxSession, InternalSession {
*/ */
protected static final String EMPTY_ARRAY[] = new String[0]; protected static final String EMPTY_ARRAY[] = new String[0];
// ------------------------------ WxSession // ------------------------------ WxSession
protected Map<String, Object> attributes = new ConcurrentHashMap<String, Object>();
protected Map<String, Object> attributes = new ConcurrentHashMap<>();
/** /**
* The session identifier of this Session. * The session identifier of this Session.
*/ */
@@ -47,7 +47,7 @@ public class StandardSession implements WxSession, InternalSession {
/** /**
* The current accessed time for this session. * The current accessed time for this session.
*/ */
protected volatile long thisAccessedTime = creationTime;
protected volatile long thisAccessedTime = this.creationTime;
/** /**
* The default maximum inactive interval for Sessions created by * The default maximum inactive interval for Sessions created by
* this Manager. * this Manager.
@@ -77,7 +77,7 @@ public class StandardSession implements WxSession, InternalSession {


if (name == null) return null; if (name == null) return null;


return (attributes.get(name));
return (this.attributes.get(name));
} }


@Override @Override
@@ -86,8 +86,8 @@ public class StandardSession implements WxSession, InternalSession {
throw new IllegalStateException throw new IllegalStateException
(sm.getString("sessionImpl.getAttributeNames.ise")); (sm.getString("sessionImpl.getAttributeNames.ise"));


Set<String> names = new HashSet<String>();
names.addAll(attributes.keySet());
Set<String> names = new HashSet<>();
names.addAll(this.attributes.keySet());
return Collections.enumeration(names); return Collections.enumeration(names);
} }


@@ -109,7 +109,7 @@ public class StandardSession implements WxSession, InternalSession {
throw new IllegalStateException(sm.getString( throw new IllegalStateException(sm.getString(
"sessionImpl.setAttribute.ise", getIdInternal())); "sessionImpl.setAttribute.ise", getIdInternal()));


attributes.put(name, value);
this.attributes.put(name, value);


} }


@@ -132,10 +132,10 @@ public class StandardSession implements WxSession, InternalSession {
@Override @Override
public WxSession getSession() { public WxSession getSession() {


if (facade == null) {
facade = new StandardSessionFacade(this);
if (this.facade == null) {
this.facade = new StandardSessionFacade(this);
} }
return (facade);
return (this.facade);


} }


@@ -157,15 +157,15 @@ public class StandardSession implements WxSession, InternalSession {
return true; return true;
} }


if (accessCount.get() > 0) {
if (this.accessCount.get() > 0) {
return true; return true;
} }


if (maxInactiveInterval > 0) {
if (this.maxInactiveInterval > 0) {
long timeNow = System.currentTimeMillis(); long timeNow = System.currentTimeMillis();
int timeIdle; int timeIdle;
timeIdle = (int) ((timeNow - thisAccessedTime) / 1000L);
if (timeIdle >= maxInactiveInterval) {
timeIdle = (int) ((timeNow - this.thisAccessedTime) / 1000L);
if (timeIdle >= this.maxInactiveInterval) {
expire(); expire();
} }
} }
@@ -193,7 +193,7 @@ public class StandardSession implements WxSession, InternalSession {
if (name == null) return; if (name == null) return;


// Remove this attribute from our collection // Remove this attribute from our collection
attributes.remove(name);
this.attributes.remove(name);


} }


@@ -202,7 +202,7 @@ public class StandardSession implements WxSession, InternalSession {
// Check to see if session has already been invalidated. // Check to see if session has already been invalidated.
// Do not check expiring at this point as expire should not return until // Do not check expiring at this point as expire should not return until
// isValid is false // isValid is false
if (!isValid)
if (!this.isValid)
return; return;


synchronized (this) { synchronized (this) {
@@ -210,24 +210,24 @@ public class StandardSession implements WxSession, InternalSession {
// Double check locking - isValid needs to be volatile // Double check locking - isValid needs to be volatile
// The check of expiring is to ensure that an infinite loop is not // The check of expiring is to ensure that an infinite loop is not
// entered as per bug 56339 // entered as per bug 56339
if (expiring || !isValid)
if (this.expiring || !this.isValid)
return; return;


if (manager == null)
if (this.manager == null)
return; return;


// Mark this session as "being expired" // Mark this session as "being expired"
expiring = true;
this.expiring = true;


accessCount.set(0);
this.accessCount.set(0);


// Remove this session from our manager's active sessions // Remove this session from our manager's active sessions
manager.remove(this, true);
this.manager.remove(this, true);




// We have completed expire of this session // We have completed expire of this session
setValid(false); setValid(false);
expiring = false;
this.expiring = false;


// Unbind any objects associated with this session // Unbind any objects associated with this session
String keys[] = keys(); String keys[] = keys();
@@ -244,7 +244,7 @@ public class StandardSession implements WxSession, InternalSession {
public void access() { public void access() {


this.thisAccessedTime = System.currentTimeMillis(); this.thisAccessedTime = System.currentTimeMillis();
accessCount.incrementAndGet();
this.accessCount.incrementAndGet();


} }


@@ -253,7 +253,7 @@ public class StandardSession implements WxSession, InternalSession {
public void endAccess() { public void endAccess() {


this.thisAccessedTime = System.currentTimeMillis(); this.thisAccessedTime = System.currentTimeMillis();
accessCount.decrementAndGet();
this.accessCount.decrementAndGet();


} }


@@ -273,13 +273,13 @@ public class StandardSession implements WxSession, InternalSession {


@Override @Override
public void setId(String id) { public void setId(String id) {
if ((this.id != null) && (manager != null))
manager.remove(this);
if ((this.id != null) && (this.manager != null))
this.manager.remove(this);


this.id = id; this.id = id;


if (manager != null)
manager.add(this);
if (this.manager != null)
this.manager.add(this);
} }


/** /**
@@ -289,7 +289,7 @@ public class StandardSession implements WxSession, InternalSession {
*/ */
protected String[] keys() { protected String[] keys() {


return attributes.keySet().toArray(EMPTY_ARRAY);
return this.attributes.keySet().toArray(EMPTY_ARRAY);


} }


@@ -300,31 +300,31 @@ public class StandardSession implements WxSession, InternalSession {


StandardSession session = (StandardSession) o; StandardSession session = (StandardSession) o;


if (creationTime != session.creationTime) return false;
if (expiring != session.expiring) return false;
if (isValid != session.isValid) return false;
if (maxInactiveInterval != session.maxInactiveInterval) return false;
if (thisAccessedTime != session.thisAccessedTime) return false;
if (!accessCount.equals(session.accessCount)) return false;
if (!attributes.equals(session.attributes)) return false;
if (!facade.equals(session.facade)) return false;
if (!id.equals(session.id)) return false;
return manager.equals(session.manager);
if (this.creationTime != session.creationTime) return false;
if (this.expiring != session.expiring) return false;
if (this.isValid != session.isValid) return false;
if (this.maxInactiveInterval != session.maxInactiveInterval) return false;
if (this.thisAccessedTime != session.thisAccessedTime) return false;
if (!this.accessCount.equals(session.accessCount)) return false;
if (!this.attributes.equals(session.attributes)) return false;
if (!this.facade.equals(session.facade)) return false;
if (!this.id.equals(session.id)) return false;
return this.manager.equals(session.manager);


} }


@Override @Override
public int hashCode() { public int hashCode() {
int result = attributes.hashCode();
result = 31 * result + id.hashCode();
result = 31 * result + (isValid ? 1 : 0);
result = 31 * result + (expiring ? 1 : 0);
result = 31 * result + manager.hashCode();
result = 31 * result + (int) (creationTime ^ (creationTime >>> 32));
result = 31 * result + (int) (thisAccessedTime ^ (thisAccessedTime >>> 32));
result = 31 * result + maxInactiveInterval;
result = 31 * result + facade.hashCode();
result = 31 * result + accessCount.hashCode();
int result = this.attributes.hashCode();
result = 31 * result + this.id.hashCode();
result = 31 * result + (this.isValid ? 1 : 0);
result = 31 * result + (this.expiring ? 1 : 0);
result = 31 * result + this.manager.hashCode();
result = 31 * result + (int) (this.creationTime ^ (this.creationTime >>> 32));
result = 31 * result + (int) (this.thisAccessedTime ^ (this.thisAccessedTime >>> 32));
result = 31 * result + this.maxInactiveInterval;
result = 31 * result + this.facade.hashCode();
result = 31 * result + this.accessCount.hashCode();
return result; return result;
} }




+ 6
- 6
weixin-java-common/src/main/java/me/chanjar/weixin/common/session/StandardSessionFacade.java View File

@@ -14,32 +14,32 @@ public class StandardSessionFacade implements WxSession {
} }


public InternalSession getInternalSession() { public InternalSession getInternalSession() {
return (InternalSession) session;
return (InternalSession) this.session;
} }


@Override @Override
public Object getAttribute(String name) { public Object getAttribute(String name) {
return session.getAttribute(name);
return this.session.getAttribute(name);
} }


@Override @Override
public Enumeration<String> getAttributeNames() { public Enumeration<String> getAttributeNames() {
return session.getAttributeNames();
return this.session.getAttributeNames();
} }


@Override @Override
public void setAttribute(String name, Object value) { public void setAttribute(String name, Object value) {
session.setAttribute(name, value);
this.session.setAttribute(name, value);
} }


@Override @Override
public void removeAttribute(String name) { public void removeAttribute(String name) {
session.removeAttribute(name);
this.session.removeAttribute(name);
} }


@Override @Override
public void invalidate() { public void invalidate() {
session.invalidate();
this.session.invalidate();
} }


} }

+ 25
- 25
weixin-java-common/src/main/java/me/chanjar/weixin/common/session/StandardSessionManager.java View File

@@ -32,7 +32,7 @@ public class StandardSessionManager implements WxSessionManager, InternalSession
* The set of currently active Sessions for this Manager, keyed by * The set of currently active Sessions for this Manager, keyed by
* session identifier. * session identifier.
*/ */
protected Map<String, InternalSession> sessions = new ConcurrentHashMap<String, InternalSession>();
protected Map<String, InternalSession> sessions = new ConcurrentHashMap<>();
/** /**
* The maximum number of active Sessions allowed, or -1 for no limit. * The maximum number of active Sessions allowed, or -1 for no limit.
*/ */
@@ -117,7 +117,7 @@ public class StandardSessionManager implements WxSessionManager, InternalSession
@Override @Override
public void remove(InternalSession session, boolean update) { public void remove(InternalSession session, boolean update) {
if (session.getIdInternal() != null) { if (session.getIdInternal() != null) {
sessions.remove(session.getIdInternal());
this.sessions.remove(session.getIdInternal());
} }
} }


@@ -127,7 +127,7 @@ public class StandardSessionManager implements WxSessionManager, InternalSession


if (id == null) if (id == null)
return (null); return (null);
return sessions.get(id);
return this.sessions.get(id);


} }


@@ -138,12 +138,12 @@ public class StandardSessionManager implements WxSessionManager, InternalSession
(sm.getString("sessionManagerImpl.createSession.ise")); (sm.getString("sessionManagerImpl.createSession.ise"));
} }


if ((maxActiveSessions >= 0) &&
(getActiveSessions() >= maxActiveSessions)) {
rejectedSessions++;
if ((this.maxActiveSessions >= 0) &&
(getActiveSessions() >= this.maxActiveSessions)) {
this.rejectedSessions++;
throw new TooManyActiveSessionsException( throw new TooManyActiveSessionsException(
sm.getString("sessionManagerImpl.createSession.tmase"), sm.getString("sessionManagerImpl.createSession.tmase"),
maxActiveSessions);
this.maxActiveSessions);
} }


// Recycle or create a Session instance // Recycle or create a Session instance
@@ -155,7 +155,7 @@ public class StandardSessionManager implements WxSessionManager, InternalSession
session.setMaxInactiveInterval(this.maxInactiveInterval); session.setMaxInactiveInterval(this.maxInactiveInterval);
String id = sessionId; String id = sessionId;
session.setId(id); session.setId(id);
sessionCounter++;
this.sessionCounter++;


return (session); return (session);


@@ -164,7 +164,7 @@ public class StandardSessionManager implements WxSessionManager, InternalSession


@Override @Override
public int getActiveSessions() { public int getActiveSessions() {
return sessions.size();
return this.sessions.size();
} }




@@ -185,17 +185,17 @@ public class StandardSessionManager implements WxSessionManager, InternalSession
public void add(InternalSession session) { public void add(InternalSession session) {


// 当第一次有session创建的时候,开启session清理线程 // 当第一次有session创建的时候,开启session清理线程
if (!backgroundProcessStarted.getAndSet(true)) {
if (!this.backgroundProcessStarted.getAndSet(true)) {
Thread t = new Thread(new Runnable() { Thread t = new Thread(new Runnable() {
@Override @Override
public void run() { public void run() {
while (true) { while (true) {
try { try {
// 每秒清理一次 // 每秒清理一次
Thread.sleep(backgroundProcessorDelay * 1000l);
Thread.sleep(StandardSessionManager.this.backgroundProcessorDelay * 1000l);
backgroundProcess(); backgroundProcess();
} catch (InterruptedException e) { } catch (InterruptedException e) {
log.error("SessionManagerImpl.backgroundProcess error", e);
StandardSessionManager.this.log.error("SessionManagerImpl.backgroundProcess error", e);
} }
} }
} }
@@ -204,12 +204,12 @@ public class StandardSessionManager implements WxSessionManager, InternalSession
t.start(); t.start();
} }


sessions.put(session.getIdInternal(), session);
this.sessions.put(session.getIdInternal(), session);
int size = getActiveSessions(); int size = getActiveSessions();
if (size > maxActive) {
synchronized (maxActiveUpdateLock) {
if (size > maxActive) {
maxActive = size;
if (size > this.maxActive) {
synchronized (this.maxActiveUpdateLock) {
if (size > this.maxActive) {
this.maxActive = size;
} }
} }
} }
@@ -223,14 +223,14 @@ public class StandardSessionManager implements WxSessionManager, InternalSession
@Override @Override
public InternalSession[] findSessions() { public InternalSession[] findSessions() {


return sessions.values().toArray(new InternalSession[0]);
return this.sessions.values().toArray(new InternalSession[0]);


} }


@Override @Override
public void backgroundProcess() { public void backgroundProcess() {
count = (count + 1) % processExpiresFrequency;
if (count == 0)
this.count = (this.count + 1) % this.processExpiresFrequency;
if (this.count == 0)
processExpires(); processExpires();
} }


@@ -243,17 +243,17 @@ public class StandardSessionManager implements WxSessionManager, InternalSession
InternalSession sessions[] = findSessions(); InternalSession sessions[] = findSessions();
int expireHere = 0; int expireHere = 0;


if (log.isDebugEnabled())
log.debug("Start expire sessions {} at {} sessioncount {}", getName(), timeNow, sessions.length);
if (this.log.isDebugEnabled())
this.log.debug("Start expire sessions {} at {} sessioncount {}", getName(), timeNow, sessions.length);
for (int i = 0; i < sessions.length; i++) { for (int i = 0; i < sessions.length; i++) {
if (sessions[i] != null && !sessions[i].isValid()) { if (sessions[i] != null && !sessions[i].isValid()) {
expireHere++; expireHere++;
} }
} }
long timeEnd = System.currentTimeMillis(); long timeEnd = System.currentTimeMillis();
if (log.isDebugEnabled())
log.debug("End expire sessions {} processingTime {} expired sessions: {}", getName(), timeEnd - timeNow, expireHere);
processingTime += (timeEnd - timeNow);
if (this.log.isDebugEnabled())
this.log.debug("End expire sessions {} processingTime {} expired sessions: {}", getName(), timeEnd - timeNow, expireHere);
this.processingTime += (timeEnd - timeNow);


} }




+ 2
- 2
weixin-java-common/src/main/java/me/chanjar/weixin/common/session/TooManyActiveSessionsException.java View File

@@ -40,7 +40,7 @@ public class TooManyActiveSessionsException
int maxActive) { int maxActive) {
super(message); super(message);


maxActiveSessions = maxActive;
this.maxActiveSessions = maxActive;
} }


/** /**
@@ -49,6 +49,6 @@ public class TooManyActiveSessionsException
* @return The maximum number of sessions allowed by the session manager. * @return The maximum number of sessions allowed by the session manager.
*/ */
public int getMaxActiveSessions() { public int getMaxActiveSessions() {
return maxActiveSessions;
return this.maxActiveSessions;
} }
} }

+ 1
- 1
weixin-java-common/src/main/java/me/chanjar/weixin/common/util/LogExceptionHandler.java View File

@@ -13,7 +13,7 @@ public class LogExceptionHandler implements WxErrorExceptionHandler {
@Override @Override
public void handle(WxErrorException e) { public void handle(WxErrorException e) {


log.error("Error happens", e);
this.log.error("Error happens", e);


} }




+ 6
- 6
weixin-java-common/src/main/java/me/chanjar/weixin/common/util/crypto/ByteGroup.java View File

@@ -3,24 +3,24 @@ package me.chanjar.weixin.common.util.crypto;
import java.util.ArrayList; import java.util.ArrayList;
public class ByteGroup { public class ByteGroup {
ArrayList<Byte> byteContainer = new ArrayList<Byte>();
ArrayList<Byte> byteContainer = new ArrayList<>();
public byte[] toBytes() { public byte[] toBytes() {
byte[] bytes = new byte[byteContainer.size()];
for (int i = 0; i < byteContainer.size(); i++) {
bytes[i] = byteContainer.get(i);
byte[] bytes = new byte[this.byteContainer.size()];
for (int i = 0; i < this.byteContainer.size(); i++) {
bytes[i] = this.byteContainer.get(i);
} }
return bytes; return bytes;
} }
public ByteGroup addBytes(byte[] bytes) { public ByteGroup addBytes(byte[] bytes) {
for (byte b : bytes) { for (byte b : bytes) {
byteContainer.add(b);
this.byteContainer.add(b);
} }
return this; return this;
} }
public int size() { public int size() {
return byteContainer.size();
return this.byteContainer.size();
} }
} }

+ 1
- 1
weixin-java-common/src/main/java/me/chanjar/weixin/common/util/crypto/PKCS7Encoder.java View File

@@ -47,7 +47,7 @@ public class PKCS7Encoder {
* @return 删除补位字符后的明文 * @return 删除补位字符后的明文
*/ */
public static byte[] decode(byte[] decrypted) { public static byte[] decode(byte[] decrypted) {
int pad = (int) decrypted[decrypted.length - 1];
int pad = decrypted[decrypted.length - 1];
if (pad < 1 || pad > 32) { if (pad < 1 || pad > 32) {
pad = 0; pad = 0;
} }


+ 10
- 10
weixin-java-common/src/main/java/me/chanjar/weixin/common/util/crypto/WxCryptUtil.java View File

@@ -80,10 +80,10 @@ public class WxCryptUtil {
*/ */
public static String createSign(Map<String, String> packageParams, public static String createSign(Map<String, String> packageParams,
String signKey) { String signKey) {
SortedMap<String, String> sortedMap = new TreeMap<String, String>();
SortedMap<String, String> sortedMap = new TreeMap<>();
sortedMap.putAll(packageParams); sortedMap.putAll(packageParams);
List<String> keys = new ArrayList<String>(packageParams.keySet());
List<String> keys = new ArrayList<>(packageParams.keySet());
Collections.sort(keys); Collections.sort(keys);
StringBuffer toSign = new StringBuffer(); StringBuffer toSign = new StringBuffer();
@@ -131,7 +131,7 @@ public class WxCryptUtil {
String nonce = genRandomStr(); String nonce = genRandomStr();
try { try {
String signature = SHA1.gen(token, timeStamp, nonce, encryptedXml);
String signature = SHA1.gen(this.token, timeStamp, nonce, encryptedXml);
String result = generateXml(encryptedXml, signature, timeStamp, nonce); String result = generateXml(encryptedXml, signature, timeStamp, nonce);
return result; return result;
} catch (NoSuchAlgorithmException e) { } catch (NoSuchAlgorithmException e) {
@@ -151,7 +151,7 @@ public class WxCryptUtil {
byte[] plainTextBytes = plainText.getBytes(CHARSET); byte[] plainTextBytes = plainText.getBytes(CHARSET);
byte[] bytesOfSizeInNetworkOrder = number2BytesInNetworkOrder( byte[] bytesOfSizeInNetworkOrder = number2BytesInNetworkOrder(
plainTextBytes.length); plainTextBytes.length);
byte[] appIdBytes = appidOrCorpid.getBytes(CHARSET);
byte[] appIdBytes = this.appidOrCorpid.getBytes(CHARSET);
// randomStr + networkBytesOrder + text + appid // randomStr + networkBytesOrder + text + appid
byteCollector.addBytes(randomStringBytes); byteCollector.addBytes(randomStringBytes);
@@ -169,8 +169,8 @@ public class WxCryptUtil {
try { try {
// 设置加密模式为AES的CBC模式 // 设置加密模式为AES的CBC模式
Cipher cipher = Cipher.getInstance("AES/CBC/NoPadding"); Cipher cipher = Cipher.getInstance("AES/CBC/NoPadding");
SecretKeySpec keySpec = new SecretKeySpec(aesKey, "AES");
IvParameterSpec iv = new IvParameterSpec(aesKey, 0, 16);
SecretKeySpec keySpec = new SecretKeySpec(this.aesKey, "AES");
IvParameterSpec iv = new IvParameterSpec(this.aesKey, 0, 16);
cipher.init(Cipher.ENCRYPT_MODE, keySpec, iv); cipher.init(Cipher.ENCRYPT_MODE, keySpec, iv);
// 加密 // 加密
@@ -207,7 +207,7 @@ public class WxCryptUtil {
try { try {
// 验证安全签名 // 验证安全签名
String signature = SHA1.gen(token, timeStamp, nonce, cipherText);
String signature = SHA1.gen(this.token, timeStamp, nonce, cipherText);
if (!signature.equals(msgSignature)) { if (!signature.equals(msgSignature)) {
throw new RuntimeException("加密消息签名校验失败"); throw new RuntimeException("加密消息签名校验失败");
} }
@@ -231,9 +231,9 @@ public class WxCryptUtil {
try { try {
// 设置解密模式为AES的CBC模式 // 设置解密模式为AES的CBC模式
Cipher cipher = Cipher.getInstance("AES/CBC/NoPadding"); Cipher cipher = Cipher.getInstance("AES/CBC/NoPadding");
SecretKeySpec key_spec = new SecretKeySpec(aesKey, "AES");
SecretKeySpec key_spec = new SecretKeySpec(this.aesKey, "AES");
IvParameterSpec iv = new IvParameterSpec( IvParameterSpec iv = new IvParameterSpec(
Arrays.copyOfRange(aesKey, 0, 16));
Arrays.copyOfRange(this.aesKey, 0, 16));
cipher.init(Cipher.DECRYPT_MODE, key_spec, iv); cipher.init(Cipher.DECRYPT_MODE, key_spec, iv);
// 使用BASE64对密文进行解码 // 使用BASE64对密文进行解码
@@ -264,7 +264,7 @@ public class WxCryptUtil {
} }
// appid不相同的情况 // appid不相同的情况
if (!from_appid.equals(appidOrCorpid)) {
if (!from_appid.equals(this.appidOrCorpid)) {
throw new RuntimeException("AppID不正确"); throw new RuntimeException("AppID不正确");
} }


+ 1
- 0
weixin-java-common/src/main/java/me/chanjar/weixin/common/util/http/InputStreamResponseHandler.java View File

@@ -14,6 +14,7 @@ public class InputStreamResponseHandler implements ResponseHandler<InputStream>


public static final ResponseHandler<InputStream> INSTANCE = new InputStreamResponseHandler(); public static final ResponseHandler<InputStream> INSTANCE = new InputStreamResponseHandler();


@Override
public InputStream handleResponse(final HttpResponse response) throws 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();


+ 1
- 1
weixin-java-common/src/main/java/me/chanjar/weixin/common/util/http/MediaDownloadRequestExecutor.java View File

@@ -70,7 +70,7 @@ public class MediaDownloadRequestExecutor implements RequestExecutor<File, Strin
return null; return null;
} }
String[] name_ext = fileName.split("\\."); String[] name_ext = fileName.split("\\.");
File localFile = FileUtils.createTmpFile(inputStream, name_ext[0], name_ext[1], tmpDirFile);
File localFile = FileUtils.createTmpFile(inputStream, name_ext[0], name_ext[1], this.tmpDirFile);
return localFile; return localFile;


} finally { } finally {


+ 1
- 1
weixin-java-common/src/main/java/me/chanjar/weixin/common/util/http/URIUtil.java View File

@@ -35,7 +35,7 @@ public class URIUtil {
private static String getHex(byte buf[]) { private static String getHex(byte buf[]) {
StringBuilder o = new StringBuilder(buf.length * 3); StringBuilder o = new StringBuilder(buf.length * 3);
for (int i = 0; i < buf.length; i++) { for (int i = 0; i < buf.length; i++) {
int n = (int) buf[i] & 0xff;
int n = buf[i] & 0xff;
o.append("%"); o.append("%");
if (n < 0x10) { if (n < 0x10) {
o.append("0"); o.append("0");


+ 1
- 0
weixin-java-common/src/main/java/me/chanjar/weixin/common/util/http/Utf8ResponseHandler.java View File

@@ -19,6 +19,7 @@ public class Utf8ResponseHandler implements ResponseHandler<String> {


public static final ResponseHandler<String> INSTANCE = new Utf8ResponseHandler(); public static final ResponseHandler<String> INSTANCE = new Utf8ResponseHandler();


@Override
public String handleResponse(final HttpResponse response) throws 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();


+ 1
- 0
weixin-java-common/src/main/java/me/chanjar/weixin/common/util/json/WxAccessTokenAdapter.java View File

@@ -18,6 +18,7 @@ import java.lang.reflect.Type;
*/ */
public class WxAccessTokenAdapter implements JsonDeserializer<WxAccessToken> { public class WxAccessTokenAdapter implements JsonDeserializer<WxAccessToken> {


@Override
public WxAccessToken deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException { public WxAccessToken deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException {
WxAccessToken accessToken = new WxAccessToken(); WxAccessToken accessToken = new WxAccessToken();
JsonObject accessTokenJsonObject = json.getAsJsonObject(); JsonObject accessTokenJsonObject = json.getAsJsonObject();


+ 1
- 0
weixin-java-common/src/main/java/me/chanjar/weixin/common/util/json/WxErrorAdapter.java View File

@@ -18,6 +18,7 @@ import java.lang.reflect.Type;
*/ */
public class WxErrorAdapter implements JsonDeserializer<WxError> { public class WxErrorAdapter implements JsonDeserializer<WxError> {


@Override
public WxError deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException { public WxError deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException {
WxError wxError = new WxError(); WxError wxError = new WxError();
JsonObject wxErrorJsonObject = json.getAsJsonObject(); JsonObject wxErrorJsonObject = json.getAsJsonObject();


+ 1
- 0
weixin-java-common/src/main/java/me/chanjar/weixin/common/util/json/WxMediaUploadResultAdapter.java View File

@@ -18,6 +18,7 @@ import java.lang.reflect.Type;
*/ */
public class WxMediaUploadResultAdapter implements JsonDeserializer<WxMediaUploadResult> { public class WxMediaUploadResultAdapter implements JsonDeserializer<WxMediaUploadResult> {


@Override
public WxMediaUploadResult deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException { public WxMediaUploadResult deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException {
WxMediaUploadResult uploadResult = new WxMediaUploadResult(); WxMediaUploadResult uploadResult = new WxMediaUploadResult();
JsonObject uploadResultJsonObject = json.getAsJsonObject(); JsonObject uploadResultJsonObject = json.getAsJsonObject();


+ 2
- 0
weixin-java-common/src/main/java/me/chanjar/weixin/common/util/json/WxMenuGsonAdapter.java View File

@@ -29,6 +29,7 @@ import me.chanjar.weixin.common.bean.menu.WxMenuRule;
*/ */
public class WxMenuGsonAdapter implements JsonSerializer<WxMenu>, JsonDeserializer<WxMenu> { public class WxMenuGsonAdapter implements JsonSerializer<WxMenu>, JsonDeserializer<WxMenu> {


@Override
public JsonElement serialize(WxMenu menu, Type typeOfSrc, JsonSerializationContext context) { public JsonElement serialize(WxMenu menu, Type typeOfSrc, JsonSerializationContext context) {
JsonObject json = new JsonObject(); JsonObject json = new JsonObject();


@@ -75,6 +76,7 @@ public class WxMenuGsonAdapter implements JsonSerializer<WxMenu>, JsonDeserializ
return matchRule; return matchRule;
} }


@Override
public WxMenu deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException { public WxMenu deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException {
/* /*
* 操蛋的微信 * 操蛋的微信


+ 8
- 8
weixin-java-common/src/main/java/me/chanjar/weixin/common/util/res/StringManager.java View File

@@ -47,7 +47,7 @@ import java.util.*;
public class StringManager { public class StringManager {


private static final Map<String, Map<Locale, StringManager>> managers = private static final Map<String, Map<Locale, StringManager>> managers =
new Hashtable<String, Map<Locale, StringManager>>();
new Hashtable<>();
private static int LOCALE_CACHE_SIZE = 10; private static int LOCALE_CACHE_SIZE = 10;
/** /**
* The ResourceBundle for this StringManager. * The ResourceBundle for this StringManager.
@@ -81,10 +81,10 @@ public class StringManager {
} }
} }
} }
bundle = bnd;
this.bundle = bnd;
// Get the actual locale, which may be different from the requested one // Get the actual locale, which may be different from the requested one
if (bundle != null) {
Locale bundleLocale = bundle.getLocale();
if (this.bundle != null) {
Locale bundleLocale = this.bundle.getLocale();
if (bundleLocale.equals(Locale.ROOT)) { if (bundleLocale.equals(Locale.ROOT)) {
this.locale = Locale.ENGLISH; this.locale = Locale.ENGLISH;
} else { } else {
@@ -192,8 +192,8 @@ public class StringManager {


try { try {
// Avoid NPE if bundle is null and treat it like an MRE // Avoid NPE if bundle is null and treat it like an MRE
if (bundle != null) {
str = bundle.getString(key);
if (this.bundle != null) {
str = this.bundle.getString(key);
} }
} catch (MissingResourceException mre) { } catch (MissingResourceException mre) {
//bad: shouldn't mask an exception the following way: //bad: shouldn't mask an exception the following way:
@@ -227,7 +227,7 @@ public class StringManager {
} }


MessageFormat mf = new MessageFormat(value); MessageFormat mf = new MessageFormat(value);
mf.setLocale(locale);
mf.setLocale(this.locale);
return mf.format(args, new StringBuffer(), null).toString(); return mf.format(args, new StringBuffer(), null).toString();
} }


@@ -235,6 +235,6 @@ public class StringManager {
* Identify the Locale this StringManager is associated with * Identify the Locale this StringManager is associated with
*/ */
public Locale getLocale() { public Locale getLocale() {
return locale;
return this.locale;
} }
} }

+ 2
- 2
weixin-java-common/src/main/java/me/chanjar/weixin/common/util/xml/XStreamInitializer.java View File

@@ -25,9 +25,9 @@ public class XStreamInitializer {


@Override @Override
protected void writeText(QuickWriter writer, String text) { protected void writeText(QuickWriter writer, String text) {
if (text.startsWith(PREFIX_CDATA) && text.endsWith(SUFFIX_CDATA)) {
if (text.startsWith(this.PREFIX_CDATA) && text.endsWith(this.SUFFIX_CDATA)) {
writer.write(text); writer.write(text);
} else if (text.startsWith(PREFIX_MEDIA_ID) && text.endsWith(SUFFIX_MEDIA_ID)) {
} else if (text.startsWith(this.PREFIX_MEDIA_ID) && text.endsWith(this.SUFFIX_MEDIA_ID)) {
writer.write(text); writer.write(text);
} else { } else {
super.writeText(writer, text); super.writeText(writer, text);


+ 12
- 12
weixin-java-common/src/test/java/me/chanjar/weixin/common/util/crypto/WxCryptUtilTest.java View File

@@ -34,8 +34,8 @@ public class WxCryptUtilTest {
String afterAesEncrypt2 = "jn1L23DB+6ELqJ+6bruv23M2GmYfkv0xBh2h+XTBOKVKcgDFHle6gqcZ1cZrk3e1qjPQ1F4RsLWzQRG9udbKWesxlkupqcEcW7ZQweImX9+wLMa0GaUzpkycA8+IamDBxn5loLgZpnS7fVAbExOkK5DYHBmv5tptA9tklE/fTIILHR8HLXa5nQvFb3tYPKAlHF3rtTeayNf0QuM+UW/wM9enGIDIJHF7CLHiDNAYxr+r+OrJCmPQyTy8cVWlu9iSvOHPT/77bZqJucQHQ04sq7KZI27OcqpQNSto2OdHCoTccjggX5Z9Mma0nMJBU+jLKJ38YB1fBIz+vBzsYjrTmFQ44YfeEuZ+xRTQwr92vhA9OxchWVINGC50qE/6lmkwWTwGX9wtQpsJKhP+oS7rvTY8+VdzETdfakjkwQ5/Xka042OlUb1/slTwo4RscuQ+RdxSGvDahxAJ6+EAjLt9d8igHngxIbf6YyqqROxuxqIeIch3CssH/LqRs+iAcILvApYZckqmA7FNERspKA5f8GoJ9sv8xmGvZ9Yrf57cExWtnX8aCMMaBropU/1k+hKP5LVdzbWCG0hGwx/dQudYR/eXp3P0XxjlFiy+9DMlaFExWUZQDajPkdPrEeOwofJb"; String afterAesEncrypt2 = "jn1L23DB+6ELqJ+6bruv23M2GmYfkv0xBh2h+XTBOKVKcgDFHle6gqcZ1cZrk3e1qjPQ1F4RsLWzQRG9udbKWesxlkupqcEcW7ZQweImX9+wLMa0GaUzpkycA8+IamDBxn5loLgZpnS7fVAbExOkK5DYHBmv5tptA9tklE/fTIILHR8HLXa5nQvFb3tYPKAlHF3rtTeayNf0QuM+UW/wM9enGIDIJHF7CLHiDNAYxr+r+OrJCmPQyTy8cVWlu9iSvOHPT/77bZqJucQHQ04sq7KZI27OcqpQNSto2OdHCoTccjggX5Z9Mma0nMJBU+jLKJ38YB1fBIz+vBzsYjrTmFQ44YfeEuZ+xRTQwr92vhA9OxchWVINGC50qE/6lmkwWTwGX9wtQpsJKhP+oS7rvTY8+VdzETdfakjkwQ5/Xka042OlUb1/slTwo4RscuQ+RdxSGvDahxAJ6+EAjLt9d8igHngxIbf6YyqqROxuxqIeIch3CssH/LqRs+iAcILvApYZckqmA7FNERspKA5f8GoJ9sv8xmGvZ9Yrf57cExWtnX8aCMMaBropU/1k+hKP5LVdzbWCG0hGwx/dQudYR/eXp3P0XxjlFiy+9DMlaFExWUZQDajPkdPrEeOwofJb";
public void testNormal() throws ParserConfigurationException, SAXException, IOException { public void testNormal() throws ParserConfigurationException, SAXException, IOException {
WxCryptUtil pc = new WxCryptUtil(token, encodingAesKey, appId);
String encryptedXml = pc.encrypt(replyMsg);
WxCryptUtil pc = new WxCryptUtil(this.token, this.encodingAesKey, this.appId);
String encryptedXml = pc.encrypt(this.replyMsg);
System.out.println(encryptedXml); System.out.println(encryptedXml);
@@ -56,31 +56,31 @@ public class WxCryptUtilTest {
String nonce = root.getElementsByTagName("Nonce").item(0).getTextContent(); String nonce = root.getElementsByTagName("Nonce").item(0).getTextContent();
System.out.println(nonce); System.out.println(nonce);
String messageText = String.format(xmlFormat, cipherText);
String messageText = String.format(this.xmlFormat, cipherText);
System.out.println(messageText); System.out.println(messageText);
// 第三方收到企业号平台发送的消息 // 第三方收到企业号平台发送的消息
String plainMessage = pc.decrypt(cipherText); String plainMessage = pc.decrypt(cipherText);
System.out.println(plainMessage); System.out.println(plainMessage);
assertEquals(plainMessage, replyMsg);
assertEquals(plainMessage, this.replyMsg);
} }
public void testAesEncrypt() { public void testAesEncrypt() {
WxCryptUtil pc = new WxCryptUtil(token, encodingAesKey, appId);
assertEquals(pc.encrypt(randomStr, replyMsg), afterAesEncrypt);
WxCryptUtil pc = new WxCryptUtil(this.token, this.encodingAesKey, this.appId);
assertEquals(pc.encrypt(this.randomStr, this.replyMsg), this.afterAesEncrypt);
} }
public void testAesEncrypt2() { public void testAesEncrypt2() {
WxCryptUtil pc = new WxCryptUtil(token, encodingAesKey, appId);
assertEquals(pc.encrypt(randomStr, replyMsg2), afterAesEncrypt2);
WxCryptUtil pc = new WxCryptUtil(this.token, this.encodingAesKey, this.appId);
assertEquals(pc.encrypt(this.randomStr, this.replyMsg2), this.afterAesEncrypt2);
} }
public void testValidateSignatureError() throws ParserConfigurationException, SAXException, public void testValidateSignatureError() throws ParserConfigurationException, SAXException,
IOException { IOException {
try { try {
WxCryptUtil pc = new WxCryptUtil(token, encodingAesKey, appId);
String afterEncrpt = pc.encrypt(replyMsg);
WxCryptUtil pc = new WxCryptUtil(this.token, this.encodingAesKey, this.appId);
String afterEncrpt = pc.encrypt(this.replyMsg);
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder(); DocumentBuilder db = dbf.newDocumentBuilder();
StringReader sr = new StringReader(afterEncrpt); StringReader sr = new StringReader(afterEncrpt);
@@ -91,8 +91,8 @@ public class WxCryptUtilTest {
NodeList nodelist1 = root.getElementsByTagName("Encrypt"); NodeList nodelist1 = root.getElementsByTagName("Encrypt");
String encrypt = nodelist1.item(0).getTextContent(); String encrypt = nodelist1.item(0).getTextContent();
String fromXML = String.format(xmlFormat, encrypt);
pc.decrypt("12345", timestamp, nonce, fromXML); // 这里签名错误
String fromXML = String.format(this.xmlFormat, encrypt);
pc.decrypt("12345", this.timestamp, this.nonce, fromXML); // 这里签名错误
} catch (RuntimeException e) { } catch (RuntimeException e) {
assertEquals(e.getMessage(), "加密消息签名校验失败"); assertEquals(e.getMessage(), "加密消息签名校验失败");
return; return;


Loading…
Cancel
Save