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 c20fb517..8154ab5a 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,10 +41,10 @@ public interface CacheStorager { * 缓存key * @return 移除的对象 */ - T evict(String cacheKey); + T evict(String cacheKey) throws WeixinException; /** * 清除所有缓存对象(请慎重) */ - void clear(); + void clear() throws WeixinException; } 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 7cd3835c..0498e503 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 @@ -62,7 +62,7 @@ public class FileTokenStorager implements TokenStorager { } @Override - public Token evict(String cacheKey) { + public Token evict(String cacheKey) throws WeixinException { Token token = null; File token_file = new File(String.format("%s/%s.xml", cachePath, cacheKey)); @@ -79,7 +79,7 @@ public class FileTokenStorager implements TokenStorager { } @Override - public void clear() { + public void clear() throws WeixinException { File[] files = new File(cachePath).listFiles(new FileFilter() { @Override public boolean accept(File file) { 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 3c2b864f..9173ceb7 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 @@ -41,12 +41,12 @@ public class MemoryTokenStorager implements TokenStorager { } @Override - public Token evict(String cacheKey) { + public Token evict(String cacheKey) throws WeixinException { return this.CONMAP.remove(cacheKey); } @Override - public void clear() { + public void clear() throws WeixinException { 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 dae39c75..e62e1d3b 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 @@ -103,7 +103,7 @@ public class RedisTokenStorager implements TokenStorager { } @Override - public Token evict(String cacheKey) { + public Token evict(String cacheKey) throws WeixinException { Token token = null; try { token = lookup(cacheKey); @@ -123,7 +123,7 @@ public class RedisTokenStorager implements TokenStorager { } @Override - public void clear() { + public void clear() throws WeixinException { // en.... } } \ No newline at end of file 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 935d0488..6580f230 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 @@ -74,4 +74,15 @@ public class TokenHolder { tokenStorager.caching(cacheKey, token); return token; } + + /** + * 手动移除token + * + * @return 被移除的token + * @throws WeixinException + */ + public Token evictToken() throws WeixinException { + String cacheKey = tokenCreator.getCacheKey(); + return tokenStorager.evict(cacheKey); + } }