in cloud-spanner-r2dbc/src/main/java/com/google/cloud/spanner/r2dbc/SpannerConnectionFactoryProvider.java [116:157]
SpannerConnectionConfiguration createConfiguration(
ConnectionFactoryOptions options) {
SpannerConnectionConfiguration.Builder config =
new SpannerConnectionConfiguration.Builder(options);
// Directly passed URL is supported for backwards compatibility. R2DBC SPI does not provide
// the original URL when creating connection through ConnectionFactories.get(String).
if (options.hasOption(URL)) {
config.setUrl((String) options.getValue(URL));
} else if (options.hasOption(DATABASE)
&& FQDN_PATTERN_PARSE.matcher((String) options.getValue(DATABASE)).matches()) {
// URL-based connection configuration
config.setFullyQualifiedDatabaseName((String) options.getValue(DATABASE));
} else {
// Programmatic connection configuration.
config.setProjectId((String) options.getRequiredValue(PROJECT))
.setInstanceName((String) options.getRequiredValue(INSTANCE))
.setDatabaseName((String) options.getRequiredValue(DATABASE));
}
config.setCredentials(extractCredentials(options));
// V2 properties
if (options.hasOption(USE_PLAIN_TEXT)) {
config.setUsePlainText(true);
}
if (options.hasOption(OPTIMIZER_VERSION)) {
config.setOptimizerVersion((String) options.getValue(OPTIMIZER_VERSION));
}
if (options.hasOption(AUTOCOMMIT)) {
config.setAutocommit(getBooleanFlag(options.getValue(AUTOCOMMIT)));
}
if (options.hasOption(READONLY)) {
config.setReadonly(getBooleanFlag(options.getValue(READONLY)));
}
return config.build();
}