diff --git a/instrumentation-api-incubator/src/main/java/io/opentelemetry/instrumentation/api/incubator/builder/internal/DefaultHttpClientInstrumenterBuilder.java b/instrumentation-api-incubator/src/main/java/io/opentelemetry/instrumentation/api/incubator/builder/internal/DefaultHttpClientInstrumenterBuilder.java index 1903bed26987..4f40eac327b7 100644 --- a/instrumentation-api-incubator/src/main/java/io/opentelemetry/instrumentation/api/incubator/builder/internal/DefaultHttpClientInstrumenterBuilder.java +++ b/instrumentation-api-incubator/src/main/java/io/opentelemetry/instrumentation/api/incubator/builder/internal/DefaultHttpClientInstrumenterBuilder.java @@ -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; /** @@ -54,16 +55,16 @@ public final class DefaultHttpClientInstrumenterBuilder { private final List> additionalExtractors = new ArrayList<>(); - private Function, SpanStatusExtractor> - statusExtractorTransformer = Function.identity(); + private UnaryOperator> statusExtractorTransformer = + UnaryOperator.identity(); private final HttpClientAttributesExtractorBuilder httpAttributesExtractorBuilder; private final HttpClientAttributesGetter attributesGetter; private final HttpSpanNameExtractorBuilder httpSpanNameExtractorBuilder; @Nullable private final TextMapSetter headerSetter; - private Function, ? extends SpanNameExtractor> - spanNameExtractorTransformer = Function.identity(); + private UnaryOperator> spanNameExtractorTransformer = + UnaryOperator.identity(); private boolean emitExperimentalHttpClientTelemetry = false; private Consumer> builderCustomizer = b -> {}; @@ -113,8 +114,7 @@ public DefaultHttpClientInstrumenterBuilder addAttributesExtr @CanIgnoreReturnValue public DefaultHttpClientInstrumenterBuilder setStatusExtractor( - Function, SpanStatusExtractor> - statusExtractor) { + UnaryOperator> statusExtractor) { this.statusExtractorTransformer = statusExtractor; return this; } @@ -192,9 +192,8 @@ public DefaultHttpClientInstrumenterBuilder setRedactQueryPar /** Sets custom {@link SpanNameExtractor} via transform function. */ @CanIgnoreReturnValue public DefaultHttpClientInstrumenterBuilder setSpanNameExtractor( - Function, SpanNameExtractor> - spanNameExtractorTransformer) { - this.spanNameExtractorTransformer = spanNameExtractorTransformer; + UnaryOperator> spanNameExtractor) { + this.spanNameExtractorTransformer = spanNameExtractor; return this; } diff --git a/instrumentation-api-incubator/src/main/java/io/opentelemetry/instrumentation/api/incubator/builder/internal/DefaultHttpServerInstrumenterBuilder.java b/instrumentation-api-incubator/src/main/java/io/opentelemetry/instrumentation/api/incubator/builder/internal/DefaultHttpServerInstrumenterBuilder.java index bfee127f7cf1..89ae196c54d7 100644 --- a/instrumentation-api-incubator/src/main/java/io/opentelemetry/instrumentation/api/incubator/builder/internal/DefaultHttpServerInstrumenterBuilder.java +++ b/instrumentation-api-incubator/src/main/java/io/opentelemetry/instrumentation/api/incubator/builder/internal/DefaultHttpServerInstrumenterBuilder.java @@ -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; /** @@ -46,15 +46,15 @@ public final class DefaultHttpServerInstrumenterBuilder { private final List> additionalExtractors = new ArrayList<>(); - private Function, SpanStatusExtractor> - statusExtractorTransformer = Function.identity(); + private UnaryOperator> statusExtractorTransformer = + UnaryOperator.identity(); private final HttpServerAttributesExtractorBuilder httpAttributesExtractorBuilder; private final HttpSpanNameExtractorBuilder httpSpanNameExtractorBuilder; @Nullable private final TextMapGetter headerGetter; - private Function, SpanNameExtractor> - spanNameExtractorTransformer = Function.identity(); + private UnaryOperator> spanNameExtractorTransformer = + UnaryOperator.identity(); private final HttpServerRouteBuilder httpServerRouteBuilder; private final HttpServerAttributesGetter attributesGetter; private boolean emitExperimentalHttpServerTelemetry = false; @@ -107,8 +107,7 @@ public DefaultHttpServerInstrumenterBuilder addAttributesExtr @CanIgnoreReturnValue public DefaultHttpServerInstrumenterBuilder setStatusExtractor( - Function, SpanStatusExtractor> - statusExtractor) { + UnaryOperator> statusExtractor) { this.statusExtractorTransformer = statusExtractor; return this; } @@ -175,9 +174,8 @@ public DefaultHttpServerInstrumenterBuilder setKnownMethods( /** Sets custom {@link SpanNameExtractor} via transform function. */ @CanIgnoreReturnValue public DefaultHttpServerInstrumenterBuilder setSpanNameExtractor( - Function, SpanNameExtractor> - spanNameExtractorTransformer) { - this.spanNameExtractorTransformer = spanNameExtractorTransformer; + UnaryOperator> spanNameExtractor) { + this.spanNameExtractorTransformer = spanNameExtractor; return this; } diff --git a/instrumentation-api-incubator/src/main/java/io/opentelemetry/instrumentation/api/incubator/instrumenter/InstrumenterCustomizer.java b/instrumentation-api-incubator/src/main/java/io/opentelemetry/instrumentation/api/incubator/instrumenter/InstrumenterCustomizer.java index 6a7d914399d6..8edef423ccfb 100644 --- a/instrumentation-api-incubator/src/main/java/io/opentelemetry/instrumentation/api/incubator/instrumenter/InstrumenterCustomizer.java +++ b/instrumentation-api-incubator/src/main/java/io/opentelemetry/instrumentation/api/incubator/instrumenter/InstrumenterCustomizer.java @@ -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, @@ -75,7 +76,22 @@ 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> spanNameExtractorTransformer) { + return setSpanNameExtractor(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> spanNameExtractorTransformer); + UnaryOperator> spanNameExtractor); } diff --git a/instrumentation-api-incubator/src/main/java/io/opentelemetry/instrumentation/api/incubator/instrumenter/internal/InstrumenterCustomizerImpl.java b/instrumentation-api-incubator/src/main/java/io/opentelemetry/instrumentation/api/incubator/instrumenter/internal/InstrumenterCustomizerImpl.java index b277789bc255..faa866fde176 100644 --- a/instrumentation-api-incubator/src/main/java/io/opentelemetry/instrumentation/api/incubator/instrumenter/internal/InstrumenterCustomizerImpl.java +++ b/instrumentation-api-incubator/src/main/java/io/opentelemetry/instrumentation/api/incubator/instrumenter/internal/InstrumenterCustomizerImpl.java @@ -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 @@ -56,9 +56,10 @@ public InstrumenterCustomizer addContextCustomizer(ContextCustomizer customiz } @Override + @SuppressWarnings("FunctionalInterfaceClash") // interface has deprecated overload public InstrumenterCustomizer setSpanNameExtractor( - Function, SpanNameExtractor> spanNameExtractorTransformer) { - customizer.setSpanNameExtractor(spanNameExtractorTransformer); + UnaryOperator> spanNameExtractor) { + customizer.setSpanNameExtractor(spanNameExtractor); return this; } } diff --git a/instrumentation-api/src/main/java/io/opentelemetry/instrumentation/api/instrumenter/InstrumenterBuilder.java b/instrumentation-api/src/main/java/io/opentelemetry/instrumentation/api/instrumenter/InstrumenterBuilder.java index 0b724d725eb6..d65c9619bdc8 100644 --- a/instrumentation-api/src/main/java/io/opentelemetry/instrumentation/api/instrumenter/InstrumenterBuilder.java +++ b/instrumentation-api/src/main/java/io/opentelemetry/instrumentation/api/instrumenter/InstrumenterBuilder.java @@ -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; @@ -427,8 +427,7 @@ public void addContextCustomizer(ContextCustomizer customizer) { @Override public void setSpanNameExtractor( - Function, SpanNameExtractor> - spanNameExtractorTransformer) { + UnaryOperator> spanNameExtractorTransformer) { builder.spanNameExtractor = spanNameExtractorTransformer.apply(builder.spanNameExtractor); } diff --git a/instrumentation-api/src/main/java/io/opentelemetry/instrumentation/api/internal/InternalInstrumenterCustomizer.java b/instrumentation-api/src/main/java/io/opentelemetry/instrumentation/api/internal/InternalInstrumenterCustomizer.java index d1a0efd7b330..5bf5cc54c715 100644 --- a/instrumentation-api/src/main/java/io/opentelemetry/instrumentation/api/internal/InternalInstrumenterCustomizer.java +++ b/instrumentation-api/src/main/java/io/opentelemetry/instrumentation/api/internal/InternalInstrumenterCustomizer.java @@ -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 @@ -29,6 +29,5 @@ void addAttributesExtractors( void addContextCustomizer(ContextCustomizer customizer); void setSpanNameExtractor( - Function, SpanNameExtractor> - spanNameExtractorTransformer); + UnaryOperator> spanNameExtractorTransformer); } diff --git a/instrumentation/apache-dubbo-2.7/library-autoconfigure/src/main/java/io/opentelemetry/instrumentation/apachedubbo/v2_7/DubboTelemetryBuilder.java b/instrumentation/apache-dubbo-2.7/library-autoconfigure/src/main/java/io/opentelemetry/instrumentation/apachedubbo/v2_7/DubboTelemetryBuilder.java index 6b7eba14ae9a..c33fcf6a71de 100644 --- a/instrumentation/apache-dubbo-2.7/library-autoconfigure/src/main/java/io/opentelemetry/instrumentation/apachedubbo/v2_7/DubboTelemetryBuilder.java +++ b/instrumentation/apache-dubbo-2.7/library-autoconfigure/src/main/java/io/opentelemetry/instrumentation/apachedubbo/v2_7/DubboTelemetryBuilder.java @@ -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; @@ -38,12 +39,10 @@ public final class DubboTelemetryBuilder { @Nullable private String peerService; private final List> attributesExtractors = new ArrayList<>(); - private Function< - SpanNameExtractor, ? extends SpanNameExtractor> - clientSpanNameExtractorTransformer = Function.identity(); - private Function< - SpanNameExtractor, ? extends SpanNameExtractor> - serverSpanNameExtractorTransformer = Function.identity(); + private UnaryOperator> clientSpanNameExtractorTransformer = + UnaryOperator.identity(); + private UnaryOperator> serverSpanNameExtractorTransformer = + UnaryOperator.identity(); DubboTelemetryBuilder(OpenTelemetry openTelemetry) { this.openTelemetry = openTelemetry; @@ -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") // cast result to SpanNameExtractor public DubboTelemetryBuilder setClientSpanNameExtractor( Function, ? extends SpanNameExtractor> clientSpanNameExtractor) { + return setClientSpanNameExtractor( + (UnaryOperator>) + input -> (SpanNameExtractor) clientSpanNameExtractor.apply(input)); + } + + /** Sets custom client {@link SpanNameExtractor} via transform function. */ + @CanIgnoreReturnValue + public DubboTelemetryBuilder setClientSpanNameExtractor( + UnaryOperator> 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") // cast result to SpanNameExtractor public DubboTelemetryBuilder setServerSpanNameExtractor( Function, ? extends SpanNameExtractor> serverSpanNameExtractor) { + return setServerSpanNameExtractor( + (UnaryOperator>) + input -> (SpanNameExtractor) serverSpanNameExtractor.apply(input)); + } + + /** Sets custom server {@link SpanNameExtractor} via transform function. */ + @CanIgnoreReturnValue + public DubboTelemetryBuilder setServerSpanNameExtractor( + UnaryOperator> serverSpanNameExtractor) { this.serverSpanNameExtractorTransformer = serverSpanNameExtractor; return this; } @@ -90,9 +119,9 @@ public DubboTelemetry build() { DubboRpcAttributesGetter rpcAttributesGetter = DubboRpcAttributesGetter.INSTANCE; SpanNameExtractor spanNameExtractor = RpcSpanNameExtractor.create(rpcAttributesGetter); - SpanNameExtractor clientSpanNameExtractor = + SpanNameExtractor clientSpanNameExtractor = clientSpanNameExtractorTransformer.apply(spanNameExtractor); - SpanNameExtractor serverSpanNameExtractor = + SpanNameExtractor serverSpanNameExtractor = serverSpanNameExtractorTransformer.apply(spanNameExtractor); DubboClientNetworkAttributesGetter netClientAttributesGetter = new DubboClientNetworkAttributesGetter(); diff --git a/instrumentation/apache-httpclient/apache-httpclient-4.3/library/src/main/java/io/opentelemetry/instrumentation/apachehttpclient/v4_3/ApacheHttpClientTelemetryBuilder.java b/instrumentation/apache-httpclient/apache-httpclient-4.3/library/src/main/java/io/opentelemetry/instrumentation/apachehttpclient/v4_3/ApacheHttpClientTelemetryBuilder.java index 850f082eb4e8..43b4f5dbaca7 100644 --- a/instrumentation/apache-httpclient/apache-httpclient-4.3/library/src/main/java/io/opentelemetry/instrumentation/apachehttpclient/v4_3/ApacheHttpClientTelemetryBuilder.java +++ b/instrumentation/apache-httpclient/apache-httpclient-4.3/library/src/main/java/io/opentelemetry/instrumentation/apachehttpclient/v4_3/ApacheHttpClientTelemetryBuilder.java @@ -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}. */ @@ -89,13 +90,27 @@ public ApacheHttpClientTelemetryBuilder setKnownMethods(Collection 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, SpanNameExtractor> spanNameExtractorTransformer) { + return setSpanNameExtractor( + (UnaryOperator>) + spanNameExtractorTransformer::apply); + } + + /** Sets custom {@link SpanNameExtractor} via transform function. */ + @CanIgnoreReturnValue + public ApacheHttpClientTelemetryBuilder setSpanNameExtractor( + UnaryOperator> spanNameExtractorTransformer) { builder.setSpanNameExtractor(spanNameExtractorTransformer); return this; } diff --git a/instrumentation/apache-httpclient/apache-httpclient-5.2/library/src/main/java/io/opentelemetry/instrumentation/apachehttpclient/v5_2/ApacheHttpClientTelemetryBuilder.java b/instrumentation/apache-httpclient/apache-httpclient-5.2/library/src/main/java/io/opentelemetry/instrumentation/apachehttpclient/v5_2/ApacheHttpClientTelemetryBuilder.java index 82cc6442bc2d..84266154d865 100644 --- a/instrumentation/apache-httpclient/apache-httpclient-5.2/library/src/main/java/io/opentelemetry/instrumentation/apachehttpclient/v5_2/ApacheHttpClientTelemetryBuilder.java +++ b/instrumentation/apache-httpclient/apache-httpclient-5.2/library/src/main/java/io/opentelemetry/instrumentation/apachehttpclient/v5_2/ApacheHttpClientTelemetryBuilder.java @@ -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}. */ @@ -89,13 +90,27 @@ public ApacheHttpClientTelemetryBuilder setKnownMethods(Collection 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, SpanNameExtractor> spanNameExtractorTransformer) { + return setSpanNameExtractor( + (UnaryOperator>) + spanNameExtractorTransformer::apply); + } + + /** Sets custom {@link SpanNameExtractor} via transform function. */ + @CanIgnoreReturnValue + public ApacheHttpClientTelemetryBuilder setSpanNameExtractor( + UnaryOperator> spanNameExtractorTransformer) { builder.setSpanNameExtractor(spanNameExtractorTransformer); return this; } diff --git a/instrumentation/armeria/armeria-1.3/library/src/main/java/io/opentelemetry/instrumentation/armeria/v1_3/ArmeriaClientTelemetryBuilder.java b/instrumentation/armeria/armeria-1.3/library/src/main/java/io/opentelemetry/instrumentation/armeria/v1_3/ArmeriaClientTelemetryBuilder.java index b46ca75cb4dc..9c36a8d7b5a1 100644 --- a/instrumentation/armeria/armeria-1.3/library/src/main/java/io/opentelemetry/instrumentation/armeria/v1_3/ArmeriaClientTelemetryBuilder.java +++ b/instrumentation/armeria/armeria-1.3/library/src/main/java/io/opentelemetry/instrumentation/armeria/v1_3/ArmeriaClientTelemetryBuilder.java @@ -19,6 +19,7 @@ import io.opentelemetry.instrumentation.armeria.v1_3.internal.Experimental; import java.util.Collection; import java.util.function.Function; +import java.util.function.UnaryOperator; public final class ArmeriaClientTelemetryBuilder { @@ -36,13 +37,27 @@ public final class ArmeriaClientTelemetryBuilder { builder = ArmeriaInstrumenterBuilderFactory.getClientBuilder(openTelemetry); } - /** Sets the status extractor for client spans. */ + /** + * Sets the status extractor for client spans. + * + * @deprecated Use {@link #setStatusExtractor(UnaryOperator)} instead. + */ + @Deprecated @CanIgnoreReturnValue public ArmeriaClientTelemetryBuilder setStatusExtractor( Function< SpanStatusExtractor, SpanStatusExtractor> statusExtractor) { + return setStatusExtractor( + (UnaryOperator>) + statusExtractor::apply); + } + + /** Sets the status extractor for client spans. */ + @CanIgnoreReturnValue + public ArmeriaClientTelemetryBuilder setStatusExtractor( + UnaryOperator> statusExtractor) { builder.setStatusExtractor(statusExtractor); return this; } @@ -101,11 +116,24 @@ public ArmeriaClientTelemetryBuilder setKnownMethods(Collection knownMet return this; } - /** Sets custom client {@link SpanNameExtractor} via transform function. */ + /** + * Sets custom client {@link SpanNameExtractor} via transform function. + * + * @deprecated Use {@link #setSpanNameExtractor(UnaryOperator)} instead. + */ + @Deprecated @CanIgnoreReturnValue public ArmeriaClientTelemetryBuilder setSpanNameExtractor( Function, SpanNameExtractor> clientSpanNameExtractor) { + return setSpanNameExtractor( + (UnaryOperator>) clientSpanNameExtractor::apply); + } + + /** Sets custom client {@link SpanNameExtractor} via transform function. */ + @CanIgnoreReturnValue + public ArmeriaClientTelemetryBuilder setSpanNameExtractor( + UnaryOperator> clientSpanNameExtractor) { builder.setSpanNameExtractor(clientSpanNameExtractor); return this; } diff --git a/instrumentation/armeria/armeria-1.3/library/src/main/java/io/opentelemetry/instrumentation/armeria/v1_3/ArmeriaServerTelemetryBuilder.java b/instrumentation/armeria/armeria-1.3/library/src/main/java/io/opentelemetry/instrumentation/armeria/v1_3/ArmeriaServerTelemetryBuilder.java index c7e7c3ee3fa3..84418da78050 100644 --- a/instrumentation/armeria/armeria-1.3/library/src/main/java/io/opentelemetry/instrumentation/armeria/v1_3/ArmeriaServerTelemetryBuilder.java +++ b/instrumentation/armeria/armeria-1.3/library/src/main/java/io/opentelemetry/instrumentation/armeria/v1_3/ArmeriaServerTelemetryBuilder.java @@ -19,6 +19,7 @@ import io.opentelemetry.instrumentation.armeria.v1_3.internal.Experimental; import java.util.Collection; import java.util.function.Function; +import java.util.function.UnaryOperator; public final class ArmeriaServerTelemetryBuilder { @@ -34,13 +35,27 @@ public final class ArmeriaServerTelemetryBuilder { builder = ArmeriaInstrumenterBuilderFactory.getServerBuilder(openTelemetry); } - /** Sets the status extractor for server spans. */ + /** + * Sets the status extractor for server spans. + * + * @deprecated Use {@link #setStatusExtractor(UnaryOperator)} instead. + */ + @Deprecated @CanIgnoreReturnValue public ArmeriaServerTelemetryBuilder setStatusExtractor( Function< SpanStatusExtractor, SpanStatusExtractor> statusExtractor) { + return setStatusExtractor( + (UnaryOperator>) + statusExtractor::apply); + } + + /** Sets the status extractor for server spans. */ + @CanIgnoreReturnValue + public ArmeriaServerTelemetryBuilder setStatusExtractor( + UnaryOperator> statusExtractor) { builder.setStatusExtractor(statusExtractor); return this; } @@ -99,11 +114,24 @@ public ArmeriaServerTelemetryBuilder setKnownMethods(Collection knownMet return this; } - /** Sets custom server {@link SpanNameExtractor} via transform function. */ + /** + * Sets custom server {@link SpanNameExtractor} via transform function. + * + * @deprecated Use {@link #setSpanNameExtractor(UnaryOperator)} instead. + */ + @Deprecated @CanIgnoreReturnValue public ArmeriaServerTelemetryBuilder setSpanNameExtractor( Function, SpanNameExtractor> serverSpanNameExtractor) { + return setSpanNameExtractor( + (UnaryOperator>) serverSpanNameExtractor::apply); + } + + /** Sets custom server {@link SpanNameExtractor} via transform function. */ + @CanIgnoreReturnValue + public ArmeriaServerTelemetryBuilder setSpanNameExtractor( + UnaryOperator> serverSpanNameExtractor) { builder.setSpanNameExtractor(serverSpanNameExtractor); return this; } diff --git a/instrumentation/grpc-1.6/library/src/main/java/io/opentelemetry/instrumentation/grpc/v1_6/GrpcTelemetryBuilder.java b/instrumentation/grpc-1.6/library/src/main/java/io/opentelemetry/instrumentation/grpc/v1_6/GrpcTelemetryBuilder.java index 62addaafa146..fe0575c0f15e 100644 --- a/instrumentation/grpc-1.6/library/src/main/java/io/opentelemetry/instrumentation/grpc/v1_6/GrpcTelemetryBuilder.java +++ b/instrumentation/grpc-1.6/library/src/main/java/io/opentelemetry/instrumentation/grpc/v1_6/GrpcTelemetryBuilder.java @@ -27,6 +27,7 @@ import java.util.Collections; import java.util.List; import java.util.function.Function; +import java.util.function.UnaryOperator; import javax.annotation.Nullable; /** A builder of {@link GrpcTelemetry}. */ @@ -39,10 +40,10 @@ public final class GrpcTelemetryBuilder { private final OpenTelemetry openTelemetry; @Nullable private String peerService; - private Function, ? extends SpanNameExtractor> - clientSpanNameExtractorTransformer = Function.identity(); - private Function, ? extends SpanNameExtractor> - serverSpanNameExtractorTransformer = Function.identity(); + private UnaryOperator> clientSpanNameExtractorTransformer = + UnaryOperator.identity(); + private UnaryOperator> serverSpanNameExtractorTransformer = + UnaryOperator.identity(); private final List> additionalExtractors = new ArrayList<>(); private final List> @@ -94,20 +95,50 @@ public GrpcTelemetryBuilder addServerAttributeExtractor( 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") // cast result to SpanNameExtractor public GrpcTelemetryBuilder setClientSpanNameExtractor( Function, ? extends SpanNameExtractor> clientSpanNameExtractor) { + return setClientSpanNameExtractor( + (UnaryOperator>) + input -> (SpanNameExtractor) clientSpanNameExtractor.apply(input)); + } + + /** Sets custom client {@link SpanNameExtractor} via transform function. */ + @CanIgnoreReturnValue + public GrpcTelemetryBuilder setClientSpanNameExtractor( + UnaryOperator> 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") // cast result to SpanNameExtractor public GrpcTelemetryBuilder setServerSpanNameExtractor( Function, ? extends SpanNameExtractor> serverSpanNameExtractor) { + return setServerSpanNameExtractor( + (UnaryOperator>) + input -> (SpanNameExtractor) serverSpanNameExtractor.apply(input)); + } + + /** Sets custom server {@link SpanNameExtractor} via transform function. */ + @CanIgnoreReturnValue + public GrpcTelemetryBuilder setServerSpanNameExtractor( + UnaryOperator> serverSpanNameExtractor) { this.serverSpanNameExtractorTransformer = serverSpanNameExtractor; return this; } diff --git a/instrumentation/java-http-client/library/src/main/java/io/opentelemetry/instrumentation/javahttpclient/JavaHttpClientTelemetryBuilder.java b/instrumentation/java-http-client/library/src/main/java/io/opentelemetry/instrumentation/javahttpclient/JavaHttpClientTelemetryBuilder.java index a2be7db706b2..d5cc848db438 100644 --- a/instrumentation/java-http-client/library/src/main/java/io/opentelemetry/instrumentation/javahttpclient/JavaHttpClientTelemetryBuilder.java +++ b/instrumentation/java-http-client/library/src/main/java/io/opentelemetry/instrumentation/javahttpclient/JavaHttpClientTelemetryBuilder.java @@ -18,6 +18,7 @@ import java.net.http.HttpResponse; import java.util.Collection; import java.util.function.Function; +import java.util.function.UnaryOperator; public final class JavaHttpClientTelemetryBuilder { @@ -88,11 +89,24 @@ public JavaHttpClientTelemetryBuilder setKnownMethods(Collection knownMe 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 JavaHttpClientTelemetryBuilder setSpanNameExtractor( Function, SpanNameExtractor> spanNameExtractorTransformer) { + return setSpanNameExtractor( + (UnaryOperator>) spanNameExtractorTransformer::apply); + } + + /** Sets custom {@link SpanNameExtractor} via transform function. */ + @CanIgnoreReturnValue + public JavaHttpClientTelemetryBuilder setSpanNameExtractor( + UnaryOperator> spanNameExtractorTransformer) { builder.setSpanNameExtractor(spanNameExtractorTransformer); return this; } diff --git a/instrumentation/java-http-server/library/src/main/java/io/opentelemetry/instrumentation/javahttpserver/JavaHttpServerTelemetryBuilder.java b/instrumentation/java-http-server/library/src/main/java/io/opentelemetry/instrumentation/javahttpserver/JavaHttpServerTelemetryBuilder.java index 8a303b74087f..e8860805c5f1 100644 --- a/instrumentation/java-http-server/library/src/main/java/io/opentelemetry/instrumentation/javahttpserver/JavaHttpServerTelemetryBuilder.java +++ b/instrumentation/java-http-server/library/src/main/java/io/opentelemetry/instrumentation/javahttpserver/JavaHttpServerTelemetryBuilder.java @@ -17,6 +17,7 @@ import io.opentelemetry.instrumentation.javahttpserver.internal.JavaHttpServerInstrumenterBuilderUtil; import java.util.Collection; import java.util.function.Function; +import java.util.function.UnaryOperator; public final class JavaHttpServerTelemetryBuilder { @@ -39,13 +40,26 @@ public final class JavaHttpServerTelemetryBuilder { JavaHttpServerExchangeGetter.INSTANCE); } - /** Sets the status extractor for server spans. */ + /** + * Sets the status extractor for server spans. + * + * @deprecated Use {@link #setStatusExtractor(UnaryOperator)} instead. + */ + @Deprecated @CanIgnoreReturnValue public JavaHttpServerTelemetryBuilder setStatusExtractor( Function< SpanStatusExtractor, SpanStatusExtractor> statusExtractor) { + return setStatusExtractor( + (UnaryOperator>) statusExtractor::apply); + } + + /** Sets the status extractor for server spans. */ + @CanIgnoreReturnValue + public JavaHttpServerTelemetryBuilder setStatusExtractor( + UnaryOperator> statusExtractor) { builder.setStatusExtractor(statusExtractor); return this; } @@ -104,12 +118,25 @@ public JavaHttpServerTelemetryBuilder setKnownMethods(Collection knownMe return this; } - /** Sets custom server {@link SpanNameExtractor} via transform function. */ + /** + * Sets custom {@link SpanNameExtractor} via transform function. + * + * @deprecated Use {@link #setSpanNameExtractor(UnaryOperator)} instead. + */ + @Deprecated @CanIgnoreReturnValue public JavaHttpServerTelemetryBuilder setSpanNameExtractor( Function, SpanNameExtractor> - serverSpanNameExtractor) { - builder.setSpanNameExtractor(serverSpanNameExtractor); + spanNameExtractorTransformer) { + return setSpanNameExtractor( + (UnaryOperator>) spanNameExtractorTransformer::apply); + } + + /** Sets custom {@link SpanNameExtractor} via transform function. */ + @CanIgnoreReturnValue + public JavaHttpServerTelemetryBuilder setSpanNameExtractor( + UnaryOperator> spanNameExtractorTransformer) { + builder.setSpanNameExtractor(spanNameExtractorTransformer); return this; } diff --git a/instrumentation/jetty-httpclient/jetty-httpclient-12.0/library/src/main/java/io/opentelemetry/instrumentation/jetty/httpclient/v12_0/JettyClientTelemetryBuilder.java b/instrumentation/jetty-httpclient/jetty-httpclient-12.0/library/src/main/java/io/opentelemetry/instrumentation/jetty/httpclient/v12_0/JettyClientTelemetryBuilder.java index 580fb65d0ca0..55459288e92a 100644 --- a/instrumentation/jetty-httpclient/jetty-httpclient-12.0/library/src/main/java/io/opentelemetry/instrumentation/jetty/httpclient/v12_0/JettyClientTelemetryBuilder.java +++ b/instrumentation/jetty-httpclient/jetty-httpclient-12.0/library/src/main/java/io/opentelemetry/instrumentation/jetty/httpclient/v12_0/JettyClientTelemetryBuilder.java @@ -15,6 +15,7 @@ import io.opentelemetry.instrumentation.jetty.httpclient.v12_0.internal.JettyHttpClientInstrumenterBuilderFactory; import java.util.Collection; import java.util.function.Function; +import java.util.function.UnaryOperator; import org.eclipse.jetty.client.HttpClientTransport; import org.eclipse.jetty.client.Request; import org.eclipse.jetty.client.Response; @@ -102,11 +103,24 @@ public JettyClientTelemetryBuilder setKnownMethods(Collection knownMetho 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 JettyClientTelemetryBuilder setSpanNameExtractor( Function, SpanNameExtractor> spanNameExtractorTransformer) { + return setSpanNameExtractor( + (UnaryOperator>) spanNameExtractorTransformer::apply); + } + + /** Sets custom {@link SpanNameExtractor} via transform function. */ + @CanIgnoreReturnValue + public JettyClientTelemetryBuilder setSpanNameExtractor( + UnaryOperator> spanNameExtractorTransformer) { builder.setSpanNameExtractor(spanNameExtractorTransformer); return this; } diff --git a/instrumentation/jetty-httpclient/jetty-httpclient-9.2/library/src/main/java/io/opentelemetry/instrumentation/jetty/httpclient/v9_2/JettyClientTelemetryBuilder.java b/instrumentation/jetty-httpclient/jetty-httpclient-9.2/library/src/main/java/io/opentelemetry/instrumentation/jetty/httpclient/v9_2/JettyClientTelemetryBuilder.java index 60cddb3e23fb..3b1021a526f9 100644 --- a/instrumentation/jetty-httpclient/jetty-httpclient-9.2/library/src/main/java/io/opentelemetry/instrumentation/jetty/httpclient/v9_2/JettyClientTelemetryBuilder.java +++ b/instrumentation/jetty-httpclient/jetty-httpclient-9.2/library/src/main/java/io/opentelemetry/instrumentation/jetty/httpclient/v9_2/JettyClientTelemetryBuilder.java @@ -15,6 +15,7 @@ import io.opentelemetry.instrumentation.jetty.httpclient.v9_2.internal.JettyHttpClientInstrumenterBuilderFactory; import java.util.Collection; import java.util.function.Function; +import java.util.function.UnaryOperator; import org.eclipse.jetty.client.HttpClientTransport; import org.eclipse.jetty.client.api.Request; import org.eclipse.jetty.client.api.Response; @@ -102,11 +103,24 @@ public JettyClientTelemetryBuilder setKnownMethods(Collection knownMetho 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 JettyClientTelemetryBuilder setSpanNameExtractor( Function, SpanNameExtractor> spanNameExtractorTransformer) { + return setSpanNameExtractor( + (UnaryOperator>) spanNameExtractorTransformer::apply); + } + + /** Sets custom {@link SpanNameExtractor} via transform function. */ + @CanIgnoreReturnValue + public JettyClientTelemetryBuilder setSpanNameExtractor( + UnaryOperator> spanNameExtractorTransformer) { builder.setSpanNameExtractor(spanNameExtractorTransformer); return this; } diff --git a/instrumentation/ktor/ktor-2-common/library/src/main/kotlin/io/opentelemetry/instrumentation/ktor/v2_0/common/AbstractKtorClientTelemetryBuilder.kt b/instrumentation/ktor/ktor-2-common/library/src/main/kotlin/io/opentelemetry/instrumentation/ktor/v2_0/common/AbstractKtorClientTelemetryBuilder.kt index 2e603e758273..718c7250a72f 100644 --- a/instrumentation/ktor/ktor-2-common/library/src/main/kotlin/io/opentelemetry/instrumentation/ktor/v2_0/common/AbstractKtorClientTelemetryBuilder.kt +++ b/instrumentation/ktor/ktor-2-common/library/src/main/kotlin/io/opentelemetry/instrumentation/ktor/v2_0/common/AbstractKtorClientTelemetryBuilder.kt @@ -16,6 +16,7 @@ import io.opentelemetry.instrumentation.api.instrumenter.AttributesExtractor import io.opentelemetry.instrumentation.api.instrumenter.SpanNameExtractor import io.opentelemetry.instrumentation.ktor.v2_0.common.internal.KtorBuilderUtil import java.util.function.Function +import java.util.function.UnaryOperator abstract class AbstractKtorClientTelemetryBuilder( private val instrumentationName: String @@ -78,8 +79,13 @@ abstract class AbstractKtorClientTelemetryBuilder( }) } + @Deprecated("Use spanNameExtractor(UnaryOperator) instead", ReplaceWith("spanNameExtractor(spanNameExtractorTransformer::apply)")) fun spanNameExtractor(spanNameExtractorTransformer: Function, SpanNameExtractor>) { - builder.setSpanNameExtractor(spanNameExtractorTransformer) + spanNameExtractor(spanNameExtractorTransformer::apply) + } + + fun spanNameExtractor(spanNameExtractor: UnaryOperator>) { + builder.setSpanNameExtractor(spanNameExtractor) } class ExtractorBuilder { diff --git a/instrumentation/ktor/ktor-2-common/library/src/main/kotlin/io/opentelemetry/instrumentation/ktor/v2_0/common/AbstractKtorServerTelemetryBuilder.kt b/instrumentation/ktor/ktor-2-common/library/src/main/kotlin/io/opentelemetry/instrumentation/ktor/v2_0/common/AbstractKtorServerTelemetryBuilder.kt index bf1c9292a679..0323cae40ac9 100644 --- a/instrumentation/ktor/ktor-2-common/library/src/main/kotlin/io/opentelemetry/instrumentation/ktor/v2_0/common/AbstractKtorServerTelemetryBuilder.kt +++ b/instrumentation/ktor/ktor-2-common/library/src/main/kotlin/io/opentelemetry/instrumentation/ktor/v2_0/common/AbstractKtorServerTelemetryBuilder.kt @@ -20,6 +20,7 @@ import io.opentelemetry.instrumentation.api.instrumenter.SpanStatusBuilder import io.opentelemetry.instrumentation.api.instrumenter.SpanStatusExtractor import io.opentelemetry.instrumentation.ktor.v2_0.common.internal.KtorBuilderUtil import java.util.function.Function +import java.util.function.UnaryOperator abstract class AbstractKtorServerTelemetryBuilder(private val instrumentationName: String) { companion object { @@ -88,8 +89,13 @@ abstract class AbstractKtorServerTelemetryBuilder(private val instrumentationNam ) } + @Deprecated("Use spanNameExtractor(UnaryOperator) instead", ReplaceWith("spanNameExtractor(spanNameExtractorTransformer::apply)")) fun spanNameExtractor(spanNameExtractorTransformer: Function, SpanNameExtractor>) { - builder.setSpanNameExtractor(spanNameExtractorTransformer) + spanNameExtractor(spanNameExtractorTransformer::apply) + } + + fun spanNameExtractor(spanNameExtractor: UnaryOperator>) { + builder.setSpanNameExtractor(spanNameExtractor) } class ExtractorBuilder { diff --git a/instrumentation/netty/netty-4.1/library/src/main/java/io/opentelemetry/instrumentation/netty/v4_1/NettyClientTelemetryBuilder.java b/instrumentation/netty/netty-4.1/library/src/main/java/io/opentelemetry/instrumentation/netty/v4_1/NettyClientTelemetryBuilder.java index 236dc36bc299..d56c4cd8f651 100644 --- a/instrumentation/netty/netty-4.1/library/src/main/java/io/opentelemetry/instrumentation/netty/v4_1/NettyClientTelemetryBuilder.java +++ b/instrumentation/netty/netty-4.1/library/src/main/java/io/opentelemetry/instrumentation/netty/v4_1/NettyClientTelemetryBuilder.java @@ -19,6 +19,7 @@ import io.opentelemetry.instrumentation.netty.v4_1.internal.Experimental; import java.util.Collection; import java.util.function.Function; +import java.util.function.UnaryOperator; /** A builder of {@link NettyClientTelemetry}. */ public final class NettyClientTelemetryBuilder { @@ -93,11 +94,25 @@ public NettyClientTelemetryBuilder setKnownMethods(Collection knownMetho 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 NettyClientTelemetryBuilder setSpanNameExtractor( Function, SpanNameExtractor> spanNameExtractorTransformer) { + return setSpanNameExtractor( + (UnaryOperator>) + spanNameExtractorTransformer::apply); + } + + /** Sets custom {@link SpanNameExtractor} via transform function. */ + @CanIgnoreReturnValue + public NettyClientTelemetryBuilder setSpanNameExtractor( + UnaryOperator> spanNameExtractorTransformer) { builder.setSpanNameExtractor(spanNameExtractorTransformer); return this; } diff --git a/instrumentation/okhttp/okhttp-3.0/library/src/main/java/io/opentelemetry/instrumentation/okhttp/v3_0/OkHttpTelemetryBuilder.java b/instrumentation/okhttp/okhttp-3.0/library/src/main/java/io/opentelemetry/instrumentation/okhttp/v3_0/OkHttpTelemetryBuilder.java index a4a3496546dd..90f26273275a 100644 --- a/instrumentation/okhttp/okhttp-3.0/library/src/main/java/io/opentelemetry/instrumentation/okhttp/v3_0/OkHttpTelemetryBuilder.java +++ b/instrumentation/okhttp/okhttp-3.0/library/src/main/java/io/opentelemetry/instrumentation/okhttp/v3_0/OkHttpTelemetryBuilder.java @@ -15,6 +15,7 @@ import io.opentelemetry.instrumentation.okhttp.v3_0.internal.OkHttpClientInstrumenterBuilderFactory; import java.util.Collection; import java.util.function.Function; +import java.util.function.UnaryOperator; import okhttp3.Interceptor; import okhttp3.Response; @@ -86,11 +87,24 @@ public OkHttpTelemetryBuilder setKnownMethods(Collection knownMethods) { 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 OkHttpTelemetryBuilder setSpanNameExtractor( Function, SpanNameExtractor> spanNameExtractorTransformer) { + return setSpanNameExtractor( + (UnaryOperator>) spanNameExtractorTransformer::apply); + } + + /** Sets custom {@link SpanNameExtractor} via transform function. */ + @CanIgnoreReturnValue + public OkHttpTelemetryBuilder setSpanNameExtractor( + UnaryOperator> spanNameExtractorTransformer) { builder.setSpanNameExtractor(spanNameExtractorTransformer); return this; } diff --git a/instrumentation/r2dbc-1.0/library/src/main/java/io/opentelemetry/instrumentation/r2dbc/v1_0/R2dbcTelemetryBuilder.java b/instrumentation/r2dbc-1.0/library/src/main/java/io/opentelemetry/instrumentation/r2dbc/v1_0/R2dbcTelemetryBuilder.java index 76630c6ff818..e98fb5e48d9b 100644 --- a/instrumentation/r2dbc-1.0/library/src/main/java/io/opentelemetry/instrumentation/r2dbc/v1_0/R2dbcTelemetryBuilder.java +++ b/instrumentation/r2dbc-1.0/library/src/main/java/io/opentelemetry/instrumentation/r2dbc/v1_0/R2dbcTelemetryBuilder.java @@ -13,14 +13,15 @@ import io.opentelemetry.instrumentation.r2dbc.v1_0.internal.Experimental; import io.opentelemetry.instrumentation.r2dbc.v1_0.internal.R2dbcInstrumenterBuilder; import java.util.function.Function; +import java.util.function.UnaryOperator; /** A builder of {@link R2dbcTelemetry}. */ public final class R2dbcTelemetryBuilder { private final R2dbcInstrumenterBuilder instrumenterBuilder; private boolean statementSanitizationEnabled = true; - private Function, ? extends SpanNameExtractor> - spanNameExtractorTransformer = Function.identity(); + private UnaryOperator> spanNameExtractorTransformer = + UnaryOperator.identity(); private boolean sqlCommenterEnabled; static { @@ -50,12 +51,27 @@ public R2dbcTelemetryBuilder setStatementSanitizationEnabled(boolean enabled) { return this; } - /** Sets custom {@link SpanNameExtractor} via transform function. */ + /** + * Sets custom {@link SpanNameExtractor} via transform function. + * + * @deprecated Use {@link #setSpanNameExtractor(UnaryOperator)} instead. + */ + @Deprecated @CanIgnoreReturnValue + @SuppressWarnings("unchecked") // cast result to SpanNameExtractor public R2dbcTelemetryBuilder setSpanNameExtractor( Function, ? extends SpanNameExtractor> spanNameExtractorTransformer) { - this.spanNameExtractorTransformer = spanNameExtractorTransformer; + return setSpanNameExtractor( + (UnaryOperator>) + input -> (SpanNameExtractor) spanNameExtractorTransformer.apply(input)); + } + + /** Sets custom {@link SpanNameExtractor} via transform function. */ + @CanIgnoreReturnValue + public R2dbcTelemetryBuilder setSpanNameExtractor( + UnaryOperator> spanNameExtractor) { + this.spanNameExtractorTransformer = spanNameExtractor; return this; } diff --git a/instrumentation/r2dbc-1.0/library/src/main/java/io/opentelemetry/instrumentation/r2dbc/v1_0/internal/R2dbcInstrumenterBuilder.java b/instrumentation/r2dbc-1.0/library/src/main/java/io/opentelemetry/instrumentation/r2dbc/v1_0/internal/R2dbcInstrumenterBuilder.java index 6db0f3a48caf..3a8c90d3e48b 100644 --- a/instrumentation/r2dbc-1.0/library/src/main/java/io/opentelemetry/instrumentation/r2dbc/v1_0/internal/R2dbcInstrumenterBuilder.java +++ b/instrumentation/r2dbc-1.0/library/src/main/java/io/opentelemetry/instrumentation/r2dbc/v1_0/internal/R2dbcInstrumenterBuilder.java @@ -17,7 +17,7 @@ import io.opentelemetry.instrumentation.api.semconv.network.ServerAttributesExtractor; import java.util.ArrayList; import java.util.List; -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 @@ -44,10 +44,9 @@ public R2dbcInstrumenterBuilder addAttributesExtractor( } public Instrumenter build( - Function, ? extends SpanNameExtractor> - spanNameExtractorTransformer, + UnaryOperator> spanNameExtractorTransformer, boolean statementSanitizationEnabled) { - SpanNameExtractor spanNameExtractor = + SpanNameExtractor spanNameExtractor = spanNameExtractorTransformer.apply( DbClientSpanNameExtractor.create(R2dbcSqlAttributesGetter.INSTANCE)); diff --git a/instrumentation/ratpack/ratpack-1.7/library/src/main/java/io/opentelemetry/instrumentation/ratpack/v1_7/RatpackClientTelemetryBuilder.java b/instrumentation/ratpack/ratpack-1.7/library/src/main/java/io/opentelemetry/instrumentation/ratpack/v1_7/RatpackClientTelemetryBuilder.java index b7c2b6c70217..ff0366d2b534 100644 --- a/instrumentation/ratpack/ratpack-1.7/library/src/main/java/io/opentelemetry/instrumentation/ratpack/v1_7/RatpackClientTelemetryBuilder.java +++ b/instrumentation/ratpack/ratpack-1.7/library/src/main/java/io/opentelemetry/instrumentation/ratpack/v1_7/RatpackClientTelemetryBuilder.java @@ -15,6 +15,7 @@ import io.opentelemetry.instrumentation.ratpack.v1_7.internal.RatpackClientInstrumenterBuilderFactory; import java.util.Collection; import java.util.function.Function; +import java.util.function.UnaryOperator; import ratpack.http.client.HttpResponse; import ratpack.http.client.RequestSpec; @@ -84,11 +85,24 @@ public RatpackClientTelemetryBuilder setKnownMethods(Collection knownMet return this; } - /** Sets custom client {@link SpanNameExtractor} via transform function. */ + /** + * Sets custom client {@link SpanNameExtractor} via transform function. + * + * @deprecated Use {@link #setSpanNameExtractor(UnaryOperator)} instead. + */ + @Deprecated @CanIgnoreReturnValue public RatpackClientTelemetryBuilder setSpanNameExtractor( Function, SpanNameExtractor> clientSpanNameExtractor) { + return setSpanNameExtractor( + (UnaryOperator>) clientSpanNameExtractor::apply); + } + + /** Sets custom client {@link SpanNameExtractor} via transform function. */ + @CanIgnoreReturnValue + public RatpackClientTelemetryBuilder setSpanNameExtractor( + UnaryOperator> clientSpanNameExtractor) { builder.setSpanNameExtractor(clientSpanNameExtractor); return this; } diff --git a/instrumentation/ratpack/ratpack-1.7/library/src/main/java/io/opentelemetry/instrumentation/ratpack/v1_7/RatpackServerTelemetryBuilder.java b/instrumentation/ratpack/ratpack-1.7/library/src/main/java/io/opentelemetry/instrumentation/ratpack/v1_7/RatpackServerTelemetryBuilder.java index 7baa9c082e5d..21df54da775e 100644 --- a/instrumentation/ratpack/ratpack-1.7/library/src/main/java/io/opentelemetry/instrumentation/ratpack/v1_7/RatpackServerTelemetryBuilder.java +++ b/instrumentation/ratpack/ratpack-1.7/library/src/main/java/io/opentelemetry/instrumentation/ratpack/v1_7/RatpackServerTelemetryBuilder.java @@ -15,6 +15,7 @@ import io.opentelemetry.instrumentation.ratpack.v1_7.internal.RatpackServerInstrumenterBuilderFactory; import java.util.Collection; import java.util.function.Function; +import java.util.function.UnaryOperator; import ratpack.http.Request; import ratpack.http.Response; @@ -88,10 +89,23 @@ public RatpackServerTelemetryBuilder setKnownMethods(Collection knownMet return this; } - /** Sets custom server {@link SpanNameExtractor} via transform function. */ + /** + * Sets custom server {@link SpanNameExtractor} via transform function. + * + * @deprecated Use {@link #setSpanNameExtractor(UnaryOperator)} instead. + */ + @Deprecated @CanIgnoreReturnValue public RatpackServerTelemetryBuilder setSpanNameExtractor( Function, SpanNameExtractor> serverSpanNameExtractor) { + return setSpanNameExtractor( + (UnaryOperator>) serverSpanNameExtractor::apply); + } + + /** Sets custom server {@link SpanNameExtractor} via transform function. */ + @CanIgnoreReturnValue + public RatpackServerTelemetryBuilder setSpanNameExtractor( + UnaryOperator> serverSpanNameExtractor) { builder.setSpanNameExtractor(serverSpanNameExtractor); return this; } diff --git a/instrumentation/restlet/restlet-1.1/library/src/main/java/io/opentelemetry/instrumentation/restlet/v1_1/RestletTelemetryBuilder.java b/instrumentation/restlet/restlet-1.1/library/src/main/java/io/opentelemetry/instrumentation/restlet/v1_1/RestletTelemetryBuilder.java index 7c5b724c342d..a0bc0a16f1cf 100644 --- a/instrumentation/restlet/restlet-1.1/library/src/main/java/io/opentelemetry/instrumentation/restlet/v1_1/RestletTelemetryBuilder.java +++ b/instrumentation/restlet/restlet-1.1/library/src/main/java/io/opentelemetry/instrumentation/restlet/v1_1/RestletTelemetryBuilder.java @@ -15,6 +15,7 @@ import io.opentelemetry.instrumentation.restlet.v1_1.internal.RestletTelemetryBuilderFactory; import java.util.Collection; import java.util.function.Function; +import java.util.function.UnaryOperator; import org.restlet.data.Request; import org.restlet.data.Response; @@ -84,11 +85,24 @@ public RestletTelemetryBuilder setKnownMethods(Collection knownMethods) 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 RestletTelemetryBuilder setSpanNameExtractor( Function, SpanNameExtractor> spanNameExtractorTransformer) { + return setSpanNameExtractor( + (UnaryOperator>) spanNameExtractorTransformer::apply); + } + + /** Sets custom {@link SpanNameExtractor} via transform function. */ + @CanIgnoreReturnValue + public RestletTelemetryBuilder setSpanNameExtractor( + UnaryOperator> spanNameExtractorTransformer) { builder.setSpanNameExtractor(spanNameExtractorTransformer); return this; } diff --git a/instrumentation/restlet/restlet-2.0/library/src/main/java/io/opentelemetry/instrumentation/restlet/v2_0/RestletTelemetryBuilder.java b/instrumentation/restlet/restlet-2.0/library/src/main/java/io/opentelemetry/instrumentation/restlet/v2_0/RestletTelemetryBuilder.java index 17dc6fb88bc8..131709a1294e 100644 --- a/instrumentation/restlet/restlet-2.0/library/src/main/java/io/opentelemetry/instrumentation/restlet/v2_0/RestletTelemetryBuilder.java +++ b/instrumentation/restlet/restlet-2.0/library/src/main/java/io/opentelemetry/instrumentation/restlet/v2_0/RestletTelemetryBuilder.java @@ -15,6 +15,7 @@ import io.opentelemetry.instrumentation.restlet.v2_0.internal.RestletTelemetryBuilderFactory; import java.util.Collection; import java.util.function.Function; +import java.util.function.UnaryOperator; import org.restlet.Request; import org.restlet.Response; @@ -84,11 +85,24 @@ public RestletTelemetryBuilder setKnownMethods(Collection knownMethods) 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 RestletTelemetryBuilder setSpanNameExtractor( Function, SpanNameExtractor> spanNameExtractorTransformer) { + return setSpanNameExtractor( + (UnaryOperator>) spanNameExtractorTransformer::apply); + } + + /** Sets custom {@link SpanNameExtractor} via transform function. */ + @CanIgnoreReturnValue + public RestletTelemetryBuilder setSpanNameExtractor( + UnaryOperator> spanNameExtractorTransformer) { builder.setSpanNameExtractor(spanNameExtractorTransformer); return this; } diff --git a/instrumentation/spring/spring-web/spring-web-3.1/library/src/main/java/io/opentelemetry/instrumentation/spring/web/v3_1/SpringWebTelemetryBuilder.java b/instrumentation/spring/spring-web/spring-web-3.1/library/src/main/java/io/opentelemetry/instrumentation/spring/web/v3_1/SpringWebTelemetryBuilder.java index 1fd6ad36ecf2..16edc0b9a133 100644 --- a/instrumentation/spring/spring-web/spring-web-3.1/library/src/main/java/io/opentelemetry/instrumentation/spring/web/v3_1/SpringWebTelemetryBuilder.java +++ b/instrumentation/spring/spring-web/spring-web-3.1/library/src/main/java/io/opentelemetry/instrumentation/spring/web/v3_1/SpringWebTelemetryBuilder.java @@ -15,6 +15,7 @@ import io.opentelemetry.instrumentation.spring.web.v3_1.internal.WebTelemetryUtil; import java.util.Collection; import java.util.function.Function; +import java.util.function.UnaryOperator; import org.springframework.http.HttpRequest; import org.springframework.http.client.ClientHttpResponse; @@ -75,12 +76,25 @@ public SpringWebTelemetryBuilder setCapturedResponseHeaders(Collection r 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 SpringWebTelemetryBuilder setSpanNameExtractor( Function, SpanNameExtractor> spanNameExtractorTransformer) { - builder.setSpanNameExtractor(spanNameExtractorTransformer); + return setSpanNameExtractor( + (UnaryOperator>) spanNameExtractorTransformer::apply); + } + + /** Sets custom {@link SpanNameExtractor} via transform function. */ + @CanIgnoreReturnValue + public SpringWebTelemetryBuilder setSpanNameExtractor( + UnaryOperator> spanNameExtractor) { + builder.setSpanNameExtractor(spanNameExtractor); return this; } diff --git a/instrumentation/spring/spring-webflux/spring-webflux-5.3/library/src/main/java/io/opentelemetry/instrumentation/spring/webflux/v5_3/SpringWebfluxClientTelemetryBuilder.java b/instrumentation/spring/spring-webflux/spring-webflux-5.3/library/src/main/java/io/opentelemetry/instrumentation/spring/webflux/v5_3/SpringWebfluxClientTelemetryBuilder.java index 412887ee6fd5..163505760e05 100644 --- a/instrumentation/spring/spring-webflux/spring-webflux-5.3/library/src/main/java/io/opentelemetry/instrumentation/spring/webflux/v5_3/SpringWebfluxClientTelemetryBuilder.java +++ b/instrumentation/spring/spring-webflux/spring-webflux-5.3/library/src/main/java/io/opentelemetry/instrumentation/spring/webflux/v5_3/SpringWebfluxClientTelemetryBuilder.java @@ -16,6 +16,7 @@ import io.opentelemetry.instrumentation.spring.webflux.v5_3.internal.WebClientHttpAttributesGetter; import java.util.Collection; import java.util.function.Function; +import java.util.function.UnaryOperator; import org.springframework.web.reactive.function.client.ClientRequest; import org.springframework.web.reactive.function.client.ClientResponse; @@ -93,11 +94,24 @@ public SpringWebfluxClientTelemetryBuilder setKnownMethods(Collection kn return this; } - /** Sets custom client {@link SpanNameExtractor} via transform function. */ + /** + * Sets custom client {@link SpanNameExtractor} via transform function. + * + * @deprecated Use {@link #setSpanNameExtractor(UnaryOperator)} instead. + */ + @Deprecated @CanIgnoreReturnValue public SpringWebfluxClientTelemetryBuilder setSpanNameExtractor( Function, SpanNameExtractor> clientSpanNameExtractor) { + return setSpanNameExtractor( + (UnaryOperator>) clientSpanNameExtractor::apply); + } + + /** Sets custom client {@link SpanNameExtractor} via transform function. */ + @CanIgnoreReturnValue + public SpringWebfluxClientTelemetryBuilder setSpanNameExtractor( + UnaryOperator> clientSpanNameExtractor) { builder.setSpanNameExtractor(clientSpanNameExtractor); return this; } diff --git a/instrumentation/spring/spring-webflux/spring-webflux-5.3/library/src/main/java/io/opentelemetry/instrumentation/spring/webflux/v5_3/SpringWebfluxServerTelemetryBuilder.java b/instrumentation/spring/spring-webflux/spring-webflux-5.3/library/src/main/java/io/opentelemetry/instrumentation/spring/webflux/v5_3/SpringWebfluxServerTelemetryBuilder.java index c9eb6f9f7fff..aff8906467db 100644 --- a/instrumentation/spring/spring-webflux/spring-webflux-5.3/library/src/main/java/io/opentelemetry/instrumentation/spring/webflux/v5_3/SpringWebfluxServerTelemetryBuilder.java +++ b/instrumentation/spring/spring-webflux/spring-webflux-5.3/library/src/main/java/io/opentelemetry/instrumentation/spring/webflux/v5_3/SpringWebfluxServerTelemetryBuilder.java @@ -15,6 +15,7 @@ import io.opentelemetry.instrumentation.spring.webflux.v5_3.internal.SpringWebfluxBuilderUtil; import java.util.Collection; import java.util.function.Function; +import java.util.function.UnaryOperator; import org.springframework.web.server.ServerWebExchange; /** A builder of {@link SpringWebfluxServerTelemetry}. */ @@ -94,11 +95,24 @@ public SpringWebfluxServerTelemetryBuilder setKnownMethods(Collection kn return this; } - /** Sets custom server {@link SpanNameExtractor} via transform function. */ + /** + * Sets custom server {@link SpanNameExtractor} via transform function. + * + * @deprecated Use {@link #setSpanNameExtractor(UnaryOperator)} instead. + */ + @Deprecated @CanIgnoreReturnValue public SpringWebfluxServerTelemetryBuilder setSpanNameExtractor( Function, SpanNameExtractor> serverSpanNameExtractor) { + return setSpanNameExtractor( + (UnaryOperator>) serverSpanNameExtractor::apply); + } + + /** Sets custom server {@link SpanNameExtractor} via transform function. */ + @CanIgnoreReturnValue + public SpringWebfluxServerTelemetryBuilder setSpanNameExtractor( + UnaryOperator> serverSpanNameExtractor) { builder.setSpanNameExtractor(serverSpanNameExtractor); return this; } diff --git a/instrumentation/spring/spring-webmvc/spring-webmvc-5.3/library/src/main/java/io/opentelemetry/instrumentation/spring/webmvc/v5_3/SpringWebMvcTelemetryBuilder.java b/instrumentation/spring/spring-webmvc/spring-webmvc-5.3/library/src/main/java/io/opentelemetry/instrumentation/spring/webmvc/v5_3/SpringWebMvcTelemetryBuilder.java index 3be0a85c253d..7273a76de512 100644 --- a/instrumentation/spring/spring-webmvc/spring-webmvc-5.3/library/src/main/java/io/opentelemetry/instrumentation/spring/webmvc/v5_3/SpringWebMvcTelemetryBuilder.java +++ b/instrumentation/spring/spring-webmvc/spring-webmvc-5.3/library/src/main/java/io/opentelemetry/instrumentation/spring/webmvc/v5_3/SpringWebMvcTelemetryBuilder.java @@ -15,6 +15,7 @@ import io.opentelemetry.instrumentation.spring.webmvc.v5_3.internal.SpringMvcBuilderUtil; import java.util.Collection; import java.util.function.Function; +import java.util.function.UnaryOperator; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @@ -75,11 +76,24 @@ public SpringWebMvcTelemetryBuilder setCapturedResponseHeaders( 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 SpringWebMvcTelemetryBuilder setSpanNameExtractor( Function, SpanNameExtractor> spanNameExtractor) { + return setSpanNameExtractor( + (UnaryOperator>) spanNameExtractor::apply); + } + + /** Sets custom {@link SpanNameExtractor} via transform function. */ + @CanIgnoreReturnValue + public SpringWebMvcTelemetryBuilder setSpanNameExtractor( + UnaryOperator> spanNameExtractor) { builder.setSpanNameExtractor(spanNameExtractor); return this; } diff --git a/instrumentation/spring/spring-webmvc/spring-webmvc-6.0/library/src/main/java/io/opentelemetry/instrumentation/spring/webmvc/v6_0/SpringWebMvcTelemetryBuilder.java b/instrumentation/spring/spring-webmvc/spring-webmvc-6.0/library/src/main/java/io/opentelemetry/instrumentation/spring/webmvc/v6_0/SpringWebMvcTelemetryBuilder.java index 95e6537502ac..4604dff9e99a 100644 --- a/instrumentation/spring/spring-webmvc/spring-webmvc-6.0/library/src/main/java/io/opentelemetry/instrumentation/spring/webmvc/v6_0/SpringWebMvcTelemetryBuilder.java +++ b/instrumentation/spring/spring-webmvc/spring-webmvc-6.0/library/src/main/java/io/opentelemetry/instrumentation/spring/webmvc/v6_0/SpringWebMvcTelemetryBuilder.java @@ -17,6 +17,7 @@ import jakarta.servlet.http.HttpServletResponse; import java.util.Collection; import java.util.function.Function; +import java.util.function.UnaryOperator; /** A builder of {@link SpringWebMvcTelemetry}. */ public final class SpringWebMvcTelemetryBuilder { @@ -74,11 +75,24 @@ public SpringWebMvcTelemetryBuilder setCapturedResponseHeaders( 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 SpringWebMvcTelemetryBuilder setSpanNameExtractor( Function, SpanNameExtractor> spanNameExtractor) { + return setSpanNameExtractor( + (UnaryOperator>) spanNameExtractor::apply); + } + + /** Sets custom {@link SpanNameExtractor} via transform function. */ + @CanIgnoreReturnValue + public SpringWebMvcTelemetryBuilder setSpanNameExtractor( + UnaryOperator> spanNameExtractor) { builder.setSpanNameExtractor(spanNameExtractor); return this; }