package com.mossle.auth.support;
import com.mossle.api.userauth.UserAuthCache;
import com.mossle.api.userauth.UserAuthConnector;
import com.mossle.api.userauth.UserAuthDTO;
public class UserAuthConnectorWrapper implements UserAuthConnector {
private UserAuthConnector userAuthConnector;
private UserAuthCache userAuthCache;
public UserAuthDTO findByUsername(String username, String tenantId) {
UserAuthDTO userAuthDto = userAuthCache.findByUsername(username,
tenantId);
if (userAuthDto == null) {
synchronized (userAuthCache) {
userAuthDto = userAuthCache.findByUsername(username, tenantId);
if (userAuthDto == null) {
userAuthDto = userAuthConnector.findByUsername(username,
tenantId);
if (userAuthDto != null) {
userAuthCache.updateUserAuth(userAuthDto);
}
}
}
}
return userAuthDto;
}
public UserAuthDTO findByRef(String ref, String tenantId) {
UserAuthDTO userAuthDto = userAuthCache.findByRef(ref, tenantId);
if (userAuthDto == null) {
synchronized (userAuthCache) {
userAuthDto = userAuthCache.findByRef(ref, tenantId);
if (userAuthDto == null) {
userAuthDto = userAuthConnector.findByRef(ref, tenantId);
if (userAuthDto != null) {
userAuthCache.updateUserAuth(userAuthDto);
}
}
}
}
return userAuthDto;
}
public UserAuthDTO findById(String id, String tenantId) {
UserAuthDTO userAuthDto = userAuthCache.findById(id, tenantId);
if (userAuthDto == null) {
synchronized (userAuthCache) {
userAuthDto = userAuthCache.findById(id, tenantId);
if (userAuthDto == null) {
userAuthDto = userAuthConnector.findById(id, tenantId);
if (userAuthDto != null) {
userAuthCache.updateUserAuth(userAuthDto);
}
}
}
}
return userAuthDto;
}
public void setUserAuthConnector(UserAuthConnector userAuthConnector) {
this.userAuthConnector = userAuthConnector;
}
public void setUserAuthCache(UserAuthCache userAuthCache) {
this.userAuthCache = userAuthCache;
}
}