diff --git a/starters/wx-java-mp-starter/src/main/java/com/binarywang/spring/starter/wxjava/mp/WxMpServiceAutoConfiguration.java b/starters/wx-java-mp-starter/src/main/java/com/binarywang/spring/starter/wxjava/mp/WxMpServiceAutoConfiguration.java
index 7a6cf920c..a5234ed76 100644
--- a/starters/wx-java-mp-starter/src/main/java/com/binarywang/spring/starter/wxjava/mp/WxMpServiceAutoConfiguration.java
+++ b/starters/wx-java-mp-starter/src/main/java/com/binarywang/spring/starter/wxjava/mp/WxMpServiceAutoConfiguration.java
@@ -1,6 +1,6 @@
package com.binarywang.spring.starter.wxjava.mp;
-import me.chanjar.weixin.mp.api.WxMpConfigStorage;
+import me.chanjar.weixin.mp.config.WxMpConfigStorage;
import me.chanjar.weixin.mp.api.WxMpService;
import me.chanjar.weixin.mp.api.impl.WxMpServiceImpl;
import org.springframework.beans.factory.annotation.Autowired;
diff --git a/starters/wx-java-mp-starter/src/main/java/com/binarywang/spring/starter/wxjava/mp/WxMpStorageAutoConfiguration.java b/starters/wx-java-mp-starter/src/main/java/com/binarywang/spring/starter/wxjava/mp/WxMpStorageAutoConfiguration.java
index a0fb7eb3d..d70d88c87 100644
--- a/starters/wx-java-mp-starter/src/main/java/com/binarywang/spring/starter/wxjava/mp/WxMpStorageAutoConfiguration.java
+++ b/starters/wx-java-mp-starter/src/main/java/com/binarywang/spring/starter/wxjava/mp/WxMpStorageAutoConfiguration.java
@@ -1,8 +1,8 @@
package com.binarywang.spring.starter.wxjava.mp;
-import me.chanjar.weixin.mp.api.WxMpConfigStorage;
-import me.chanjar.weixin.mp.api.WxMpInMemoryConfigStorage;
-import me.chanjar.weixin.mp.api.WxMpInRedisConfigStorage;
+import me.chanjar.weixin.mp.config.WxMpConfigStorage;
+import me.chanjar.weixin.mp.config.impl.WxMpDefaultConfigImpl;
+import me.chanjar.weixin.mp.config.impl.WxMpRedisConfigImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.context.annotation.Bean;
@@ -34,23 +34,23 @@ public class WxMpStorageAutoConfiguration {
return getWxMpInMemoryConfigStorage();
}
- private WxMpInMemoryConfigStorage getWxMpInMemoryConfigStorage() {
- WxMpInMemoryConfigStorage config = new WxMpInMemoryConfigStorage();
+ private WxMpDefaultConfigImpl getWxMpInMemoryConfigStorage() {
+ WxMpDefaultConfigImpl config = new WxMpDefaultConfigImpl();
setWxMpInfo(config);
return config;
}
- private WxMpInRedisConfigStorage getWxMpInRedisConfigStorage() {
+ private WxMpRedisConfigImpl getWxMpInRedisConfigStorage() {
JedisPool poolToUse = jedisPool;
if (poolToUse == null) {
poolToUse = getJedisPool();
}
- WxMpInRedisConfigStorage config = new WxMpInRedisConfigStorage(poolToUse);
+ WxMpRedisConfigImpl config = new WxMpRedisConfigImpl(poolToUse);
setWxMpInfo(config);
return config;
}
- private void setWxMpInfo(WxMpInMemoryConfigStorage config) {
+ private void setWxMpInfo(WxMpDefaultConfigImpl config) {
config.setAppId(properties.getAppId());
config.setSecret(properties.getSecret());
config.setToken(properties.getToken());
diff --git a/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/config/WxCpTpConfigStorage.java b/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/config/WxCpTpConfigStorage.java
index 44ef4e17b..fadfb0bda 100644
--- a/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/config/WxCpTpConfigStorage.java
+++ b/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/config/WxCpTpConfigStorage.java
@@ -14,7 +14,6 @@ public interface WxCpTpConfigStorage {
/**
* 设置企业微信服务器 baseUrl.
- *
* 默认值是 https://qyapi.weixin.qq.com , 如果使用默认值,则不需要调用 setBaseApiUrl
*
* @param baseUrl 企业微信服务器 Url
@@ -23,7 +22,6 @@ public interface WxCpTpConfigStorage {
/**
* 读取企业微信 API Url.
- *
* 支持私有化企业微信服务器.
*/
String getApiUrl(String path);
@@ -33,7 +31,7 @@ public interface WxCpTpConfigStorage {
boolean isSuiteAccessTokenExpired();
/**
- * 强制将suite access token过期掉
+ * 强制将suite access token过期掉.
*/
void expireSuiteAccessToken();
@@ -46,15 +44,15 @@ public interface WxCpTpConfigStorage {
boolean isSuiteTicketExpired();
/**
- * 强制将suite ticket过期掉
+ * 强制将suite ticket过期掉.
*/
void expireSuiteTicket();
/**
- * 应该是线程安全的
+ * 应该是线程安全的.
*/
void updateSuiteTicket(String suiteTicket, int expiresInSeconds);
-
+
String getCorpId();
String getCorpSecret();
@@ -80,7 +78,7 @@ public interface WxCpTpConfigStorage {
File getTmpDirFile();
/**
- * http client builder
+ * http client builder.
*
* @return ApacheHttpClientBuilder
*/
diff --git a/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/config/WxCpInMemoryConfigStorage.java b/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/config/impl/WxCpDefaultConfigImpl.java
similarity index 85%
rename from weixin-java-cp/src/main/java/me/chanjar/weixin/cp/config/WxCpInMemoryConfigStorage.java
rename to weixin-java-cp/src/main/java/me/chanjar/weixin/cp/config/impl/WxCpDefaultConfigImpl.java
index 2ce575071..87ed4f611 100644
--- a/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/config/WxCpInMemoryConfigStorage.java
+++ b/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/config/impl/WxCpDefaultConfigImpl.java
@@ -1,45 +1,49 @@
-package me.chanjar.weixin.cp.config;
+package me.chanjar.weixin.cp.config.impl;
import me.chanjar.weixin.common.bean.WxAccessToken;
import me.chanjar.weixin.common.util.http.apache.ApacheHttpClientBuilder;
+import me.chanjar.weixin.cp.config.WxCpConfigStorage;
import me.chanjar.weixin.cp.constant.WxCpApiPathConsts;
import me.chanjar.weixin.cp.util.json.WxCpGsonBuilder;
import java.io.File;
+import java.io.Serializable;
/**
- * 基于内存的微信配置provider,在实际生产环境中应该将这些配置持久化
+ * 基于内存的微信配置provider,在实际生产环境中应该将这些配置持久化.
*
* @author Daniel Qian
*/
-public class WxCpInMemoryConfigStorage implements WxCpConfigStorage {
- protected volatile String corpId;
- protected volatile String corpSecret;
+public class WxCpDefaultConfigImpl implements WxCpConfigStorage, Serializable {
+ private static final long serialVersionUID = 1154541446729462780L;
- protected volatile String token;
+ private volatile String corpId;
+ private volatile String corpSecret;
+
+ private volatile String token;
protected volatile String accessToken;
- protected volatile String aesKey;
+ private volatile String aesKey;
protected volatile Integer agentId;
- protected volatile long expiresTime;
+ private volatile long expiresTime;
- protected volatile String oauth2redirectUri;
+ private volatile String oauth2redirectUri;
- protected volatile String httpProxyHost;
- protected volatile int httpProxyPort;
- protected volatile String httpProxyUsername;
- protected volatile String httpProxyPassword;
+ private volatile String httpProxyHost;
+ private volatile int httpProxyPort;
+ private volatile String httpProxyUsername;
+ private volatile String httpProxyPassword;
- protected volatile String jsapiTicket;
- protected volatile long jsapiTicketExpiresTime;
+ private volatile String jsapiTicket;
+ private volatile long jsapiTicketExpiresTime;
- protected volatile String agentJsapiTicket;
- protected volatile long agentJsapiTicketExpiresTime;
+ private volatile String agentJsapiTicket;
+ private volatile long agentJsapiTicketExpiresTime;
- protected volatile File tmpDirFile;
+ private volatile File tmpDirFile;
private volatile ApacheHttpClientBuilder apacheHttpClientBuilder;
- protected volatile String baseApiUrl;
+ private volatile String baseApiUrl;
@Override
public void setBaseApiUrl(String baseUrl) {
diff --git a/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/config/WxCpJedisConfigStorage.java b/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/config/impl/WxCpRedisConfigImpl.java
similarity index 93%
rename from weixin-java-cp/src/main/java/me/chanjar/weixin/cp/config/WxCpJedisConfigStorage.java
rename to weixin-java-cp/src/main/java/me/chanjar/weixin/cp/config/impl/WxCpRedisConfigImpl.java
index 652f5fe0c..ecaa47cc2 100644
--- a/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/config/WxCpJedisConfigStorage.java
+++ b/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/config/impl/WxCpRedisConfigImpl.java
@@ -1,7 +1,8 @@
-package me.chanjar.weixin.cp.config;
+package me.chanjar.weixin.cp.config.impl;
import me.chanjar.weixin.common.bean.WxAccessToken;
import me.chanjar.weixin.common.util.http.apache.ApacheHttpClientBuilder;
+import me.chanjar.weixin.cp.config.WxCpConfigStorage;
import me.chanjar.weixin.cp.constant.WxCpApiPathConsts;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
@@ -17,7 +18,7 @@ import java.io.File;
*
* @author gaigeshen
*/
-public class WxCpJedisConfigStorage implements WxCpConfigStorage {
+public class WxCpRedisConfigImpl implements WxCpConfigStorage {
private static final String ACCESS_TOKEN_KEY = "WX_CP_ACCESS_TOKEN";
private static final String ACCESS_TOKEN_EXPIRES_TIME_KEY = "WX_CP_ACCESS_TOKEN_EXPIRES_TIME";
private static final String JS_API_TICKET_KEY = "WX_CP_JS_API_TICKET";
@@ -54,23 +55,23 @@ public class WxCpJedisConfigStorage implements WxCpConfigStorage {
return baseApiUrl + path;
}
- public WxCpJedisConfigStorage(JedisPool jedisPool) {
+ public WxCpRedisConfigImpl(JedisPool jedisPool) {
this.jedisPool = jedisPool;
}
- public WxCpJedisConfigStorage(String host, int port) {
+ public WxCpRedisConfigImpl(String host, int port) {
jedisPool = new JedisPool(host, port);
}
- public WxCpJedisConfigStorage(JedisPoolConfig poolConfig, String host, int port) {
+ public WxCpRedisConfigImpl(JedisPoolConfig poolConfig, String host, int port) {
jedisPool = new JedisPool(poolConfig, host, port);
}
- public WxCpJedisConfigStorage(JedisPoolConfig poolConfig, String host, int port, int timeout, String password) {
+ public WxCpRedisConfigImpl(JedisPoolConfig poolConfig, String host, int port, int timeout, String password) {
jedisPool = new JedisPool(poolConfig, host, port, timeout, password);
}
- public WxCpJedisConfigStorage(JedisPoolConfig poolConfig, String host, int port, int timeout, String password, int database) {
+ public WxCpRedisConfigImpl(JedisPoolConfig poolConfig, String host, int port, int timeout, String password, int database) {
jedisPool = new JedisPool(poolConfig, host, port, timeout, password, database);
}
diff --git a/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/config/WxCpTpInMemoryConfigStorage.java b/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/config/impl/WxCpTpDefaultConfigImpl.java
similarity index 82%
rename from weixin-java-cp/src/main/java/me/chanjar/weixin/cp/config/WxCpTpInMemoryConfigStorage.java
rename to weixin-java-cp/src/main/java/me/chanjar/weixin/cp/config/impl/WxCpTpDefaultConfigImpl.java
index 6da47f5b7..d8be83c2a 100644
--- a/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/config/WxCpTpInMemoryConfigStorage.java
+++ b/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/config/impl/WxCpTpDefaultConfigImpl.java
@@ -1,44 +1,47 @@
-package me.chanjar.weixin.cp.config;
+package me.chanjar.weixin.cp.config.impl;
import me.chanjar.weixin.common.bean.WxAccessToken;
import me.chanjar.weixin.common.util.http.apache.ApacheHttpClientBuilder;
+import me.chanjar.weixin.cp.config.WxCpTpConfigStorage;
import me.chanjar.weixin.cp.util.json.WxCpGsonBuilder;
import java.io.File;
+import java.io.Serializable;
/**
- * 基于内存的微信配置provider,在实际生产环境中应该将这些配置持久化
+ * 基于内存的微信配置provider,在实际生产环境中应该将这些配置持久化.
*
- * @author Daniel Qian
+ * @author someone
*/
-public class WxCpTpInMemoryConfigStorage implements WxCpTpConfigStorage {
- protected volatile String corpId;
- protected volatile String corpSecret;
-
- protected volatile String suiteId;
- protected volatile String suiteSecret;
+public class WxCpTpDefaultConfigImpl implements WxCpTpConfigStorage, Serializable {
+ private static final long serialVersionUID = 6678780920621872824L;
- protected volatile String token;
- protected volatile String suiteAccessToken;
- protected volatile String aesKey;
- protected volatile long expiresTime;
+ private volatile String corpId;
+ private volatile String corpSecret;
- protected volatile String oauth2redirectUri;
+ private volatile String suiteId;
+ private volatile String suiteSecret;
- protected volatile String httpProxyHost;
- protected volatile int httpProxyPort;
- protected volatile String httpProxyUsername;
- protected volatile String httpProxyPassword;
+ private volatile String token;
+ private volatile String suiteAccessToken;
+ private volatile String aesKey;
+ private volatile long expiresTime;
- protected volatile String suiteTicket;
- protected volatile long suiteTicketExpiresTime;
+ private volatile String oauth2redirectUri;
+ private volatile String httpProxyHost;
+ private volatile int httpProxyPort;
+ private volatile String httpProxyUsername;
+ private volatile String httpProxyPassword;
- protected volatile File tmpDirFile;
+ private volatile String suiteTicket;
+ private volatile long suiteTicketExpiresTime;
+
+ private volatile File tmpDirFile;
private volatile ApacheHttpClientBuilder apacheHttpClientBuilder;
- protected volatile String baseApiUrl;
+ private volatile String baseApiUrl;
@Override
public void setBaseApiUrl(String baseUrl) {
@@ -57,7 +60,7 @@ public class WxCpTpInMemoryConfigStorage implements WxCpTpConfigStorage {
public String getSuiteAccessToken() {
return this.suiteAccessToken;
}
-
+
public void setSuiteAccessToken(String suiteAccessToken) {
this.suiteAccessToken = suiteAccessToken;
}
@@ -82,25 +85,25 @@ public class WxCpTpInMemoryConfigStorage implements WxCpTpConfigStorage {
this.suiteAccessToken = suiteAccessToken;
this.expiresTime = System.currentTimeMillis() + (expiresInSeconds - 200) * 1000L;
}
-
+
@Override
public String getCorpId() {
return this.corpId;
}
-
+
public void setCorpId(String corpId) {
this.corpId = corpId;
}
-
+
@Override
public String getCorpSecret() {
return this.corpSecret;
}
-
+
public void setCorpSecret(String corpSecret) {
this.corpSecret = corpSecret;
}
-
+
@Override
public String getSuiteTicket() {
return this.suiteTicket;
diff --git a/weixin-java-cp/src/test/java/me/chanjar/weixin/cp/api/ApiTestModule.java b/weixin-java-cp/src/test/java/me/chanjar/weixin/cp/api/ApiTestModule.java
index 5ef750f89..c15e3af4d 100644
--- a/weixin-java-cp/src/test/java/me/chanjar/weixin/cp/api/ApiTestModule.java
+++ b/weixin-java-cp/src/test/java/me/chanjar/weixin/cp/api/ApiTestModule.java
@@ -12,7 +12,7 @@ import com.thoughtworks.xstream.XStream;
import com.thoughtworks.xstream.annotations.XStreamAlias;
import me.chanjar.weixin.common.util.xml.XStreamInitializer;
import me.chanjar.weixin.cp.api.impl.WxCpServiceImpl;
-import me.chanjar.weixin.cp.config.WxCpInMemoryConfigStorage;
+import me.chanjar.weixin.cp.config.impl.WxCpDefaultConfigImpl;
public class ApiTestModule implements Module {
private final Logger log = LoggerFactory.getLogger(this.getClass());
@@ -44,7 +44,7 @@ public class ApiTestModule implements Module {
}
@XStreamAlias("xml")
- public static class WxXmlCpInMemoryConfigStorage extends WxCpInMemoryConfigStorage {
+ public static class WxXmlCpInMemoryConfigStorage extends WxCpDefaultConfigImpl {
protected String userId;
diff --git a/weixin-java-cp/src/test/java/me/chanjar/weixin/cp/demo/WxCpDemoInMemoryConfigStorage.java b/weixin-java-cp/src/test/java/me/chanjar/weixin/cp/demo/WxCpDemoInMemoryConfigStorage.java
index cbb350376..35a2fc0e4 100644
--- a/weixin-java-cp/src/test/java/me/chanjar/weixin/cp/demo/WxCpDemoInMemoryConfigStorage.java
+++ b/weixin-java-cp/src/test/java/me/chanjar/weixin/cp/demo/WxCpDemoInMemoryConfigStorage.java
@@ -6,14 +6,14 @@ import com.thoughtworks.xstream.XStream;
import com.thoughtworks.xstream.annotations.XStreamAlias;
import lombok.ToString;
import me.chanjar.weixin.common.util.xml.XStreamInitializer;
-import me.chanjar.weixin.cp.config.WxCpInMemoryConfigStorage;
+import me.chanjar.weixin.cp.config.impl.WxCpDefaultConfigImpl;
/**
* @author Daniel Qian
*/
@XStreamAlias("xml")
@ToString
-public class WxCpDemoInMemoryConfigStorage extends WxCpInMemoryConfigStorage {
+public class WxCpDemoInMemoryConfigStorage extends WxCpDefaultConfigImpl {
public static WxCpDemoInMemoryConfigStorage fromXml(InputStream is) {
XStream xstream = XStreamInitializer.getInstance();
xstream.processAnnotations(WxCpDemoInMemoryConfigStorage.class);
diff --git a/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/config/WxMaInMemoryConfig.java b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/config/impl/WxMaDefaultConfigImpl.java
similarity index 84%
rename from weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/config/WxMaInMemoryConfig.java
rename to weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/config/impl/WxMaDefaultConfigImpl.java
index a0e53262b..76ff7611b 100644
--- a/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/config/WxMaInMemoryConfig.java
+++ b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/config/impl/WxMaDefaultConfigImpl.java
@@ -1,9 +1,10 @@
-package cn.binarywang.wx.miniapp.config;
+package cn.binarywang.wx.miniapp.config.impl;
import java.io.File;
import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;
+import cn.binarywang.wx.miniapp.config.WxMaConfig;
import cn.binarywang.wx.miniapp.util.json.WxMaGsonBuilder;
import me.chanjar.weixin.common.bean.WxAccessToken;
import me.chanjar.weixin.common.util.http.apache.ApacheHttpClientBuilder;
@@ -13,38 +14,39 @@ import me.chanjar.weixin.common.util.http.apache.ApacheHttpClientBuilder;
*
* @author Binary Wang
*/
-public class WxMaInMemoryConfig implements WxMaConfig {
- protected volatile String msgDataFormat;
+public class WxMaDefaultConfigImpl implements WxMaConfig {
+ private volatile String msgDataFormat;
protected volatile String appid;
- protected volatile String secret;
+ private volatile String secret;
protected volatile String token;
- protected volatile String accessToken;
- protected volatile String aesKey;
- protected volatile long expiresTime;
+ private volatile String accessToken;
+ private volatile String aesKey;
+ private volatile long expiresTime;
- protected volatile String httpProxyHost;
- protected volatile int httpProxyPort;
- protected volatile String httpProxyUsername;
- protected volatile String httpProxyPassword;
+ private volatile String httpProxyHost;
+ private volatile int httpProxyPort;
+ private volatile String httpProxyUsername;
+ private volatile String httpProxyPassword;
- protected volatile String jsapiTicket;
- protected volatile long jsapiTicketExpiresTime;
-
- //微信卡券的ticket单独缓存
- protected volatile String cardApiTicket;
- protected volatile long cardApiTicketExpiresTime;
-
-
- protected Lock accessTokenLock = new ReentrantLock();
- protected Lock jsapiTicketLock = new ReentrantLock();
- protected Lock cardApiTicketLock = new ReentrantLock();
+ private volatile String jsapiTicket;
+ private volatile long jsapiTicketExpiresTime;
/**
- * 临时文件目录
+ * 微信卡券的ticket单独缓存.
+ */
+ private volatile String cardApiTicket;
+ private volatile long cardApiTicketExpiresTime;
+
+ protected Lock accessTokenLock = new ReentrantLock();
+ private Lock jsapiTicketLock = new ReentrantLock();
+ private Lock cardApiTicketLock = new ReentrantLock();
+
+ /**
+ * 临时文件目录.
*/
protected volatile File tmpDirFile;
- protected volatile ApacheHttpClientBuilder apacheHttpClientBuilder;
+ private volatile ApacheHttpClientBuilder apacheHttpClientBuilder;
@Override
public String getAccessToken() {
diff --git a/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/config/WxMaInRedisConfig.java b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/config/impl/WxMaRedisConfigImpl.java
similarity index 54%
rename from weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/config/WxMaInRedisConfig.java
rename to weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/config/impl/WxMaRedisConfigImpl.java
index c90be60a7..c9340f8d7 100644
--- a/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/config/WxMaInRedisConfig.java
+++ b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/config/impl/WxMaRedisConfigImpl.java
@@ -1,4 +1,4 @@
-package cn.binarywang.wx.miniapp.config;
+package cn.binarywang.wx.miniapp.config.impl;
import java.io.File;
import java.util.HashMap;
@@ -7,6 +7,7 @@ import java.util.concurrent.TimeUnit;
import java.util.concurrent.locks.Condition;
import java.util.concurrent.locks.Lock;
+import cn.binarywang.wx.miniapp.config.WxMaConfig;
import com.github.jedis.lock.JedisLock;
import cn.binarywang.wx.miniapp.util.json.WxMaGsonBuilder;
@@ -17,105 +18,92 @@ import redis.clients.jedis.JedisPool;
/**
* 基于Redis的微信配置provider.
- *
+ *
*
* 需要引入依赖jedis-lock,才能使用该类。
*
*
* @author winter
*/
-public class WxMaInRedisConfig implements WxMaConfig {
-
+public class WxMaRedisConfigImpl implements WxMaConfig {
private static final String ACCESS_TOKEN = "accessToken";
private static final String JSAPI_TICKET = "jsapiTicket";
private static final String CARD_API_TICKET = "cardApiTicket";
-
+
private static final String HASH_VALUE_FIELD = "value";
private static final String HASH_EXPIRE_FIELD = "expire";
-
- protected JedisPool jedisPool;
+
+ private JedisPool jedisPool;
/**
- * 微信小程序唯一id,用于拼接存储到redis时的key,防止key重复
+ * 微信小程序唯一id,用于拼接存储到redis时的key,防止key重复.
*/
- protected String maId;
-
- protected volatile String msgDataFormat;
+ private String maId;
+
+ private volatile String msgDataFormat;
protected volatile String appid;
- protected volatile String secret;
+ private volatile String secret;
protected volatile String token;
- protected volatile String aesKey;
+ private volatile String aesKey;
- protected volatile String httpProxyHost;
- protected volatile int httpProxyPort;
- protected volatile String httpProxyUsername;
- protected volatile String httpProxyPassword;
+ private volatile String httpProxyHost;
+ private volatile int httpProxyPort;
+ private volatile String httpProxyUsername;
+ private volatile String httpProxyPassword;
- protected Lock accessTokenLock;
- protected Lock jsapiTicketLock;
- protected Lock cardApiTicketLock;
+ private Lock accessTokenLock;
+ private Lock jsapiTicketLock;
+ private Lock cardApiTicketLock;
/**
- * 临时文件目录
+ * 临时文件目录.
*/
protected volatile File tmpDirFile;
- protected volatile ApacheHttpClientBuilder apacheHttpClientBuilder;
-
+ private volatile ApacheHttpClientBuilder apacheHttpClientBuilder;
+
private String getRedisKey(String key) {
- StringBuilder redisKey = new StringBuilder("maConfig:");
- if(maId == null) {
- return redisKey.append(key).toString();
- } else {
- return redisKey.append(maId).append(":").append(key).toString();
- }
+ StringBuilder redisKey = new StringBuilder("maConfig:");
+ if (maId == null) {
+ return redisKey.append(key).toString();
+ } else {
+ return redisKey.append(maId).append(":").append(key).toString();
+ }
}
-
+
private String getValueFromRedis(String key) {
- Jedis jedis = jedisPool.getResource();
- try {
+ try (Jedis jedis = jedisPool.getResource()) {
return jedis.hget(getRedisKey(key), HASH_VALUE_FIELD);
- } finally {
- jedis.close();
- }
+ }
}
-
+
private void setValueToRedis(String key, long expiresTime, String value) {
- Jedis jedis = jedisPool.getResource();
- try {
- Map hash = new HashMap();
- hash.put(HASH_VALUE_FIELD, value);
- hash.put(HASH_EXPIRE_FIELD, String.valueOf(expiresTime));
- jedis.hmset(getRedisKey(key), hash);
- } finally {
- jedis.close();
- }
+ try (Jedis jedis = jedisPool.getResource()) {
+ Map hash = new HashMap();
+ hash.put(HASH_VALUE_FIELD, value);
+ hash.put(HASH_EXPIRE_FIELD, String.valueOf(expiresTime));
+ jedis.hmset(getRedisKey(key), hash);
+ }
}
-
+
private long getExpireFromRedis(String key) {
- Jedis jedis = jedisPool.getResource();
- try {
+ try (Jedis jedis = jedisPool.getResource()) {
String expire = jedis.hget(getRedisKey(key), HASH_EXPIRE_FIELD);
- return expire == null ? 0 : Long.valueOf(expire);
- } finally {
- jedis.close();
- }
+ return expire == null ? 0 : Long.parseLong(expire);
+ }
}
-
+
private void setExpire(String key, long expiresTime) {
- Jedis jedis = jedisPool.getResource();
- try {
- jedis.hset(getRedisKey(key), HASH_EXPIRE_FIELD, String.valueOf(expiresTime));
- } finally {
- jedis.close();
- }
+ try (Jedis jedis = jedisPool.getResource()) {
+ jedis.hset(getRedisKey(key), HASH_EXPIRE_FIELD, String.valueOf(expiresTime));
+ }
}
public void setJedisPool(JedisPool jedisPool) {
- this.jedisPool = jedisPool;
+ this.jedisPool = jedisPool;
}
public void setMaId(String maId) {
- this.maId = maId;
+ this.maId = maId;
}
@Override
@@ -125,19 +113,19 @@ public class WxMaInRedisConfig implements WxMaConfig {
@Override
public Lock getAccessTokenLock() {
- if(accessTokenLock == null) {
- synchronized (this) {
- if(accessTokenLock == null) {
- accessTokenLock = new DistributedLock(getRedisKey("accessTokenLock"));
- }
- }
- }
+ if (accessTokenLock == null) {
+ synchronized (this) {
+ if (accessTokenLock == null) {
+ accessTokenLock = new DistributedLock(getRedisKey("accessTokenLock"));
+ }
+ }
+ }
return accessTokenLock;
}
@Override
public boolean isAccessTokenExpired() {
- return System.currentTimeMillis() > getExpireFromRedis(ACCESS_TOKEN);
+ return System.currentTimeMillis() > getExpireFromRedis(ACCESS_TOKEN);
}
@Override
@@ -147,7 +135,7 @@ public class WxMaInRedisConfig implements WxMaConfig {
@Override
public synchronized void updateAccessToken(String accessToken, int expiresInSeconds) {
- setValueToRedis(ACCESS_TOKEN, System.currentTimeMillis() + (expiresInSeconds - 200) * 1000L, accessToken);
+ setValueToRedis(ACCESS_TOKEN, System.currentTimeMillis() + (expiresInSeconds - 200) * 1000L, accessToken);
}
@Override
@@ -157,30 +145,30 @@ public class WxMaInRedisConfig implements WxMaConfig {
@Override
public Lock getJsapiTicketLock() {
- if(jsapiTicketLock == null) {
- synchronized (this) {
- if(jsapiTicketLock == null) {
- jsapiTicketLock = new DistributedLock(getRedisKey("jsapiTicketLock"));
- }
- }
- }
+ if (jsapiTicketLock == null) {
+ synchronized (this) {
+ if (jsapiTicketLock == null) {
+ jsapiTicketLock = new DistributedLock(getRedisKey("jsapiTicketLock"));
+ }
+ }
+ }
return jsapiTicketLock;
}
@Override
public boolean isJsapiTicketExpired() {
- return System.currentTimeMillis() > getExpireFromRedis(JSAPI_TICKET);
+ return System.currentTimeMillis() > getExpireFromRedis(JSAPI_TICKET);
}
@Override
public void expireJsapiTicket() {
- setExpire(JSAPI_TICKET, 0);
+ setExpire(JSAPI_TICKET, 0);
}
@Override
public void updateJsapiTicket(String jsapiTicket, int expiresInSeconds) {
- // 预留200秒的时间
- setValueToRedis(JSAPI_TICKET, System.currentTimeMillis() + (expiresInSeconds - 200) * 1000L, jsapiTicket);
+ // 预留200秒的时间
+ setValueToRedis(JSAPI_TICKET, System.currentTimeMillis() + (expiresInSeconds - 200) * 1000L, jsapiTicket);
}
@@ -191,34 +179,34 @@ public class WxMaInRedisConfig implements WxMaConfig {
@Override
public Lock getCardApiTicketLock() {
- if(cardApiTicketLock == null) {
- synchronized (this) {
- if(cardApiTicketLock == null) {
- cardApiTicketLock = new DistributedLock(getRedisKey("cardApiTicketLock"));
- }
- }
- }
+ if (cardApiTicketLock == null) {
+ synchronized (this) {
+ if (cardApiTicketLock == null) {
+ cardApiTicketLock = new DistributedLock(getRedisKey("cardApiTicketLock"));
+ }
+ }
+ }
return cardApiTicketLock;
}
@Override
public boolean isCardApiTicketExpired() {
- return System.currentTimeMillis() > getExpireFromRedis(CARD_API_TICKET);
+ return System.currentTimeMillis() > getExpireFromRedis(CARD_API_TICKET);
}
@Override
public void expireCardApiTicket() {
- setExpire(CARD_API_TICKET, 0);
+ setExpire(CARD_API_TICKET, 0);
}
@Override
public void updateCardApiTicket(String cardApiTicket, int expiresInSeconds) {
- setValueToRedis(CARD_API_TICKET, System.currentTimeMillis() + (expiresInSeconds - 200) * 1000L, cardApiTicket);
+ setValueToRedis(CARD_API_TICKET, System.currentTimeMillis() + (expiresInSeconds - 200) * 1000L, cardApiTicket);
}
@Override
public void expireAccessToken() {
- setExpire(ACCESS_TOKEN, 0);
+ setExpire(ACCESS_TOKEN, 0);
}
@Override
@@ -241,7 +229,7 @@ public class WxMaInRedisConfig implements WxMaConfig {
@Override
public long getExpiresTime() {
- return getExpireFromRedis(ACCESS_TOKEN);
+ return getExpireFromRedis(ACCESS_TOKEN);
}
@Override
@@ -325,80 +313,65 @@ public class WxMaInRedisConfig implements WxMaConfig {
public void setAppid(String appid) {
this.appid = appid;
}
-
+
/**
- * 基于redis的简单分布式锁
+ * 基于redis的简单分布式锁.
*/
private class DistributedLock implements Lock {
-
- private JedisLock lock;
-
- private DistributedLock(String key) {
- this.lock = new JedisLock(getRedisKey(key));
- }
- @Override
- public void lock() {
- Jedis jedis = jedisPool.getResource();
- try {
- if(!lock.acquire(jedis)) {
- throw new RuntimeException("acquire timeouted");
- }
- } catch (InterruptedException e) {
- throw new RuntimeException("lock failed",e);
- } finally {
- jedis.close();
- }
- }
+ private JedisLock lock;
- @Override
- public void lockInterruptibly() throws InterruptedException {
- Jedis jedis = jedisPool.getResource();
- try {
- if(!lock.acquire(jedis)) {
- throw new RuntimeException("acquire timeouted");
- }
- } finally {
- jedis.close();
- }
- }
+ private DistributedLock(String key) {
+ this.lock = new JedisLock(getRedisKey(key));
+ }
- @Override
- public boolean tryLock() {
- Jedis jedis = jedisPool.getResource();
- try {
- return lock.acquire(jedis);
- } catch (InterruptedException e) {
- throw new RuntimeException("lock failed",e);
- } finally {
- jedis.close();
- }
- }
+ @Override
+ public void lock() {
+ try (Jedis jedis = jedisPool.getResource()) {
+ if (!lock.acquire(jedis)) {
+ throw new RuntimeException("acquire timeouted");
+ }
+ } catch (InterruptedException e) {
+ throw new RuntimeException("lock failed", e);
+ }
+ }
- @Override
- public boolean tryLock(long time, TimeUnit unit) throws InterruptedException {
- Jedis jedis = jedisPool.getResource();
- try {
- return lock.acquire(jedis);
- } finally {
- jedis.close();
- }
- }
+ @Override
+ public void lockInterruptibly() throws InterruptedException {
+ try (Jedis jedis = jedisPool.getResource()) {
+ if (!lock.acquire(jedis)) {
+ throw new RuntimeException("acquire timeouted");
+ }
+ }
+ }
- @Override
- public void unlock() {
- Jedis jedis = jedisPool.getResource();
- try {
- lock.release(jedis);
- } finally {
- jedis.close();
- }
- }
+ @Override
+ public boolean tryLock() {
+ try (Jedis jedis = jedisPool.getResource()) {
+ return lock.acquire(jedis);
+ } catch (InterruptedException e) {
+ throw new RuntimeException("lock failed", e);
+ }
+ }
+
+ @Override
+ public boolean tryLock(long time, TimeUnit unit) throws InterruptedException {
+ try (Jedis jedis = jedisPool.getResource()) {
+ return lock.acquire(jedis);
+ }
+ }
+
+ @Override
+ public void unlock() {
+ try (Jedis jedis = jedisPool.getResource()) {
+ lock.release(jedis);
+ }
+ }
+
+ @Override
+ public Condition newCondition() {
+ throw new RuntimeException("unsupported method");
+ }
- @Override
- public Condition newCondition() {
- throw new RuntimeException("unsupported method");
- }
-
}
}
diff --git a/weixin-java-miniapp/src/test/java/cn/binarywang/wx/miniapp/test/TestConfig.java b/weixin-java-miniapp/src/test/java/cn/binarywang/wx/miniapp/test/TestConfig.java
index 6cebdeb24..a9dd46561 100644
--- a/weixin-java-miniapp/src/test/java/cn/binarywang/wx/miniapp/test/TestConfig.java
+++ b/weixin-java-miniapp/src/test/java/cn/binarywang/wx/miniapp/test/TestConfig.java
@@ -1,6 +1,6 @@
package cn.binarywang.wx.miniapp.test;
-import cn.binarywang.wx.miniapp.config.WxMaInMemoryConfig;
+import cn.binarywang.wx.miniapp.config.impl.WxMaDefaultConfigImpl;
import com.thoughtworks.xstream.XStream;
import com.thoughtworks.xstream.annotations.XStreamAlias;
import me.chanjar.weixin.common.util.xml.XStreamInitializer;
@@ -13,7 +13,7 @@ import java.util.concurrent.locks.Lock;
* @author Binary Wang
*/
@XStreamAlias("xml")
-public class TestConfig extends WxMaInMemoryConfig {
+public class TestConfig extends WxMaDefaultConfigImpl {
private String openid;
private String kfAccount;
diff --git a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/WxMpService.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/WxMpService.java
index f9d4399a6..be8000d33 100644
--- a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/WxMpService.java
+++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/WxMpService.java
@@ -10,6 +10,7 @@ import me.chanjar.weixin.mp.bean.result.WxMpCurrentAutoReplyInfo;
import me.chanjar.weixin.mp.bean.result.WxMpOAuth2AccessToken;
import me.chanjar.weixin.mp.bean.result.WxMpSemanticQueryResult;
import me.chanjar.weixin.mp.bean.result.WxMpUser;
+import me.chanjar.weixin.mp.config.WxMpConfigStorage;
import me.chanjar.weixin.mp.enums.TicketType;
import me.chanjar.weixin.mp.enums.WxMpApiUrl;
diff --git a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/impl/BaseWxMpServiceImpl.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/impl/BaseWxMpServiceImpl.java
index 8b854ebba..f7969eae7 100644
--- a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/impl/BaseWxMpServiceImpl.java
+++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/impl/BaseWxMpServiceImpl.java
@@ -22,6 +22,7 @@ import me.chanjar.weixin.mp.bean.result.WxMpCurrentAutoReplyInfo;
import me.chanjar.weixin.mp.bean.result.WxMpOAuth2AccessToken;
import me.chanjar.weixin.mp.bean.result.WxMpSemanticQueryResult;
import me.chanjar.weixin.mp.bean.result.WxMpUser;
+import me.chanjar.weixin.mp.config.WxMpConfigStorage;
import me.chanjar.weixin.mp.enums.TicketType;
import me.chanjar.weixin.mp.enums.WxMpApiUrl;
import me.chanjar.weixin.mp.util.WxMpConfigStorageHolder;
diff --git a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/impl/WxMpServiceHttpClientImpl.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/impl/WxMpServiceHttpClientImpl.java
index 17aec251f..d13a95b16 100644
--- a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/impl/WxMpServiceHttpClientImpl.java
+++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/impl/WxMpServiceHttpClientImpl.java
@@ -7,7 +7,7 @@ import me.chanjar.weixin.common.error.WxErrorException;
import me.chanjar.weixin.common.util.http.HttpType;
import me.chanjar.weixin.common.util.http.apache.ApacheHttpClientBuilder;
import me.chanjar.weixin.common.util.http.apache.DefaultApacheHttpClientBuilder;
-import me.chanjar.weixin.mp.api.WxMpConfigStorage;
+import me.chanjar.weixin.mp.config.WxMpConfigStorage;
import org.apache.http.HttpHost;
import org.apache.http.client.config.RequestConfig;
import org.apache.http.client.methods.CloseableHttpResponse;
diff --git a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/impl/WxMpServiceJoddHttpImpl.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/impl/WxMpServiceJoddHttpImpl.java
index ee1074b50..a4aeac5ad 100644
--- a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/impl/WxMpServiceJoddHttpImpl.java
+++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/impl/WxMpServiceJoddHttpImpl.java
@@ -7,7 +7,7 @@ import me.chanjar.weixin.common.bean.WxAccessToken;
import me.chanjar.weixin.common.error.WxError;
import me.chanjar.weixin.common.error.WxErrorException;
import me.chanjar.weixin.common.util.http.HttpType;
-import me.chanjar.weixin.mp.api.WxMpConfigStorage;
+import me.chanjar.weixin.mp.config.WxMpConfigStorage;
import java.util.concurrent.locks.Lock;
diff --git a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/impl/WxMpServiceOkHttpImpl.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/impl/WxMpServiceOkHttpImpl.java
index f1c1193c1..f7f2a8e7a 100644
--- a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/impl/WxMpServiceOkHttpImpl.java
+++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/impl/WxMpServiceOkHttpImpl.java
@@ -6,7 +6,7 @@ import me.chanjar.weixin.common.error.WxError;
import me.chanjar.weixin.common.error.WxErrorException;
import me.chanjar.weixin.common.util.http.HttpType;
import me.chanjar.weixin.common.util.http.okhttp.OkHttpProxyInfo;
-import me.chanjar.weixin.mp.api.WxMpConfigStorage;
+import me.chanjar.weixin.mp.config.WxMpConfigStorage;
import okhttp3.*;
import java.io.IOException;
diff --git a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/impl/WxMpSubscribeMsgServiceImpl.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/impl/WxMpSubscribeMsgServiceImpl.java
index b9c5d4fd3..ff99b12c8 100644
--- a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/impl/WxMpSubscribeMsgServiceImpl.java
+++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/impl/WxMpSubscribeMsgServiceImpl.java
@@ -3,7 +3,7 @@ package me.chanjar.weixin.mp.api.impl;
import lombok.RequiredArgsConstructor;
import me.chanjar.weixin.common.error.WxErrorException;
import me.chanjar.weixin.common.util.http.URIUtil;
-import me.chanjar.weixin.mp.api.WxMpConfigStorage;
+import me.chanjar.weixin.mp.config.WxMpConfigStorage;
import me.chanjar.weixin.mp.api.WxMpService;
import me.chanjar.weixin.mp.api.WxMpSubscribeMsgService;
import me.chanjar.weixin.mp.bean.subscribe.WxMpSubscribeMessage;
diff --git a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/message/WxMpXmlMessage.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/message/WxMpXmlMessage.java
index f8ed19bce..bb93976f3 100644
--- a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/message/WxMpXmlMessage.java
+++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/message/WxMpXmlMessage.java
@@ -15,7 +15,7 @@ import lombok.extern.slf4j.Slf4j;
import me.chanjar.weixin.common.api.WxConsts;
import me.chanjar.weixin.common.util.XmlUtils;
import me.chanjar.weixin.common.util.xml.XStreamCDataConverter;
-import me.chanjar.weixin.mp.api.WxMpConfigStorage;
+import me.chanjar.weixin.mp.config.WxMpConfigStorage;
import me.chanjar.weixin.mp.util.crypto.WxMpCryptUtil;
import me.chanjar.weixin.mp.util.json.WxMpGsonBuilder;
import me.chanjar.weixin.mp.util.xml.XStreamTransformer;
@@ -527,10 +527,10 @@ public class WxMpXmlMessage implements Serializable {
@XStreamAlias("DeviceID")
@XStreamConverter(value = XStreamCDataConverter.class)
private String deviceId;
-
+
/**
* 微信客户端生成的session id,用于request和response对应,
- * 因此响应中该字段第三方需要原封不变的带回
+ * 因此响应中该字段第三方需要原封不变的带回
*/
@XStreamAlias("SessionID")
@XStreamConverter(value = XStreamCDataConverter.class)
diff --git a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/message/WxMpXmlOutMessage.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/message/WxMpXmlOutMessage.java
index 74b053f17..40e0b41a2 100644
--- a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/message/WxMpXmlOutMessage.java
+++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/message/WxMpXmlOutMessage.java
@@ -4,7 +4,7 @@ import com.thoughtworks.xstream.annotations.XStreamAlias;
import com.thoughtworks.xstream.annotations.XStreamConverter;
import lombok.Data;
import me.chanjar.weixin.common.util.xml.XStreamCDataConverter;
-import me.chanjar.weixin.mp.api.WxMpConfigStorage;
+import me.chanjar.weixin.mp.config.WxMpConfigStorage;
import me.chanjar.weixin.mp.builder.outxml.*;
import me.chanjar.weixin.mp.util.crypto.WxMpCryptUtil;
import me.chanjar.weixin.mp.util.xml.XStreamTransformer;
@@ -79,7 +79,7 @@ public abstract class WxMpXmlOutMessage implements Serializable {
public static TransferCustomerServiceBuilder TRANSFER_CUSTOMER_SERVICE() {
return new TransferCustomerServiceBuilder();
}
-
+
/**
* 获得设备消息builder
*/
diff --git a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/WxMpConfigStorage.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/config/WxMpConfigStorage.java
similarity index 98%
rename from weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/WxMpConfigStorage.java
rename to weixin-java-mp/src/main/java/me/chanjar/weixin/mp/config/WxMpConfigStorage.java
index bd5476d47..7c3c46292 100644
--- a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/WxMpConfigStorage.java
+++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/config/WxMpConfigStorage.java
@@ -1,4 +1,4 @@
-package me.chanjar.weixin.mp.api;
+package me.chanjar.weixin.mp.config;
import me.chanjar.weixin.common.bean.WxAccessToken;
import me.chanjar.weixin.common.util.http.apache.ApacheHttpClientBuilder;
diff --git a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/WxMpInMemoryConfigStorage.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/config/impl/WxMpDefaultConfigImpl.java
similarity index 96%
rename from weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/WxMpInMemoryConfigStorage.java
rename to weixin-java-mp/src/main/java/me/chanjar/weixin/mp/config/impl/WxMpDefaultConfigImpl.java
index 31eca6a4e..08e7d0830 100644
--- a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/WxMpInMemoryConfigStorage.java
+++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/config/impl/WxMpDefaultConfigImpl.java
@@ -1,4 +1,4 @@
-package me.chanjar.weixin.mp.api;
+package me.chanjar.weixin.mp.config.impl;
import java.io.File;
import java.io.Serializable;
@@ -8,6 +8,7 @@ import java.util.concurrent.locks.ReentrantLock;
import lombok.Data;
import me.chanjar.weixin.common.bean.WxAccessToken;
import me.chanjar.weixin.common.util.http.apache.ApacheHttpClientBuilder;
+import me.chanjar.weixin.mp.config.WxMpConfigStorage;
import me.chanjar.weixin.mp.bean.WxMpHostConfig;
import me.chanjar.weixin.mp.enums.TicketType;
import me.chanjar.weixin.mp.util.json.WxMpGsonBuilder;
@@ -18,7 +19,7 @@ import me.chanjar.weixin.mp.util.json.WxMpGsonBuilder;
* @author chanjarster
*/
@Data
-public class WxMpInMemoryConfigStorage implements WxMpConfigStorage, Serializable {
+public class WxMpDefaultConfigImpl implements WxMpConfigStorage, Serializable {
private static final long serialVersionUID = -6646519023303395185L;
protected volatile String appId;
diff --git a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/WxMpInRedisConfigStorage.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/config/impl/WxMpRedisConfigImpl.java
similarity index 92%
rename from weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/WxMpInRedisConfigStorage.java
rename to weixin-java-mp/src/main/java/me/chanjar/weixin/mp/config/impl/WxMpRedisConfigImpl.java
index b1ff3f1f8..4d2d1783e 100644
--- a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/WxMpInRedisConfigStorage.java
+++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/config/impl/WxMpRedisConfigImpl.java
@@ -1,4 +1,4 @@
-package me.chanjar.weixin.mp.api;
+package me.chanjar.weixin.mp.config.impl;
import me.chanjar.weixin.mp.enums.TicketType;
import redis.clients.jedis.Jedis;
@@ -15,17 +15,17 @@ import redis.clients.jedis.JedisPool;
* @author nickwong
*/
@SuppressWarnings("hiding")
-public class WxMpInRedisConfigStorage extends WxMpInMemoryConfigStorage {
+public class WxMpRedisConfigImpl extends WxMpDefaultConfigImpl {
private static final String ACCESS_TOKEN_KEY = "wx:access_token:";
/**
* 使用连接池保证线程安全.
*/
- protected final JedisPool jedisPool;
+ private final JedisPool jedisPool;
private String accessTokenKey;
- public WxMpInRedisConfigStorage(JedisPool jedisPool) {
+ public WxMpRedisConfigImpl(JedisPool jedisPool) {
this.jedisPool = jedisPool;
}
diff --git a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/enums/WxMpApiUrl.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/enums/WxMpApiUrl.java
index 22aeaa0bb..77124c688 100644
--- a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/enums/WxMpApiUrl.java
+++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/enums/WxMpApiUrl.java
@@ -1,7 +1,7 @@
package me.chanjar.weixin.mp.enums;
import lombok.AllArgsConstructor;
-import me.chanjar.weixin.mp.api.WxMpConfigStorage;
+import me.chanjar.weixin.mp.config.WxMpConfigStorage;
import static me.chanjar.weixin.mp.bean.WxMpHostConfig.*;
diff --git a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/util/crypto/WxMpCryptUtil.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/util/crypto/WxMpCryptUtil.java
index d95e8f8f3..945219acf 100755
--- a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/util/crypto/WxMpCryptUtil.java
+++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/util/crypto/WxMpCryptUtil.java
@@ -17,7 +17,7 @@
*/
package me.chanjar.weixin.mp.util.crypto;
-import me.chanjar.weixin.mp.api.WxMpConfigStorage;
+import me.chanjar.weixin.mp.config.WxMpConfigStorage;
import org.apache.commons.codec.binary.Base64;
public class WxMpCryptUtil extends me.chanjar.weixin.common.util.crypto.WxCryptUtil {
diff --git a/weixin-java-mp/src/test/java/me/chanjar/weixin/mp/api/impl/WxMpServiceImplTest.java b/weixin-java-mp/src/test/java/me/chanjar/weixin/mp/api/impl/WxMpServiceImplTest.java
index 7c36930b0..a434144cc 100644
--- a/weixin-java-mp/src/test/java/me/chanjar/weixin/mp/api/impl/WxMpServiceImplTest.java
+++ b/weixin-java-mp/src/test/java/me/chanjar/weixin/mp/api/impl/WxMpServiceImplTest.java
@@ -7,7 +7,7 @@ import org.testng.annotations.*;
import com.google.inject.Inject;
import me.chanjar.weixin.common.api.WxConsts;
import me.chanjar.weixin.common.error.WxErrorException;
-import me.chanjar.weixin.mp.api.WxMpConfigStorage;
+import me.chanjar.weixin.mp.config.WxMpConfigStorage;
import me.chanjar.weixin.mp.api.WxMpService;
import me.chanjar.weixin.mp.api.test.ApiTestModule;
import me.chanjar.weixin.mp.api.test.TestConfigStorage;
diff --git a/weixin-java-mp/src/test/java/me/chanjar/weixin/mp/api/test/ApiTestModule.java b/weixin-java-mp/src/test/java/me/chanjar/weixin/mp/api/test/ApiTestModule.java
index 29c8d2e2b..cc964e80f 100644
--- a/weixin-java-mp/src/test/java/me/chanjar/weixin/mp/api/test/ApiTestModule.java
+++ b/weixin-java-mp/src/test/java/me/chanjar/weixin/mp/api/test/ApiTestModule.java
@@ -12,7 +12,7 @@ import com.google.inject.Binder;
import com.google.inject.Module;
import com.thoughtworks.xstream.XStream;
import me.chanjar.weixin.common.util.xml.XStreamInitializer;
-import me.chanjar.weixin.mp.api.WxMpConfigStorage;
+import me.chanjar.weixin.mp.config.WxMpConfigStorage;
import me.chanjar.weixin.mp.api.WxMpService;
public class ApiTestModule implements Module {
diff --git a/weixin-java-mp/src/test/java/me/chanjar/weixin/mp/api/test/TestConfigStorage.java b/weixin-java-mp/src/test/java/me/chanjar/weixin/mp/api/test/TestConfigStorage.java
index ed6c5cb16..5266beb23 100644
--- a/weixin-java-mp/src/test/java/me/chanjar/weixin/mp/api/test/TestConfigStorage.java
+++ b/weixin-java-mp/src/test/java/me/chanjar/weixin/mp/api/test/TestConfigStorage.java
@@ -1,13 +1,13 @@
package me.chanjar.weixin.mp.api.test;
import com.thoughtworks.xstream.annotations.XStreamAlias;
-import me.chanjar.weixin.mp.api.WxMpInMemoryConfigStorage;
+import me.chanjar.weixin.mp.config.impl.WxMpDefaultConfigImpl;
import org.apache.commons.lang3.builder.ToStringBuilder;
import java.util.concurrent.locks.Lock;
@XStreamAlias("xml")
-public class TestConfigStorage extends WxMpInMemoryConfigStorage {
+public class TestConfigStorage extends WxMpDefaultConfigImpl {
private String openid;
private String kfAccount;
diff --git a/weixin-java-mp/src/test/java/me/chanjar/weixin/mp/demo/WxMpDemoInMemoryConfigStorage.java b/weixin-java-mp/src/test/java/me/chanjar/weixin/mp/demo/WxMpDemoInMemoryConfigStorage.java
index 30d36920b..535123bdd 100644
--- a/weixin-java-mp/src/test/java/me/chanjar/weixin/mp/demo/WxMpDemoInMemoryConfigStorage.java
+++ b/weixin-java-mp/src/test/java/me/chanjar/weixin/mp/demo/WxMpDemoInMemoryConfigStorage.java
@@ -6,13 +6,13 @@ import java.util.concurrent.locks.ReentrantLock;
import com.thoughtworks.xstream.XStream;
import com.thoughtworks.xstream.annotations.XStreamAlias;
import me.chanjar.weixin.common.util.xml.XStreamInitializer;
-import me.chanjar.weixin.mp.api.WxMpInMemoryConfigStorage;
+import me.chanjar.weixin.mp.config.impl.WxMpDefaultConfigImpl;
/**
* @author Daniel Qian
*/
@XStreamAlias("xml")
-class WxMpDemoInMemoryConfigStorage extends WxMpInMemoryConfigStorage {
+class WxMpDemoInMemoryConfigStorage extends WxMpDefaultConfigImpl {
private static final long serialVersionUID = -3706236839197109704L;
public static WxMpDemoInMemoryConfigStorage fromXml(InputStream is) {
diff --git a/weixin-java-mp/src/test/java/me/chanjar/weixin/mp/demo/WxMpDemoServer.java b/weixin-java-mp/src/test/java/me/chanjar/weixin/mp/demo/WxMpDemoServer.java
index 5d85d64c0..36f81ae4c 100644
--- a/weixin-java-mp/src/test/java/me/chanjar/weixin/mp/demo/WxMpDemoServer.java
+++ b/weixin-java-mp/src/test/java/me/chanjar/weixin/mp/demo/WxMpDemoServer.java
@@ -1,7 +1,7 @@
package me.chanjar.weixin.mp.demo;
import me.chanjar.weixin.common.api.WxConsts;
-import me.chanjar.weixin.mp.api.WxMpConfigStorage;
+import me.chanjar.weixin.mp.config.WxMpConfigStorage;
import me.chanjar.weixin.mp.api.WxMpMessageHandler;
import me.chanjar.weixin.mp.api.WxMpMessageRouter;
import me.chanjar.weixin.mp.api.WxMpService;
diff --git a/weixin-java-mp/src/test/java/me/chanjar/weixin/mp/demo/WxMpEndpointServlet.java b/weixin-java-mp/src/test/java/me/chanjar/weixin/mp/demo/WxMpEndpointServlet.java
index 3f32d9c94..e835e6375 100644
--- a/weixin-java-mp/src/test/java/me/chanjar/weixin/mp/demo/WxMpEndpointServlet.java
+++ b/weixin-java-mp/src/test/java/me/chanjar/weixin/mp/demo/WxMpEndpointServlet.java
@@ -1,6 +1,6 @@
package me.chanjar.weixin.mp.demo;
-import me.chanjar.weixin.mp.api.WxMpConfigStorage;
+import me.chanjar.weixin.mp.config.WxMpConfigStorage;
import me.chanjar.weixin.mp.api.WxMpMessageRouter;
import me.chanjar.weixin.mp.api.WxMpService;
import me.chanjar.weixin.mp.bean.message.WxMpXmlMessage;
diff --git a/weixin-java-open/src/main/java/me/chanjar/weixin/open/api/WxOpenConfigStorage.java b/weixin-java-open/src/main/java/me/chanjar/weixin/open/api/WxOpenConfigStorage.java
index 066cf8c00..40833c1b9 100644
--- a/weixin-java-open/src/main/java/me/chanjar/weixin/open/api/WxOpenConfigStorage.java
+++ b/weixin-java-open/src/main/java/me/chanjar/weixin/open/api/WxOpenConfigStorage.java
@@ -2,7 +2,7 @@ package me.chanjar.weixin.open.api;
import cn.binarywang.wx.miniapp.config.WxMaConfig;
import me.chanjar.weixin.common.util.http.apache.ApacheHttpClientBuilder;
-import me.chanjar.weixin.mp.api.WxMpConfigStorage;
+import me.chanjar.weixin.mp.config.WxMpConfigStorage;
import me.chanjar.weixin.open.bean.WxOpenAuthorizerAccessToken;
import me.chanjar.weixin.open.bean.WxOpenComponentAccessToken;
diff --git a/weixin-java-open/src/main/java/me/chanjar/weixin/open/api/impl/WxOpenInMemoryConfigStorage.java b/weixin-java-open/src/main/java/me/chanjar/weixin/open/api/impl/WxOpenInMemoryConfigStorage.java
index ef699212b..80882b0c4 100644
--- a/weixin-java-open/src/main/java/me/chanjar/weixin/open/api/impl/WxOpenInMemoryConfigStorage.java
+++ b/weixin-java-open/src/main/java/me/chanjar/weixin/open/api/impl/WxOpenInMemoryConfigStorage.java
@@ -10,7 +10,7 @@ import java.util.concurrent.locks.ReentrantLock;
import cn.binarywang.wx.miniapp.config.WxMaConfig;
import me.chanjar.weixin.common.bean.WxAccessToken;
import me.chanjar.weixin.common.util.http.apache.ApacheHttpClientBuilder;
-import me.chanjar.weixin.mp.api.WxMpConfigStorage;
+import me.chanjar.weixin.mp.config.WxMpConfigStorage;
import me.chanjar.weixin.mp.bean.WxMpHostConfig;
import me.chanjar.weixin.mp.enums.TicketType;
import me.chanjar.weixin.open.api.WxOpenConfigStorage;
diff --git a/weixin-java-open/src/main/java/me/chanjar/weixin/open/api/impl/WxOpenMpServiceImpl.java b/weixin-java-open/src/main/java/me/chanjar/weixin/open/api/impl/WxOpenMpServiceImpl.java
index a29703df1..aa845fb22 100644
--- a/weixin-java-open/src/main/java/me/chanjar/weixin/open/api/impl/WxOpenMpServiceImpl.java
+++ b/weixin-java-open/src/main/java/me/chanjar/weixin/open/api/impl/WxOpenMpServiceImpl.java
@@ -1,7 +1,7 @@
package me.chanjar.weixin.open.api.impl;
import me.chanjar.weixin.common.error.WxErrorException;
-import me.chanjar.weixin.mp.api.WxMpConfigStorage;
+import me.chanjar.weixin.mp.config.WxMpConfigStorage;
import me.chanjar.weixin.mp.api.impl.WxMpServiceImpl;
import me.chanjar.weixin.mp.bean.result.WxMpOAuth2AccessToken;
import me.chanjar.weixin.open.api.WxOpenComponentService;
diff --git a/weixin-java-open/src/main/java/me/chanjar/weixin/open/api/impl/WxOpenServiceApacheHttpClientImpl.java b/weixin-java-open/src/main/java/me/chanjar/weixin/open/api/impl/WxOpenServiceApacheHttpClientImpl.java
index d9b7b4955..24ee39cc3 100644
--- a/weixin-java-open/src/main/java/me/chanjar/weixin/open/api/impl/WxOpenServiceApacheHttpClientImpl.java
+++ b/weixin-java-open/src/main/java/me/chanjar/weixin/open/api/impl/WxOpenServiceApacheHttpClientImpl.java
@@ -6,7 +6,6 @@ import me.chanjar.weixin.common.util.http.SimpleGetRequestExecutor;
import me.chanjar.weixin.common.util.http.SimplePostRequestExecutor;
import me.chanjar.weixin.common.util.http.apache.ApacheHttpClientBuilder;
import me.chanjar.weixin.common.util.http.apache.DefaultApacheHttpClientBuilder;
-import me.chanjar.weixin.mp.api.WxMpConfigStorage;
import me.chanjar.weixin.open.api.WxOpenConfigStorage;
import org.apache.http.HttpHost;
import org.apache.http.impl.client.CloseableHttpClient;