Skip to content
Merged
Show file tree
Hide file tree
Changes from 5 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,7 @@ private void customizeHttpServer(InstrumenterCustomizer customizer) {
customizer.addAttributesExtractor(new DemoAttributesExtractor());
customizer.addOperationMetrics(new DemoMetrics());
customizer.addContextCustomizer(new DemoContextCustomizer());
customizer.setSpanNameExtractor(
customizer.setSpanNameExtractorCustomizer(
unused -> (SpanNameExtractor<Object>) object -> "CustomHTTP/" + object.toString());
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,7 @@ private void customizeHttpServer(InstrumenterCustomizer customizer) {
customizer.addAttributesExtractor(new DemoAttributesExtractor());
customizer.addOperationMetrics(new DemoMetrics());
customizer.addContextCustomizer(new DemoContextCustomizer());
customizer.setSpanNameExtractor(
customizer.setSpanNameExtractorCustomizer(
unused -> (SpanNameExtractor<Object>) object -> "CustomHTTP/" + object.toString());
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -54,15 +54,15 @@ public final class DefaultHttpClientInstrumenterBuilder<REQUEST, RESPONSE> {

private final List<AttributesExtractor<? super REQUEST, ? super RESPONSE>> additionalExtractors =
new ArrayList<>();
private UnaryOperator<SpanStatusExtractor<REQUEST, RESPONSE>> statusExtractorTransformer =
private UnaryOperator<SpanStatusExtractor<REQUEST, RESPONSE>> spanStatusExtractorCustomizer =
UnaryOperator.identity();
private final HttpClientAttributesExtractorBuilder<REQUEST, RESPONSE>
httpAttributesExtractorBuilder;
private final HttpClientAttributesGetter<REQUEST, RESPONSE> attributesGetter;
private final HttpSpanNameExtractorBuilder<REQUEST> httpSpanNameExtractorBuilder;

@Nullable private final TextMapSetter<REQUEST> headerSetter;
private UnaryOperator<SpanNameExtractor<REQUEST>> spanNameExtractorTransformer =
private UnaryOperator<SpanNameExtractor<REQUEST>> spanNameExtractorCustomizer =
UnaryOperator.identity();
private boolean emitExperimentalHttpClientTelemetry = false;
private Consumer<InstrumenterBuilder<REQUEST, RESPONSE>> builderCustomizer = b -> {};
Expand Down Expand Up @@ -111,10 +111,20 @@ public DefaultHttpClientInstrumenterBuilder<REQUEST, RESPONSE> addAttributesExtr
return this;
}

/**
* @deprecated Use {@link #setSpanStatusExtractorCustomizer(UnaryOperator)} instead.
*/
@Deprecated
@CanIgnoreReturnValue
public DefaultHttpClientInstrumenterBuilder<REQUEST, RESPONSE> setStatusExtractor(
UnaryOperator<SpanStatusExtractor<REQUEST, RESPONSE>> statusExtractor) {
this.statusExtractorTransformer = statusExtractor;
return setSpanStatusExtractorCustomizer(statusExtractor);
}

@CanIgnoreReturnValue
public DefaultHttpClientInstrumenterBuilder<REQUEST, RESPONSE> setSpanStatusExtractorCustomizer(
UnaryOperator<SpanStatusExtractor<REQUEST, RESPONSE>> spanStatusExtractorCustomizer) {
this.spanStatusExtractorCustomizer = spanStatusExtractorCustomizer;
return this;
}

Expand Down Expand Up @@ -188,11 +198,26 @@ public DefaultHttpClientInstrumenterBuilder<REQUEST, RESPONSE> setRedactQueryPar
return this;
}

/** Sets custom {@link SpanNameExtractor} via transform function. */
/**
* Sets custom {@link SpanNameExtractor} via transform function.
*
* @deprecated Use {@link #setSpanNameExtractorCustomizer(UnaryOperator)} instead.
*/
@Deprecated
@CanIgnoreReturnValue
public DefaultHttpClientInstrumenterBuilder<REQUEST, RESPONSE> setSpanNameExtractor(
UnaryOperator<SpanNameExtractor<REQUEST>> spanNameExtractor) {
this.spanNameExtractorTransformer = spanNameExtractor;
return setSpanNameExtractorCustomizer(spanNameExtractor);
}

/**
* Sets a customizer that receives the default {@link SpanNameExtractor} and returns a customized
* one.
*/
@CanIgnoreReturnValue
public DefaultHttpClientInstrumenterBuilder<REQUEST, RESPONSE> setSpanNameExtractorCustomizer(
UnaryOperator<SpanNameExtractor<REQUEST>> spanNameExtractorCustomizer) {
this.spanNameExtractorCustomizer = spanNameExtractorCustomizer;
return this;
}

Expand Down Expand Up @@ -227,13 +252,14 @@ public Instrumenter<REQUEST, RESPONSE> build() {
Context.current(), request, attributesGetter));
}
SpanNameExtractor<? super REQUEST> spanNameExtractor =
spanNameExtractorTransformer.apply(httpSpanNameExtractorBuilder.build());
spanNameExtractorCustomizer.apply(httpSpanNameExtractorBuilder.build());

InstrumenterBuilder<REQUEST, RESPONSE> builder =
Instrumenter.<REQUEST, RESPONSE>builder(
openTelemetry, instrumentationName, spanNameExtractor)
.setSpanStatusExtractor(
statusExtractorTransformer.apply(HttpSpanStatusExtractor.create(attributesGetter)))
spanStatusExtractorCustomizer.apply(
HttpSpanStatusExtractor.create(attributesGetter)))
.addAttributesExtractor(httpAttributesExtractorBuilder.build())
.addAttributesExtractors(additionalExtractors)
.addOperationMetrics(HttpClientMetrics.get())
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -47,14 +47,14 @@ public final class DefaultHttpServerInstrumenterBuilder<REQUEST, RESPONSE> {

private final List<AttributesExtractor<? super REQUEST, ? super RESPONSE>> additionalExtractors =
new ArrayList<>();
private UnaryOperator<SpanStatusExtractor<REQUEST, RESPONSE>> statusExtractorTransformer =
private UnaryOperator<SpanStatusExtractor<REQUEST, RESPONSE>> spanStatusExtractorCustomizer =
UnaryOperator.identity();
private final HttpServerAttributesExtractorBuilder<REQUEST, RESPONSE>
httpAttributesExtractorBuilder;
private final HttpSpanNameExtractorBuilder<REQUEST> httpSpanNameExtractorBuilder;

@Nullable private final TextMapGetter<REQUEST> headerGetter;
private UnaryOperator<SpanNameExtractor<REQUEST>> spanNameExtractorTransformer =
private UnaryOperator<SpanNameExtractor<REQUEST>> spanNameExtractorCustomizer =
UnaryOperator.identity();
private final HttpServerRouteBuilder<REQUEST> httpServerRouteBuilder;
private final HttpServerAttributesGetter<REQUEST, RESPONSE> attributesGetter;
Expand Down Expand Up @@ -106,10 +106,20 @@ public DefaultHttpServerInstrumenterBuilder<REQUEST, RESPONSE> addAttributesExtr
return this;
}

