31
31
import java .util .function .Consumer ;
32
32
import java .util .function .Function ;
33
33
34
- public abstract class AbstractHttpClientTelemetryBuilder <SELF , REQUEST , RESPONSE > {
34
+ public final class DefaultHttpClientTelemetryBuilder <REQUEST , RESPONSE >
35
+ implements HttpClientTelemetryBuilder <
36
+ DefaultHttpClientTelemetryBuilder <?, ?>, REQUEST , RESPONSE > {
35
37
36
38
private final String instrumentationName ;
37
- protected final OpenTelemetry openTelemetry ;
39
+ private final OpenTelemetry openTelemetry ;
38
40
39
41
private final List <AttributesExtractor <? super REQUEST , ? super RESPONSE >> additionalExtractors =
40
42
new ArrayList <>();
@@ -47,7 +49,7 @@ public abstract class AbstractHttpClientTelemetryBuilder<SELF, REQUEST, RESPONSE
47
49
spanNameExtractorTransformer = Function .identity ();
48
50
private boolean emitExperimentalHttpClientMetrics = false ;
49
51
50
- public AbstractHttpClientTelemetryBuilder (
52
+ public DefaultHttpClientTelemetryBuilder (
51
53
String instrumentationName ,
52
54
OpenTelemetry openTelemetry ,
53
55
HttpClientAttributesGetter <REQUEST , RESPONSE > attributesGetter ,
@@ -60,83 +62,60 @@ public AbstractHttpClientTelemetryBuilder(
60
62
this .headerSetter = headerSetter ;
61
63
}
62
64
63
- /**
64
- * Adds an additional {@link AttributesExtractor} to invoke to set attributes to instrumented
65
- * items. The {@link AttributesExtractor} will be executed after all default extractors.
66
- */
65
+ @ Override
67
66
@ CanIgnoreReturnValue
68
- public SELF addAttributeExtractor (
67
+ public DefaultHttpClientTelemetryBuilder < REQUEST , RESPONSE > addAttributeExtractor (
69
68
AttributesExtractor <? super REQUEST , ? super RESPONSE > attributesExtractor ) {
70
69
additionalExtractors .add (attributesExtractor );
71
- return self () ;
70
+ return this ;
72
71
}
73
72
74
- /**
75
- * Configures the HTTP request headers that will be captured as span attributes.
76
- *
77
- * @param requestHeaders A list of HTTP header names.
78
- */
73
+ @ Override
79
74
@ CanIgnoreReturnValue
80
- public SELF setCapturedRequestHeaders (List <String > requestHeaders ) {
75
+ public DefaultHttpClientTelemetryBuilder <REQUEST , RESPONSE > setCapturedRequestHeaders (
76
+ List <String > requestHeaders ) {
81
77
httpAttributesExtractorBuilder .setCapturedRequestHeaders (requestHeaders );
82
- return self () ;
78
+ return this ;
83
79
}
84
80
85
- /**
86
- * Configures the HTTP response headers that will be captured as span attributes.
87
- *
88
- * @param responseHeaders A list of HTTP header names.
89
- */
81
+ @ Override
90
82
@ CanIgnoreReturnValue
91
- public SELF setCapturedResponseHeaders (List <String > responseHeaders ) {
83
+ public DefaultHttpClientTelemetryBuilder <REQUEST , RESPONSE > setCapturedResponseHeaders (
84
+ List <String > responseHeaders ) {
92
85
httpAttributesExtractorBuilder .setCapturedResponseHeaders (responseHeaders );
93
- return self () ;
86
+ return this ;
94
87
}
95
88
96
- /**
97
- * Configures the instrumentation to recognize an alternative set of HTTP request methods.
98
- *
99
- * <p>By default, this instrumentation defines "known" methods as the ones listed in <a
100
- * href="https://www.rfc-editor.org/rfc/rfc9110.html#name-methods">RFC9110</a> and the PATCH
101
- * method defined in <a href="https://www.rfc-editor.org/rfc/rfc5789.html">RFC5789</a>.
102
- *
103
- * <p>Note: calling this method <b>overrides</b> the default known method sets completely; it does
104
- * not supplement it.
105
- *
106
- * @param knownMethods A set of recognized HTTP request methods.
107
- * @see HttpClientAttributesExtractorBuilder#setKnownMethods(Set)
108
- */
89
+ @ Override
109
90
@ CanIgnoreReturnValue
110
- public SELF setKnownMethods (Set <String > knownMethods ) {
91
+ public DefaultHttpClientTelemetryBuilder <REQUEST , RESPONSE > setKnownMethods (
92
+ Set <String > knownMethods ) {
111
93
httpAttributesExtractorBuilder .setKnownMethods (knownMethods );
112
94
httpSpanNameExtractorBuilder .setKnownMethods (knownMethods );
113
- return self () ;
95
+ return this ;
114
96
}
115
97
116
- /**
117
- * Configures the instrumentation to emit experimental HTTP client metrics.
118
- *
119
- * @param emitExperimentalHttpClientMetrics {@code true} if the experimental HTTP client metrics
120
- * are to be emitted.
121
- */
98
+ @ Override
122
99
@ CanIgnoreReturnValue
123
- public SELF setEmitExperimentalHttpClientMetrics (boolean emitExperimentalHttpClientMetrics ) {
100
+ public DefaultHttpClientTelemetryBuilder <REQUEST , RESPONSE > setEmitExperimentalHttpClientMetrics (
101
+ boolean emitExperimentalHttpClientMetrics ) {
124
102
this .emitExperimentalHttpClientMetrics = emitExperimentalHttpClientMetrics ;
125
- return self () ;
103
+ return this ;
126
104
}
127
105
128
- /** Sets custom {@link SpanNameExtractor} via transform function. */
106
+ @ Override
129
107
@ CanIgnoreReturnValue
130
- public SELF setSpanNameExtractor (
108
+ public DefaultHttpClientTelemetryBuilder < REQUEST , RESPONSE > setSpanNameExtractor (
131
109
Function <SpanNameExtractor <REQUEST >, ? extends SpanNameExtractor <? super REQUEST >>
132
110
spanNameExtractorTransformer ) {
133
111
this .spanNameExtractorTransformer = spanNameExtractorTransformer ;
134
- return self () ;
112
+ return this ;
135
113
}
136
114
137
115
/** Sets custom {@link PeerServiceResolver}. */
138
116
@ CanIgnoreReturnValue
139
- public SELF setPeerServiceResolver (PeerServiceResolver peerServiceResolver ) {
117
+ public DefaultHttpClientTelemetryBuilder <REQUEST , RESPONSE > setPeerServiceResolver (
118
+ PeerServiceResolver peerServiceResolver ) {
140
119
return addAttributeExtractor (
141
120
HttpClientPeerServiceAttributesExtractor .create (attributesGetter , peerServiceResolver ));
142
121
}
@@ -170,8 +149,7 @@ public Instrumenter<REQUEST, RESPONSE> instrumenter(
170
149
return builder .buildInstrumenter (SpanKindExtractor .alwaysClient ());
171
150
}
172
151
173
- @ SuppressWarnings ("unchecked" )
174
- private SELF self () {
175
- return (SELF ) this ;
152
+ public OpenTelemetry getOpenTelemetry () {
153
+ return openTelemetry ;
176
154
}
177
155
}
0 commit comments