@Override
protected UsageAwareDatastoreConnection<UpdateableDataContext> createDatastoreConnection() {
if (StringUtils.isNullOrEmpty(_datasourceJndiUrl)) {
if (isMultipleConnections()) {
final DataSource dataSource = createDataSource();
return new DataSourceDatastoreConnection(dataSource, getTableTypes(), _catalogName, this);
} else {
final Connection connection = createConnection();
try {
connection.setAutoCommit(false);
} catch (final SQLException e) {
logger.error("Could not set autocommit false '{}'", _datasourceJndiUrl);
throw new IllegalStateException(e);
}
final UpdateableDataContext dataContext =
new JdbcDataContext(connection, getTableTypes(), _catalogName);
return new UpdateableDatastoreConnectionImpl<>(dataContext, this);
}
} else {
try {
final Context initialContext = getJndiNamingContext();
final DataSource dataSource = (DataSource) initialContext.lookup(_datasourceJndiUrl);
return new DataSourceDatastoreConnection(dataSource, getTableTypes(), _catalogName, this);
} catch (final Exception e) {
logger.error("Could not retrieve DataSource '{}'", _datasourceJndiUrl);
throw new IllegalStateException(e);
}
}
}