package org.exoplatform.forum.service.cache.model.selector; import org.exoplatform.forum.common.cache.model.ScopeCacheKey; import org.exoplatform.forum.common.cache.model.selector.ScopeCacheSelector; import org.exoplatform.forum.service.cache.model.data.ForumData; import org.exoplatform.forum.service.cache.model.key.ForumKey; import org.exoplatform.services.cache.ExoCache; import org.exoplatform.services.cache.ObjectCacheInfo; public class ForumPathSelector extends ScopeCacheSelector<ScopeCacheKey, Object> { private final String[] paths; private final ExoCache<ForumKey, ForumData> forumData; public ForumPathSelector(String[] paths, ExoCache<ForumKey, ForumData> forumData) { if (paths == null) { throw new NullPointerException(); } if (forumData == null) { throw new NullPointerException(); } this.paths = paths; this.forumData = forumData; } @Override public boolean select(ScopeCacheKey key, ObjectCacheInfo<? extends Object> ocinfo) { if (!super.select(key, ocinfo)) { return false; } ForumData data = forumData.get(key); if (data == null || data == ForumData.NULL) { return false; } else { for (String path : paths) { if (data.getPath().endsWith(path)) { return true; } } return false; } } }