in jetcache-anno/src/main/java/com/alicp/jetcache/anno/method/CacheHandler.java [156:181]
private static void doInvalidate(CacheInvokeContext context, CacheInvalidateAnnoConfig annoConfig) {
Cache cache = context.getCacheFunction().apply(context, annoConfig);
if (cache == null) {
return;
}
boolean condition = ExpressionUtil.evalCondition(context, annoConfig);
if (!condition) {
return;
}
Object key = ExpressionUtil.evalKey(context, annoConfig);
if (key == null) {
return;
}
if (annoConfig.isMulti()) {
Iterable it = toIterable(key);
if (it == null) {
logger.error("jetcache @CacheInvalidate key is not instance of Iterable or array: " + annoConfig.getDefineMethod());
return;
}
Set keys = new HashSet();
it.forEach(k -> keys.add(k));
cache.removeAll(keys);
} else {
cache.remove(key);
}
}