Pārlūkot izejas kodu

使用lombok的@Data注解简化common模块的所有bean类

Binary Wang 7 gadi atpakaļ
vecāks
revīzija
993999735b
48 mainītis faili ar 131 papildinājumiem un 426 dzēšanām
  1. 2 16
      weixin-java-common/src/main/java/me/chanjar/weixin/common/bean/WxAccessToken.java
  2. 3 73
      weixin-java-common/src/main/java/me/chanjar/weixin/common/bean/WxCardApiSignature.java
  3. 4 40
      weixin-java-common/src/main/java/me/chanjar/weixin/common/bean/WxJsapiSignature.java
  4. 2 17
      weixin-java-common/src/main/java/me/chanjar/weixin/common/bean/menu/WxMenu.java
  5. 2 63
      weixin-java-common/src/main/java/me/chanjar/weixin/common/bean/menu/WxMenuButton.java
  6. 2 56
      weixin-java-common/src/main/java/me/chanjar/weixin/common/bean/menu/WxMenuRule.java
  7. 4 53
      weixin-java-common/src/main/java/me/chanjar/weixin/common/bean/result/WxError.java
  8. 2 32
      weixin-java-common/src/main/java/me/chanjar/weixin/common/bean/result/WxMediaUploadResult.java
  9. 1 1
      weixin-java-common/src/main/java/me/chanjar/weixin/common/util/BeanUtils.java
  10. 7 5
      weixin-java-common/src/main/java/me/chanjar/weixin/common/util/http/HttpResponseProxy.java
  11. 1 3
      weixin-java-common/src/main/java/me/chanjar/weixin/common/util/http/apache/ApacheSimplePostRequestExecutor.java
  12. 2 4
      weixin-java-common/src/main/java/me/chanjar/weixin/common/util/http/jodd/JoddHttpSimplePostRequestExecutor.java
  13. 10 7
      weixin-java-common/src/main/java/me/chanjar/weixin/common/util/json/WxErrorAdapter.java
  14. 0 1
      weixin-java-common/src/test/java/me/chanjar/weixin/common/bean/WxErrorTest.java
  15. 1 3
      weixin-java-cp/src/test/java/me/chanjar/weixin/cp/api/WxCpBusyRetryTest.java
  16. 3 4
      weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/impl/WxMpCardServiceImpl.java
  17. 2 2
      weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/impl/WxMpKefuServiceImpl.java
  18. 1 1
      weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/impl/WxMpMaterialServiceImpl.java
  19. 10 10
      weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/impl/WxMpQrcodeServiceImpl.java
  20. 2 0
      weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/datacube/WxDataCubeArticleResult.java
  21. 6 5
      weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/datacube/WxDataCubeArticleTotal.java
  22. 2 2
      weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/datacube/WxDataCubeBaseResult.java
  23. 2 0
      weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/datacube/WxDataCubeInterfaceResult.java
  24. 9 8
      weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/datacube/WxDataCubeMsgResult.java
  25. 3 1
      weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/device/BaseResp.java
  26. 3 1
      weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/device/RespMsg.java
  27. 3 1
      weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/device/TransMsgResp.java
  28. 2 0
      weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/device/WxDeviceAuthorize.java
  29. 3 1
      weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/device/WxDeviceAuthorizeResult.java
  30. 3 1
      weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/device/WxDeviceBind.java
  31. 3 1
      weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/device/WxDeviceBindDeviceResult.java
  32. 3 1
      weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/device/WxDeviceBindResult.java
  33. 3 1
      weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/device/WxDeviceMsg.java
  34. 3 1
      weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/device/WxDeviceOpenIdResult.java
  35. 3 1
      weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/device/WxDeviceQrCodeResult.java
  36. 2 0
      weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/message/WxMpXmlOutImageMessage.java
  37. 2 0
      weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/message/WxMpXmlOutNewsMessage.java
  38. 2 0
      weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/message/WxMpXmlOutTextMessage.java
  39. 2 0
      weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/message/WxMpXmlOutTransferKefuMessage.java
  40. 2 0
      weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/message/WxMpXmlOutVoiceMessage.java
  41. 2 1
      weixin-java-mp/src/main/java/me/chanjar/weixin/mp/util/http/MaterialVoiceAndImageDownloadRequestExecutor.java
  42. 1 1
      weixin-java-mp/src/main/java/me/chanjar/weixin/mp/util/http/QrCodeRequestExecutor.java
  43. 1 1
      weixin-java-mp/src/main/java/me/chanjar/weixin/mp/util/http/apache/ApacheMaterialUploadRequestExecutor.java
  44. 1 1
      weixin-java-mp/src/main/java/me/chanjar/weixin/mp/util/http/apache/ApacheMediaImgUploadRequestExecutor.java
  45. 1 1
      weixin-java-mp/src/main/java/me/chanjar/weixin/mp/util/http/jodd/JoddMaterialUploadRequestExecutor.java
  46. 1 1
      weixin-java-mp/src/main/java/me/chanjar/weixin/mp/util/http/jodd/JoddMediaImgUploadRequestExecutor.java
  47. 1 1
      weixin-java-mp/src/main/java/me/chanjar/weixin/mp/util/http/okhttp/OkhttpMaterialUploadRequestExecutor.java
  48. 1 3
      weixin-java-mp/src/test/java/me/chanjar/weixin/mp/api/WxMpBusyRetryTest.java

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

@@ -1,9 +1,11 @@
 package me.chanjar.weixin.common.bean;
 
+import lombok.Data;
 import me.chanjar.weixin.common.util.json.WxGsonBuilder;
 
 import java.io.Serializable;
 
+@Data
 public class WxAccessToken implements Serializable {
   private static final long serialVersionUID = 8709719312922168909L;
 
@@ -15,20 +17,4 @@ public class WxAccessToken implements Serializable {
     return WxGsonBuilder.create().fromJson(json, WxAccessToken.class);
   }
 
-  public String getAccessToken() {
-    return this.accessToken;
-  }
-
-  public void setAccessToken(String accessToken) {
-    this.accessToken = accessToken;
-  }
-
-  public int getExpiresIn() {
-    return this.expiresIn;
-  }
-
-  public void setExpiresIn(int expiresIn) {
-    this.expiresIn = expiresIn;
-  }
-
 }

+ 3 - 73
weixin-java-common/src/main/java/me/chanjar/weixin/common/bean/WxCardApiSignature.java

@@ -1,17 +1,18 @@
 package me.chanjar.weixin.common.bean;
 
+import lombok.Data;
 import me.chanjar.weixin.common.util.ToStringUtils;
 
 import java.io.Serializable;
 
 /**
- * 卡券Api签名
+ * 卡券Api签名.
  *
  * @author YuJian
  * @version 15/11/8
  */
+@Data
 public class WxCardApiSignature implements Serializable {
-
   private static final long serialVersionUID = 158176707226975979L;
 
   private String appId;
@@ -37,75 +38,4 @@ public class WxCardApiSignature implements Serializable {
     return ToStringUtils.toSimpleString(this);
   }
 
-  public String getAppId() {
-    return this.appId;
-  }
-
-  public void setAppId(String appId) {
-    this.appId = appId;
-  }
-
-  public String getCardId() {
-    return this.cardId;
-  }
-
-  public void setCardId(String cardId) {
-    this.cardId = cardId;
-  }
-
-  public String getCardType() {
-    return this.cardType;
-  }
-
-  public void setCardType(String cardType) {
-    this.cardType = cardType;
-  }
-
-  public String getLocationId() {
-    return this.locationId;
-  }
-
-  public void setLocationId(String locationId) {
-    this.locationId = locationId;
-  }
-
-  public String getCode() {
-    return this.code;
-  }
-
-  public void setCode(String code) {
-    this.code = code;
-  }
-
-  public String getOpenId() {
-    return this.openId;
-  }
-
-  public void setOpenId(String openId) {
-    this.openId = openId;
-  }
-
-  public Long getTimestamp() {
-    return this.timestamp;
-  }
-
-  public void setTimestamp(Long timestamp) {
-    this.timestamp = timestamp;
-  }
-
-  public String getNonceStr() {
-    return this.nonceStr;
-  }
-
-  public void setNonceStr(String nonceStr) {
-    this.nonceStr = nonceStr;
-  }
-
-  public String getSignature() {
-    return this.signature;
-  }
-
-  public void setSignature(String signature) {
-    this.signature = signature;
-  }
 }

+ 4 - 40
weixin-java-common/src/main/java/me/chanjar/weixin/common/bean/WxJsapiSignature.java

@@ -1,10 +1,13 @@
 package me.chanjar.weixin.common.bean;
 
+import lombok.Data;
+
 import java.io.Serializable;
 
 /**
- * jspai signature
+ * jspai signature.
  */
