99
1010import graphql .execution .instrumentation .Instrumentation ;
1111import io .opentelemetry .api .GlobalOpenTelemetry ;
12+ import io .opentelemetry .api .OpenTelemetry ;
1213import io .opentelemetry .api .incubator .config .DeclarativeConfigProperties ;
1314import io .opentelemetry .instrumentation .api .incubator .config .internal .DeclarativeConfigUtil ;
1415import io .opentelemetry .instrumentation .graphql .internal .InstrumentationUtil ;
1516import io .opentelemetry .instrumentation .graphql .v20_0 .GraphQLTelemetry ;
17+ import javax .annotation .Nullable ;
1618
1719public final class GraphqlSingletons {
1820
1921 private static final GraphQLTelemetry TELEMETRY ;
2022
2123 static {
22- DeclarativeConfigProperties graphqlConfig =
23- DeclarativeConfigUtil .getStructured (GlobalOpenTelemetry .get (), "java" , empty ())
24- .getStructured ("graphql" , empty ());
25-
26- boolean captureQuery = graphqlConfig .getBoolean ("capture_query" , true );
27- boolean sanitizeQuery =
28- graphqlConfig .getStructured ("query_sanitizer" , empty ()).getBoolean ("enabled" , true );
29- boolean dataFetcherEnabled =
30- graphqlConfig .getStructured ("data_fetcher" , empty ()).getBoolean ("enabled" , false );
31- boolean trivialDataFetcherEnabled =
32- graphqlConfig .getStructured ("trivial_data_fetcher" , empty ()).getBoolean ("enabled" , false );
33- boolean addOperationNameToSpanName =
34- graphqlConfig
35- .getStructured ("add_operation_name_to_span_name" , empty ())
36- .getBoolean ("enabled" , false );
24+ Configuration config = new Configuration (GlobalOpenTelemetry .get ());
3725
3826 TELEMETRY =
3927 GraphQLTelemetry .builder (GlobalOpenTelemetry .get ())
40- .setCaptureQuery (captureQuery )
41- .setSanitizeQuery (sanitizeQuery )
42- .setDataFetcherInstrumentationEnabled (dataFetcherEnabled )
43- .setTrivialDataFetcherInstrumentationEnabled (trivialDataFetcherEnabled )
44- .setAddOperationNameToSpanName (addOperationNameToSpanName )
28+ .setCaptureQuery (config . captureQuery ( true ) )
29+ .setSanitizeQuery (config . sanitizeQuery ( true ) )
30+ .setDataFetcherInstrumentationEnabled (config . dataFetcherEnabled ( false ) )
31+ .setTrivialDataFetcherInstrumentationEnabled (config . trivialDataFetcherEnabled ( false ) )
32+ .setAddOperationNameToSpanName (config . addOperationNameToSpanName ( false ) )
4533 .build ();
4634 }
4735
@@ -51,4 +39,63 @@ public static Instrumentation addInstrumentation(Instrumentation instrumentation
5139 Instrumentation ourInstrumentation = TELEMETRY .newInstrumentation ();
5240 return InstrumentationUtil .addInstrumentation (instrumentation , ourInstrumentation );
5341 }
42+
43+ // instrumentation/development:
44+ // java:
45+ // graphql:
46+ // capture_query: [boolean]
47+ // query_sanitizer:
48+ // enabled: [boolean]
49+ // data_fetcher:
50+ // enabled: [boolean]
51+ // trivial_data_fetcher:
52+ // enabled: [boolean]
53+ // add_operation_name_to_span_name:
54+ // enabled: [boolean]
55+ private static final class Configuration {
56+
57+ @ Nullable private final Boolean captureQuery ;
58+ @ Nullable private final Boolean sanitizeQuery ;
59+ @ Nullable private final Boolean dataFetcherEnabled ;
60+ @ Nullable private final Boolean trivialDataFetcherEnabled ;
61+ @ Nullable private final Boolean addOperationNameToSpanName ;
62+
63+ Configuration (OpenTelemetry openTelemetry ) {
64+ DeclarativeConfigProperties graphqlConfig =
65+ DeclarativeConfigUtil .getStructured (openTelemetry , "java" , empty ())
66+ .getStructured ("graphql" , empty ());
67+
68+ this .captureQuery = graphqlConfig .getBoolean ("capture_query" );
69+ this .sanitizeQuery =
70+ graphqlConfig .getStructured ("query_sanitizer" , empty ()).getBoolean ("enabled" );
71+ this .dataFetcherEnabled =
72+ graphqlConfig .getStructured ("data_fetcher" , empty ()).getBoolean ("enabled" );
73+ this .trivialDataFetcherEnabled =
74+ graphqlConfig .getStructured ("trivial_data_fetcher" , empty ()).getBoolean ("enabled" );
75+ this .addOperationNameToSpanName =
76+ graphqlConfig
77+ .getStructured ("add_operation_name_to_span_name" , empty ())
78+ .getBoolean ("enabled" );
79+ }
80+
81+ boolean captureQuery (boolean defaultValue ) {
82+ return captureQuery != null ? captureQuery : defaultValue ;
83+ }
84+
85+ boolean sanitizeQuery (boolean defaultValue ) {
86+ return sanitizeQuery != null ? sanitizeQuery : defaultValue ;
87+ }
88+
89+ boolean dataFetcherEnabled (boolean defaultValue ) {
90+ return dataFetcherEnabled != null ? dataFetcherEnabled : defaultValue ;
91+ }
92+
93+ boolean trivialDataFetcherEnabled (boolean defaultValue ) {
94+ return trivialDataFetcherEnabled != null ? trivialDataFetcherEnabled : defaultValue ;
95+ }
96+
97+ boolean addOperationNameToSpanName (boolean defaultValue ) {
98+ return addOperationNameToSpanName != null ? addOperationNameToSpanName : defaultValue ;
99+ }
100+ }
54101}
0 commit comments