Skip to content

Commit e60b810

Browse files
authored
[Breaking Change] Remove B3Propagator.Builder, add static methods to access possible instances (#2863)
Signed-off-by: Bogdan Drutu <[email protected]>
1 parent 55e96b3 commit e60b810

File tree

8 files changed

+35
-47
lines changed

8 files changed

+35
-47
lines changed

extensions/trace-propagators/src/jmh/java/io/opentelemetry/extension/trace/propagation/PropagatorContextExtractBenchmark.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -202,7 +202,7 @@ public String get(Map<String, String> carrier, String key) {
202202
}
203203
};
204204

205-
private final B3Propagator b3Propagator = B3Propagator.getInstance();
205+
private final B3Propagator b3Propagator = B3Propagator.injectingSingleHeader();
206206

207207
@Override
208208
protected Context doExtract() {
@@ -253,7 +253,7 @@ public String get(Map<String, String> carrier, String key) {
253253
}
254254
};
255255

256-
private final B3Propagator b3Propagator = B3Propagator.getInstance();
256+
private final B3Propagator b3Propagator = B3Propagator.injectingSingleHeader();
257257

258258
@Override
259259
protected Context doExtract() {

extensions/trace-propagators/src/jmh/java/io/opentelemetry/extension/trace/propagation/PropagatorContextInjectBenchmark.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -100,7 +100,7 @@ protected void doInject(Context context, Map<String, String> carrier) {
100100
/** Benchmark for injecting trace context into a single B3 header. */
101101
public static class B3SingleHeaderContextInjectBenchmark extends AbstractContextInjectBenchmark {
102102

103-
private final B3Propagator b3Propagator = B3Propagator.getInstance();
103+
private final B3Propagator b3Propagator = B3Propagator.injectingSingleHeader();
104104
private final TextMapSetter<Map<String, String>> setter =
105105
new TextMapSetter<Map<String, String>>() {
106106
@Override
@@ -119,8 +119,7 @@ protected void doInject(Context context, Map<String, String> carrier) {
119119
public static class B3MultipleHeaderContextInjectBenchmark
120120
extends AbstractContextInjectBenchmark {
121121

122-
private final B3Propagator b3Propagator =
123-
B3Propagator.builder().injectMultipleHeaders().build();
122+
private final B3Propagator b3Propagator = B3Propagator.injectingMultiHeaders();
124123
private final TextMapSetter<Map<String, String>> setter =
125124
new TextMapSetter<Map<String, String>>() {
126125
@Override

extensions/trace-propagators/src/main/java/io/opentelemetry/extension/trace/propagation/B3Propagator.java

Lines changed: 24 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -27,23 +27,23 @@
2727
* href=https://github.com/open-telemetry/opentelemetry-specification/blob/master/specification/context/api-propagators.md#b3-requirements>B3
2828
* Requirements</a>
2929
*
30-
* <p>To register the default B3 propagator, which injects a single header, use the default instance
30+
* <p>To register the default B3 propagator, which injects a single header, use:
3131
*
3232
* <pre>{@code
3333
* OpenTelemetry.setPropagators(
3434
* DefaultContextPropagators
3535
* .builder()
36-
* .addTextMapPropagator(B3Propagator.getInstance())
36+
* .addTextMapPropagator(B3Propagator.injectingSingleHeader())
3737
* .build());
3838
* }</pre>
3939
*
40-
* <p>To register a B3 propagator that injects multiple headers, use the builder
40+
* <p>To register a B3 propagator that injects multiple headers, use:
4141
*
4242
* <pre>{@code
4343
* OpenTelemetry.setPropagators(
4444
* DefaultContextPropagators
4545
* .builder()
46-
* .addTextMapPropagator(B3Propagator.builder().injectMultipleHeaders().build())
46+
* .addTextMapPropagator(B3Propagator.injectingMultiHeaders())
4747
* .build());
4848
* }</pre>
4949
*/
@@ -68,7 +68,10 @@ public final class B3Propagator implements TextMapPropagator {
6868
Collections.unmodifiableList(
6969
Arrays.asList(TRACE_ID_HEADER, SPAN_ID_HEADER, SAMPLED_HEADER, COMBINED_HEADER));
7070

71-
private static final B3Propagator INSTANCE = B3Propagator.builder().build();
71+
private static final B3Propagator SINGLE_HEADER_INSTANCE =
72+
new B3Propagator(new B3PropagatorInjectorSingleHeader());
73+
private static final B3Propagator MULTI_HEADERS_INSTANCE =
74+
new B3Propagator(new B3PropagatorInjectorMultipleHeaders());
7275

7376
private final B3PropagatorExtractor singleHeaderExtractor =
7477
new B3PropagatorExtractorSingleHeader();
@@ -81,41 +84,27 @@ private B3Propagator(B3PropagatorInjector b3PropagatorInjector) {
8184
}
8285

8386
/**
84-
* Returns a new {@link B3Propagator.Builder} instance for configuring injection option for {@link
85-
* B3Propagator}.
87+
* Returns an instance of the {@link B3Propagator} that injects multi headers format.
88+
*
89+
* <p>This instance extracts both formats, in the order: single header, multi header.
90+
*
91+
* @return an instance of the {@link B3Propagator} that injects multi headers format.
8692
*/
87-
public static B3Propagator.Builder builder() {
88-
return new Builder();
93+
public static B3Propagator injectingMultiHeaders() {
94+
return MULTI_HEADERS_INSTANCE;
8995
}
9096

9197
/**
92-
* Enables the creation of an {@link B3Propagator} instance with the ability to switch injector
93-
* from single header (default) to multiple headers.
98+
* Returns an instance of the {@link B3Propagator} that injects single header format.
99+
*
100+
* <p>This instance extracts both formats, in the order: single header, multi header.
101+
*
102+
* <p>This is the default instance for {@link B3Propagator}.
103+
*
104+
* @return an instance of the {@link B3Propagator} that injects single header format.
94105
*/
95-
public static class Builder {
96-
private boolean injectSingleHeader;
97-
98-
private Builder() {
99-
injectSingleHeader = true;
100-
}
101-
102-
public Builder injectMultipleHeaders() {
103-
this.injectSingleHeader = false;
104-
return this;
105-
}
106-
107-
/** Create the {@link B3Propagator} with selected injector type. */
108-
public B3Propagator build() {
109-
if (injectSingleHeader) {
110-
return new B3Propagator(new B3PropagatorInjectorSingleHeader());
111-
} else {
112-
return new B3Propagator(new B3PropagatorInjectorMultipleHeaders());
113-
}
114-
}
115-
}
116-
117-
public static B3Propagator getInstance() {
118-
return INSTANCE;
106+
public static B3Propagator injectingSingleHeader() {
107+
return SINGLE_HEADER_INSTANCE;
119108
}
120109

121110
@Override

extensions/trace-propagators/src/test/java/io/opentelemetry/extension/trace/propagation/B3PropagatorTest.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -50,8 +50,8 @@ public String get(Map<String, String> carrier, String key) {
5050
return carrier.get(key);
5151
}
5252
};
53-
private final B3Propagator b3Propagator = B3Propagator.builder().injectMultipleHeaders().build();
54-
private final B3Propagator b3PropagatorSingleHeader = B3Propagator.getInstance();
53+
private final B3Propagator b3Propagator = B3Propagator.injectingMultiHeaders();
54+
private final B3Propagator b3PropagatorSingleHeader = B3Propagator.injectingSingleHeader();
5555

5656
private static SpanContext getSpanContext(Context context) {
5757
return Span.fromContext(context).getSpanContext();

opencensus-shim/src/main/java/io/opentelemetry/opencensusshim/OpenTelemetryPropagationComponentImpl.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
class OpenTelemetryPropagationComponentImpl extends PropagationComponentImpl {
1414

1515
private final TextFormat b3Format =
16-
new OpenTelemetryTextFormatImpl(B3Propagator.builder().injectMultipleHeaders().build());
16+
new OpenTelemetryTextFormatImpl(B3Propagator.injectingMultiHeaders());
1717
private final TextFormat traceContextFormat =
1818
new OpenTelemetryTextFormatImpl(W3CTraceContextPropagator.getInstance());
1919

opencensus-shim/src/test/java/io/opentelemetry/opencensusshim/OpenTelemetryTextFormatImplTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -112,7 +112,7 @@ void testInjectWithDefaultOptions() {
112112
@Test
113113
void testInjectAndExtractWithB3() {
114114
OpenTelemetryTextFormatImpl textFormatImpl =
115-
new OpenTelemetryTextFormatImpl(B3Propagator.builder().injectMultipleHeaders().build());
115+
new OpenTelemetryTextFormatImpl(B3Propagator.injectingMultiHeaders());
116116
Map<String, String> carrier = new LinkedHashMap<>();
117117

118118
textFormatImpl.inject(SPAN_CONTEXT, carrier, SETTER);

sdk-extensions/autoconfigure/src/main/java/io/opentelemetry/sdk/autoconfigure/PropagatorConfiguration.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -62,9 +62,9 @@ private static TextMapPropagator getPropagator(
6262

6363
switch (name) {
6464
case "b3":
65-
return B3Propagator.getInstance();
65+
return B3Propagator.injectingSingleHeader();
6666
case "b3multi":
67-
return B3Propagator.builder().injectMultipleHeaders().build();
67+
return B3Propagator.injectingMultiHeaders();
6868
case "jaeger":
6969
return JaegerPropagator.getInstance();
7070
// NB: https://github.com/open-telemetry/opentelemetry-specification/pull/1406

sdk-extensions/autoconfigure/src/testFullConfig/java/io/opentelemetry/sdk/autoconfigure/FullConfigTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -120,7 +120,7 @@ void configures() throws Exception {
120120
List<String> keys = new ArrayList<>();
121121
keys.addAll(W3CTraceContextPropagator.getInstance().fields());
122122
keys.addAll(W3CBaggagePropagator.getInstance().fields());
123-
keys.addAll(B3Propagator.getInstance().fields());
123+
keys.addAll(B3Propagator.injectingSingleHeader().fields());
124124
keys.addAll(JaegerPropagator.getInstance().fields());
125125
keys.addAll(OtTracePropagator.getInstance().fields());
126126
keys.addAll(AwsXrayPropagator.getInstance().fields());

0 commit comments

Comments
 (0)