Created
March 18, 2011 19:20
-
-
Save ts-3156/876669 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/** | |
* かなり厳密に、キャッシュが存在するかどうか確かめる | |
* このコストを避けたい場合は、このメソッドを呼ばずに直接取得する | |
* @param <T> | |
* @param key | |
* @param type | |
* @return | |
*/ | |
public static <T> boolean isCached(String key, T type){ | |
Cache cache = getCache(); | |
if(cache == null){ | |
log.warning("cacheがnull。GAE側のエラー"); | |
throw new SelfNullPointerException(); | |
} | |
if(!cache.containsKey(key)){ | |
log.warning(key + "をkeyに持つキャッシュは存在しない"); | |
return false; | |
} | |
Object object = null; | |
try { | |
object = cache.get(key); | |
} catch (InvalidValueException e) { | |
// putされているクラスの実装が変更されていた場合、typeの型と関係なくここでエクセプションが起きる | |
log.warning("異なった実装がデプロイされている, " + e.getClass().getSimpleName() + ": " + e.getMessage()); | |
return false; | |
} | |
if(object == null){ | |
log.warning(key + "をkeyに持つキャッシュは存在したが、取得したデータがnullだった"); | |
return false; | |
} | |
if(!object.getClass().getSimpleName().equals(type.getClass().getSimpleName())){ | |
log.warning(key + "をkeyに持つキャッシュは存在したが、getSimpleName()が一致しない"); | |
return false; | |
} | |
return true; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment