open method
Opens the component.
correlationId
(optional) transaction id to trace execution through call chain. Returns Future that receives null no errors occured. Throws error
Implementation
@override
Future open(String? correlationId) async {
String? uri;
try {
uri = await connectionResolver.resolve(correlationId);
} catch (err) {
logger.error(correlationId, ApplicationException().wrap(err),
'Failed to resolve MongoDb connection');
}
logger.debug(correlationId, 'Connecting to mongodb');
try {
var settings = _composeSettings();
settings['useNewUrlParser'] = true;
settings['useUnifiedTopology'] = true;
connection = mongo.Db(uri ?? '');
await connection!.open();
var credential = await connectionResolver.credentialResolver.lookup('');
var username = credential?.getUsername();
if (username != null) {
var password = credential?.getPassword();
if (password != null) {
await connection!.authenticate(username, password);
}
}
if (settings['username'] != null) {
await connection!
.authenticate(settings['username'], settings['password']);
}
databaseName = connection?.databaseName;
} catch (ex) {
throw ConnectionException(
correlationId, 'CONNECT_FAILED', 'Connection to mongodb failed')
.withCause(ex);
}
}