1717
1818import io .opentelemetry .exporter .internal .otlp .traces .TraceRequestMarshaler ;
1919import io .opentelemetry .exporter .otlp .http .trace .OtlpHttpSpanExporter ;
20+ import io .opentelemetry .exporter .otlp .http .trace .OtlpHttpSpanExporterBuilder ;
2021import io .opentelemetry .sdk .common .CompletableResultCode ;
2122import io .opentelemetry .sdk .common .export .MemoryMode ;
2223import io .opentelemetry .sdk .trace .data .SpanData ;
2324import io .opentelemetry .sdk .trace .export .SpanExporter ;
2425import java .io .ByteArrayInputStream ;
2526import java .io .ByteArrayOutputStream ;
2627import java .net .URI ;
27- import java .util .ArrayList ;
28- import java .util .Collection ;
29- import java .util .HashMap ;
30- import java .util .List ;
31- import java .util .Map ;
28+ import java .util .*;
3229import java .util .function .Supplier ;
3330import javax .annotation .concurrent .Immutable ;
3431import org .slf4j .Logger ;
@@ -52,18 +49,32 @@ public class OtlpAwsSpanExporter implements SpanExporter {
5249 private static final String SERVICE_NAME = "xray" ;
5350 private static final Logger logger = LoggerFactory .getLogger (OtlpAwsSpanExporter .class );
5451
55- private final SpanExporter parentExporter ;
52+ private final OtlpHttpSpanExporterBuilder parentExporterBuilder ;
53+ private final OtlpHttpSpanExporter parentExporter ;
5654 private final String awsRegion ;
5755 private final String endpoint ;
5856 private Collection <SpanData > spanData ;
5957
58+ public OtlpAwsSpanExporter (String endpoint ) {
59+ this (null , endpoint );
60+ }
61+
6062 public OtlpAwsSpanExporter (OtlpHttpSpanExporter parentExporter , String endpoint ) {
61- this . parentExporter =
62- parentExporter . toBuilder ()
63+ OtlpHttpSpanExporterBuilder defaultExporterBuilder =
64+ OtlpHttpSpanExporter . builder ()
6365 .setMemoryMode (MemoryMode .IMMUTABLE_DATA )
6466 .setEndpoint (endpoint )
65- .setHeaders (new SigV4AuthHeaderSupplier ())
66- .build ();
67+ .setHeaders (new SigV4AuthHeaderSupplier ());
68+
69+ this .parentExporterBuilder =
70+ parentExporter == null
71+ ? defaultExporterBuilder
72+ : parentExporter .toBuilder ()
73+ .setMemoryMode (MemoryMode .IMMUTABLE_DATA )
74+ .setEndpoint (endpoint )
75+ .setHeaders (new SigV4AuthHeaderSupplier ());
76+
77+ this .parentExporter = this .parentExporterBuilder .build ();
6778
6879 this .awsRegion = endpoint .split ("\\ ." )[1 ];
6980 this .endpoint = endpoint ;
@@ -93,7 +104,10 @@ public CompletableResultCode shutdown() {
93104
94105 @ Override
95106 public String toString () {
96- return this .parentExporter .toString ();
107+ StringJoiner joiner = new StringJoiner (", " , "OtlpAwsSpanExporter{" , "}" );
108+ joiner .add (this .parentExporterBuilder .toString ());
109+ joiner .add ("memoryMode=" + MemoryMode .IMMUTABLE_DATA );
110+ return joiner .toString ();
97111 }
98112
99113 private final class SigV4AuthHeaderSupplier implements Supplier <Map <String , String >> {
0 commit comments