Skip to content
Merged
Show file tree
Hide file tree
Changes from 10 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 @@ -38,6 +38,7 @@
import java.util.function.Consumer;
import java.util.function.Function;
import java.util.function.Supplier;
import java.util.function.UnaryOperator;
import javax.annotation.Nullable;

/**
Expand All @@ -54,16 +55,16 @@ public final class DefaultHttpClientInstrumenterBuilder<REQUEST, RESPONSE> {

private final List<AttributesExtractor<? super REQUEST, ? super RESPONSE>> additionalExtractors =
new ArrayList<>();
private Function<SpanStatusExtractor<REQUEST, RESPONSE>, SpanStatusExtractor<REQUEST, RESPONSE>>
statusExtractorTransformer = Function.identity();
private UnaryOperator<SpanStatusExtractor<REQUEST, RESPONSE>> statusExtractorTransformer =
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 Function<SpanNameExtractor<REQUEST>, ? extends SpanNameExtractor<REQUEST>>
spanNameExtractorTransformer = Function.identity();
private UnaryOperator<SpanNameExtractor<REQUEST>> spanNameExtractorTransformer =
UnaryOperator.identity();
private boolean emitExperimentalHttpClientTelemetry = false;
private Consumer<InstrumenterBuilder<REQUEST, RESPONSE>> builderCustomizer = b -> {};

Expand Down Expand Up @@ -113,8 +114,7 @@ public DefaultHttpClientInstrumenterBuilder<REQUEST, RESPONSE> addAttributesExtr

@CanIgnoreReturnValue
public DefaultHttpClientInstrumenterBuilder<REQUEST, RESPONSE> setStatusExtractor(
Function<SpanStatusExtractor<REQUEST, RESPONSE>, SpanStatusExtractor<REQUEST, RESPONSE>>
statusExtractor) {
UnaryOperator<SpanStatusExtractor<REQUEST, RESPONSE>> statusExtractor) {
this.statusExtractorTransformer = statusExtractor;
return this;
}
Expand Down Expand Up @@ -192,9 +192,8 @@ public DefaultHttpClientInstrumenterBuilder<REQUEST, RESPONSE> setRedactQueryPar
/** Sets custom {@link SpanNameExtractor} via transform function. */
@CanIgnoreReturnValue
public DefaultHttpClientInstrumenterBuilder<REQUEST, RESPONSE> setSpanNameExtractor(
Function<SpanNameExtractor<REQUEST>, SpanNameExtractor<REQUEST>>
spanNameExtractorTransformer) {
this.spanNameExtractorTransformer = spanNameExtractorTransformer;
UnaryOperator<SpanNameExtractor<REQUEST>> spanNameExtractor) {
this.spanNameExtractorTransformer = spanNameExtractor;
return this;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,8 +31,8 @@
import java.util.List;
import java.util.Objects;
import java.util.function.Consumer;
import java.util.function.Function;
import java.util.function.Supplier;
import java.util.function.UnaryOperator;
import javax.annotation.Nullable;

/**
Expand All @@ -46,15 +46,15 @@ public final class DefaultHttpServerInstrumenterBuilder<REQUEST, RESPONSE> {

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

@Nullable private final TextMapGetter<REQUEST> headerGetter;
private Function<SpanNameExtractor<REQUEST>, SpanNameExtractor<REQUEST>>
spanNameExtractorTransformer = Function.identity();
private UnaryOperator<SpanNameExtractor<REQUEST>> spanNameExtractorTransformer =
UnaryOperator.identity();
private final HttpServerRouteBuilder<REQUEST> httpServerRouteBuilder;
private final HttpServerAttributesGetter<REQUEST, RESPONSE> attributesGetter;
private boolean emitExperimentalHttpServerTelemetry = false;
Expand Down Expand Up @@ -107,8 +107,7 @@ public DefaultHttpServerInstrumenterBuilder<REQUEST, RESPONSE> addAttributesExtr

@CanIgnoreReturnValue
public DefaultHttpServerInstrumenterBuilder<REQUEST, RESPONSE> setStatusExtractor(
Function<SpanStatusExtractor<REQUEST, RESPONSE>, SpanStatusExtractor<REQUEST, RESPONSE>>
statusExtractor) {
UnaryOperator<SpanStatusExtractor<REQUEST, RESPONSE>> statusExtractor) {
this.statusExtractorTransformer = statusExtractor;
return this;
}
Expand Down Expand Up @@ -175,9 +174,8 @@ public DefaultHttpServerInstrumenterBuilder<REQUEST, RESPONSE> setKnownMethods(
/** Sets custom {@link SpanNameExtractor} via transform function. */
@CanIgnoreReturnValue
public DefaultHttpServerInstrumenterBuilder<REQUEST, RESPONSE> setSpanNameExtractor(
Function<SpanNameExtractor<REQUEST>, SpanNameExtractor<REQUEST>>
spanNameExtractorTransformer) {
this.spanNameExtractorTransformer = spanNameExtractorTransformer;
UnaryOperator<SpanNameExtractor<REQUEST>> spanNameExtractor) {
this.spanNameExtractorTransformer = spanNameExtractor;
return this;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
import io.opentelemetry.instrumentation.api.instrumenter.OperationMetrics;
import io.opentelemetry.instrumentation.api.instrumenter.SpanNameExtractor;
import java.util.function.Function;
import java.util.function.UnaryOperator;

/**
* Provides customizations for instrumentation, including operation metrics, attributes extraction,
Expand Down Expand Up @@ -75,7 +76,23 @@ InstrumenterCustomizer addAttributesExtractors(
*
* @param spanNameExtractorTransformer function that transforms the original span name extractor
* @return this InstrumenterCustomizer for method chaining
* @deprecated Use {@link #setSpanNameExtractor(UnaryOperator)} instead.
*/
@Deprecated
@SuppressWarnings("FunctionalInterfaceClash")
default InstrumenterCustomizer setSpanNameExtractor(
Function<SpanNameExtractor<?>, SpanNameExtractor<?>> spanNameExtractorTransformer) {
return setSpanNameExtractor(
(UnaryOperator<SpanNameExtractor<?>>) spanNameExtractorTransformer::apply);
}

/**
* 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 setSpanNameExtractor(
Function<SpanNameExtractor<?>, SpanNameExtractor<?>> spanNameExtractorTransformer);
UnaryOperator<SpanNameExtractor<?>> spanNameExtractor);
}
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
import io.opentelemetry.instrumentation.api.instrumenter.OperationMetrics;
import io.opentelemetry.instrumentation.api.instrumenter.SpanNameExtractor;
import io.opentelemetry.instrumentation.api.internal.InternalInstrumenterCustomizer;
import java.util.function.Function;
import java.util.function.UnaryOperator;

/**
* This class is internal and is hence not for public use. Its APIs are unstable and can change at
Expand Down Expand Up @@ -56,9 +56,10 @@ public InstrumenterCustomizer addContextCustomizer(ContextCustomizer<?> customiz
}

@Override
@SuppressWarnings("FunctionalInterfaceClash") // interface has deprecated overload
public InstrumenterCustomizer setSpanNameExtractor(
Function<SpanNameExtractor<?>, SpanNameExtractor<?>> spanNameExtractorTransformer) {
customizer.setSpanNameExtractor(spanNameExtractorTransformer);
UnaryOperator<SpanNameExtractor<?>> spanNameExtractor) {
customizer.setSpanNameExtractor(spanNameExtractor);
return this;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@
import java.util.ArrayList;
import java.util.List;
import java.util.Set;
import java.util.function.Function;
import java.util.function.UnaryOperator;
import java.util.logging.Logger;
import java.util.stream.Collectors;
import java.util.stream.Stream;
Expand Down Expand Up @@ -427,8 +427,7 @@ public void addContextCustomizer(ContextCustomizer<REQUEST> customizer) {

@Override
public void setSpanNameExtractor(
Function<SpanNameExtractor<? super REQUEST>, SpanNameExtractor<? super REQUEST>>
spanNameExtractorTransformer) {
UnaryOperator<SpanNameExtractor<? super REQUEST>> spanNameExtractorTransformer) {
builder.spanNameExtractor =
spanNameExtractorTransformer.apply(builder.spanNameExtractor);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
import io.opentelemetry.instrumentation.api.instrumenter.ContextCustomizer;
import io.opentelemetry.instrumentation.api.instrumenter.OperationMetrics;
import io.opentelemetry.instrumentation.api.instrumenter.SpanNameExtractor;
import java.util.function.Function;
import java.util.function.UnaryOperator;

/**
* This class is internal and is hence not for public use. Its APIs are unstable and can change at
Expand All @@ -29,6 +29,5 @@ void addAttributesExtractors(
void addContextCustomizer(ContextCustomizer<REQUEST> customizer);

void setSpanNameExtractor(
Function<SpanNameExtractor<? super REQUEST>, SpanNameExtractor<? super REQUEST>>
spanNameExtractorTransformer);
UnaryOperator<SpanNameExtractor<? super REQUEST>> spanNameExtractorTransformer);
}
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@
import java.util.ArrayList;
import java.util.List;
import java.util.function.Function;
import java.util.function.UnaryOperator;
import javax.annotation.Nullable;
import org.apache.dubbo.rpc.Result;

Expand All @@ -38,12 +39,10 @@ public final class DubboTelemetryBuilder {
@Nullable private String peerService;
private final List<AttributesExtractor<DubboRequest, Result>> attributesExtractors =
new ArrayList<>();
private Function<
SpanNameExtractor<DubboRequest>, ? extends SpanNameExtractor<? super DubboRequest>>
clientSpanNameExtractorTransformer = Function.identity();
private Function<
SpanNameExtractor<DubboRequest>, ? extends SpanNameExtractor<? super DubboRequest>>
serverSpanNameExtractorTransformer = Function.identity();
private UnaryOperator<SpanNameExtractor<DubboRequest>> clientSpanNameExtractorTransformer =
UnaryOperator.identity();
private UnaryOperator<SpanNameExtractor<DubboRequest>> serverSpanNameExtractorTransformer =
UnaryOperator.identity();

DubboTelemetryBuilder(OpenTelemetry openTelemetry) {
this.openTelemetry = openTelemetry;
Expand All @@ -65,20 +64,50 @@ public DubboTelemetryBuilder addAttributesExtractor(
return this;
}

/** Sets custom client {@link SpanNameExtractor} via transform function. */
/**
* Sets custom client {@link SpanNameExtractor} via transform function.
*
* @deprecated Use {@link #setClientSpanNameExtractor(UnaryOperator)} instead.
*/
@Deprecated
@CanIgnoreReturnValue
@SuppressWarnings("unchecked") // safe cast from Function to UnaryOperator
public DubboTelemetryBuilder setClientSpanNameExtractor(
Function<SpanNameExtractor<DubboRequest>, ? extends SpanNameExtractor<? super DubboRequest>>
clientSpanNameExtractor) {
return setClientSpanNameExtractor(
(UnaryOperator<SpanNameExtractor<DubboRequest>>)
input -> (SpanNameExtractor<DubboRequest>) clientSpanNameExtractor.apply(input));
}

/** Sets custom client {@link SpanNameExtractor} via transform function. */
@CanIgnoreReturnValue
public DubboTelemetryBuilder setClientSpanNameExtractor(
UnaryOperator<SpanNameExtractor<DubboRequest>> clientSpanNameExtractor) {
this.clientSpanNameExtractorTransformer = clientSpanNameExtractor;
return this;
}

/** Sets custom server {@link SpanNameExtractor} via transform function. */
/**
* Sets custom server {@link SpanNameExtractor} via transform function.
*
* @deprecated Use {@link #setServerSpanNameExtractor(UnaryOperator)} instead.
*/
@Deprecated
@CanIgnoreReturnValue
@SuppressWarnings("unchecked") // safe cast from Function to UnaryOperator
public DubboTelemetryBuilder setServerSpanNameExtractor(
Function<SpanNameExtractor<DubboRequest>, ? extends SpanNameExtractor<? super DubboRequest>>
serverSpanNameExtractor) {
return setServerSpanNameExtractor(
(UnaryOperator<SpanNameExtractor<DubboRequest>>)
input -> (SpanNameExtractor<DubboRequest>) serverSpanNameExtractor.apply(input));
}

/** Sets custom server {@link SpanNameExtractor} via transform function. */
@CanIgnoreReturnValue
public DubboTelemetryBuilder setServerSpanNameExtractor(
UnaryOperator<SpanNameExtractor<DubboRequest>> serverSpanNameExtractor) {
this.serverSpanNameExtractorTransformer = serverSpanNameExtractor;
return this;
}
Expand All @@ -90,9 +119,9 @@ public DubboTelemetry build() {
DubboRpcAttributesGetter rpcAttributesGetter = DubboRpcAttributesGetter.INSTANCE;
SpanNameExtractor<DubboRequest> spanNameExtractor =
RpcSpanNameExtractor.create(rpcAttributesGetter);
SpanNameExtractor<? super DubboRequest> clientSpanNameExtractor =
SpanNameExtractor<DubboRequest> clientSpanNameExtractor =
clientSpanNameExtractorTransformer.apply(spanNameExtractor);
SpanNameExtractor<? super DubboRequest> serverSpanNameExtractor =
SpanNameExtractor<DubboRequest> serverSpanNameExtractor =
serverSpanNameExtractorTransformer.apply(spanNameExtractor);
DubboClientNetworkAttributesGetter netClientAttributesGetter =
new DubboClientNetworkAttributesGetter();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
import io.opentelemetry.instrumentation.api.semconv.http.HttpClientAttributesExtractorBuilder;
import java.util.Collection;
import java.util.function.Function;
import java.util.function.UnaryOperator;
import org.apache.http.HttpResponse;

/** A builder for {@link ApacheHttpClientTelemetry}. */
Expand Down Expand Up @@ -89,13 +90,27 @@ public ApacheHttpClientTelemetryBuilder setKnownMethods(Collection<String> known
return this;
}

/** Sets custom {@link SpanNameExtractor} via transform function. */
/**
* Sets custom {@link SpanNameExtractor} via transform function.
*
* @deprecated Use {@link #setSpanNameExtractor(UnaryOperator)} instead.
*/
@Deprecated
@CanIgnoreReturnValue
public ApacheHttpClientTelemetryBuilder setSpanNameExtractor(
Function<
SpanNameExtractor<ApacheHttpClientRequest>,
SpanNameExtractor<ApacheHttpClientRequest>>
spanNameExtractorTransformer) {
return setSpanNameExtractor(
(UnaryOperator<SpanNameExtractor<ApacheHttpClientRequest>>)
spanNameExtractorTransformer::apply);
}

/** Sets custom {@link SpanNameExtractor} via transform function. */
@CanIgnoreReturnValue
public ApacheHttpClientTelemetryBuilder setSpanNameExtractor(
UnaryOperator<SpanNameExtractor<ApacheHttpClientRequest>> spanNameExtractorTransformer) {
builder.setSpanNameExtractor(spanNameExtractorTransformer);
return this;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
import io.opentelemetry.instrumentation.api.semconv.http.HttpClientAttributesExtractorBuilder;
import java.util.Collection;
import java.util.function.Function;
import java.util.function.UnaryOperator;
import org.apache.hc.core5.http.HttpResponse;

/** A builder for {@link ApacheHttpClientTelemetry}. */
Expand Down Expand Up @@ -89,13 +90,27 @@ public ApacheHttpClientTelemetryBuilder setKnownMethods(Collection<String> known
return this;
}

/** Sets custom {@link SpanNameExtractor} via transform function. */
/**
* Sets custom {@link SpanNameExtractor} via transform function.
*
* @deprecated Use {@link #setSpanNameExtractor(UnaryOperator)} instead.
*/
@Deprecated
@CanIgnoreReturnValue
public ApacheHttpClientTelemetryBuilder setSpanNameExtractor(
Function<
SpanNameExtractor<ApacheHttpClientRequest>,
SpanNameExtractor<ApacheHttpClientRequest>>
spanNameExtractorTransformer) {
return setSpanNameExtractor(
(UnaryOperator<SpanNameExtractor<ApacheHttpClientRequest>>)
spanNameExtractorTransformer::apply);
}

/** Sets custom {@link SpanNameExtractor} via transform function. */
@CanIgnoreReturnValue
public ApacheHttpClientTelemetryBuilder setSpanNameExtractor(
UnaryOperator<SpanNameExtractor<ApacheHttpClientRequest>> spanNameExtractorTransformer) {
builder.setSpanNameExtractor(spanNameExtractorTransformer);
return this;
}
Expand Down
Loading
Loading