package com.mossle.user.support; import javax.annotation.PostConstruct; import javax.annotation.Resource; import javax.cache.Cache; import javax.cache.CacheManager; import com.mossle.api.user.UserCache; import com.mossle.api.user.UserDTO; public class UserCacheImpl implements UserCache { private CacheManager cacheManager; private Cache<String, UserDTO> cache; @PostConstruct public void init() { this.cache = this.cacheManager.getCache("user"); } public UserDTO findById(String id) { String key = "userId:" + id; return cache.get(key); } public UserDTO findByUsername(String username, String userRepoRef) { String key = "userUsername:" + username + ":" + userRepoRef; return cache.get(key); } public UserDTO findByRef(String ref, String userRepoRef) { String key = "userRef:" + ref + ":" + userRepoRef; return cache.get(key); } public UserDTO findByNickName(String nickName) { String key = "nickName:" + nickName; return cache.get(key); } public void updateUser(UserDTO userDto) { this.removeUser(userDto); // cache.set("userId:" + userDto.getId(), userDto); // cache.set( // "userUsername:" + userDto.getUsername() + ":" // + userDto.getUserRepoRef(), userDto); // cache.set( // "userRef:" + userDto.getRef() + ":" + userDto.getUserRepoRef(), // userDto); // cache.set("nickName:" + userDto.getDisplayName(), userDto); } public void removeUser(UserDTO userDto) { cache.remove("userId:" + userDto.getId()); cache.remove("userUsername:" + userDto.getUsername() + ":" + userDto.getUserRepoRef()); cache.remove("userRef:" + userDto.getRef() + ":" + userDto.getUserRepoRef()); cache.remove("nickName:" + userDto.getDisplayName()); } @Resource public void setCacheManager(CacheManager cacheManager) { this.cacheManager = cacheManager; } }