Last active
September 30, 2017 03:30
-
-
Save jose-mgmaestre/487ab040a931686a2357244e9ec73ac8 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/** | |
* 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