in src/main/java/org/apache/fineract/cn/core/data/jpa/local/LocalRoutingDataSource.java [82:106]
protected DataSource determineTargetDataSource() {
final Object dataSourceIdentifier = this.determineCurrentLookupKey();
if (dataSourceIdentifier == null) {
return this.getManagementDataSource();
}
final String dataSourceIdentifierAsString = dataSourceIdentifier.toString();
this.cachedDataSources.computeIfAbsent(dataSourceIdentifierAsString, s -> {
this.logger.debug("Creating data source for '{}'.", dataSourceIdentifierAsString);
final DataSourceInstance dataSourceInstanceDetails = this.findDataSourceInstanceDetails(s);
final BasicDataSource basicDataSource = new BasicDataSource();
basicDataSource.setDriverClassName(dataSourceInstanceDetails.getDriverClass());
basicDataSource.setUrl(dataSourceInstanceDetails.getJdbcUrl());
basicDataSource.setUsername(dataSourceInstanceDetails.getUsername());
basicDataSource.setPassword(dataSourceInstanceDetails.getPassword());
basicDataSource.setInitialSize(this.localDatabaseProperties.getPool().getMinSize());
basicDataSource.setMaxTotal(this.localDatabaseProperties.getPool().getMaxSize());
basicDataSource.setMaxWaitMillis(this.localDatabaseProperties.getPool().getWaitTime());
return basicDataSource;
});
this.logger.debug("Providing data source for '{}'.", dataSourceIdentifierAsString);
return this.cachedDataSources.get(dataSourceIdentifierAsString);
}