package org.exoplatform.forum.common.cache.model; import java.io.Serializable; import org.exoplatform.forum.common.cache.CacheLoader; import org.exoplatform.forum.common.cache.ServiceContext; import org.exoplatform.forum.common.cache.model.ScopeCacheKey; import org.exoplatform.services.cache.CacheService; import org.exoplatform.services.cache.ExoCache; import org.exoplatform.services.cache.future.FutureExoCache; public enum CacheType { CATEGORY_DATA("forum.CategoryData"), CATEGORY_LIST("forum.CategoryList"), FORUM_DATA("forum.ForumData"), FORUM_LIST("forum.ForumList"), TOPIC_DATA("forum.TopicData"), TOPIC_LIST("forum.TopicList"), TOPIC_LIST_COUNT("forum.TopicListCount"), USER_PROFILE_DATA("forum.UserProfile"), USER_PROFILE_LIST("forum.UserProfileList"), USER_PROFILE_LIST_COUNT("forum.UserProfileListCount"), LOGIN_USER_PROFILE("forum.LoginUserProfile"), POST_DATA("forum.PostData"), POST_LIST("forum.PostList"), POST_LIST_COUNT("forum.PostListCount"), WATCH_LIST_DATA("forum.WatchListData"), LINK_LIST_DATA("forum.LinkListData"), OBJECT_NAME_DATA("forum.ObjectNameData"), MISC_DATA("forum.MiscData"), FAQ_MARKUP("faq.Markup"), POLL_DATA("poll.PollData"), POLL_LIST("poll.PollList"), POLL_SUMMARY_DATA("poll.PollSummaryData"), BBCODE_DATA("forum.BBCodeData"), LIST_BBCODE_DATA("forum.BBCodeListData"); private final String name; private CacheType(final String name) { this.name = name; } public <K extends ScopeCacheKey, V extends Serializable> ExoCache<K, V> getFromService(CacheService service) { return service.getCacheInstance(name); } public <K extends ScopeCacheKey, V extends Serializable> FutureExoCache<K, V, ServiceContext<V>> createFutureCache( ExoCache<K, V> cache) { return new FutureExoCache<K, V, ServiceContext<V>>(new CacheLoader<K, V>(), cache); } }