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