77
88import com .google .errorprone .annotations .CanIgnoreReturnValue ;
99import io .opentelemetry .api .GlobalOpenTelemetry ;
10- import io .opentelemetry .instrumentation .api .incubator .semconv .http .HttpExperimentalAttributesExtractor ;
11- import io .opentelemetry .instrumentation .api .incubator .semconv .http .HttpServerExperimentalMetrics ;
10+ import io .opentelemetry .instrumentation .api .incubator .builder .internal .DefaultHttpServerTelemetryBuilder ;
1211import io .opentelemetry .instrumentation .api .instrumenter .AttributesExtractor ;
1312import io .opentelemetry .instrumentation .api .instrumenter .ContextCustomizer ;
1413import io .opentelemetry .instrumentation .api .instrumenter .Instrumenter ;
15- import io .opentelemetry .instrumentation .api .instrumenter .InstrumenterBuilder ;
1614import io .opentelemetry .instrumentation .api .instrumenter .SpanNameExtractor ;
17- import io .opentelemetry .instrumentation .api .semconv .http .HttpServerAttributesExtractor ;
1815import io .opentelemetry .instrumentation .api .semconv .http .HttpServerAttributesGetter ;
19- import io .opentelemetry .instrumentation .api .semconv .http .HttpServerMetrics ;
20- import io .opentelemetry .instrumentation .api .semconv .http .HttpServerRoute ;
2116import io .opentelemetry .instrumentation .api .semconv .http .HttpSpanNameExtractor ;
22- import io .opentelemetry .instrumentation .api .semconv .http .HttpSpanStatusExtractor ;
2317import io .opentelemetry .javaagent .bootstrap .internal .CommonConfig ;
18+ import io .opentelemetry .javaagent .bootstrap .internal .JavaagentHttpServerInstrumenterBuilder ;
2419import java .util .ArrayList ;
2520import java .util .List ;
21+ import java .util .Optional ;
2622
2723public final class ServletInstrumenterBuilder <REQUEST , RESPONSE > {
2824
@@ -49,43 +45,28 @@ public Instrumenter<ServletRequestContext<REQUEST>, ServletResponseContext<RESPO
4945 HttpServerAttributesGetter <ServletRequestContext <REQUEST >, ServletResponseContext <RESPONSE >>
5046 httpAttributesGetter ) {
5147
52- ServletErrorCauseExtractor <REQUEST , RESPONSE > errorCauseExtractor =
53- new ServletErrorCauseExtractor <>(accessor );
54- AttributesExtractor <ServletRequestContext <REQUEST >, ServletResponseContext <RESPONSE >>
55- additionalAttributesExtractor = new ServletAdditionalAttributesExtractor <>(accessor );
48+ DefaultHttpServerTelemetryBuilder <ServletRequestContext <REQUEST >, ServletResponseContext <RESPONSE >> serverBuilder = new DefaultHttpServerTelemetryBuilder <>(
49+ instrumentationName , GlobalOpenTelemetry .get (), httpAttributesGetter ,
50+ Optional .of (new ServletRequestGetter <>(accessor )));
51+ serverBuilder .setSpanNameExtractor (e -> spanNameExtractor );
52+ return JavaagentHttpServerInstrumenterBuilder .createWithCustomizer (
53+ serverBuilder ,
54+ builder -> {
55+ if (ServletRequestParametersExtractor .enabled ()) {
56+ AttributesExtractor <ServletRequestContext <REQUEST >, ServletResponseContext <RESPONSE >>
57+ requestParametersExtractor = new ServletRequestParametersExtractor <>(accessor );
58+ builder .addAttributesExtractor (requestParametersExtractor );
59+ }
60+ for (ContextCustomizer <? super ServletRequestContext <REQUEST >> contextCustomizer :
61+ contextCustomizers ) {
62+ builder .addContextCustomizer (contextCustomizer );
63+ }
5664
57- InstrumenterBuilder <ServletRequestContext <REQUEST >, ServletResponseContext <RESPONSE >> builder =
58- Instrumenter .<ServletRequestContext <REQUEST >, ServletResponseContext <RESPONSE >>builder (
59- GlobalOpenTelemetry .get (), instrumentationName , spanNameExtractor )
60- .setSpanStatusExtractor (HttpSpanStatusExtractor .create (httpAttributesGetter ))
61- .setErrorCauseExtractor (errorCauseExtractor )
62- .addAttributesExtractor (
63- HttpServerAttributesExtractor .builder (httpAttributesGetter )
64- .setCapturedRequestHeaders (CommonConfig .get ().getServerRequestHeaders ())
65- .setCapturedResponseHeaders (CommonConfig .get ().getServerResponseHeaders ())
66- .setKnownMethods (CommonConfig .get ().getKnownHttpRequestMethods ())
67- .build ())
68- .addAttributesExtractor (additionalAttributesExtractor )
69- .addOperationMetrics (HttpServerMetrics .get ())
70- .addContextCustomizer (
71- HttpServerRoute .builder (httpAttributesGetter )
72- .setKnownMethods (CommonConfig .get ().getKnownHttpRequestMethods ())
73- .build ());
74- if (ServletRequestParametersExtractor .enabled ()) {
75- AttributesExtractor <ServletRequestContext <REQUEST >, ServletResponseContext <RESPONSE >>
76- requestParametersExtractor = new ServletRequestParametersExtractor <>(accessor );
77- builder .addAttributesExtractor (requestParametersExtractor );
78- }
79- for (ContextCustomizer <? super ServletRequestContext <REQUEST >> contextCustomizer :
80- contextCustomizers ) {
81- builder .addContextCustomizer (contextCustomizer );
82- }
83- if (CommonConfig .get ().shouldEmitExperimentalHttpServerTelemetry ()) {
84- builder
85- .addAttributesExtractor (HttpExperimentalAttributesExtractor .create (httpAttributesGetter ))
86- .addOperationMetrics (HttpServerExperimentalMetrics .get ());
87- }
88- return builder .buildServerInstrumenter (new ServletRequestGetter <>(accessor ));
65+ builder
66+ .addAttributesExtractor (
67+ new ServletAdditionalAttributesExtractor <>(accessor ))
68+ .setErrorCauseExtractor (new ServletErrorCauseExtractor <>(accessor ));
69+ });
8970 }
9071
9172 public Instrumenter <ServletRequestContext <REQUEST >, ServletResponseContext <RESPONSE >> build (
0 commit comments