Class TenantAwareDataSource
- java.lang.Object
-
- org.flowable.common.engine.impl.cfg.multitenant.TenantAwareDataSource
-
- All Implemented Interfaces:
Wrapper,CommonDataSource,DataSource
public class TenantAwareDataSource extends Object implements DataSource
ADataSourceimplementation that switches the currently used datasource based on the current values of theTenantInfoHolder. When aConnectionis requested from thisDataSource, the correctDataSourcefor the current tenant will be determined and used. Heavily influenced and inspired by Spring's AbstractRoutingDataSource.- Author:
- Joram Barrez
-
-
Field Summary
Fields Modifier and Type Field Description protected Map<Object,DataSource>dataSourcesprotected TenantInfoHoldertenantInfoHolder
-
Constructor Summary
Constructors Constructor Description TenantAwareDataSource(TenantInfoHolder tenantInfoHolder)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description voidaddDataSource(Object key, DataSource dataSource)ConnectiongetConnection()ConnectiongetConnection(String username, String password)protected DataSourcegetCurrentDataSource()Map<Object,DataSource>getDataSources()intgetLoginTimeout()PrintWritergetLogWriter()LoggergetParentLogger()booleanisWrapperFor(Class<?> iface)voidremoveDataSource(Object key)voidsetDataSources(Map<Object,DataSource> dataSources)voidsetLoginTimeout(int seconds)voidsetLogWriter(PrintWriter out)<T> Tunwrap(Class<T> iface)-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface javax.sql.CommonDataSource
createShardingKeyBuilder
-
Methods inherited from interface javax.sql.DataSource
createConnectionBuilder
-
-
-
-
Field Detail
-
tenantInfoHolder
protected TenantInfoHolder tenantInfoHolder
-
dataSources
protected Map<Object,DataSource> dataSources
-
-
Constructor Detail
-
TenantAwareDataSource
public TenantAwareDataSource(TenantInfoHolder tenantInfoHolder)
-
-
Method Detail
-
addDataSource
public void addDataSource(Object key, DataSource dataSource)
-
removeDataSource
public void removeDataSource(Object key)
-
getConnection
public Connection getConnection() throws SQLException
- Specified by:
getConnectionin interfaceDataSource- Throws:
SQLException
-
getConnection
public Connection getConnection(String username, String password) throws SQLException
- Specified by:
getConnectionin interfaceDataSource- Throws:
SQLException
-
getCurrentDataSource
protected DataSource getCurrentDataSource()
-
getLoginTimeout
public int getLoginTimeout() throws SQLException- Specified by:
getLoginTimeoutin interfaceCommonDataSource- Specified by:
getLoginTimeoutin interfaceDataSource- Throws:
SQLException
-
getParentLogger
public Logger getParentLogger() throws SQLFeatureNotSupportedException
- Specified by:
getParentLoggerin interfaceCommonDataSource- Throws:
SQLFeatureNotSupportedException
-
unwrap
public <T> T unwrap(Class<T> iface) throws SQLException
- Specified by:
unwrapin interfaceWrapper- Throws:
SQLException
-
isWrapperFor
public boolean isWrapperFor(Class<?> iface) throws SQLException
- Specified by:
isWrapperForin interfaceWrapper- Throws:
SQLException
-
getDataSources
public Map<Object,DataSource> getDataSources()
-
setDataSources
public void setDataSources(Map<Object,DataSource> dataSources)
-
getLogWriter
public PrintWriter getLogWriter() throws SQLException
- Specified by:
getLogWriterin interfaceCommonDataSource- Specified by:
getLogWriterin interfaceDataSource- Throws:
SQLException
-
setLogWriter
public void setLogWriter(PrintWriter out) throws SQLException
- Specified by:
setLogWriterin interfaceCommonDataSource- Specified by:
setLogWriterin interfaceDataSource- Throws:
SQLException
-
setLoginTimeout
public void setLoginTimeout(int seconds) throws SQLException- Specified by:
setLoginTimeoutin interfaceCommonDataSource- Specified by:
setLoginTimeoutin interfaceDataSource- Throws:
SQLException
-
-