From 93d4ea5e25ace50b0ff3e10d024fa4b36051cb5e Mon Sep 17 00:00:00 2001 From: jinyu Date: Wed, 25 May 2016 15:37:47 +0800 Subject: [PATCH] token clean with prefix --- .../com/foxinmy/weixin4j/token/CacheStorager.java | 5 ++++- .../foxinmy/weixin4j/token/FileTokenStorager.java | 4 ++-- .../weixin4j/token/MemcacheTokenStorager.java | 2 +- .../weixin4j/token/MemoryTokenStorager.java | 2 +- .../foxinmy/weixin4j/token/RedisTokenStorager.java | 4 ++-- .../com/foxinmy/weixin4j/token/TokenCreator.java | 14 ++++++++++++-- .../com/foxinmy/weixin4j/token/TokenHolder.java | 13 ++++++++++--- .../com/foxinmy/weixin4j/token/TokenStorager.java | 9 --------- 8 files changed, 32 insertions(+), 21 deletions(-) diff --git a/weixin4j-base/src/main/java/com/foxinmy/weixin4j/token/CacheStorager.java b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/token/CacheStorager.java index 24d5eea3..6e295892 100644 --- a/weixin4j-base/src/main/java/com/foxinmy/weixin4j/token/CacheStorager.java +++ b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/token/CacheStorager.java @@ -41,6 +41,9 @@ public interface CacheStorager { /** * 清除所有缓存对象(请慎重) + * + * @param prefix + * 缓存key的前缀 */ - void clear(); + void clear(String prefix); } diff --git a/weixin4j-base/src/main/java/com/foxinmy/weixin4j/token/FileTokenStorager.java b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/token/FileTokenStorager.java index 3bf094fc..03f915d5 100644 --- a/weixin4j-base/src/main/java/com/foxinmy/weixin4j/token/FileTokenStorager.java +++ b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/token/FileTokenStorager.java @@ -78,12 +78,12 @@ public class FileTokenStorager extends TokenStorager { } @Override - public void clear() { + public void clear(final String prefix) { File[] files = new File(cachePath).listFiles(new FileFilter() { @Override public boolean accept(File file) { return file.isFile() - && file.getName().startsWith(prefix()) + && file.getName().startsWith(prefix) && "xml".equals(FileUtil.getFileExtension(file .getName())); } diff --git a/weixin4j-base/src/main/java/com/foxinmy/weixin4j/token/MemcacheTokenStorager.java b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/token/MemcacheTokenStorager.java index e6c57a23..1cff9439 100644 --- a/weixin4j-base/src/main/java/com/foxinmy/weixin4j/token/MemcacheTokenStorager.java +++ b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/token/MemcacheTokenStorager.java @@ -50,7 +50,7 @@ public class MemcacheTokenStorager extends TokenStorager { } @Override - public void clear() { + public void clear(String prefix) { throw new UnsupportedOperationException(); } 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 index 489b89e7..44b8a0f8 100644 --- a/weixin4j-base/src/main/java/com/foxinmy/weixin4j/token/MemoryTokenStorager.java +++ b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/token/MemoryTokenStorager.java @@ -45,7 +45,7 @@ public class MemoryTokenStorager extends TokenStorager { } @Override - public void clear() { + public void clear(String prefix) { this.CONMAP.clear(); } } 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 bb57bbe7..2b4db683 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 @@ -126,11 +126,11 @@ public class RedisTokenStorager extends TokenStorager { } @Override - public void clear() { + public void clear(String prefix) { Jedis jedis = null; try { jedis = jedisPool.getResource(); - Set cacheKeys = jedis.keys(String.format("%s*", prefix())); + Set cacheKeys = jedis.keys(String.format("%s*", prefix)); if (!cacheKeys.isEmpty()) { Pipeline pipeline = jedis.pipelined(); for (String cacheKey : cacheKeys) { diff --git a/weixin4j-base/src/main/java/com/foxinmy/weixin4j/token/TokenCreator.java b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/token/TokenCreator.java index e604b0b9..5e593785 100644 --- a/weixin4j-base/src/main/java/com/foxinmy/weixin4j/token/TokenCreator.java +++ b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/token/TokenCreator.java @@ -13,6 +13,7 @@ import com.foxinmy.weixin4j.model.Token; * @see */ public abstract class TokenCreator implements CacheCreator { + protected final WeixinRequestExecutor weixinExecutor; public TokenCreator() { @@ -20,13 +21,22 @@ public abstract class TokenCreator implements CacheCreator { } /** - * 缓存key:附加weixin4j_前缀 + * 缓存key的前缀 + * + * @return 默认为weixin4j_ + */ + public String prefix() { + return "weixin4j_"; + } + + /** + * 缓存key:附加key前缀 * * @return */ @Override public String key() { - return String.format("weixin4j_%s", key0()); + return String.format("%s%s", prefix(), key0()); } /** diff --git a/weixin4j-base/src/main/java/com/foxinmy/weixin4j/token/TokenHolder.java b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/token/TokenHolder.java index 587d3043..8d9454d6 100644 --- a/weixin4j-base/src/main/java/com/foxinmy/weixin4j/token/TokenHolder.java +++ b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/token/TokenHolder.java @@ -76,13 +76,20 @@ public class TokenHolder { } /** - * 手动移除token + * 移除token * * @return 被移除的token - * @throws WeixinException */ - public Token evictToken() throws WeixinException { + public Token evictToken() { String cacheKey = tokenCreator.key(); return tokenStorager.evict(cacheKey); } + + /** + * 清除所有的token(请慎重) + */ + public void clearToken() { + String prefix = tokenCreator.prefix(); + tokenStorager.clear(prefix); + } } 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 0f9431a6..a459e051 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 @@ -24,13 +24,4 @@ public abstract class TokenStorager implements CacheStorager { public long ms() { return 60 * 1000l; } - - /** - * 缓存key的前缀 - * - * @return 默认为weixin4j_ - */ - public String prefix() { - return "weixin4j_"; - } }