Skip to content

Commit e6ecf22

Browse files
committed
add http server builder
1 parent 580cb20 commit e6ecf22

File tree

1 file changed

+24
-43
lines changed

1 file changed

+24
-43
lines changed

instrumentation/servlet/servlet-common/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/servlet/ServletInstrumenterBuilder.java

Lines changed: 24 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -7,22 +7,18 @@
77

88
import com.google.errorprone.annotations.CanIgnoreReturnValue;
99
import 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;
1211
import io.opentelemetry.instrumentation.api.instrumenter.AttributesExtractor;
1312
import io.opentelemetry.instrumentation.api.instrumenter.ContextCustomizer;
1413
import io.opentelemetry.instrumentation.api.instrumenter.Instrumenter;
15-
import io.opentelemetry.instrumentation.api.instrumenter.InstrumenterBuilder;
1614
import io.opentelemetry.instrumentation.api.instrumenter.SpanNameExtractor;
17-
import io.opentelemetry.instrumentation.api.semconv.http.HttpServerAttributesExtractor;
1815
import 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;
2116
import io.opentelemetry.instrumentation.api.semconv.http.HttpSpanNameExtractor;
22-
import io.opentelemetry.instrumentation.api.semconv.http.HttpSpanStatusExtractor;
2317
import io.opentelemetry.javaagent.bootstrap.internal.CommonConfig;
18+
import io.opentelemetry.javaagent.bootstrap.internal.JavaagentHttpServerInstrumenterBuilder;
2419
import java.util.ArrayList;
2520
import java.util.List;
21+
import java.util.Optional;
2622

2723
public 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

Comments
 (0)