Skip to content

Instantly share code, notes, and snippets.

@jose-mgmaestre
Last active September 30, 2017 03:30
  • Star 0 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
Star You must be signed in to star a gist
Save jose-mgmaestre/487ab040a931686a2357244e9ec73ac8 to your computer and use it in GitHub Desktop.
/**
* It specify what Tenant should be use when the hibernate session is created.
* @author jm
*/
public class CurrentTenantIdentifierResolverImpl implements CurrentTenantIdentifierResolver {
Logger logger = Logger.getLogger(getClass());
@Override
public String resolveCurrentTenantIdentifier() {
String tenant = resolveTenantByHttpSession();
logger.trace("Tenant resolved: " + tenant);
return tenant;
}
/**
* Get tenantId in the session attribute KEY_TENANTID_SESSION
* @return TenantId on KEY_TENANTID_SESSION
*/
public String resolveTenantByHttpSession()
{
ServletRequestAttributes attr = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
//If session attribute exists returns tenantId saved on the session
if(attr != null){
HttpSession session = attr.getRequest().getSession(false); // true == allow create
if(session != null){
String tenant = (String) session.getAttribute(KEY_TENANTID_SESSION);
if(tenant != null){
return tenant;
}
}
}
//otherwise return default tenant
logger.trace("Tenant resolved in session is: " + DEFAULT_TENANTID);
return DEFAULT_TENANTID;
}
@Override
public boolean validateExistingCurrentSessions() {
return true;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment