From 8c4d5a2798babd3ea0334c9a175a3cf7035577e6 Mon Sep 17 00:00:00 2001 From: jinyu Date: Sun, 24 Jan 2016 12:50:21 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9EMemoryTokenStorager?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../http/factory/HttpClientFactory.java | 3 +- .../weixin4j/token/MemoryTokenStorager.java | 42 +++++++++++++++++++ .../weixin4j/token/RedisTokenStorager.java | 2 +- .../foxinmy/weixin4j/token/TokenStorager.java | 5 ++- 4 files changed, 48 insertions(+), 4 deletions(-) create mode 100644 weixin4j-base/src/main/java/com/foxinmy/weixin4j/token/MemoryTokenStorager.java diff --git a/weixin4j-base/src/main/java/com/foxinmy/weixin4j/http/factory/HttpClientFactory.java b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/http/factory/HttpClientFactory.java index 39f635e3..06ba2388 100644 --- a/weixin4j-base/src/main/java/com/foxinmy/weixin4j/http/factory/HttpClientFactory.java +++ b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/http/factory/HttpClientFactory.java @@ -28,7 +28,8 @@ public abstract class HttpClientFactory { private static volatile HttpClientFactory defaultFactory = newDefaultFactory(); /** - * NettyHttpClient -> ApacheHttpClient -> SimpleHttpClient(HttpURLConnection) + * NettyHttpClient -> ApacheHttpClient -> + * SimpleHttpClient(HttpURLConnection) * * @return */ diff --git a/weixin4j-base/src/main/java/com/foxinmy/weixin4j/token/MemoryTokenStorager.java b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/token/MemoryTokenStorager.java new file mode 100644 index 00000000..a80438aa --- /dev/null +++ b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/token/MemoryTokenStorager.java @@ -0,0 +1,42 @@ +package com.foxinmy.weixin4j.token; + +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; + +import com.foxinmy.weixin4j.exception.WeixinException; +import com.foxinmy.weixin4j.model.Token; + +/** + * 用内存保存TOKEN(不推荐使用) + * + * @className MemoryTokenStorager + * @author jy + * @date 2016年1月24日 + * @since JDK 1.6 + * @see + */ +public class MemoryTokenStorager implements TokenStorager { + + private final Map CONMAP; + + public MemoryTokenStorager() { + this.CONMAP = new ConcurrentHashMap(); + } + + @Override + public Token lookup(String cacheKey) throws WeixinException { + Token token = this.CONMAP.get(cacheKey); + if (token != null) { + if ((token.getCreateTime() + (token.getExpiresIn() * 1000l) - 2) > System + .currentTimeMillis()) { + return token; + } + } + return null; + } + + @Override + public void caching(String cacheKey, Token token) throws WeixinException { + this.CONMAP.put(cacheKey, token); + } +} diff --git a/weixin4j-base/src/main/java/com/foxinmy/weixin4j/token/RedisTokenStorager.java b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/token/RedisTokenStorager.java index f9b91a00..82206488 100644 --- a/weixin4j-base/src/main/java/com/foxinmy/weixin4j/token/RedisTokenStorager.java +++ b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/token/RedisTokenStorager.java @@ -11,7 +11,7 @@ import com.foxinmy.weixin4j.exception.WeixinException; import com.foxinmy.weixin4j.model.Token; /** - * 用REDIS保存TOKEN + * 用REDIS保存TOKEN(推荐使用) * * @className RedisTokenStorager * @author jy diff --git a/weixin4j-base/src/main/java/com/foxinmy/weixin4j/token/TokenStorager.java b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/token/TokenStorager.java index 5d98cf96..fede1d94 100644 --- a/weixin4j-base/src/main/java/com/foxinmy/weixin4j/token/TokenStorager.java +++ b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/token/TokenStorager.java @@ -10,8 +10,9 @@ import com.foxinmy.weixin4j.model.Token; * @date 2014年9月27日 * @since JDK 1.6 * @see com.foxinmy.weixin4j.model.Token - * @see com.foxinmy.weixin4j.token.FileTokenStorager - * @see com.foxinmy.weixin4j.token.RedisTokenStorager + * @see MemoryTokenStorager + * @see FileTokenStorager + * @see RedisTokenStorager */ public interface TokenStorager extends CacheStorager { }