static SpanExporter createWithConfiguration()

in exporters/trace/src/main/java/com/google/cloud/opentelemetry/trace/InternalTraceExporter.java [70:114]


  static SpanExporter createWithConfiguration(TraceConfiguration configuration) throws IOException {
    String projectId = configuration.getProjectId();
    TraceServiceStub stub = configuration.getTraceServiceStub();

    // TODO: Remove stub - tracked in issue #198
    if (stub == null) {
      TraceServiceSettings.Builder builder = TraceServiceSettings.newBuilder();

      // We only use the batchWriteSpans API in this exporter.
      builder
          .batchWriteSpansSettings()
          .setSimpleTimeoutNoRetries(
              org.threeten.bp.Duration.ofMillis(configuration.getDeadline().toMillis()));
      // For testing, we need to hack around our gRPC config.
      if (configuration.getInsecureEndpoint()) {
        builder.setCredentialsProvider(NoCredentialsProvider.create());
        builder.setTransportChannelProvider(
            FixedTransportChannelProvider.create(
                GrpcTransportChannel.create(
                    ManagedChannelBuilder.forTarget(configuration.getTraceServiceEndpoint())
                        .usePlaintext()
                        .build())));
      } else {
        Credentials credentials =
            configuration.getCredentials() == null
                ? GoogleCredentials.getApplicationDefault()
                : configuration.getCredentials();
        builder.setCredentialsProvider(
            FixedCredentialsProvider.create(checkNotNull(credentials, "credentials")));
        builder.setEndpoint(configuration.getTraceServiceEndpoint());
        builder.setHeaderProvider(HEADER_PROVIDER);
      }

      return new InternalTraceExporter(
          projectId,
          new CloudTraceClientImpl(TraceServiceClient.create(builder.build())),
          configuration.getAttributeMapping(),
          configuration.getFixedAttributes());
    }
    return InternalTraceExporter.createWithClient(
        projectId,
        new CloudTraceClientImpl(TraceServiceClient.create(stub)),
        configuration.getAttributeMapping(),
        configuration.getFixedAttributes());
  }