package com.mossle.auth.support; import javax.annotation.PostConstruct; import javax.annotation.Resource; import javax.cache.Cache; import javax.cache.CacheManager; import com.mossle.api.userauth.UserAuthCache; import com.mossle.api.userauth.UserAuthDTO; import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class UserAuthCacheImpl implements UserAuthCache { private static Logger logger = LoggerFactory .getLogger(UserAuthCacheImpl.class); private CacheManager cacheManager; private Cache<String, UserAuthDTO> cache; private boolean skipCache = false; @PostConstruct public void init() { this.cache = this.cacheManager.getCache("userauth"); } public UserAuthDTO findByUsername(String username, String tenantId) { if (skipCache) { // TODO: skip cache return null; } String key = "userAuthUsername:" + username + ":" + tenantId; return cache.get(key); } public UserAuthDTO findByRef(String ref, String tenantId) { if (skipCache) { // TODO: skip cache return null; } String key = "userAuthRef:" + ref + ":" + tenantId; return cache.get(key); } public UserAuthDTO findById(String id, String tenantId) { if (skipCache) { // TODO: skip cache return null; } String key = "userAuthId:" + id + ":" + tenantId; return cache.get(key); } public void updateUserAuth(UserAuthDTO userAuthDto) { logger.debug("update userAuthUsername:{}:{}", userAuthDto.getUsername(), userAuthDto.getTenantId()); logger.debug("update userAuthRef:{}:{}", userAuthDto.getRef(), userAuthDto.getTenantId()); logger.debug("update userAuthId:{}:{}", userAuthDto.getId(), userAuthDto.getTenantId()); cache.put("userAuthUsername:" + userAuthDto.getUsername() + ":" + userAuthDto.getTenantId(), userAuthDto); cache.put( "userAuthRef:" + userAuthDto.getRef() + ":" + userAuthDto.getTenantId(), userAuthDto); cache.put( "userAuthId:" + userAuthDto.getId() + ":" + userAuthDto.getTenantId(), userAuthDto); } public void removeUserAuth(UserAuthDTO userAuthDto) { if (userAuthDto == null) { logger.info("userAuthDto is null"); return; } logger.debug("remove userAuthUsername:{}:{}", userAuthDto.getUsername(), userAuthDto.getTenantId()); logger.debug("remove userAuthRef:{}:{}", userAuthDto.getRef(), userAuthDto.getTenantId()); logger.debug("remove userAuthId:{}:{}", userAuthDto.getId(), userAuthDto.getTenantId()); cache.remove("userAuthUsername:" + userAuthDto.getUsername() + ":" + userAuthDto.getTenantId()); cache.remove("userAuthRef:" + userAuthDto.getRef() + ":" + userAuthDto.getTenantId()); cache.remove("userAuthId:" + userAuthDto.getId() + ":" + userAuthDto.getTenantId()); } @Resource public void setCacheManager(CacheManager cacheManager) { this.cacheManager = cacheManager; } }