66package io .opentelemetry .javaagent .tooling ;
77
88import com .google .auto .service .AutoService ;
9+ import io .opentelemetry .api .incubator .config .DeclarativeConfigProperties ;
910import io .opentelemetry .sdk .extension .incubator .fileconfig .DeclarativeConfigurationCustomizer ;
1011import io .opentelemetry .sdk .extension .incubator .fileconfig .DeclarativeConfigurationCustomizerProvider ;
12+ import io .opentelemetry .sdk .extension .incubator .fileconfig .SdkConfigProvider ;
1113import io .opentelemetry .sdk .extension .incubator .fileconfig .internal .model .SpanProcessorModel ;
1214import io .opentelemetry .sdk .extension .incubator .fileconfig .internal .model .TracerProviderModel ;
1315
@@ -17,22 +19,32 @@ public class AgentTracerCustomizerProvider implements DeclarativeConfigurationCu
1719 public void customize (DeclarativeConfigurationCustomizer customizer ) {
1820 customizer .addModelCustomizer (
1921 model -> {
20- TracerProviderModel tracerProvider = model .getTracerProvider ();
21- if (tracerProvider == null ) {
22+ DeclarativeConfigProperties properties =
23+ SdkConfigProvider .create (model ).getInstrumentationConfig ();
24+ if (properties == null ) {
25+ properties = DeclarativeConfigProperties .empty ();
26+ }
27+ DeclarativeConfigProperties java =
28+ properties .getStructured ("java" , DeclarativeConfigProperties .empty ());
29+ if (!java .getBoolean ("enabled" , true )) {
30+ // todo extract this logic to a common place
31+ // todo should this be pulled out or to be reusable by spring?
2232 return model ;
2333 }
24- // InstrumentationModel instrumentationModel =
25- // model.getInstrumentationDevelopment();
26- // ExperimentalLanguageSpecificInstrumentationModel java =
27- // instrumentationModel.getJava();
28- // todo how to get the "add_thread_details" from the config?
29- // do we need a ConfigProvider?
34+
35+ if (java .getStructured ("thread_details" , DeclarativeConfigProperties .empty ())
36+ .getBoolean ("enabled" , true )) {
37+ TracerProviderModel tracerProvider = model .getTracerProvider ();
38+ if (tracerProvider != null ) {
39+ tracerProvider
40+ .getProcessors ()
41+ .add (new SpanProcessorModel ().withAdditionalProperty ("thread_details" , null ));
42+ }
43+ }
44+
3045
3146 // todo also add logging like in AgentTracerProviderConfigurer
3247
33- tracerProvider
34- .getProcessors ()
35- .add (new SpanProcessorModel ().withAdditionalProperty ("thread_details" , null ));
3648 return model ;
3749 });
3850 }
0 commit comments