SpannerConnectionConfiguration createConfiguration()

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