+@Data
 public class WxJsapiSignature implements Serializable {
   private static final long serialVersionUID = -1116808193154384804L;
 
@@ -18,43 +21,4 @@ public class WxJsapiSignature implements Serializable {
 
   private String signature;
 
-  public String getSignature() {
-    return this.signature;
-  }
-
-  public void setSignature(String signature) {
-    this.signature = signature;
-  }
-
-  public String getNonceStr() {
-    return nonceStr;
-  }
-
-  public void setNonceStr(String nonceStr) {
-    this.nonceStr = nonceStr;
-  }
-
-  public long getTimestamp() {
-    return this.timestamp;
-  }
-
-  public void setTimestamp(long timestamp) {
-    this.timestamp = timestamp;
-  }
-
-  public String getUrl() {
-    return this.url;
-  }
-
-  public void setUrl(String url) {
-    this.url = url;
-  }
-
-  public String getAppId() {
-    return appId;
-  }
-
-  public void setAppId(String appId) {
-    this.appId = appId;
-  }
 }

+ 2 - 17
weixin-java-common/src/main/java/me/chanjar/weixin/common/bean/menu/WxMenu.java

@@ -1,5 +1,6 @@
 package me.chanjar.weixin.common.bean.menu;
 
+import lombok.Data;
 import me.chanjar.weixin.common.util.ToStringUtils;
 import me.chanjar.weixin.common.util.json.WxGsonBuilder;
 
@@ -15,8 +16,8 @@ import java.util.List;
  *
  * @author Daniel Qian
  */
+@Data
 public class WxMenu implements Serializable {
-
   private static final long serialVersionUID = -7083914585539687746L;
 
   private List<WxMenuButton> buttons = new ArrayList<>();
@@ -40,22 +41,6 @@ public class WxMenu implements Serializable {
       .fromJson(new InputStreamReader(is, StandardCharsets.UTF_8), WxMenu.class);
   }
 
-  public List<WxMenuButton> getButtons() {
-    return this.buttons;
-  }
-
-  public void setButtons(List<WxMenuButton> buttons) {
-    this.buttons = buttons;
-  }
-
-  public WxMenuRule getMatchRule() {
-    return this.matchRule;
-  }
-
-  public void setMatchRule(WxMenuRule matchRule) {
-    this.matchRule = matchRule;
-  }
-
   public String toJson() {
     return WxGsonBuilder.create().toJson(this);
   }

+ 2 - 63
weixin-java-common/src/main/java/me/chanjar/weixin/common/bean/menu/WxMenuButton.java

@@ -1,12 +1,14 @@
 package me.chanjar.weixin.common.bean.menu;
 
 import com.google.gson.annotations.SerializedName;
+import lombok.Data;
 import me.chanjar.weixin.common.util.ToStringUtils;
 
 import java.io.Serializable;
 import java.util.ArrayList;
 import java.util.List;
 
+@Data
 public class WxMenuButton implements Serializable {
   private static final long serialVersionUID = -1070939403109776555L;
 
@@ -77,67 +79,4 @@ public class WxMenuButton implements Serializable {
     return ToStringUtils.toSimpleString(this);
   }
 
-  public String getType() {
-    return this.type;
-  }
-
-  public void setType(String type) {
-    this.type = type;
-  }
-
-  public String getName() {
-    return this.name;
-  }
-
-  public void setName(String name) {
-    this.name = name;
-  }
-
-  public String getKey() {
-    return this.key;
-  }
-
-  public void setKey(String key) {
-    this.key = key;
-  }
-
-  public String getUrl() {
-    return this.url;
-  }
-
-  public void setUrl(String url) {
-    this.url = url;
-  }
-
-  public List<WxMenuButton> getSubButtons() {
-    return this.subButtons;
-  }
-
-  public void setSubButtons(List<WxMenuButton> subButtons) {
-    this.subButtons = subButtons;
-  }
-
-  public String getMediaId() {
-    return this.mediaId;
-  }
-
-  public void setMediaId(String mediaId) {
-    this.mediaId = mediaId;
-  }
-
-  public String getAppId() {
-    return appId;
-  }
-
-  public void setAppId(String appId) {
-    this.appId = appId;
-  }
-
-  public String getPagePath() {
-    return pagePath;
-  }
-
-  public void setPagePath(String pagePath) {
-    this.pagePath = pagePath;
-  }
 }

+ 2 - 56
weixin-java-common/src/main/java/me/chanjar/weixin/common/bean/menu/WxMenuRule.java

@@ -1,10 +1,12 @@
 package me.chanjar.weixin.common.bean.menu;
 
 import com.google.gson.annotations.SerializedName;
+import lombok.Data;
 import me.chanjar.weixin.common.util.ToStringUtils;
 
 import java.io.Serializable;
 
+@Data
 public class WxMenuRule implements Serializable {
   private static final long serialVersionUID = -4587181819499286670L;
 
@@ -20,62 +22,6 @@ public class WxMenuRule implements Serializable {
   private String clientPlatformType;
   private String language;
 
-  public String getTagId() {
-    return this.tagId;
-  }
-
-  public void setTagId(String tagId) {
-    this.tagId = tagId;
-  }
-
-  public String getSex() {
-    return this.sex;
-  }
-
-  public void setSex(String sex) {
-    this.sex = sex;
-  }
-
-  public String getCountry() {
-    return this.country;
-  }
-
-  public void setCountry(String country) {
-    this.country = country;
-  }
-
-  public String getProvince() {
-    return this.province;
-  }
-
-  public void setProvince(String province) {
-    this.province = province;
-  }
-
-  public String getCity() {
-    return this.city;
-  }
-
-  public void setCity(String city) {
-    this.city = city;
-  }
-
-  public String getClientPlatformType() {
-    return this.clientPlatformType;
-  }
-
-  public void setClientPlatformType(String clientPlatformType) {
-    this.clientPlatformType = clientPlatformType;
-  }
-
-  public String getLanguage() {
-    return this.language;
-  }
-
-  public void setLanguage(String language) {
-    this.language = language;
-  }
-
   @Override
   public String toString() {
     return ToStringUtils.toSimpleString(this);

+ 4 - 53
weixin-java-common/src/main/java/me/chanjar/weixin/common/bean/result/WxError.java

@@ -1,5 +1,7 @@
 package me.chanjar.weixin.common.bean.result;
 
+import lombok.Builder;
+import lombok.Data;
 import me.chanjar.weixin.common.util.json.WxGsonBuilder;
 
 import java.io.Serializable;
@@ -9,6 +11,8 @@ import java.io.Serializable;
  *
  * @author Daniel Qian
  */
+@Data
+@Builder
 public class WxError implements Serializable {
 
   private static final long serialVersionUID = 7869786563361406291L;
@@ -23,34 +27,6 @@ public class WxError implements Serializable {
     return WxGsonBuilder.create().fromJson(json, WxError.class);
   }
 
-  public static Builder newBuilder() {
-    return new Builder();
-  }
-
-  public int getErrorCode() {
-    return this.errorCode;
-  }
-
-  public void setErrorCode(int errorCode) {
-    this.errorCode = errorCode;
-  }
-
-  public String getErrorMsg() {
-    return this.errorMsg;
-  }
-
-  public void setErrorMsg(String errorMsg) {
-    this.errorMsg = errorMsg;
-  }
-
-  public String getJson() {
-    return this.json;
-  }
-
-  public void setJson(String json) {
-    this.json = json;
-  }
-
   @Override
   public String toString() {
     if (this.json != null) {
@@ -59,29 +35,4 @@ public class WxError implements Serializable {
     return "错误: Code=" + this.errorCode + ", Msg=" + this.errorMsg;
   }
 
-  public static class Builder {
-    private int errorCode;
-    private String errorMsg;
-
-    public Builder setErrorCode(int errorCode) {
-      this.errorCode = errorCode;
-      return this;
-    }
-
-    public Builder setErrorMsg(String errorMsg) {
-      this.errorMsg = errorMsg;
-      return this;
-    }
-
-    /**
-     * 构造器方法.
-     */
-    public WxError build() {
-      WxError wxError = new WxError();
-      wxError.setErrorCode(this.errorCode);
-      wxError.setErrorMsg(this.errorMsg);
-      return wxError;
-    }
-
-  }
 }

+ 2 - 32
weixin-java-common/src/main/java/me/chanjar/weixin/common/bean/result/WxMediaUploadResult.java

@@ -1,10 +1,12 @@
 package me.chanjar.weixin.common.bean.result;
 
+import lombok.Data;
 import me.chanjar.weixin.common.util.ToStringUtils;
 import me.chanjar.weixin.common.util.json.WxGsonBuilder;
 
 import java.io.Serializable;
 
+@Data
 public class WxMediaUploadResult implements Serializable {
   private static final long serialVersionUID = 330834334738622341L;
 
@@ -17,38 +19,6 @@ public class WxMediaUploadResult implements Serializable {
     return WxGsonBuilder.create().fromJson(json, WxMediaUploadResult.class);
   }
 
-  public String getType() {
-    return this.type;
-  }
-
-  public void setType(String type) {
-    this.type = type;
-  }
-
-  public String getMediaId() {
-    return this.mediaId;
-  }
-
-  public void setMediaId(String mediaId) {
-    this.mediaId = mediaId;
-  }
-
-  public long getCreatedAt() {
-    return this.createdAt;
-  }
-
-  public void setCreatedAt(long createdAt) {
-    this.createdAt = createdAt;
-  }
-
-  public String getThumbMediaId() {
-    return this.thumbMediaId;
-  }
-
-  public void setThumbMediaId(String thumbMediaId) {
-    this.thumbMediaId = thumbMediaId;
-  }
-
   @Override
   public String toString() {
     return ToStringUtils.toSimpleString(this);

+ 1 - 1
weixin-java-common/src/main/java/me/chanjar/weixin/common/util/BeanUtils.java

@@ -64,7 +64,7 @@ public class BeanUtils {
     if (!requiredFields.isEmpty()) {
       String msg = "必填字段 " + requiredFields + " 必须提供值";
       log.debug(msg);
-      throw new WxErrorException(WxError.newBuilder().setErrorMsg(msg).build());
+      throw new WxErrorException(WxError.builder().errorMsg(msg).build());
     }
   }
 

+ 7 - 5
weixin-java-common/src/main/java/me/chanjar/weixin/common/util/http/HttpResponseProxy.java

@@ -19,6 +19,8 @@ import java.util.regex.Pattern;
  * @author <a href="https://github.com/binarywang">Binary Wang</a>
  */
 public class HttpResponseProxy {
+  private static final Pattern PATTERN = Pattern.compile(".*filename=\"(.*)\"");
+
   private CloseableHttpResponse apacheHttpResponse;
   private HttpResponse joddHttpResponse;
   private Response okHttpResponse;
@@ -56,7 +58,7 @@ public class HttpResponseProxy {
   private String getFileName(CloseableHttpResponse response) throws WxErrorException {
     Header[] contentDispositionHeader = response.getHeaders("Content-disposition");
     if (contentDispositionHeader == null || contentDispositionHeader.length == 0) {
-      throw new WxErrorException(WxError.newBuilder().setErrorMsg("无法获取到文件名").build());
+      throw new WxErrorException(WxError.builder().errorMsg("无法获取到文件名").build());
     }
 
     return this.extractFileNameFromContentString(contentDispositionHeader[0].getValue());
@@ -74,15 +76,15 @@ public class HttpResponseProxy {
 
   private String extractFileNameFromContentString(String content) throws WxErrorException {
     if (content == null || content.length() == 0) {
-      throw new WxErrorException(WxError.newBuilder().setErrorMsg("无法获取到文件名").build());
+      throw new WxErrorException(WxError.builder().errorMsg("无法获取到文件名").build());
     }
 
-    Pattern p = Pattern.compile(".*filename=\"(.*)\"");
-    Matcher m = p.matcher(content);
+    Matcher m = PATTERN.matcher(content);
     if (m.matches()) {
       return m.group(1);
     }
-    throw new WxErrorException(WxError.newBuilder().setErrorMsg("无法获取到文件名").build());
+
+    throw new WxErrorException(WxError.builder().errorMsg("无法获取到文件名").build());
   }
 
 }

+ 1 - 3
weixin-java-common/src/main/java/me/chanjar/weixin/common/util/http/apache/ApacheSimplePostRequestExecutor.java

@@ -39,9 +39,7 @@ public class ApacheSimplePostRequestExecutor extends SimplePostRequestExecutor<C
     try (CloseableHttpResponse response = requestHttp.getRequestHttpClient().execute(httpPost)) {
       String responseContent = Utf8ResponseHandler.INSTANCE.handleResponse(response);
       if (responseContent.isEmpty()) {
-        throw new WxErrorException(
-          WxError.newBuilder().setErrorCode(9999).setErrorMsg("无响应内容")
-            .build());
+        throw new WxErrorException(WxError.builder().errorCode(9999).errorMsg("无响应内容").build());
       }
 
       if (responseContent.startsWith("<xml>")) {

+ 2 - 4
weixin-java-common/src/main/java/me/chanjar/weixin/common/util/http/jodd/JoddHttpSimplePostRequestExecutor.java

@@ -5,7 +5,6 @@ import jodd.http.HttpRequest;
 import jodd.http.HttpResponse;
 import jodd.http.ProxyInfo;
 import jodd.util.StringPool;
-
 import me.chanjar.weixin.common.bean.result.WxError;
 import me.chanjar.weixin.common.exception.WxErrorException;
 import me.chanjar.weixin.common.util.http.RequestHttp;
@@ -40,9 +39,8 @@ public class JoddHttpSimplePostRequestExecutor extends SimplePostRequestExecutor
 
     String responseContent = response.bodyText();
     if (responseContent.isEmpty()) {
-      throw new WxErrorException(
-        WxError.newBuilder().setErrorCode(9999).setErrorMsg("无响应内容")
-          .build());
+      throw new WxErrorException(WxError.builder().errorCode(9999).errorMsg("无响应内容")
+        .build());
     }
 
     if (responseContent.startsWith("<xml>")) {

+ 10 - 7
weixin-java-common/src/main/java/me/chanjar/weixin/common/util/json/WxErrorAdapter.java

@@ -14,23 +14,26 @@ import me.chanjar.weixin.common.bean.result.WxError;
 import java.lang.reflect.Type;
 
 /**
- * @author Daniel Qian
+ * @author Daniel Qian.
  */
 public class WxErrorAdapter implements JsonDeserializer<WxError> {
 
   @Override
-  public WxError deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException {
-    WxError wxError = new WxError();
+  public WxError deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context)
+    throws JsonParseException {
+    WxError.WxErrorBuilder errorBuilder = WxError.builder();
     JsonObject wxErrorJsonObject = json.getAsJsonObject();
 
     if (wxErrorJsonObject.get("errcode") != null && !wxErrorJsonObject.get("errcode").isJsonNull()) {
-      wxError.setErrorCode(GsonHelper.getAsPrimitiveInt(wxErrorJsonObject.get("errcode")));
+      errorBuilder.errorCode(GsonHelper.getAsPrimitiveInt(wxErrorJsonObject.get("errcode")));
     }
     if (wxErrorJsonObject.get("errmsg") != null && !wxErrorJsonObject.get("errmsg").isJsonNull()) {
-      wxError.setErrorMsg(GsonHelper.getAsString(wxErrorJsonObject.get("errmsg")));
+      errorBuilder.errorMsg(GsonHelper.getAsString(wxErrorJsonObject.get("errmsg")));
     }
-    wxError.setJson(json.toString());
-    return wxError;
+
+    errorBuilder.json(json.toString());
+
+    return errorBuilder.build();
   }
 
 }

+ 0 - 1
weixin-java-common/src/test/java/me/chanjar/weixin/common/bean/WxErrorTest.java

@@ -8,7 +8,6 @@ import org.testng.annotations.*;
 public class WxErrorTest {
 
   public void testFromJson() {
-
     String json = "{ \"errcode\": 40003, \"errmsg\": \"invalid openid\" }";
     WxError wxError = WxError.fromJson(json);
     Assert.assertTrue(wxError.getErrorCode() == 40003);

+ 1 - 3
weixin-java-cp/src/test/java/me/chanjar/weixin/cp/api/WxCpBusyRetryTest.java

@@ -24,9 +24,7 @@ public class WxCpBusyRetryTest {
         RequestExecutor<T, E> executor, String uri, E data)
         throws WxErrorException {
         this.log.info("Executed");
-        WxError error = new WxError();
-        error.setErrorCode(-1);
-        throw new WxErrorException(error);
+        throw new WxErrorException(WxError.builder().errorCode(-1).build());
       }
     };
 

+ 3 - 4
weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/impl/WxMpCardServiceImpl.java

@@ -229,10 +229,9 @@ public class WxMpCardServiceImpl implements WxMpCardService {
     String errcode = json.get("errcode").getAsString();
     if (!"0".equals(errcode)) {
       String errmsg = json.get("errmsg").getAsString();
-      WxError error = new WxError();
-      error.setErrorCode(Integer.valueOf(errcode));
-      error.setErrorMsg(errmsg);
-      throw new WxErrorException(error);
+      throw new WxErrorException(WxError.builder()
+        .errorCode(Integer.valueOf(errcode)).errorMsg(errmsg)
+        .build());
     }
 
     return responseContent;

+ 2 - 2
weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/impl/WxMpKefuServiceImpl.java

@@ -112,11 +112,11 @@ public class WxMpKefuServiceImpl implements WxMpKefuService {
   @Override
   public WxMpKfMsgList kfMsgList(Date startTime, Date endTime, Long msgId, Integer number) throws WxErrorException {
     if (number > 10000) {
-      throw new WxErrorException(WxError.newBuilder().setErrorMsg("非法参数请求,每次最多查询10000条记录!").build());
+      throw new WxErrorException(WxError.builder().errorCode(-1).errorMsg("非法参数请求,每次最多查询10000条记录!").build());
     }
 
     if (startTime.after(endTime)) {
-      throw new WxErrorException(WxError.newBuilder().setErrorMsg("起始时间不能晚于结束时间!").build());
+      throw new WxErrorException(WxError.builder().errorCode(-1).errorMsg("起始时间不能晚于结束时间!").build());
     }
 
     JsonObject param = new JsonObject();

+ 1 - 1
weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/impl/WxMpMaterialServiceImpl.java

@@ -37,7 +37,7 @@ public class WxMpMaterialServiceImpl implements WxMpMaterialService {
     try {
       return this.mediaUpload(mediaType, FileUtils.createTmpFile(inputStream, UUID.randomUUID().toString(), fileType));
     } catch (IOException e) {
-      throw new WxErrorException(WxError.newBuilder().setErrorMsg(e.getMessage()).build(), e);
+      throw new WxErrorException(WxError.builder().errorCode(-1).errorMsg(e.getMessage()).build(), e);
     }
   }
 

+ 10 - 10
weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/impl/WxMpQrcodeServiceImpl.java

@@ -28,13 +28,13 @@ public class WxMpQrcodeServiceImpl implements WxMpQrcodeService {
   @Override
   public WxMpQrCodeTicket qrCodeCreateTmpTicket(int sceneId, Integer expireSeconds) throws WxErrorException {
     if (sceneId == 0) {
-      throw new WxErrorException(WxError.newBuilder().setErrorCode(-1).setErrorMsg("临时二维码场景值不能为0!").build());
+      throw new WxErrorException(WxError.builder().errorCode(-1).errorMsg("临时二维码场景值不能为0!").build());
     }
 
     //expireSeconds 该二维码有效时间,以秒为单位。 最大不超过2592000(即30天),此字段如果不填,则默认有效期为30秒。
     if (expireSeconds != null && expireSeconds > 2592000) {
-      throw new WxErrorException(WxError.newBuilder().setErrorCode(-1)
-        .setErrorMsg("临时二维码有效时间最大不能超过2592000(即30天)!").build());
+      throw new WxErrorException(WxError.builder().errorCode(-1)
+        .errorMsg("临时二维码有效时间最大不能超过2592000(即30天)!").build());
     }
 
     if (expireSeconds == null) {
@@ -59,13 +59,13 @@ public class WxMpQrcodeServiceImpl implements WxMpQrcodeService {
   @Override
   public WxMpQrCodeTicket qrCodeCreateTmpTicket(String sceneStr, Integer expireSeconds) throws WxErrorException {
     if (StringUtils.isBlank(sceneStr)) {
-      throw new WxErrorException(WxError.newBuilder().setErrorCode(-1).setErrorMsg("临时二维码场景值不能为空!").build());
+      throw new WxErrorException(WxError.builder().errorCode(-1).errorMsg("临时二维码场景值不能为空!").build());
     }
 
     //expireSeconds 该二维码有效时间,以秒为单位。 最大不超过2592000(即30天),此字段如果不填,则默认有效期为30秒。
     if (expireSeconds != null && expireSeconds > 2592000) {
-      throw new WxErrorException(WxError.newBuilder().setErrorCode(-1)
-        .setErrorMsg("临时二维码有效时间最大不能超过2592000(即30天)!").build());
+      throw new WxErrorException(WxError.builder().errorCode(-1)
+        .errorMsg("临时二维码有效时间最大不能超过2592000(即30天)!").build());
     }
 
     if (expireSeconds == null) {
@@ -90,7 +90,9 @@ public class WxMpQrcodeServiceImpl implements WxMpQrcodeService {
   @Override
   public WxMpQrCodeTicket qrCodeCreateLastTicket(int sceneId) throws WxErrorException {
     if (sceneId < 1 || sceneId > 100000) {
-      throw new WxErrorException(WxError.newBuilder().setErrorCode(-1).setErrorMsg("永久二维码的场景值目前只支持1--100000!").build());
+      throw new WxErrorException(WxError.builder().errorCode(-1)
+        .errorMsg("永久二维码的场景值目前只支持1--100000!")
+        .build());
     }
 
     String url = API_URL_PREFIX + "/create";
@@ -137,9 +139,7 @@ public class WxMpQrcodeServiceImpl implements WxMpQrcodeService {
 
       return resultUrl;
     } catch (UnsupportedEncodingException e) {
-      WxError error = WxError.newBuilder().setErrorCode(-1)
-        .setErrorMsg(e.getMessage()).build();
-      throw new WxErrorException(error);
+      throw new WxErrorException(WxError.builder().errorCode(-1).errorMsg(e.getMessage()).build());
     }
   }
 

+ 2 - 0
weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/datacube/WxDataCubeArticleResult.java

@@ -3,6 +3,7 @@ package me.chanjar.weixin.mp.bean.datacube;
 import com.google.gson.annotations.SerializedName;
 import com.google.gson.reflect.TypeToken;
 import lombok.Data;
+import lombok.EqualsAndHashCode;
 import me.chanjar.weixin.mp.util.json.WxMpGsonBuilder;
 
 import java.util.List;
@@ -15,6 +16,7 @@ import java.util.List;
  * @author <a href="https://github.com/binarywang">Binary Wang</a>
  */
 @Data
+@EqualsAndHashCode(callSuper = true)
 public class WxDataCubeArticleResult extends WxDataCubeBaseResult {
   private static final long serialVersionUID = -9222452497954511765L;
 

+ 6 - 5
weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/datacube/WxDataCubeArticleTotal.java

@@ -3,37 +3,38 @@ package me.chanjar.weixin.mp.bean.datacube;
 import com.google.gson.annotations.SerializedName;
 import com.google.gson.reflect.TypeToken;
 import lombok.Data;
+import lombok.EqualsAndHashCode;
 import me.chanjar.weixin.mp.util.json.WxMpGsonBuilder;
 
 import java.util.List;
 
 /**
- * 图文分析数据接口返回结果对象
- * <p>
+ * 图文分析数据接口返回结果对象.
  * Created by Binary Wang on 2016/8/24.
  *
  * @author <a href="https://github.com/binarywang">Binary Wang</a>
  */
 @Data
+@EqualsAndHashCode(callSuper = true)
 public class WxDataCubeArticleTotal extends WxDataCubeBaseResult {
   private static final long serialVersionUID = -7634365687303052699L;
 
   /**
-   * msgid
+   * msgid.
    * 请注意:这里的msgid实际上是由msgid(图文消息id,这也就是群发接口调用后返回的msg_data_id)和index(消息次序索引)组成, 例如12003_3, 其中12003是msgid,即一次群发的消息的id; 3为index,假设该次群发的图文消息共5个文章(因为可能为多图文),3表示5个中的第3个
    */
   @SerializedName("msgid")
   private String msgId;
 
   /**
-   * title
+   * title.
    * 图文消息的标题
    */
   @SerializedName("title")
   private String title;
 
   /**
-   * details
+   * details.
    * 详细信息
    */
   @SerializedName("details")

+ 2 - 2
weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/datacube/WxDataCubeBaseResult.java

@@ -9,7 +9,7 @@ import java.io.Serializable;
 
 /**
  * <pre>
- *  统计接口的共用属性类
+ *  统计接口的共用属性类.
  *  Created by Binary Wang on 2016/8/25.
  * </pre>
  *
@@ -21,7 +21,7 @@ public abstract class WxDataCubeBaseResult implements Serializable {
   protected static final JsonParser JSON_PARSER = new JsonParser();
 
   /**
-   * ref_date
+   * ref_date.
    * 数据的日期,需在begin_date和end_date之间
    */
   @SerializedName("ref_date")

+ 2 - 0
weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/datacube/WxDataCubeInterfaceResult.java

@@ -3,6 +3,7 @@ package me.chanjar.weixin.mp.bean.datacube;
 import com.google.gson.annotations.SerializedName;
 import com.google.gson.reflect.TypeToken;
 import lombok.Data;
+import lombok.EqualsAndHashCode;
 import me.chanjar.weixin.mp.util.json.WxMpGsonBuilder;
 
 import java.util.List;
@@ -15,6 +16,7 @@ import java.util.List;
  * @author <a href="https://github.com/binarywang">Binary Wang</a>
  */
 @Data
+@EqualsAndHashCode(callSuper = true)
 public class WxDataCubeInterfaceResult extends WxDataCubeBaseResult {
   private static final long serialVersionUID = 597734329161281398L;
 

+ 9 - 8
weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/datacube/WxDataCubeMsgResult.java

@@ -3,51 +3,52 @@ package me.chanjar.weixin.mp.bean.datacube;
 import com.google.gson.annotations.SerializedName;
 import com.google.gson.reflect.TypeToken;
 import lombok.Data;
+import lombok.EqualsAndHashCode;
 import me.chanjar.weixin.mp.util.json.WxMpGsonBuilder;
 
 import java.util.List;
 
 /**
- * 消息分析数据接口返回结果对象
- * <p>
+ * 消息分析数据接口返回结果对象.
  * Created by Binary Wang on 2016/8/29.
  *
  * @author <a href="https://github.com/binarywang">Binary Wang</a>
  */
 @Data
+@EqualsAndHashCode(callSuper = true)
 public class WxDataCubeMsgResult extends WxDataCubeBaseResult {
   private static final long serialVersionUID = 6932121822150573659L;
 
   /**
-   * ref_hour
+   * ref_hour.
    * 数据的小时,包括从000到2300,分别代表的是[000,100)到[2300,2400),即每日的第1小时和最后1小时
    */
   @SerializedName("ref_hour")
   private Integer refHour;
 
   /**
-   * msg_type
+   * msg_type.
    * 消息类型,代表含义如下:1代表文字 2代表图片 3代表语音 4代表视频 6代表第三方应用消息(链接消息)
    */
   @SerializedName("msg_type")
   private Integer msgType;
 
   /**
-   * msg_user
+   * msg_user.
    * 上行发送了(向公众号发送了)消息的用户数
    */
   @SerializedName("msg_user")
   private Integer msgUser;
 
   /**
-   * msg_count
+   * msg_count.
    * 上行发送了消息的消息总数
    */
   @SerializedName("msg_count")
   private Integer msgCount;
 
   /**
-   * count_interval
+   * count_interval.
    * 当日发送消息量分布的区间,0代表 “0”,1代表“1-5”,2代表“6-10”,3代表“10次以上”
    */
   @SerializedName("count_interval")
@@ -61,7 +62,7 @@ public class WxDataCubeMsgResult extends WxDataCubeBaseResult {
   private Integer intPageReadCount;
 
   /**
-   * ori_page_read_user
+   * ori_page_read_user.
    * 原文页(点击图文页“阅读原文”进入的页面)的阅读人数,无原文页时此处数据为0
    */
   @SerializedName("ori_page_read_user")

+ 3 - 1
weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/device/BaseResp.java

@@ -2,12 +2,14 @@ package me.chanjar.weixin.mp.bean.device;
 
 import com.google.gson.annotations.SerializedName;
 import lombok.Data;
+import lombok.EqualsAndHashCode;
 
 /**
- * @author keungtung
+ * @author keungtung.
  * @date 10/12/2016
  */
 @Data
+@EqualsAndHashCode(callSuper = false)
 public class BaseResp extends AbstractDeviceBean {
   private static final long serialVersionUID = 4252655933699659073L;
 

+ 3 - 1
weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/device/RespMsg.java

@@ -2,13 +2,15 @@ package me.chanjar.weixin.mp.bean.device;
 
 import com.google.gson.annotations.SerializedName;
 import lombok.Data;
+import lombok.EqualsAndHashCode;
 
 /**
  *
- * @author keungtung
+ * @author keungtung.
  * @date 10/12/2016
  */
 @Data
+@EqualsAndHashCode(callSuper = false)
 public class RespMsg extends AbstractDeviceBean {
   private static final long serialVersionUID = -4241272701707684136L;
 

+ 3 - 1
weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/device/TransMsgResp.java

@@ -2,14 +2,16 @@ package me.chanjar.weixin.mp.bean.device;
 
 import com.google.gson.annotations.SerializedName;
 import lombok.Data;
+import lombok.EqualsAndHashCode;
 import me.chanjar.weixin.common.util.json.WxGsonBuilder;
 
 /**
  *
- * @author keungtung
+ * @author keungtung.
  * @date 14/12/2016
  */
 @Data
+@EqualsAndHashCode(callSuper = false)
 public class TransMsgResp extends AbstractDeviceBean {
   private static final long serialVersionUID = 5386954916622816491L;
 

+ 2 - 0
weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/device/WxDeviceAuthorize.java

@@ -2,6 +2,7 @@ package me.chanjar.weixin.mp.bean.device;
 
 import com.google.gson.annotations.SerializedName;
 import lombok.Data;
+import lombok.EqualsAndHashCode;
 
 import java.util.Arrays;
 import java.util.LinkedList;
@@ -12,6 +13,7 @@ import java.util.List;
  * @date 10/12/2016
  */
 @Data
+@EqualsAndHashCode(callSuper = false)
 public class WxDeviceAuthorize extends AbstractDeviceBean {
   private static final long serialVersionUID = 8786321356569903887L;
 

+ 3 - 1
weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/device/WxDeviceAuthorizeResult.java

@@ -1,15 +1,17 @@
 package me.chanjar.weixin.mp.bean.device;
 
 import lombok.Data;
+import lombok.EqualsAndHashCode;
 import me.chanjar.weixin.common.util.json.WxGsonBuilder;
 
 import java.util.List;
 
 /**
- * @author keungtung
+ * @author keungtung.
  * @date 10/12/2016
  */
 @Data
+@EqualsAndHashCode(callSuper = false)
 public class WxDeviceAuthorizeResult extends AbstractDeviceBean {
   private static final long serialVersionUID = 9105294570912249811L;
 

+ 3 - 1
weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/device/WxDeviceBind.java

@@ -2,12 +2,14 @@ package me.chanjar.weixin.mp.bean.device;
 
 import com.google.gson.annotations.SerializedName;
 import lombok.Data;
+import lombok.EqualsAndHashCode;
 
 /**
- * @author keungtung
+ * @author keungtung.
  * @date 10/12/2016
  */
 @Data
+@EqualsAndHashCode(callSuper = false)
 public class WxDeviceBind extends AbstractDeviceBean {
   private static final long serialVersionUID = 467559769037590880L;
 

+ 3 - 1
weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/device/WxDeviceBindDeviceResult.java

@@ -2,15 +2,17 @@ package me.chanjar.weixin.mp.bean.device;
 
 import com.google.gson.annotations.SerializedName;
 import lombok.Data;
+import lombok.EqualsAndHashCode;
 import me.chanjar.weixin.mp.util.json.WxMpGsonBuilder;
 
 import java.util.List;
 
 /**
- * @author keungtung
+ * @author keungtung.
  * @date 16/12/2016
  */
 @Data
+@EqualsAndHashCode(callSuper = false)
 public class WxDeviceBindDeviceResult extends AbstractDeviceBean {
   private static final long serialVersionUID = 725870295905935355L;
 

+ 3 - 1
weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/device/WxDeviceBindResult.java

@@ -2,13 +2,15 @@ package me.chanjar.weixin.mp.bean.device;
 
 import com.google.gson.annotations.SerializedName;
 import lombok.Data;
+import lombok.EqualsAndHashCode;
 import me.chanjar.weixin.mp.util.json.WxMpGsonBuilder;
 
 /**
- * @author keungtung
+ * @author keungtung.
  * @date 10/12/2016
  */
 @Data
+@EqualsAndHashCode(callSuper = false)
 public class WxDeviceBindResult extends AbstractDeviceBean {
   private static final long serialVersionUID = 4687725146279339359L;
 

+ 3 - 1
weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/device/WxDeviceMsg.java

@@ -2,13 +2,15 @@ package me.chanjar.weixin.mp.bean.device;
 
 import com.google.gson.annotations.SerializedName;
 import lombok.Data;
+import lombok.EqualsAndHashCode;
 import me.chanjar.weixin.common.util.ToStringUtils;
 
 /**
- * @author keungtung
+ * @author keungtung.
  * @date 10/12/2016
  */
 @Data
+@EqualsAndHashCode(callSuper = false)
 public class WxDeviceMsg extends AbstractDeviceBean {
   private static final long serialVersionUID = -5567110858455277963L;
 

+ 3 - 1
weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/device/WxDeviceOpenIdResult.java

@@ -2,15 +2,17 @@ package me.chanjar.weixin.mp.bean.device;
 
 import com.google.gson.annotations.SerializedName;
 import lombok.Data;
+import lombok.EqualsAndHashCode;
 import me.chanjar.weixin.mp.util.json.WxMpGsonBuilder;
 
 import java.util.List;
 
 /**
- * @author keungtung
+ * @author keungtung.
  * @date 16/12/2016
  */
 @Data
+@EqualsAndHashCode(callSuper = false)
 public class WxDeviceOpenIdResult extends AbstractDeviceBean {
   private static final long serialVersionUID = 4980885167833836220L;
 

+ 3 - 1
weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/device/WxDeviceQrCodeResult.java

@@ -2,13 +2,15 @@ package me.chanjar.weixin.mp.bean.device;
 
 import com.google.gson.annotations.SerializedName;
 import lombok.Data;
+import lombok.EqualsAndHashCode;
 import me.chanjar.weixin.mp.util.json.WxMpGsonBuilder;
 
 /**
- * @author keungtung
+ * @author keungtung.
  * @date 10/12/2016
  */
 @Data
+@EqualsAndHashCode(callSuper = false)
 public class WxDeviceQrCodeResult extends AbstractDeviceBean {
   private static final long serialVersionUID = -4312858303060918266L;
 

+ 2 - 0
weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/message/WxMpXmlOutImageMessage.java

@@ -3,11 +3,13 @@ package me.chanjar.weixin.mp.bean.message;
 import com.thoughtworks.xstream.annotations.XStreamAlias;
 import com.thoughtworks.xstream.annotations.XStreamConverter;
 import lombok.Data;
+import lombok.EqualsAndHashCode;
 import me.chanjar.weixin.common.api.WxConsts;
 import me.chanjar.weixin.common.util.xml.XStreamMediaIdConverter;
 
 @XStreamAlias("xml")
 @Data
+@EqualsAndHashCode(callSuper = true)
 public class WxMpXmlOutImageMessage extends WxMpXmlOutMessage {
   private static final long serialVersionUID = -2684778597067990723L;
 

+ 2 - 0
weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/message/WxMpXmlOutNewsMessage.java

@@ -3,6 +3,7 @@ package me.chanjar.weixin.mp.bean.message;
 import com.thoughtworks.xstream.annotations.XStreamAlias;
 import com.thoughtworks.xstream.annotations.XStreamConverter;
 import lombok.Data;
+import lombok.EqualsAndHashCode;
 import me.chanjar.weixin.common.api.WxConsts;
 import me.chanjar.weixin.common.util.xml.XStreamCDataConverter;
 
@@ -12,6 +13,7 @@ import java.util.List;
 
 @XStreamAlias("xml")
 @Data
+@EqualsAndHashCode(callSuper = true)
 public class WxMpXmlOutNewsMessage extends WxMpXmlOutMessage {
   private static final long serialVersionUID = -4604402850905714772L;
 

+ 2 - 0
weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/message/WxMpXmlOutTextMessage.java

@@ -3,11 +3,13 @@ package me.chanjar.weixin.mp.bean.message;
 import com.thoughtworks.xstream.annotations.XStreamAlias;
 import com.thoughtworks.xstream.annotations.XStreamConverter;
 import lombok.Data;
+import lombok.EqualsAndHashCode;
 import me.chanjar.weixin.common.api.WxConsts;
 import me.chanjar.weixin.common.util.xml.XStreamCDataConverter;
 
 @XStreamAlias("xml")
 @Data
+@EqualsAndHashCode(callSuper = true)
 public class WxMpXmlOutTextMessage extends WxMpXmlOutMessage {
   private static final long serialVersionUID = -3972786455288763361L;
 

+ 2 - 0
weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/message/WxMpXmlOutTransferKefuMessage.java

@@ -3,6 +3,7 @@ package me.chanjar.weixin.mp.bean.message;
 import com.thoughtworks.xstream.annotations.XStreamAlias;
 import com.thoughtworks.xstream.annotations.XStreamConverter;
 import lombok.Data;
+import lombok.EqualsAndHashCode;
 import me.chanjar.weixin.common.api.WxConsts;
 import me.chanjar.weixin.common.util.xml.XStreamCDataConverter;
 
@@ -10,6 +11,7 @@ import java.io.Serializable;
 
 @XStreamAlias("xml")
 @Data
+@EqualsAndHashCode(callSuper = true)
 public class WxMpXmlOutTransferKefuMessage extends WxMpXmlOutMessage {
   private static final long serialVersionUID = 1850903037285841322L;
 

+ 2 - 0
weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/message/WxMpXmlOutVoiceMessage.java

@@ -3,11 +3,13 @@ package me.chanjar.weixin.mp.bean.message;
 import com.thoughtworks.xstream.annotations.XStreamAlias;
 import com.thoughtworks.xstream.annotations.XStreamConverter;
 import lombok.Data;
+import lombok.EqualsAndHashCode;
 import me.chanjar.weixin.common.api.WxConsts;
 import me.chanjar.weixin.common.util.xml.XStreamMediaIdConverter;
 
 @XStreamAlias("xml")
 @Data
+@EqualsAndHashCode(callSuper = true)
 public class WxMpXmlOutVoiceMessage extends WxMpXmlOutMessage {
   private static final long serialVersionUID = 240367390249860551L;
 

+ 2 - 1
weixin-java-mp/src/main/java/me/chanjar/weixin/mp/util/http/MaterialVoiceAndImageDownloadRequestExecutor.java

@@ -9,7 +9,8 @@ import me.chanjar.weixin.mp.util.http.okhttp.OkhttpMaterialVoiceAndImageDownload
 import java.io.File;
 import java.io.InputStream;
 
-public abstract class MaterialVoiceAndImageDownloadRequestExecutor<H, P> implements RequestExecutor<InputStream, String> {
+public abstract class MaterialVoiceAndImageDownloadRequestExecutor<H, P>
+  implements RequestExecutor<InputStream, String> {
   protected RequestHttp<H, P> requestHttp;
   protected File tmpDirFile;
 

+ 1 - 1
weixin-java-mp/src/main/java/me/chanjar/weixin/mp/util/http/QrCodeRequestExecutor.java

@@ -32,7 +32,7 @@ public abstract class QrCodeRequestExecutor<H, P> implements RequestExecutor<Fil
       case OK_HTTP:
         return new OkhttpQrCodeRequestExecutor(requestHttp);
       default:
-        throw new WxErrorException(WxError.newBuilder().setErrorMsg("不支持的http框架").build());
+        throw new WxErrorException(WxError.builder().errorCode(-1).errorMsg("不支持的http框架").build());
     }
   }
 

+ 1 - 1
weixin-java-mp/src/main/java/me/chanjar/weixin/mp/util/http/apache/ApacheMaterialUploadRequestExecutor.java

@@ -41,7 +41,7 @@ public class ApacheMaterialUploadRequestExecutor extends MaterialUploadRequestEx
     }
 
     if (material == null) {
-      throw new WxErrorException(WxError.newBuilder().setErrorMsg("非法请求,material参数为空").build());
+      throw new WxErrorException(WxError.builder().errorCode(-1).errorMsg("非法请求,material参数为空").build());
     }
 
     File file = material.getFile();

+ 1 - 1
weixin-java-mp/src/main/java/me/chanjar/weixin/mp/util/http/apache/ApacheMediaImgUploadRequestExecutor.java

@@ -30,7 +30,7 @@ public class ApacheMediaImgUploadRequestExecutor extends MediaImgUploadRequestEx
   @Override
   public WxMediaImgUploadResult execute(String uri, File data) throws WxErrorException, IOException {
     if (data == null) {
-      throw new WxErrorException(WxError.newBuilder().setErrorMsg("文件对象为空").build());
+      throw new WxErrorException(WxError.builder().errorCode(-1).errorMsg("文件对象为空").build());
     }
 
     HttpPost httpPost = new HttpPost(uri);

+ 1 - 1
weixin-java-mp/src/main/java/me/chanjar/weixin/mp/util/http/jodd/JoddMaterialUploadRequestExecutor.java

@@ -36,7 +36,7 @@ public class JoddMaterialUploadRequestExecutor extends MaterialUploadRequestExec
     request.withConnectionProvider(requestHttp.getRequestHttpClient());
 
     if (material == null) {
-      throw new WxErrorException(WxError.newBuilder().setErrorMsg("非法请求,material参数为空").build());
+      throw new WxErrorException(WxError.builder().errorCode(-1).errorMsg("非法请求,material参数为空").build());
     }
 
     File file = material.getFile();

+ 1 - 1
weixin-java-mp/src/main/java/me/chanjar/weixin/mp/util/http/jodd/JoddMediaImgUploadRequestExecutor.java

@@ -26,7 +26,7 @@ public class JoddMediaImgUploadRequestExecutor extends MediaImgUploadRequestExec
   @Override
   public WxMediaImgUploadResult execute(String uri, File data) throws WxErrorException, IOException {
     if (data == null) {
-      throw new WxErrorException(WxError.newBuilder().setErrorMsg("文件对象为空").build());
+      throw new WxErrorException(WxError.builder().errorCode(-1).errorMsg("文件对象为空").build());
     }
 
     HttpRequest request = HttpRequest.post(uri);

+ 1 - 1
weixin-java-mp/src/main/java/me/chanjar/weixin/mp/util/http/okhttp/OkhttpMaterialUploadRequestExecutor.java

@@ -31,7 +31,7 @@ public class OkhttpMaterialUploadRequestExecutor extends MaterialUploadRequestEx
   public WxMpMaterialUploadResult execute(String uri, WxMpMaterial material) throws WxErrorException, IOException {
     logger.debug("OkhttpMaterialUploadRequestExecutor is running");
     if (material == null) {
-      throw new WxErrorException(WxError.newBuilder().setErrorMsg("非法请求,material参数为空").build());
+      throw new WxErrorException(WxError.builder().errorCode(-1).errorMsg("非法请求,material参数为空").build());
     }
     File file = material.getFile();
     if (file == null || !file.exists()) {

+ 1 - 3
weixin-java-mp/src/test/java/me/chanjar/weixin/mp/api/WxMpBusyRetryTest.java

@@ -23,9 +23,7 @@ public class WxMpBusyRetryTest {
         RequestExecutor<T, E> executor, String uri, E data)
         throws WxErrorException {
         this.log.info("Executed");
-        WxError error = new WxError();
-        error.setErrorCode(-1);
-        throw new WxErrorException(error);
+        throw new WxErrorException(WxError.builder().errorCode(-1).build());
       }
     };