/**
* @deprecated Use {@link #setSpanStatusExtractorCustomizer(UnaryOperator)} instead.
*/
@Deprecated
@CanIgnoreReturnValue
public DefaultHttpServerInstrumenterBuilder<REQUEST, RESPONSE> setStatusExtractor(
UnaryOperator<SpanStatusExtractor<REQUEST, RESPONSE>> statusExtractor) {
this.statusExtractorTransformer = statusExtractor;
return setSpanStatusExtractorCustomizer(statusExtractor);
}

@CanIgnoreReturnValue
public DefaultHttpServerInstrumenterBuilder<REQUEST, RESPONSE> setSpanStatusExtractorCustomizer(
UnaryOperator<SpanStatusExtractor<REQUEST, RESPONSE>> spanStatusExtractorCustomizer) {
this.spanStatusExtractorCustomizer = spanStatusExtractorCustomizer;
return this;
}

Expand Down Expand Up @@ -172,11 +182,26 @@ public DefaultHttpServerInstrumenterBuilder<REQUEST, RESPONSE> setKnownMethods(
return this;
}

/** Sets custom {@link SpanNameExtractor} via transform function. */
/**
* Sets custom {@link SpanNameExtractor} via transform function.
*
* @deprecated Use {@link #setSpanNameExtractorCustomizer(UnaryOperator)} instead.
*/
@Deprecated
@CanIgnoreReturnValue
public DefaultHttpServerInstrumenterBuilder<REQUEST, RESPONSE> setSpanNameExtractor(
UnaryOperator<SpanNameExtractor<REQUEST>> spanNameExtractor) {
this.spanNameExtractorTransformer = spanNameExtractor;
return setSpanNameExtractorCustomizer(spanNameExtractor);
}

