protected DataSource determineTargetDataSource()

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);
  }