11package datadog .trace .core .baggage ;
22
3+ import static datadog .trace .api .TracePropagationBehaviorExtract .IGNORE ;
34import static java .util .Collections .emptyMap ;
45
56import datadog .context .Context ;
67import datadog .context .propagation .CarrierSetter ;
78import datadog .context .propagation .CarrierVisitor ;
89import datadog .context .propagation .Propagator ;
910import datadog .trace .api .Config ;
11+ import datadog .trace .api .TracePropagationBehaviorExtract ;
1012import datadog .trace .bootstrap .instrumentation .api .Baggage ;
1113import datadog .trace .core .util .PercentEscaper ;
1214import datadog .trace .core .util .PercentEscaper .Escaped ;
@@ -28,21 +30,29 @@ public class BaggagePropagator implements Propagator {
2830 private final boolean extractBaggage ;
2931 private final int maxItems ;
3032 private final int maxBytes ;
33+ private final TracePropagationBehaviorExtract behaviorExtract ;
3134
3235 public BaggagePropagator (Config config ) {
3336 this (
3437 config .isBaggageInject (),
3538 config .isBaggageInject (),
3639 config .getTraceBaggageMaxItems (),
37- config .getTraceBaggageMaxBytes ());
40+ config .getTraceBaggageMaxBytes (),
41+ config .getTracePropagationBehaviorExtract ());
3842 }
3943
4044 // use primarily for testing purposes
41- BaggagePropagator (boolean injectBaggage , boolean extractBaggage , int maxItems , int maxBytes ) {
45+ BaggagePropagator (
46+ boolean injectBaggage ,
47+ boolean extractBaggage ,
48+ int maxItems ,
49+ int maxBytes ,
50+ TracePropagationBehaviorExtract behaviorExtract ) {
4251 this .injectBaggage = injectBaggage ;
4352 this .extractBaggage = extractBaggage ;
4453 this .maxItems = maxItems ;
4554 this .maxBytes = maxBytes ;
55+ this .behaviorExtract = behaviorExtract ;
4656 }
4757
4858 @ Override
@@ -104,7 +114,11 @@ public <C> void inject(Context context, C carrier, CarrierSetter<C> setter) {
104114
105115 @ Override
106116 public <C > Context extract (Context context , C carrier , CarrierVisitor <C > visitor ) {
107- if (!this .extractBaggage || context == null || carrier == null || visitor == null ) {
117+ if (!this .extractBaggage
118+ || this .behaviorExtract == IGNORE
119+ || context == null
120+ || carrier == null
121+ || visitor == null ) {
108122 return context ;
109123 }
110124 BaggageExtractor baggageExtractor = new BaggageExtractor ();
0 commit comments