/**
* Sets a customizer that receives the default {@link SpanNameExtractor} and returns a customized
* one.
*/
@CanIgnoreReturnValue
public DefaultHttpServerInstrumenterBuilder<REQUEST, RESPONSE> setSpanNameExtractorCustomizer(
UnaryOperator<SpanNameExtractor<REQUEST>> spanNameExtractorCustomizer) {
this.spanNameExtractorCustomizer = spanNameExtractorCustomizer;
return this;
}

Expand All @@ -198,13 +223,14 @@ public Instrumenter<REQUEST, RESPONSE> build() {

public InstrumenterBuilder<REQUEST, RESPONSE> instrumenterBuilder() {
SpanNameExtractor<? super REQUEST> spanNameExtractor =
spanNameExtractorTransformer.apply(httpSpanNameExtractorBuilder.build());
spanNameExtractorCustomizer.apply(httpSpanNameExtractorBuilder.build());

InstrumenterBuilder<REQUEST, RESPONSE> builder =
Instrumenter.<REQUEST, RESPONSE>builder(
openTelemetry, instrumentationName, spanNameExtractor)
.setSpanStatusExtractor(
statusExtractorTransformer.apply(HttpSpanStatusExtractor.create(attributesGetter)))
spanStatusExtractorCustomizer.apply(
HttpSpanStatusExtractor.create(attributesGetter)))
.addAttributesExtractor(httpAttributesExtractorBuilder.build())
.addAttributesExtractors(additionalExtractors)
.addContextCustomizer(httpServerRouteBuilder.build())
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -87,18 +87,46 @@ InstrumenterCustomizer addAttributesExtractors(
*
* @param spanNameExtractor function that transforms the original span name extractor
* @return this InstrumenterCustomizer for method chaining
* @deprecated Use {@link #setSpanNameExtractorCustomizer(UnaryOperator)} instead.
*/
InstrumenterCustomizer setSpanNameExtractor(
@Deprecated
default InstrumenterCustomizer setSpanNameExtractor(
UnaryOperator<SpanNameExtractor<?>> spanNameExtractor) {
return setSpanNameExtractorCustomizer(spanNameExtractor);
}

/**
* Sets a transformer function that will modify the {@link SpanNameExtractor}. This allows
* customizing how span names are generated for the instrumented operations.
*
* @param spanNameExtractor function that transforms the original span name extractor
* @return this InstrumenterCustomizer for method chaining
*/
InstrumenterCustomizer setSpanNameExtractorCustomizer(
UnaryOperator<SpanNameExtractor<?>> spanNameExtractor);

/**
* Sets a transformer function that will modify the {@link SpanStatusExtractor}. This allows
* customizing how span statuses are generated for the instrumented operations.
*
* @param spanStatusExtractor function that transforms the original span status extractor
* @return this InstrumenterCustomizer for method chaining
* @deprecated Use {@link #setSpanStatusExtractorCustomizer(UnaryOperator)} instead.
*/
@Deprecated
default InstrumenterCustomizer setSpanStatusExtractor(
UnaryOperator<SpanStatusExtractor<?, ?>> spanStatusExtractor) {
return setSpanStatusExtractorCustomizer(spanStatusExtractor);
}

/**
* Sets a transformer function that will modify the {@link SpanStatusExtractor}. This allows
* customizing how span statuses are generated for the instrumented operations.
*
* @param spanStatusExtractor function that transforms the original span status extractor
* @return this InstrumenterCustomizer for method chaining
*/
InstrumenterCustomizer setSpanStatusExtractor(
InstrumenterCustomizer setSpanStatusExtractorCustomizer(
UnaryOperator<SpanStatusExtractor<?, ?>> spanStatusExtractor);

/** Types of instrumentation. */
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -83,16 +83,16 @@ public InstrumenterCustomizer addContextCustomizer(ContextCustomizer<?> customiz

@Override
@SuppressWarnings("FunctionalInterfaceClash") // interface has deprecated overload
public InstrumenterCustomizer setSpanNameExtractor(
public InstrumenterCustomizer setSpanNameExtractorCustomizer(
UnaryOperator<SpanNameExtractor<?>> spanNameExtractor) {
customizer.setSpanNameExtractor(spanNameExtractor);
customizer.setSpanNameExtractorCustomizer(spanNameExtractor);
return this;
}

@Override
public InstrumenterCustomizer setSpanStatusExtractor(
public InstrumenterCustomizer setSpanStatusExtractorCustomizer(
UnaryOperator<SpanStatusExtractor<?, ?>> spanStatusExtractor) {
customizer.setSpanStatusExtractor(spanStatusExtractor);
customizer.setSpanStatusExtractorCustomizer(spanStatusExtractor);
return this;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -437,14 +437,14 @@ public void addContextCustomizer(ContextCustomizer<REQUEST> customizer) {
}

@Override
public void setSpanNameExtractor(
public void setSpanNameExtractorCustomizer(
UnaryOperator<SpanNameExtractor<? super REQUEST>> spanNameExtractorTransformer) {
builder.spanNameExtractor =
spanNameExtractorTransformer.apply(builder.spanNameExtractor);
}

@Override
public void setSpanStatusExtractor(
public void setSpanStatusExtractorCustomizer(
UnaryOperator<SpanStatusExtractor<? super REQUEST, ? super RESPONSE>>
spanStatusExtractorTransformer) {
builder.spanStatusExtractor =
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,10 +31,29 @@ void addAttributesExtractors(

void addContextCustomizer(ContextCustomizer<REQUEST> customizer);

void setSpanNameExtractor(
/**
* @deprecated Use {@link #setSpanNameExtractorCustomizer(UnaryOperator)} instead.
*/
@Deprecated
default void setSpanNameExtractor(
UnaryOperator<SpanNameExtractor<? super REQUEST>> spanNameExtractorTransformer) {
setSpanNameExtractorCustomizer(spanNameExtractorTransformer);
}

void setSpanNameExtractorCustomizer(
UnaryOperator<SpanNameExtractor<? super REQUEST>> spanNameExtractorTransformer);

void setSpanStatusExtractor(
/**
* @deprecated Use {@link #setSpanStatusExtractorCustomizer(UnaryOperator)} instead.
*/
@Deprecated
default void setSpanStatusExtractor(
UnaryOperator<SpanStatusExtractor<? super REQUEST, ? super RESPONSE>>
spanStatusExtractorTransformer) {
setSpanStatusExtractorCustomizer(spanStatusExtractorTransformer);
}

void setSpanStatusExtractorCustomizer(
UnaryOperator<SpanStatusExtractor<? super REQUEST, ? super RESPONSE>>
spanStatusExtractorTransformer);
}
Original file line number Diff line number Diff line change
Expand Up @@ -327,7 +327,7 @@ void testSetSpanNameExtractor() {
setCustomizer(
customizer -> {
customizerCalled.set(true);
customizer.setSpanNameExtractor(
customizer.setSpanNameExtractorCustomizer(
unused -> (SpanNameExtractor<Object>) object -> "new name");
});

Expand Down Expand Up @@ -366,7 +366,7 @@ void testSetSpanStatusExtractor() {
setCustomizer(
customizer -> {
customizerCalled.set(true);
customizer.setSpanStatusExtractor(
customizer.setSpanStatusExtractorCustomizer(
unused ->
(spanStatusBuilder, request, response, error) ->
spanStatusBuilder.setStatus(StatusCode.OK));
Expand Down
Loading
Loading