From bf8be365daf30fd8e8f5b0bf62d1f142060ea0a9 Mon Sep 17 00:00:00 2001 From: Lauri Tulmin Date: Thu, 12 Sep 2024 17:12:55 +0300 Subject: [PATCH] Bridge more incubating api --- .../trace/ApplicationSpan.java | 109 +--------- .../trace/ApplicationSpanBuilder.java | 117 ++++++++++ .../trace/ApplicationTracer.java | 2 +- .../trace/ApplicationTracerFactory.java | 11 + .../trace/ApplicationTracerProvider.java | 12 +- .../metrics/ApplicationDoubleCounter.java | 4 +- .../metrics/ApplicationDoubleHistogram.java | 5 +- .../ApplicationDoubleUpDownCounter.java | 5 +- .../v1_10/metrics/ApplicationLongCounter.java | 4 +- .../metrics/ApplicationLongHistogram.java | 4 +- .../metrics/ApplicationLongUpDownCounter.java | 5 +- .../v1_27/ApplicationOpenTelemetry127.java | 43 +++- .../trace/ApplicationTracerFactory127.java | 18 ++ .../ApplicationDoubleCounterBuilder137.java | 4 +- .../ApplicationDoubleHistogramBuilder137.java | 4 +- ...licationDoubleUpDownCounterBuilder137.java | 4 +- .../ApplicationLongCounterBuilder137.java | 5 +- .../ApplicationLongHistogramBuilder137.java | 4 +- ...pplicationLongUpDownCounterBuilder137.java | 4 +- ...icationDoubleGaugeBuilder138Incubator.java | 4 +- ...plicationLongGaugeBuilder138Incubator.java | 4 +- .../metrics/ApplicationDoubleGauge138.java | 39 ++++ .../ApplicationDoubleGaugeBuilder138.java | 25 +-- .../metrics/ApplicationLongGauge138.java | 39 ++++ .../ApplicationLongGaugeBuilder138.java | 24 +-- .../v1_4/trace/ApplicationTracerBuilder.java | 10 +- .../trace/ApplicationTracerProvider14.java | 15 +- .../javaagent/build.gradle.kts | 26 +++ ...etryApiIncubatorInstrumentationModule.java | 40 ++++ ...OpenTelemetryIncubatorInstrumentation.java | 44 ++++ .../logs/ApplicationLogger140Incubator.java | 24 +++ .../ApplicationLoggerFactory140Incubator.java | 19 ++ .../ApplicationDoubleCounter140Incubator.java | 25 +++ ...ationDoubleCounterBuilder140Incubator.java | 24 +++ .../ApplicationDoubleGauge140Incubator.java | 27 +++ ...icationDoubleGaugeBuilder140Incubator.java | 32 +++ ...pplicationDoubleHistogram140Incubator.java | 27 +++ ...ionDoubleHistogramBuilder140Incubator.java | 32 +++ ...cationDoubleUpDownCounter140Incubator.java | 27 +++ ...oubleUpDownCounterBuilder140Incubator.java | 26 +++ .../ApplicationLongCounter140Incubator.java | 25 +++ ...icationLongCounterBuilder140Incubator.java | 30 +++ .../ApplicationLongGauge140Incubator.java | 26 +++ ...plicationLongGaugeBuilder140Incubator.java | 26 +++ .../ApplicationLongHistogram140Incubator.java | 27 +++ ...ationLongHistogramBuilder140Incubator.java | 25 +++ ...licationLongUpDownCounter140Incubator.java | 27 +++ ...nLongUpDownCounterBuilder140Incubator.java | 32 +++ .../metrics/ApplicationMeter140Incubator.java | 43 ++++ .../ApplicationMeterFactory140Incubator.java | 19 ++ .../ApplicationSpanBuilder140Incubator.java | 202 ++++++++++++++++++ .../trace/ApplicationTracer140Incubator.java | 31 +++ .../ApplicationTracerFactory140Incubator.java | 19 ++ .../v1_40/incubator/logs/LoggerTest.java | 33 +++ .../v1_40/incubator/metrics/MeterTest.java | 85 ++++++++ .../v1_40/incubator/trace/TracerTest.java | 118 ++++++++++ .../javaagent/build.gradle.kts | 22 ++ .../v1_42/incubator/logs/LoggerTest.java | 145 +++++++++++++ ...OpenTelemetryApiInstrumentationModule.java | 8 + ...etryApiIncubatorInstrumentationModule.java | 39 ++++ ...OpenTelemetryIncubatorInstrumentation.java | 40 ++++ .../logs/ApplicationLogRecordBuilder142.java | 74 +++++++ .../logs/ApplicationLogger142Incubator.java | 24 +++ .../ApplicationLoggerFactory142Incubator.java | 19 ++ .../logs/ApplicationLoggerFactory142.java | 1 + .../v1_42/{ => logs}/LoggerTest.java | 2 +- .../build.gradle.kts | 21 ++ settings.gradle.kts | 1 + .../exporter/AgentTestingCustomizer.java | 17 ++ 69 files changed, 1880 insertions(+), 198 deletions(-) create mode 100644 instrumentation/opentelemetry-api/opentelemetry-api-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/trace/ApplicationSpanBuilder.java create mode 100644 instrumentation/opentelemetry-api/opentelemetry-api-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/trace/ApplicationTracerFactory.java create mode 100644 instrumentation/opentelemetry-api/opentelemetry-api-1.27/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_27/trace/ApplicationTracerFactory127.java create mode 100644 instrumentation/opentelemetry-api/opentelemetry-api-1.38/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_38/metrics/ApplicationDoubleGauge138.java create mode 100644 instrumentation/opentelemetry-api/opentelemetry-api-1.38/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_38/metrics/ApplicationLongGauge138.java create mode 100644 instrumentation/opentelemetry-api/opentelemetry-api-1.40/javaagent/build.gradle.kts create mode 100644 instrumentation/opentelemetry-api/opentelemetry-api-1.40/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_40/incubator/OpenTelemetryApiIncubatorInstrumentationModule.java create mode 100644 instrumentation/opentelemetry-api/opentelemetry-api-1.40/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_40/incubator/OpenTelemetryIncubatorInstrumentation.java create mode 100644 instrumentation/opentelemetry-api/opentelemetry-api-1.40/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_40/incubator/logs/ApplicationLogger140Incubator.java create mode 100644 instrumentation/opentelemetry-api/opentelemetry-api-1.40/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_40/incubator/logs/ApplicationLoggerFactory140Incubator.java create mode 100644 instrumentation/opentelemetry-api/opentelemetry-api-1.40/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_40/incubator/metrics/ApplicationDoubleCounter140Incubator.java create mode 100644 instrumentation/opentelemetry-api/opentelemetry-api-1.40/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_40/incubator/metrics/ApplicationDoubleCounterBuilder140Incubator.java create mode 100644 instrumentation/opentelemetry-api/opentelemetry-api-1.40/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_40/incubator/metrics/ApplicationDoubleGauge140Incubator.java create mode 100644 instrumentation/opentelemetry-api/opentelemetry-api-1.40/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_40/incubator/metrics/ApplicationDoubleGaugeBuilder140Incubator.java create mode 100644 instrumentation/opentelemetry-api/opentelemetry-api-1.40/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_40/incubator/metrics/ApplicationDoubleHistogram140Incubator.java create mode 100644 instrumentation/opentelemetry-api/opentelemetry-api-1.40/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_40/incubator/metrics/ApplicationDoubleHistogramBuilder140Incubator.java create mode 100644 instrumentation/opentelemetry-api/opentelemetry-api-1.40/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_40/incubator/metrics/ApplicationDoubleUpDownCounter140Incubator.java create mode 100644 instrumentation/opentelemetry-api/opentelemetry-api-1.40/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_40/incubator/metrics/ApplicationDoubleUpDownCounterBuilder140Incubator.java create mode 100644 instrumentation/opentelemetry-api/opentelemetry-api-1.40/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_40/incubator/metrics/ApplicationLongCounter140Incubator.java create mode 100644 instrumentation/opentelemetry-api/opentelemetry-api-1.40/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_40/incubator/metrics/ApplicationLongCounterBuilder140Incubator.java create mode 100644 instrumentation/opentelemetry-api/opentelemetry-api-1.40/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_40/incubator/metrics/ApplicationLongGauge140Incubator.java create mode 100644 instrumentation/opentelemetry-api/opentelemetry-api-1.40/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_40/incubator/metrics/ApplicationLongGaugeBuilder140Incubator.java create mode 100644 instrumentation/opentelemetry-api/opentelemetry-api-1.40/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_40/incubator/metrics/ApplicationLongHistogram140Incubator.java create mode 100644 instrumentation/opentelemetry-api/opentelemetry-api-1.40/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_40/incubator/metrics/ApplicationLongHistogramBuilder140Incubator.java create mode 100644 instrumentation/opentelemetry-api/opentelemetry-api-1.40/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_40/incubator/metrics/ApplicationLongUpDownCounter140Incubator.java create mode 100644 instrumentation/opentelemetry-api/opentelemetry-api-1.40/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_40/incubator/metrics/ApplicationLongUpDownCounterBuilder140Incubator.java create mode 100644 instrumentation/opentelemetry-api/opentelemetry-api-1.40/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_40/incubator/metrics/ApplicationMeter140Incubator.java create mode 100644 instrumentation/opentelemetry-api/opentelemetry-api-1.40/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_40/incubator/metrics/ApplicationMeterFactory140Incubator.java create mode 100644 instrumentation/opentelemetry-api/opentelemetry-api-1.40/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_40/incubator/trace/ApplicationSpanBuilder140Incubator.java create mode 100644 instrumentation/opentelemetry-api/opentelemetry-api-1.40/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_40/incubator/trace/ApplicationTracer140Incubator.java create mode 100644 instrumentation/opentelemetry-api/opentelemetry-api-1.40/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_40/incubator/trace/ApplicationTracerFactory140Incubator.java create mode 100644 instrumentation/opentelemetry-api/opentelemetry-api-1.40/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_40/incubator/logs/LoggerTest.java create mode 100644 instrumentation/opentelemetry-api/opentelemetry-api-1.40/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_40/incubator/metrics/MeterTest.java create mode 100644 instrumentation/opentelemetry-api/opentelemetry-api-1.40/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_40/incubator/trace/TracerTest.java create mode 100644 instrumentation/opentelemetry-api/opentelemetry-api-1.42/javaagent/src/incubatorTest/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_42/incubator/logs/LoggerTest.java create mode 100644 instrumentation/opentelemetry-api/opentelemetry-api-1.42/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_42/incubator/OpenTelemetryApiIncubatorInstrumentationModule.java create mode 100644 instrumentation/opentelemetry-api/opentelemetry-api-1.42/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_42/incubator/OpenTelemetryIncubatorInstrumentation.java create mode 100644 instrumentation/opentelemetry-api/opentelemetry-api-1.42/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_42/incubator/logs/ApplicationLogRecordBuilder142.java create mode 100644 instrumentation/opentelemetry-api/opentelemetry-api-1.42/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_42/incubator/logs/ApplicationLogger142Incubator.java create mode 100644 instrumentation/opentelemetry-api/opentelemetry-api-1.42/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_42/incubator/logs/ApplicationLoggerFactory142Incubator.java rename instrumentation/opentelemetry-api/opentelemetry-api-1.42/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_42/{ => logs}/LoggerTest.java (99%) diff --git a/instrumentation/opentelemetry-api/opentelemetry-api-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/trace/ApplicationSpan.java b/instrumentation/opentelemetry-api/opentelemetry-api-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/trace/ApplicationSpan.java index ffdd8c46a6fd..8b3b2fc500b8 100644 --- a/instrumentation/opentelemetry-api/opentelemetry-api-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/trace/ApplicationSpan.java +++ b/instrumentation/opentelemetry-api/opentelemetry-api-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/trace/ApplicationSpan.java @@ -5,26 +5,20 @@ package io.opentelemetry.javaagent.instrumentation.opentelemetryapi.trace; -import static io.opentelemetry.javaagent.instrumentation.opentelemetryapi.trace.Bridging.toAgentOrNull; - import application.io.opentelemetry.api.common.AttributeKey; import application.io.opentelemetry.api.common.Attributes; import application.io.opentelemetry.api.trace.Span; -import application.io.opentelemetry.api.trace.SpanBuilder; import application.io.opentelemetry.api.trace.SpanContext; -import application.io.opentelemetry.api.trace.SpanKind; import application.io.opentelemetry.api.trace.StatusCode; -import application.io.opentelemetry.context.Context; import com.google.errorprone.annotations.CanIgnoreReturnValue; -import io.opentelemetry.javaagent.instrumentation.opentelemetryapi.context.AgentContextStorage; import java.util.concurrent.TimeUnit; import javax.annotation.Nullable; -class ApplicationSpan implements Span { +public class ApplicationSpan implements Span { private final io.opentelemetry.api.trace.Span agentSpan; - ApplicationSpan(io.opentelemetry.api.trace.Span agentSpan) { + public ApplicationSpan(io.opentelemetry.api.trace.Span agentSpan) { this.agentSpan = agentSpan; } @@ -190,103 +184,4 @@ public String toString() { public int hashCode() { return agentSpan.hashCode(); } - - static class Builder implements SpanBuilder { - - private final io.opentelemetry.api.trace.SpanBuilder agentBuilder; - - Builder(io.opentelemetry.api.trace.SpanBuilder agentBuilder) { - this.agentBuilder = agentBuilder; - } - - @Override - @CanIgnoreReturnValue - public SpanBuilder setParent(Context applicationContext) { - agentBuilder.setParent(AgentContextStorage.getAgentContext(applicationContext)); - return this; - } - - @Override - @CanIgnoreReturnValue - public SpanBuilder setNoParent() { - agentBuilder.setNoParent(); - return this; - } - - @Override - @CanIgnoreReturnValue - public SpanBuilder addLink(SpanContext applicationSpanContext) { - agentBuilder.addLink(Bridging.toAgent(applicationSpanContext)); - return this; - } - - @Override - @CanIgnoreReturnValue - public SpanBuilder addLink( - SpanContext applicationSpanContext, Attributes applicationAttributes) { - agentBuilder.addLink(Bridging.toAgent(applicationSpanContext)); - return this; - } - - @Override - @CanIgnoreReturnValue - public SpanBuilder setAttribute(String key, String value) { - agentBuilder.setAttribute(key, value); - return this; - } - - @Override - @CanIgnoreReturnValue - public SpanBuilder setAttribute(String key, long value) { - agentBuilder.setAttribute(key, value); - return this; - } - - @Override - @CanIgnoreReturnValue - public SpanBuilder setAttribute(String key, double value) { - agentBuilder.setAttribute(key, value); - return this; - } - - @Override - @CanIgnoreReturnValue - public SpanBuilder setAttribute(String key, boolean value) { - agentBuilder.setAttribute(key, value); - return this; - } - - @Override - @CanIgnoreReturnValue - public SpanBuilder setAttribute(AttributeKey applicationKey, T value) { - @SuppressWarnings("unchecked") - io.opentelemetry.api.common.AttributeKey agentKey = Bridging.toAgent(applicationKey); - if (agentKey != null) { - agentBuilder.setAttribute(agentKey, value); - } - return this; - } - - @Override - @CanIgnoreReturnValue - public SpanBuilder setSpanKind(SpanKind applicationSpanKind) { - io.opentelemetry.api.trace.SpanKind agentSpanKind = toAgentOrNull(applicationSpanKind); - if (agentSpanKind != null) { - agentBuilder.setSpanKind(agentSpanKind); - } - return this; - } - - @Override - @CanIgnoreReturnValue - public SpanBuilder setStartTimestamp(long startTimestamp, TimeUnit unit) { - agentBuilder.setStartTimestamp(startTimestamp, unit); - return this; - } - - @Override - public Span startSpan() { - return new ApplicationSpan(agentBuilder.startSpan()); - } - } } diff --git a/instrumentation/opentelemetry-api/opentelemetry-api-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/trace/ApplicationSpanBuilder.java b/instrumentation/opentelemetry-api/opentelemetry-api-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/trace/ApplicationSpanBuilder.java new file mode 100644 index 000000000000..ce669fc3ab04 --- /dev/null +++ b/instrumentation/opentelemetry-api/opentelemetry-api-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/trace/ApplicationSpanBuilder.java @@ -0,0 +1,117 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + +package io.opentelemetry.javaagent.instrumentation.opentelemetryapi.trace; + +import static io.opentelemetry.javaagent.instrumentation.opentelemetryapi.trace.Bridging.toAgentOrNull; + +import application.io.opentelemetry.api.common.AttributeKey; +import application.io.opentelemetry.api.common.Attributes; +import application.io.opentelemetry.api.trace.Span; +import application.io.opentelemetry.api.trace.SpanBuilder; +import application.io.opentelemetry.api.trace.SpanContext; +import application.io.opentelemetry.api.trace.SpanKind; +import application.io.opentelemetry.context.Context; +import com.google.errorprone.annotations.CanIgnoreReturnValue; +import io.opentelemetry.javaagent.instrumentation.opentelemetryapi.context.AgentContextStorage; +import java.util.concurrent.TimeUnit; + +public class ApplicationSpanBuilder implements SpanBuilder { + + private final io.opentelemetry.api.trace.SpanBuilder agentBuilder; + + protected ApplicationSpanBuilder(io.opentelemetry.api.trace.SpanBuilder agentBuilder) { + this.agentBuilder = agentBuilder; + } + + @Override + @CanIgnoreReturnValue + public SpanBuilder setParent(Context applicationContext) { + agentBuilder.setParent(AgentContextStorage.getAgentContext(applicationContext)); + return this; + } + + @Override + @CanIgnoreReturnValue + public SpanBuilder setNoParent() { + agentBuilder.setNoParent(); + return this; + } + + @Override + @CanIgnoreReturnValue + public SpanBuilder addLink(SpanContext applicationSpanContext) { + agentBuilder.addLink(Bridging.toAgent(applicationSpanContext)); + return this; + } + + @Override + @CanIgnoreReturnValue + public SpanBuilder addLink(SpanContext applicationSpanContext, Attributes applicationAttributes) { + agentBuilder.addLink(Bridging.toAgent(applicationSpanContext)); + return this; + } + + @Override + @CanIgnoreReturnValue + public SpanBuilder setAttribute(String key, String value) { + agentBuilder.setAttribute(key, value); + return this; + } + + @Override + @CanIgnoreReturnValue + public SpanBuilder setAttribute(String key, long value) { + agentBuilder.setAttribute(key, value); + return this; + } + + @Override + @CanIgnoreReturnValue + public SpanBuilder setAttribute(String key, double value) { + agentBuilder.setAttribute(key, value); + return this; + } + + @Override + @CanIgnoreReturnValue + public SpanBuilder setAttribute(String key, boolean value) { + agentBuilder.setAttribute(key, value); + return this; + } + + @Override + @CanIgnoreReturnValue + public SpanBuilder setAttribute(AttributeKey applicationKey, T value) { + @SuppressWarnings("unchecked") + io.opentelemetry.api.common.AttributeKey agentKey = Bridging.toAgent(applicationKey); + if (agentKey != null) { + agentBuilder.setAttribute(agentKey, value); + } + return this; + } + + @Override + @CanIgnoreReturnValue + public SpanBuilder setSpanKind(SpanKind applicationSpanKind) { + io.opentelemetry.api.trace.SpanKind agentSpanKind = toAgentOrNull(applicationSpanKind); + if (agentSpanKind != null) { + agentBuilder.setSpanKind(agentSpanKind); + } + return this; + } + + @Override + @CanIgnoreReturnValue + public SpanBuilder setStartTimestamp(long startTimestamp, TimeUnit unit) { + agentBuilder.setStartTimestamp(startTimestamp, unit); + return this; + } + + @Override + public Span startSpan() { + return new ApplicationSpan(agentBuilder.startSpan()); + } +} diff --git a/instrumentation/opentelemetry-api/opentelemetry-api-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/trace/ApplicationTracer.java b/instrumentation/opentelemetry-api/opentelemetry-api-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/trace/ApplicationTracer.java index 928e4ac790b7..c664ae0acd06 100644 --- a/instrumentation/opentelemetry-api/opentelemetry-api-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/trace/ApplicationTracer.java +++ b/instrumentation/opentelemetry-api/opentelemetry-api-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/trace/ApplicationTracer.java @@ -18,6 +18,6 @@ public ApplicationTracer(io.opentelemetry.api.trace.Tracer agentTracer) { @Override public SpanBuilder spanBuilder(String spanName) { - return new ApplicationSpan.Builder(agentTracer.spanBuilder(spanName)); + return new ApplicationSpanBuilder(agentTracer.spanBuilder(spanName)); } } diff --git a/instrumentation/opentelemetry-api/opentelemetry-api-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/trace/ApplicationTracerFactory.java b/instrumentation/opentelemetry-api/opentelemetry-api-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/trace/ApplicationTracerFactory.java new file mode 100644 index 000000000000..af5460601e24 --- /dev/null +++ b/instrumentation/opentelemetry-api/opentelemetry-api-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/trace/ApplicationTracerFactory.java @@ -0,0 +1,11 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + +package io.opentelemetry.javaagent.instrumentation.opentelemetryapi.trace; + +public interface ApplicationTracerFactory { + + ApplicationTracer newTracer(io.opentelemetry.api.trace.Tracer agentTracer); +} diff --git a/instrumentation/opentelemetry-api/opentelemetry-api-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/trace/ApplicationTracerProvider.java b/instrumentation/opentelemetry-api/opentelemetry-api-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/trace/ApplicationTracerProvider.java index 48f8d20d99bf..a432fce4c8c4 100644 --- a/instrumentation/opentelemetry-api/opentelemetry-api-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/trace/ApplicationTracerProvider.java +++ b/instrumentation/opentelemetry-api/opentelemetry-api-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/trace/ApplicationTracerProvider.java @@ -7,7 +7,6 @@ import application.io.opentelemetry.api.trace.Tracer; import application.io.opentelemetry.api.trace.TracerProvider; -import io.opentelemetry.api.GlobalOpenTelemetry; import java.lang.invoke.MethodHandle; import java.lang.invoke.MethodHandles; import java.lang.invoke.MethodType; @@ -16,10 +15,13 @@ public class ApplicationTracerProvider implements TracerProvider { private static final MethodHandle TRACE_PROVIDER_14 = getApplicationTracerProvider14(); + protected final ApplicationTracerFactory tracerFactory; protected final io.opentelemetry.api.trace.TracerProvider agentTracerProvider; protected ApplicationTracerProvider( + ApplicationTracerFactory tracerFactory, io.opentelemetry.api.trace.TracerProvider agentTracerProvider) { + this.tracerFactory = tracerFactory; this.agentTracerProvider = agentTracerProvider; } @@ -48,17 +50,17 @@ public static TracerProvider create( } } - return new ApplicationTracerProvider(agentTracerProvider); + return new ApplicationTracerProvider(ApplicationTracer::new, agentTracerProvider); } @Override public Tracer get(String instrumentationName) { - return new ApplicationTracer(agentTracerProvider.get(instrumentationName)); + return tracerFactory.newTracer(agentTracerProvider.get(instrumentationName)); } @Override public Tracer get(String instrumentationName, String instrumentationVersion) { - return new ApplicationTracer( - GlobalOpenTelemetry.getTracerProvider().get(instrumentationName, instrumentationVersion)); + return tracerFactory.newTracer( + agentTracerProvider.get(instrumentationName, instrumentationVersion)); } } diff --git a/instrumentation/opentelemetry-api/opentelemetry-api-1.10/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_10/metrics/ApplicationDoubleCounter.java b/instrumentation/opentelemetry-api/opentelemetry-api-1.10/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_10/metrics/ApplicationDoubleCounter.java index 4010b899f984..1a849b372b5f 100644 --- a/instrumentation/opentelemetry-api/opentelemetry-api-1.10/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_10/metrics/ApplicationDoubleCounter.java +++ b/instrumentation/opentelemetry-api/opentelemetry-api-1.10/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_10/metrics/ApplicationDoubleCounter.java @@ -11,11 +11,11 @@ import io.opentelemetry.javaagent.instrumentation.opentelemetryapi.context.AgentContextStorage; import io.opentelemetry.javaagent.instrumentation.opentelemetryapi.trace.Bridging; -class ApplicationDoubleCounter implements DoubleCounter { +public class ApplicationDoubleCounter implements DoubleCounter { private final io.opentelemetry.api.metrics.DoubleCounter agentCounter; - ApplicationDoubleCounter(io.opentelemetry.api.metrics.DoubleCounter agentCounter) { + protected ApplicationDoubleCounter(io.opentelemetry.api.metrics.DoubleCounter agentCounter) { this.agentCounter = agentCounter; } diff --git a/instrumentation/opentelemetry-api/opentelemetry-api-1.10/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_10/metrics/ApplicationDoubleHistogram.java b/instrumentation/opentelemetry-api/opentelemetry-api-1.10/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_10/metrics/ApplicationDoubleHistogram.java index 899b2d7b33a2..f370c7347c5b 100644 --- a/instrumentation/opentelemetry-api/opentelemetry-api-1.10/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_10/metrics/ApplicationDoubleHistogram.java +++ b/instrumentation/opentelemetry-api/opentelemetry-api-1.10/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_10/metrics/ApplicationDoubleHistogram.java @@ -11,11 +11,12 @@ import io.opentelemetry.javaagent.instrumentation.opentelemetryapi.context.AgentContextStorage; import io.opentelemetry.javaagent.instrumentation.opentelemetryapi.trace.Bridging; -final class ApplicationDoubleHistogram implements DoubleHistogram { +public class ApplicationDoubleHistogram implements DoubleHistogram { private final io.opentelemetry.api.metrics.DoubleHistogram agentHistogram; - ApplicationDoubleHistogram(io.opentelemetry.api.metrics.DoubleHistogram agentHistogram) { + protected ApplicationDoubleHistogram( + io.opentelemetry.api.metrics.DoubleHistogram agentHistogram) { this.agentHistogram = agentHistogram; } diff --git a/instrumentation/opentelemetry-api/opentelemetry-api-1.10/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_10/metrics/ApplicationDoubleUpDownCounter.java b/instrumentation/opentelemetry-api/opentelemetry-api-1.10/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_10/metrics/ApplicationDoubleUpDownCounter.java index 7edae2b77615..6d6db90f070b 100644 --- a/instrumentation/opentelemetry-api/opentelemetry-api-1.10/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_10/metrics/ApplicationDoubleUpDownCounter.java +++ b/instrumentation/opentelemetry-api/opentelemetry-api-1.10/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_10/metrics/ApplicationDoubleUpDownCounter.java @@ -11,11 +11,12 @@ import io.opentelemetry.javaagent.instrumentation.opentelemetryapi.context.AgentContextStorage; import io.opentelemetry.javaagent.instrumentation.opentelemetryapi.trace.Bridging; -class ApplicationDoubleUpDownCounter implements DoubleUpDownCounter { +public class ApplicationDoubleUpDownCounter implements DoubleUpDownCounter { private final io.opentelemetry.api.metrics.DoubleUpDownCounter agentCounter; - ApplicationDoubleUpDownCounter(io.opentelemetry.api.metrics.DoubleUpDownCounter agentCounter) { + protected ApplicationDoubleUpDownCounter( + io.opentelemetry.api.metrics.DoubleUpDownCounter agentCounter) { this.agentCounter = agentCounter; } diff --git a/instrumentation/opentelemetry-api/opentelemetry-api-1.10/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_10/metrics/ApplicationLongCounter.java b/instrumentation/opentelemetry-api/opentelemetry-api-1.10/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_10/metrics/ApplicationLongCounter.java index 967a4c9fb873..631ddc2c9d5e 100644 --- a/instrumentation/opentelemetry-api/opentelemetry-api-1.10/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_10/metrics/ApplicationLongCounter.java +++ b/instrumentation/opentelemetry-api/opentelemetry-api-1.10/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_10/metrics/ApplicationLongCounter.java @@ -11,11 +11,11 @@ import io.opentelemetry.javaagent.instrumentation.opentelemetryapi.context.AgentContextStorage; import io.opentelemetry.javaagent.instrumentation.opentelemetryapi.trace.Bridging; -class ApplicationLongCounter implements LongCounter { +public class ApplicationLongCounter implements LongCounter { private final io.opentelemetry.api.metrics.LongCounter agentCounter; - ApplicationLongCounter(io.opentelemetry.api.metrics.LongCounter agentCounter) { + protected ApplicationLongCounter(io.opentelemetry.api.metrics.LongCounter agentCounter) { this.agentCounter = agentCounter; } diff --git a/instrumentation/opentelemetry-api/opentelemetry-api-1.10/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_10/metrics/ApplicationLongHistogram.java b/instrumentation/opentelemetry-api/opentelemetry-api-1.10/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_10/metrics/ApplicationLongHistogram.java index a6a34d7b9a2a..ae938f1f8af3 100644 --- a/instrumentation/opentelemetry-api/opentelemetry-api-1.10/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_10/metrics/ApplicationLongHistogram.java +++ b/instrumentation/opentelemetry-api/opentelemetry-api-1.10/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_10/metrics/ApplicationLongHistogram.java @@ -11,11 +11,11 @@ import io.opentelemetry.javaagent.instrumentation.opentelemetryapi.context.AgentContextStorage; import io.opentelemetry.javaagent.instrumentation.opentelemetryapi.trace.Bridging; -final class ApplicationLongHistogram implements LongHistogram { +public class ApplicationLongHistogram implements LongHistogram { private final io.opentelemetry.api.metrics.LongHistogram agentHistogram; - ApplicationLongHistogram(io.opentelemetry.api.metrics.LongHistogram agentHistogram) { + protected ApplicationLongHistogram(io.opentelemetry.api.metrics.LongHistogram agentHistogram) { this.agentHistogram = agentHistogram; } diff --git a/instrumentation/opentelemetry-api/opentelemetry-api-1.10/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_10/metrics/ApplicationLongUpDownCounter.java b/instrumentation/opentelemetry-api/opentelemetry-api-1.10/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_10/metrics/ApplicationLongUpDownCounter.java index d1519f1f4c01..07da56ca558e 100644 --- a/instrumentation/opentelemetry-api/opentelemetry-api-1.10/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_10/metrics/ApplicationLongUpDownCounter.java +++ b/instrumentation/opentelemetry-api/opentelemetry-api-1.10/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_10/metrics/ApplicationLongUpDownCounter.java @@ -11,11 +11,12 @@ import io.opentelemetry.javaagent.instrumentation.opentelemetryapi.context.AgentContextStorage; import io.opentelemetry.javaagent.instrumentation.opentelemetryapi.trace.Bridging; -class ApplicationLongUpDownCounter implements LongUpDownCounter { +public class ApplicationLongUpDownCounter implements LongUpDownCounter { private final io.opentelemetry.api.metrics.LongUpDownCounter agentCounter; - ApplicationLongUpDownCounter(io.opentelemetry.api.metrics.LongUpDownCounter agentCounter) { + protected ApplicationLongUpDownCounter( + io.opentelemetry.api.metrics.LongUpDownCounter agentCounter) { this.agentCounter = agentCounter; } diff --git a/instrumentation/opentelemetry-api/opentelemetry-api-1.27/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_27/ApplicationOpenTelemetry127.java b/instrumentation/opentelemetry-api/opentelemetry-api-1.27/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_27/ApplicationOpenTelemetry127.java index 51d4d1f49c55..578fe970561b 100644 --- a/instrumentation/opentelemetry-api/opentelemetry-api-1.27/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_27/ApplicationOpenTelemetry127.java +++ b/instrumentation/opentelemetry-api/opentelemetry-api-1.27/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_27/ApplicationOpenTelemetry127.java @@ -11,12 +11,14 @@ import application.io.opentelemetry.api.trace.TracerProvider; import application.io.opentelemetry.context.propagation.ContextPropagators; import io.opentelemetry.javaagent.instrumentation.opentelemetryapi.context.propagation.ApplicationContextPropagators; +import io.opentelemetry.javaagent.instrumentation.opentelemetryapi.trace.ApplicationTracerFactory; import io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_10.metrics.ApplicationMeterFactory; import io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_10.metrics.ApplicationMeterProvider; import io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_15.metrics.ApplicationMeterFactory115; import io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_27.logs.ApplicationLoggerFactory; import io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_27.logs.ApplicationLoggerFactory127; import io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_27.logs.ApplicationLoggerProvider; +import io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_27.trace.ApplicationTracerFactory127; import io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_4.trace.ApplicationTracerProvider14; import java.lang.reflect.InvocationTargetException; @@ -36,7 +38,7 @@ private ApplicationOpenTelemetry127() { io.opentelemetry.api.OpenTelemetry agentOpenTelemetry = io.opentelemetry.api.GlobalOpenTelemetry.get(); applicationTracerProvider = - new ApplicationTracerProvider14(agentOpenTelemetry.getTracerProvider()); + new ApplicationTracerProvider14(getTracerFactory(), agentOpenTelemetry.getTracerProvider()); applicationContextPropagators = new ApplicationContextPropagators(agentOpenTelemetry.getPropagators()); applicationMeterProvider = @@ -66,10 +68,16 @@ public ContextPropagators getPropagators() { } private static ApplicationMeterFactory getMeterFactory() { - // this class is defined in opentelemetry-api-1.38 + // this class is defined in opentelemetry-api-1.40 ApplicationMeterFactory meterFactory = getMeterFactory( - "io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_38.incubator.metrics.ApplicationMeterFactory138Incubator"); + "io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_40.incubator.metrics.ApplicationMeterFactory140Incubator"); + if (meterFactory == null) { + // this class is defined in opentelemetry-api-1.38 + meterFactory = + getMeterFactory( + "io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_38.incubator.metrics.ApplicationMeterFactory138Incubator"); + } if (meterFactory == null) { // this class is defined in opentelemetry-api-1.38 meterFactory = @@ -115,7 +123,18 @@ private static ApplicationLoggerFactory getLoggerFactory() { // this class is defined in opentelemetry-api-1.42 ApplicationLoggerFactory loggerFactory = getLoggerFactory( - "io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_42.logs.ApplicationLoggerFactory142"); + "io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_42.incubator.logs.ApplicationLoggerFactory142Incubator"); + if (loggerFactory == null) { + loggerFactory = + getLoggerFactory( + "io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_42.logs.ApplicationLoggerFactory142"); + } + if (loggerFactory == null) { + // this class is defined in opentelemetry-api-1.40 + loggerFactory = + getLoggerFactory( + "io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_40.incubator.logs.ApplicationLoggerFactory140Incubator"); + } if (loggerFactory == null) { loggerFactory = new ApplicationLoggerFactory127(); } @@ -127,6 +146,22 @@ private static ApplicationLoggerFactory getLoggerFactory(String className) { return getFactory(className, ApplicationLoggerFactory.class); } + private static ApplicationTracerFactory getTracerFactory() { + // this class is defined in opentelemetry-api-1.40 + ApplicationTracerFactory tracerFactory = + getTracerFactory( + "io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_40.incubator.trace.ApplicationTracerFactory140Incubator"); + if (tracerFactory == null) { + tracerFactory = new ApplicationTracerFactory127(); + } + + return tracerFactory; + } + + private static ApplicationTracerFactory getTracerFactory(String className) { + return getFactory(className, ApplicationTracerFactory.class); + } + private static T getFactory(String className, Class factoryClass) { try { Class clazz = Class.forName(className); diff --git a/instrumentation/opentelemetry-api/opentelemetry-api-1.27/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_27/trace/ApplicationTracerFactory127.java b/instrumentation/opentelemetry-api/opentelemetry-api-1.27/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_27/trace/ApplicationTracerFactory127.java new file mode 100644 index 000000000000..439c920b6dde --- /dev/null +++ b/instrumentation/opentelemetry-api/opentelemetry-api-1.27/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_27/trace/ApplicationTracerFactory127.java @@ -0,0 +1,18 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + +package io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_27.trace; + +import io.opentelemetry.api.trace.Tracer; +import io.opentelemetry.javaagent.instrumentation.opentelemetryapi.trace.ApplicationTracer; +import io.opentelemetry.javaagent.instrumentation.opentelemetryapi.trace.ApplicationTracerFactory; + +public class ApplicationTracerFactory127 implements ApplicationTracerFactory { + + @Override + public ApplicationTracer newTracer(Tracer agentTracer) { + return new ApplicationTracer(agentTracer); + } +} diff --git a/instrumentation/opentelemetry-api/opentelemetry-api-1.37/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_37/incubator/metrics/ApplicationDoubleCounterBuilder137.java b/instrumentation/opentelemetry-api/opentelemetry-api-1.37/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_37/incubator/metrics/ApplicationDoubleCounterBuilder137.java index 821d340b9573..2d06d6fc4276 100644 --- a/instrumentation/opentelemetry-api/opentelemetry-api-1.37/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_37/incubator/metrics/ApplicationDoubleCounterBuilder137.java +++ b/instrumentation/opentelemetry-api/opentelemetry-api-1.37/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_37/incubator/metrics/ApplicationDoubleCounterBuilder137.java @@ -11,12 +11,12 @@ import io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_10.metrics.ApplicationDoubleCounterBuilder; import java.util.List; -final class ApplicationDoubleCounterBuilder137 extends ApplicationDoubleCounterBuilder +public class ApplicationDoubleCounterBuilder137 extends ApplicationDoubleCounterBuilder implements ExtendedDoubleCounterBuilder { private final io.opentelemetry.api.metrics.DoubleCounterBuilder agentBuilder; - ApplicationDoubleCounterBuilder137( + protected ApplicationDoubleCounterBuilder137( io.opentelemetry.api.metrics.DoubleCounterBuilder agentBuilder) { super(agentBuilder); this.agentBuilder = agentBuilder; diff --git a/instrumentation/opentelemetry-api/opentelemetry-api-1.37/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_37/incubator/metrics/ApplicationDoubleHistogramBuilder137.java b/instrumentation/opentelemetry-api/opentelemetry-api-1.37/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_37/incubator/metrics/ApplicationDoubleHistogramBuilder137.java index 71abc45bc6c0..a1e8cd332a86 100644 --- a/instrumentation/opentelemetry-api/opentelemetry-api-1.37/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_37/incubator/metrics/ApplicationDoubleHistogramBuilder137.java +++ b/instrumentation/opentelemetry-api/opentelemetry-api-1.37/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_37/incubator/metrics/ApplicationDoubleHistogramBuilder137.java @@ -12,12 +12,12 @@ import io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_10.metrics.ApplicationDoubleHistogramBuilder; import java.util.List; -final class ApplicationDoubleHistogramBuilder137 extends ApplicationDoubleHistogramBuilder +public class ApplicationDoubleHistogramBuilder137 extends ApplicationDoubleHistogramBuilder implements ExtendedDoubleHistogramBuilder { private final io.opentelemetry.api.metrics.DoubleHistogramBuilder agentBuilder; - ApplicationDoubleHistogramBuilder137( + protected ApplicationDoubleHistogramBuilder137( io.opentelemetry.api.metrics.DoubleHistogramBuilder agentBuilder) { super(agentBuilder); this.agentBuilder = agentBuilder; diff --git a/instrumentation/opentelemetry-api/opentelemetry-api-1.37/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_37/incubator/metrics/ApplicationDoubleUpDownCounterBuilder137.java b/instrumentation/opentelemetry-api/opentelemetry-api-1.37/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_37/incubator/metrics/ApplicationDoubleUpDownCounterBuilder137.java index 5256ae19c79a..0708278eb8ad 100644 --- a/instrumentation/opentelemetry-api/opentelemetry-api-1.37/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_37/incubator/metrics/ApplicationDoubleUpDownCounterBuilder137.java +++ b/instrumentation/opentelemetry-api/opentelemetry-api-1.37/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_37/incubator/metrics/ApplicationDoubleUpDownCounterBuilder137.java @@ -11,12 +11,12 @@ import io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_10.metrics.ApplicationDoubleUpDownCounterBuilder; import java.util.List; -final class ApplicationDoubleUpDownCounterBuilder137 extends ApplicationDoubleUpDownCounterBuilder +public class ApplicationDoubleUpDownCounterBuilder137 extends ApplicationDoubleUpDownCounterBuilder implements ExtendedDoubleUpDownCounterBuilder { private final io.opentelemetry.api.metrics.DoubleUpDownCounterBuilder agentBuilder; - ApplicationDoubleUpDownCounterBuilder137( + protected ApplicationDoubleUpDownCounterBuilder137( io.opentelemetry.api.metrics.DoubleUpDownCounterBuilder agentBuilder) { super(agentBuilder); this.agentBuilder = agentBuilder; diff --git a/instrumentation/opentelemetry-api/opentelemetry-api-1.37/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_37/incubator/metrics/ApplicationLongCounterBuilder137.java b/instrumentation/opentelemetry-api/opentelemetry-api-1.37/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_37/incubator/metrics/ApplicationLongCounterBuilder137.java index c72320e59f1b..0199171a6c8d 100644 --- a/instrumentation/opentelemetry-api/opentelemetry-api-1.37/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_37/incubator/metrics/ApplicationLongCounterBuilder137.java +++ b/instrumentation/opentelemetry-api/opentelemetry-api-1.37/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_37/incubator/metrics/ApplicationLongCounterBuilder137.java @@ -12,12 +12,13 @@ import io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_10.metrics.ApplicationLongCounterBuilder; import java.util.List; -final class ApplicationLongCounterBuilder137 extends ApplicationLongCounterBuilder +public class ApplicationLongCounterBuilder137 extends ApplicationLongCounterBuilder implements ExtendedLongCounterBuilder { private final io.opentelemetry.api.metrics.LongCounterBuilder agentBuilder; - ApplicationLongCounterBuilder137(io.opentelemetry.api.metrics.LongCounterBuilder agentBuilder) { + protected ApplicationLongCounterBuilder137( + io.opentelemetry.api.metrics.LongCounterBuilder agentBuilder) { super(agentBuilder); this.agentBuilder = agentBuilder; } diff --git a/instrumentation/opentelemetry-api/opentelemetry-api-1.37/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_37/incubator/metrics/ApplicationLongHistogramBuilder137.java b/instrumentation/opentelemetry-api/opentelemetry-api-1.37/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_37/incubator/metrics/ApplicationLongHistogramBuilder137.java index 053d14c4ed85..4160bd8382a7 100644 --- a/instrumentation/opentelemetry-api/opentelemetry-api-1.37/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_37/incubator/metrics/ApplicationLongHistogramBuilder137.java +++ b/instrumentation/opentelemetry-api/opentelemetry-api-1.37/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_37/incubator/metrics/ApplicationLongHistogramBuilder137.java @@ -11,12 +11,12 @@ import io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_10.metrics.ApplicationLongHistogramBuilder; import java.util.List; -final class ApplicationLongHistogramBuilder137 extends ApplicationLongHistogramBuilder +public class ApplicationLongHistogramBuilder137 extends ApplicationLongHistogramBuilder implements ExtendedLongHistogramBuilder { private final io.opentelemetry.api.metrics.LongHistogramBuilder agentBuilder; - ApplicationLongHistogramBuilder137( + protected ApplicationLongHistogramBuilder137( io.opentelemetry.api.metrics.LongHistogramBuilder agentBuilder) { super(agentBuilder); this.agentBuilder = agentBuilder; diff --git a/instrumentation/opentelemetry-api/opentelemetry-api-1.37/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_37/incubator/metrics/ApplicationLongUpDownCounterBuilder137.java b/instrumentation/opentelemetry-api/opentelemetry-api-1.37/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_37/incubator/metrics/ApplicationLongUpDownCounterBuilder137.java index 3dda4d32fbd9..613366826baa 100644 --- a/instrumentation/opentelemetry-api/opentelemetry-api-1.37/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_37/incubator/metrics/ApplicationLongUpDownCounterBuilder137.java +++ b/instrumentation/opentelemetry-api/opentelemetry-api-1.37/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_37/incubator/metrics/ApplicationLongUpDownCounterBuilder137.java @@ -12,12 +12,12 @@ import io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_10.metrics.ApplicationLongUpDownCounterBuilder; import java.util.List; -final class ApplicationLongUpDownCounterBuilder137 extends ApplicationLongUpDownCounterBuilder +public class ApplicationLongUpDownCounterBuilder137 extends ApplicationLongUpDownCounterBuilder implements ExtendedLongUpDownCounterBuilder { private final io.opentelemetry.api.metrics.LongUpDownCounterBuilder agentBuilder; - ApplicationLongUpDownCounterBuilder137( + protected ApplicationLongUpDownCounterBuilder137( io.opentelemetry.api.metrics.LongUpDownCounterBuilder agentBuilder) { super(agentBuilder); this.agentBuilder = agentBuilder; diff --git a/instrumentation/opentelemetry-api/opentelemetry-api-1.38/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_38/incubator/metrics/ApplicationDoubleGaugeBuilder138Incubator.java b/instrumentation/opentelemetry-api/opentelemetry-api-1.38/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_38/incubator/metrics/ApplicationDoubleGaugeBuilder138Incubator.java index 738c377a28a2..4527781fcf65 100644 --- a/instrumentation/opentelemetry-api/opentelemetry-api-1.38/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_38/incubator/metrics/ApplicationDoubleGaugeBuilder138Incubator.java +++ b/instrumentation/opentelemetry-api/opentelemetry-api-1.38/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_38/incubator/metrics/ApplicationDoubleGaugeBuilder138Incubator.java @@ -12,12 +12,12 @@ import io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_38.metrics.ApplicationDoubleGaugeBuilder138; import java.util.List; -final class ApplicationDoubleGaugeBuilder138Incubator extends ApplicationDoubleGaugeBuilder138 +public class ApplicationDoubleGaugeBuilder138Incubator extends ApplicationDoubleGaugeBuilder138 implements ExtendedDoubleGaugeBuilder { private final io.opentelemetry.api.metrics.DoubleGaugeBuilder agentBuilder; - ApplicationDoubleGaugeBuilder138Incubator( + protected ApplicationDoubleGaugeBuilder138Incubator( io.opentelemetry.api.metrics.DoubleGaugeBuilder agentBuilder) { super(agentBuilder); this.agentBuilder = agentBuilder; diff --git a/instrumentation/opentelemetry-api/opentelemetry-api-1.38/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_38/incubator/metrics/ApplicationLongGaugeBuilder138Incubator.java b/instrumentation/opentelemetry-api/opentelemetry-api-1.38/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_38/incubator/metrics/ApplicationLongGaugeBuilder138Incubator.java index ecb96be16642..a6321cd85605 100644 --- a/instrumentation/opentelemetry-api/opentelemetry-api-1.38/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_38/incubator/metrics/ApplicationLongGaugeBuilder138Incubator.java +++ b/instrumentation/opentelemetry-api/opentelemetry-api-1.38/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_38/incubator/metrics/ApplicationLongGaugeBuilder138Incubator.java @@ -11,12 +11,12 @@ import io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_38.metrics.ApplicationLongGaugeBuilder138; import java.util.List; -final class ApplicationLongGaugeBuilder138Incubator extends ApplicationLongGaugeBuilder138 +public class ApplicationLongGaugeBuilder138Incubator extends ApplicationLongGaugeBuilder138 implements ExtendedLongGaugeBuilder { private final io.opentelemetry.api.metrics.LongGaugeBuilder agentBuilder; - ApplicationLongGaugeBuilder138Incubator( + protected ApplicationLongGaugeBuilder138Incubator( io.opentelemetry.api.metrics.LongGaugeBuilder agentBuilder) { super(agentBuilder); this.agentBuilder = agentBuilder; diff --git a/instrumentation/opentelemetry-api/opentelemetry-api-1.38/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_38/metrics/ApplicationDoubleGauge138.java b/instrumentation/opentelemetry-api/opentelemetry-api-1.38/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_38/metrics/ApplicationDoubleGauge138.java new file mode 100644 index 000000000000..7d0a729a321a --- /dev/null +++ b/instrumentation/opentelemetry-api/opentelemetry-api-1.38/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_38/metrics/ApplicationDoubleGauge138.java @@ -0,0 +1,39 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + +package io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_38.metrics; + +import application.io.opentelemetry.api.common.Attributes; +import application.io.opentelemetry.api.metrics.DoubleGauge; +import application.io.opentelemetry.context.Context; +import io.opentelemetry.javaagent.instrumentation.opentelemetryapi.context.AgentContextStorage; +import io.opentelemetry.javaagent.instrumentation.opentelemetryapi.trace.Bridging; + +public class ApplicationDoubleGauge138 implements DoubleGauge { + + private final io.opentelemetry.api.metrics.DoubleGauge agentDoubleGauge; + + protected ApplicationDoubleGauge138(io.opentelemetry.api.metrics.DoubleGauge agentDoubleGauge) { + this.agentDoubleGauge = agentDoubleGauge; + } + + @Override + public void set(double value) { + agentDoubleGauge.set(value); + } + + @Override + public void set(double value, Attributes attributes) { + agentDoubleGauge.set(value, Bridging.toAgent(attributes)); + } + + @Override + public void set(double value, Attributes attributes, Context applicationContext) { + agentDoubleGauge.set( + value, + Bridging.toAgent(attributes), + AgentContextStorage.getAgentContext(applicationContext)); + } +} diff --git a/instrumentation/opentelemetry-api/opentelemetry-api-1.38/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_38/metrics/ApplicationDoubleGaugeBuilder138.java b/instrumentation/opentelemetry-api/opentelemetry-api-1.38/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_38/metrics/ApplicationDoubleGaugeBuilder138.java index f5bd88c9d409..e84ff1002a3c 100644 --- a/instrumentation/opentelemetry-api/opentelemetry-api-1.38/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_38/metrics/ApplicationDoubleGaugeBuilder138.java +++ b/instrumentation/opentelemetry-api/opentelemetry-api-1.38/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_38/metrics/ApplicationDoubleGaugeBuilder138.java @@ -5,12 +5,8 @@ package io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_38.metrics; -import application.io.opentelemetry.api.common.Attributes; import application.io.opentelemetry.api.metrics.DoubleGauge; import application.io.opentelemetry.api.metrics.LongGaugeBuilder; -import application.io.opentelemetry.context.Context; -import io.opentelemetry.javaagent.instrumentation.opentelemetryapi.context.AgentContextStorage; -import io.opentelemetry.javaagent.instrumentation.opentelemetryapi.trace.Bridging; import io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_10.metrics.ApplicationDoubleGaugeBuilder; public class ApplicationDoubleGaugeBuilder138 extends ApplicationDoubleGaugeBuilder { @@ -31,25 +27,6 @@ public LongGaugeBuilder ofLongs() { @Override public DoubleGauge build() { io.opentelemetry.api.metrics.DoubleGauge agentDoubleGauge = agentBuilder.build(); - return new DoubleGauge() { - - @Override - public void set(double value) { - agentDoubleGauge.set(value); - } - - @Override - public void set(double value, Attributes attributes) { - agentDoubleGauge.set(value, Bridging.toAgent(attributes)); - } - - @Override - public void set(double value, Attributes attributes, Context applicationContext) { - agentDoubleGauge.set( - value, - Bridging.toAgent(attributes), - AgentContextStorage.getAgentContext(applicationContext)); - } - }; + return new ApplicationDoubleGauge138(agentDoubleGauge); } } diff --git a/instrumentation/opentelemetry-api/opentelemetry-api-1.38/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_38/metrics/ApplicationLongGauge138.java b/instrumentation/opentelemetry-api/opentelemetry-api-1.38/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_38/metrics/ApplicationLongGauge138.java new file mode 100644 index 000000000000..9f0eeb488f20 --- /dev/null +++ b/instrumentation/opentelemetry-api/opentelemetry-api-1.38/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_38/metrics/ApplicationLongGauge138.java @@ -0,0 +1,39 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + +package io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_38.metrics; + +import application.io.opentelemetry.api.common.Attributes; +import application.io.opentelemetry.api.metrics.LongGauge; +import application.io.opentelemetry.context.Context; +import io.opentelemetry.javaagent.instrumentation.opentelemetryapi.context.AgentContextStorage; +import io.opentelemetry.javaagent.instrumentation.opentelemetryapi.trace.Bridging; + +public class ApplicationLongGauge138 implements LongGauge { + + private final io.opentelemetry.api.metrics.LongGauge agentLongGauge; + + protected ApplicationLongGauge138(io.opentelemetry.api.metrics.LongGauge agentLongGauge) { + this.agentLongGauge = agentLongGauge; + } + + @Override + public void set(long value) { + agentLongGauge.set(value); + } + + @Override + public void set(long value, Attributes attributes) { + agentLongGauge.set(value, Bridging.toAgent(attributes)); + } + + @Override + public void set(long value, Attributes attributes, Context applicationContext) { + agentLongGauge.set( + value, + Bridging.toAgent(attributes), + AgentContextStorage.getAgentContext(applicationContext)); + } +} diff --git a/instrumentation/opentelemetry-api/opentelemetry-api-1.38/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_38/metrics/ApplicationLongGaugeBuilder138.java b/instrumentation/opentelemetry-api/opentelemetry-api-1.38/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_38/metrics/ApplicationLongGaugeBuilder138.java index 288c16a53c7a..4f415436a24f 100644 --- a/instrumentation/opentelemetry-api/opentelemetry-api-1.38/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_38/metrics/ApplicationLongGaugeBuilder138.java +++ b/instrumentation/opentelemetry-api/opentelemetry-api-1.38/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_38/metrics/ApplicationLongGaugeBuilder138.java @@ -5,11 +5,7 @@ package io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_38.metrics; -import application.io.opentelemetry.api.common.Attributes; import application.io.opentelemetry.api.metrics.LongGauge; -import application.io.opentelemetry.context.Context; -import io.opentelemetry.javaagent.instrumentation.opentelemetryapi.context.AgentContextStorage; -import io.opentelemetry.javaagent.instrumentation.opentelemetryapi.trace.Bridging; import io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_10.metrics.ApplicationLongGaugeBuilder; public class ApplicationLongGaugeBuilder138 extends ApplicationLongGaugeBuilder { @@ -25,24 +21,6 @@ protected ApplicationLongGaugeBuilder138( @Override public LongGauge build() { io.opentelemetry.api.metrics.LongGauge agentLongGauge = agentBuilder.build(); - return new LongGauge() { - @Override - public void set(long value) { - agentLongGauge.set(value); - } - - @Override - public void set(long value, Attributes attributes) { - agentLongGauge.set(value, Bridging.toAgent(attributes)); - } - - @Override - public void set(long value, Attributes attributes, Context applicationContext) { - agentLongGauge.set( - value, - Bridging.toAgent(attributes), - AgentContextStorage.getAgentContext(applicationContext)); - } - }; + return new ApplicationLongGauge138(agentLongGauge); } } diff --git a/instrumentation/opentelemetry-api/opentelemetry-api-1.4/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_4/trace/ApplicationTracerBuilder.java b/instrumentation/opentelemetry-api/opentelemetry-api-1.4/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_4/trace/ApplicationTracerBuilder.java index 1a9dd388989b..1d34034acc83 100644 --- a/instrumentation/opentelemetry-api/opentelemetry-api-1.4/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_4/trace/ApplicationTracerBuilder.java +++ b/instrumentation/opentelemetry-api/opentelemetry-api-1.4/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_4/trace/ApplicationTracerBuilder.java @@ -8,13 +8,17 @@ import application.io.opentelemetry.api.trace.Tracer; import application.io.opentelemetry.api.trace.TracerBuilder; import com.google.errorprone.annotations.CanIgnoreReturnValue; -import io.opentelemetry.javaagent.instrumentation.opentelemetryapi.trace.ApplicationTracer; +import io.opentelemetry.javaagent.instrumentation.opentelemetryapi.trace.ApplicationTracerFactory; class ApplicationTracerBuilder implements TracerBuilder { + private final ApplicationTracerFactory tracerFactory; private final io.opentelemetry.api.trace.TracerBuilder agentTracerBuilder; - public ApplicationTracerBuilder(io.opentelemetry.api.trace.TracerBuilder agentTracerBuilder) { + public ApplicationTracerBuilder( + ApplicationTracerFactory tracerFactory, + io.opentelemetry.api.trace.TracerBuilder agentTracerBuilder) { + this.tracerFactory = tracerFactory; this.agentTracerBuilder = agentTracerBuilder; } @@ -34,6 +38,6 @@ public TracerBuilder setInstrumentationVersion(String version) { @Override public Tracer build() { - return new ApplicationTracer(agentTracerBuilder.build()); + return tracerFactory.newTracer(agentTracerBuilder.build()); } } diff --git a/instrumentation/opentelemetry-api/opentelemetry-api-1.4/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_4/trace/ApplicationTracerProvider14.java b/instrumentation/opentelemetry-api/opentelemetry-api-1.4/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_4/trace/ApplicationTracerProvider14.java index 26d442847e11..367e5b6254f2 100644 --- a/instrumentation/opentelemetry-api/opentelemetry-api-1.4/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_4/trace/ApplicationTracerProvider14.java +++ b/instrumentation/opentelemetry-api/opentelemetry-api-1.4/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_4/trace/ApplicationTracerProvider14.java @@ -6,6 +6,8 @@ package io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_4.trace; import application.io.opentelemetry.api.trace.TracerBuilder; +import io.opentelemetry.javaagent.instrumentation.opentelemetryapi.trace.ApplicationTracer; +import io.opentelemetry.javaagent.instrumentation.opentelemetryapi.trace.ApplicationTracerFactory; import io.opentelemetry.javaagent.instrumentation.opentelemetryapi.trace.ApplicationTracerProvider; // this class is used from opentelemetry-api-1.0 via reflection @@ -15,11 +17,20 @@ public class ApplicationTracerProvider14 extends ApplicationTracerProvider { @SuppressWarnings("UnnecessarilyFullyQualified") public ApplicationTracerProvider14( io.opentelemetry.api.trace.TracerProvider agentTracerProvider) { - super(agentTracerProvider); + this(ApplicationTracer::new, agentTracerProvider); + } + + // Our convention for accessing agent package + @SuppressWarnings("UnnecessarilyFullyQualified") + public ApplicationTracerProvider14( + ApplicationTracerFactory tracerFactory, + io.opentelemetry.api.trace.TracerProvider agentTracerProvider) { + super(tracerFactory, agentTracerProvider); } @Override public TracerBuilder tracerBuilder(String instrumentationName) { - return new ApplicationTracerBuilder(agentTracerProvider.tracerBuilder(instrumentationName)); + return new ApplicationTracerBuilder( + tracerFactory, agentTracerProvider.tracerBuilder(instrumentationName)); } } diff --git a/instrumentation/opentelemetry-api/opentelemetry-api-1.40/javaagent/build.gradle.kts b/instrumentation/opentelemetry-api/opentelemetry-api-1.40/javaagent/build.gradle.kts new file mode 100644 index 000000000000..355241a00dfd --- /dev/null +++ b/instrumentation/opentelemetry-api/opentelemetry-api-1.40/javaagent/build.gradle.kts @@ -0,0 +1,26 @@ +plugins { + id("otel.javaagent-instrumentation") +} + +dependencies { + compileOnly(project(":opentelemetry-api-shaded-for-instrumenting", configuration = "v1_40")) + compileOnly("io.opentelemetry:opentelemetry-api-incubator") + + implementation(project(":instrumentation:opentelemetry-api:opentelemetry-api-1.0:javaagent")) + implementation(project(":instrumentation:opentelemetry-api:opentelemetry-api-1.4:javaagent")) + implementation(project(":instrumentation:opentelemetry-api:opentelemetry-api-1.10:javaagent")) + implementation(project(":instrumentation:opentelemetry-api:opentelemetry-api-1.15:javaagent")) + implementation(project(":instrumentation:opentelemetry-api:opentelemetry-api-1.27:javaagent")) + implementation(project(":instrumentation:opentelemetry-api:opentelemetry-api-1.31:javaagent")) + implementation(project(":instrumentation:opentelemetry-api:opentelemetry-api-1.32:javaagent")) + implementation(project(":instrumentation:opentelemetry-api:opentelemetry-api-1.37:javaagent")) + implementation(project(":instrumentation:opentelemetry-api:opentelemetry-api-1.38:javaagent")) +} + +configurations.configureEach { + if (name.endsWith("testRuntimeClasspath", true) || name.endsWith("testCompileClasspath", true)) { + resolutionStrategy { + force("io.opentelemetry:opentelemetry-api:1.40.0") + } + } +} diff --git a/instrumentation/opentelemetry-api/opentelemetry-api-1.40/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_40/incubator/OpenTelemetryApiIncubatorInstrumentationModule.java b/instrumentation/opentelemetry-api/opentelemetry-api-1.40/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_40/incubator/OpenTelemetryApiIncubatorInstrumentationModule.java new file mode 100644 index 000000000000..b0e94837346a --- /dev/null +++ b/instrumentation/opentelemetry-api/opentelemetry-api-1.40/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_40/incubator/OpenTelemetryApiIncubatorInstrumentationModule.java @@ -0,0 +1,40 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + +package io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_40.incubator; + +import static io.opentelemetry.javaagent.extension.matcher.AgentElementMatchers.hasClassesNamed; +import static java.util.Collections.singletonList; + +import com.google.auto.service.AutoService; +import io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule; +import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; +import io.opentelemetry.javaagent.extension.instrumentation.internal.ExperimentalInstrumentationModule; +import java.util.List; +import net.bytebuddy.matcher.ElementMatcher; + +@AutoService(InstrumentationModule.class) +public class OpenTelemetryApiIncubatorInstrumentationModule extends InstrumentationModule + implements ExperimentalInstrumentationModule { + public OpenTelemetryApiIncubatorInstrumentationModule() { + super("opentelemetry-api", "opentelemetry-api-1.40", "opentelemetry-api-incubator-1.40"); + } + + @Override + public ElementMatcher.Junction classLoaderMatcher() { + return hasClassesNamed( + "application.io.opentelemetry.api.incubator.metrics.ExtendedDoubleHistogram"); + } + + @Override + public List typeInstrumentations() { + return singletonList(new OpenTelemetryIncubatorInstrumentation()); + } + + @Override + public String getModuleGroup() { + return "opentelemetry-api-bridge"; + } +} diff --git a/instrumentation/opentelemetry-api/opentelemetry-api-1.40/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_40/incubator/OpenTelemetryIncubatorInstrumentation.java b/instrumentation/opentelemetry-api/opentelemetry-api-1.40/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_40/incubator/OpenTelemetryIncubatorInstrumentation.java new file mode 100644 index 000000000000..15bd85bfd5db --- /dev/null +++ b/instrumentation/opentelemetry-api/opentelemetry-api-1.40/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_40/incubator/OpenTelemetryIncubatorInstrumentation.java @@ -0,0 +1,44 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + +package io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_40.incubator; + +import static net.bytebuddy.matcher.ElementMatchers.named; +import static net.bytebuddy.matcher.ElementMatchers.none; + +import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; +import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; +import io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_40.incubator.logs.ApplicationLoggerFactory140Incubator; +import io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_40.incubator.metrics.ApplicationMeterFactory140Incubator; +import io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_40.incubator.trace.ApplicationTracerFactory140Incubator; +import net.bytebuddy.asm.Advice; +import net.bytebuddy.description.type.TypeDescription; +import net.bytebuddy.matcher.ElementMatcher; + +public class OpenTelemetryIncubatorInstrumentation implements TypeInstrumentation { + + @Override + public ElementMatcher typeMatcher() { + return named("application.io.opentelemetry.api.GlobalOpenTelemetry"); + } + + @Override + public void transform(TypeTransformer transformer) { + transformer.applyAdviceToMethod( + none(), OpenTelemetryIncubatorInstrumentation.class.getName() + "$InitAdvice"); + } + + @SuppressWarnings({"ReturnValueIgnored", "unused"}) + public static class InitAdvice { + @Advice.OnMethodEnter + public static void init() { + // the sole purpose of this advice is to ensure that these classes are recognized as helper + // class and injected into class loader + ApplicationLoggerFactory140Incubator.class.getName(); + ApplicationMeterFactory140Incubator.class.getName(); + ApplicationTracerFactory140Incubator.class.getName(); + } + } +} diff --git a/instrumentation/opentelemetry-api/opentelemetry-api-1.40/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_40/incubator/logs/ApplicationLogger140Incubator.java b/instrumentation/opentelemetry-api/opentelemetry-api-1.40/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_40/incubator/logs/ApplicationLogger140Incubator.java new file mode 100644 index 000000000000..6096c81796da --- /dev/null +++ b/instrumentation/opentelemetry-api/opentelemetry-api-1.40/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_40/incubator/logs/ApplicationLogger140Incubator.java @@ -0,0 +1,24 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + +package io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_40.incubator.logs; + +import application.io.opentelemetry.api.incubator.logs.ExtendedLogger; +import io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_27.logs.ApplicationLogger; + +public class ApplicationLogger140Incubator extends ApplicationLogger implements ExtendedLogger { + + private final io.opentelemetry.api.logs.Logger agentLogger; + + protected ApplicationLogger140Incubator(io.opentelemetry.api.logs.Logger agentLogger) { + super(agentLogger); + this.agentLogger = agentLogger; + } + + @Override + public boolean isEnabled() { + return ((io.opentelemetry.api.incubator.logs.ExtendedLogger) agentLogger).isEnabled(); + } +} diff --git a/instrumentation/opentelemetry-api/opentelemetry-api-1.40/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_40/incubator/logs/ApplicationLoggerFactory140Incubator.java b/instrumentation/opentelemetry-api/opentelemetry-api-1.40/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_40/incubator/logs/ApplicationLoggerFactory140Incubator.java new file mode 100644 index 000000000000..49ba15e974d1 --- /dev/null +++ b/instrumentation/opentelemetry-api/opentelemetry-api-1.40/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_40/incubator/logs/ApplicationLoggerFactory140Incubator.java @@ -0,0 +1,19 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + +package io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_40.incubator.logs; + +import io.opentelemetry.api.logs.Logger; +import io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_27.logs.ApplicationLogger; +import io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_27.logs.ApplicationLoggerFactory; + +// this class is used from opentelemetry-api-1.27.0 via reflection +public class ApplicationLoggerFactory140Incubator implements ApplicationLoggerFactory { + + @Override + public ApplicationLogger newLogger(Logger agentLogger) { + return new ApplicationLogger140Incubator(agentLogger); + } +} diff --git a/instrumentation/opentelemetry-api/opentelemetry-api-1.40/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_40/incubator/metrics/ApplicationDoubleCounter140Incubator.java b/instrumentation/opentelemetry-api/opentelemetry-api-1.40/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_40/incubator/metrics/ApplicationDoubleCounter140Incubator.java new file mode 100644 index 000000000000..f1a10fc00ca7 --- /dev/null +++ b/instrumentation/opentelemetry-api/opentelemetry-api-1.40/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_40/incubator/metrics/ApplicationDoubleCounter140Incubator.java @@ -0,0 +1,25 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + +package io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_40.incubator.metrics; + +import application.io.opentelemetry.api.incubator.metrics.ExtendedDoubleCounter; +import io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_10.metrics.ApplicationDoubleCounter; + +final class ApplicationDoubleCounter140Incubator extends ApplicationDoubleCounter + implements ExtendedDoubleCounter { + private final io.opentelemetry.api.metrics.DoubleCounter agentCounter; + + ApplicationDoubleCounter140Incubator(io.opentelemetry.api.metrics.DoubleCounter agentCounter) { + super(agentCounter); + this.agentCounter = agentCounter; + } + + @Override + public boolean isEnabled() { + return ((io.opentelemetry.api.incubator.metrics.ExtendedDoubleCounter) agentCounter) + .isEnabled(); + } +} diff --git a/instrumentation/opentelemetry-api/opentelemetry-api-1.40/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_40/incubator/metrics/ApplicationDoubleCounterBuilder140Incubator.java b/instrumentation/opentelemetry-api/opentelemetry-api-1.40/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_40/incubator/metrics/ApplicationDoubleCounterBuilder140Incubator.java new file mode 100644 index 000000000000..c6bd0a709e0c --- /dev/null +++ b/instrumentation/opentelemetry-api/opentelemetry-api-1.40/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_40/incubator/metrics/ApplicationDoubleCounterBuilder140Incubator.java @@ -0,0 +1,24 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + +package io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_40.incubator.metrics; + +import application.io.opentelemetry.api.metrics.DoubleCounter; +import io.opentelemetry.api.metrics.DoubleCounterBuilder; +import io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_37.incubator.metrics.ApplicationDoubleCounterBuilder137; + +final class ApplicationDoubleCounterBuilder140Incubator extends ApplicationDoubleCounterBuilder137 { + private final io.opentelemetry.api.metrics.DoubleCounterBuilder agentBuilder; + + ApplicationDoubleCounterBuilder140Incubator(DoubleCounterBuilder agentBuilder) { + super(agentBuilder); + this.agentBuilder = agentBuilder; + } + + @Override + public DoubleCounter build() { + return new ApplicationDoubleCounter140Incubator(agentBuilder.build()); + } +} diff --git a/instrumentation/opentelemetry-api/opentelemetry-api-1.40/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_40/incubator/metrics/ApplicationDoubleGauge140Incubator.java b/instrumentation/opentelemetry-api/opentelemetry-api-1.40/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_40/incubator/metrics/ApplicationDoubleGauge140Incubator.java new file mode 100644 index 000000000000..492c132c5e58 --- /dev/null +++ b/instrumentation/opentelemetry-api/opentelemetry-api-1.40/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_40/incubator/metrics/ApplicationDoubleGauge140Incubator.java @@ -0,0 +1,27 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + +package io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_40.incubator.metrics; + +import application.io.opentelemetry.api.incubator.metrics.ExtendedDoubleGauge; +import io.opentelemetry.api.metrics.DoubleGauge; +import io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_38.metrics.ApplicationDoubleGauge138; + +final class ApplicationDoubleGauge140Incubator extends ApplicationDoubleGauge138 + implements ExtendedDoubleGauge { + + private final io.opentelemetry.api.metrics.DoubleGauge agentDoubleGauge; + + ApplicationDoubleGauge140Incubator(DoubleGauge agentDoubleGauge) { + super(agentDoubleGauge); + this.agentDoubleGauge = agentDoubleGauge; + } + + @Override + public boolean isEnabled() { + return ((io.opentelemetry.api.incubator.metrics.ExtendedDoubleGauge) agentDoubleGauge) + .isEnabled(); + } +} diff --git a/instrumentation/opentelemetry-api/opentelemetry-api-1.40/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_40/incubator/metrics/ApplicationDoubleGaugeBuilder140Incubator.java b/instrumentation/opentelemetry-api/opentelemetry-api-1.40/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_40/incubator/metrics/ApplicationDoubleGaugeBuilder140Incubator.java new file mode 100644 index 000000000000..0d9f10ec476a --- /dev/null +++ b/instrumentation/opentelemetry-api/opentelemetry-api-1.40/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_40/incubator/metrics/ApplicationDoubleGaugeBuilder140Incubator.java @@ -0,0 +1,32 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + +package io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_40.incubator.metrics; + +import application.io.opentelemetry.api.metrics.DoubleGauge; +import application.io.opentelemetry.api.metrics.LongGaugeBuilder; +import io.opentelemetry.api.metrics.DoubleGaugeBuilder; +import io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_38.incubator.metrics.ApplicationDoubleGaugeBuilder138Incubator; + +final class ApplicationDoubleGaugeBuilder140Incubator + extends ApplicationDoubleGaugeBuilder138Incubator { + + private final io.opentelemetry.api.metrics.DoubleGaugeBuilder agentBuilder; + + ApplicationDoubleGaugeBuilder140Incubator(DoubleGaugeBuilder agentBuilder) { + super(agentBuilder); + this.agentBuilder = agentBuilder; + } + + @Override + public LongGaugeBuilder ofLongs() { + return new ApplicationLongGaugeBuilder140Incubator(agentBuilder.ofLongs()); + } + + @Override + public DoubleGauge build() { + return new ApplicationDoubleGauge140Incubator(agentBuilder.build()); + } +} diff --git a/instrumentation/opentelemetry-api/opentelemetry-api-1.40/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_40/incubator/metrics/ApplicationDoubleHistogram140Incubator.java b/instrumentation/opentelemetry-api/opentelemetry-api-1.40/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_40/incubator/metrics/ApplicationDoubleHistogram140Incubator.java new file mode 100644 index 000000000000..d2ce4d788dd4 --- /dev/null +++ b/instrumentation/opentelemetry-api/opentelemetry-api-1.40/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_40/incubator/metrics/ApplicationDoubleHistogram140Incubator.java @@ -0,0 +1,27 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + +package io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_40.incubator.metrics; + +import application.io.opentelemetry.api.incubator.metrics.ExtendedDoubleHistogram; +import io.opentelemetry.api.metrics.DoubleHistogram; +import io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_10.metrics.ApplicationDoubleHistogram; + +final class ApplicationDoubleHistogram140Incubator extends ApplicationDoubleHistogram + implements ExtendedDoubleHistogram { + + private final io.opentelemetry.api.metrics.DoubleHistogram agentHistogram; + + ApplicationDoubleHistogram140Incubator(DoubleHistogram agentHistogram) { + super(agentHistogram); + this.agentHistogram = agentHistogram; + } + + @Override + public boolean isEnabled() { + return ((io.opentelemetry.api.incubator.metrics.ExtendedDoubleHistogram) agentHistogram) + .isEnabled(); + } +} diff --git a/instrumentation/opentelemetry-api/opentelemetry-api-1.40/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_40/incubator/metrics/ApplicationDoubleHistogramBuilder140Incubator.java b/instrumentation/opentelemetry-api/opentelemetry-api-1.40/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_40/incubator/metrics/ApplicationDoubleHistogramBuilder140Incubator.java new file mode 100644 index 000000000000..58312d650340 --- /dev/null +++ b/instrumentation/opentelemetry-api/opentelemetry-api-1.40/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_40/incubator/metrics/ApplicationDoubleHistogramBuilder140Incubator.java @@ -0,0 +1,32 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + +package io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_40.incubator.metrics; + +import application.io.opentelemetry.api.metrics.DoubleHistogram; +import application.io.opentelemetry.api.metrics.LongHistogramBuilder; +import io.opentelemetry.api.metrics.DoubleHistogramBuilder; +import io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_37.incubator.metrics.ApplicationDoubleHistogramBuilder137; + +final class ApplicationDoubleHistogramBuilder140Incubator + extends ApplicationDoubleHistogramBuilder137 { + + private final io.opentelemetry.api.metrics.DoubleHistogramBuilder agentBuilder; + + ApplicationDoubleHistogramBuilder140Incubator(DoubleHistogramBuilder agentBuilder) { + super(agentBuilder); + this.agentBuilder = agentBuilder; + } + + @Override + public LongHistogramBuilder ofLongs() { + return new ApplicationLongHistogramBuilder140Incubator(agentBuilder.ofLongs()); + } + + @Override + public DoubleHistogram build() { + return new ApplicationDoubleHistogram140Incubator(agentBuilder.build()); + } +} diff --git a/instrumentation/opentelemetry-api/opentelemetry-api-1.40/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_40/incubator/metrics/ApplicationDoubleUpDownCounter140Incubator.java b/instrumentation/opentelemetry-api/opentelemetry-api-1.40/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_40/incubator/metrics/ApplicationDoubleUpDownCounter140Incubator.java new file mode 100644 index 000000000000..d82f17378202 --- /dev/null +++ b/instrumentation/opentelemetry-api/opentelemetry-api-1.40/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_40/incubator/metrics/ApplicationDoubleUpDownCounter140Incubator.java @@ -0,0 +1,27 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + +package io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_40.incubator.metrics; + +import application.io.opentelemetry.api.incubator.metrics.ExtendedDoubleUpDownCounter; +import io.opentelemetry.api.metrics.DoubleUpDownCounter; +import io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_10.metrics.ApplicationDoubleUpDownCounter; + +final class ApplicationDoubleUpDownCounter140Incubator extends ApplicationDoubleUpDownCounter + implements ExtendedDoubleUpDownCounter { + + private final io.opentelemetry.api.metrics.DoubleUpDownCounter agentCounter; + + ApplicationDoubleUpDownCounter140Incubator(DoubleUpDownCounter agentCounter) { + super(agentCounter); + this.agentCounter = agentCounter; + } + + @Override + public boolean isEnabled() { + return ((io.opentelemetry.api.incubator.metrics.ExtendedDoubleUpDownCounter) agentCounter) + .isEnabled(); + } +} diff --git a/instrumentation/opentelemetry-api/opentelemetry-api-1.40/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_40/incubator/metrics/ApplicationDoubleUpDownCounterBuilder140Incubator.java b/instrumentation/opentelemetry-api/opentelemetry-api-1.40/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_40/incubator/metrics/ApplicationDoubleUpDownCounterBuilder140Incubator.java new file mode 100644 index 000000000000..d050ed12641c --- /dev/null +++ b/instrumentation/opentelemetry-api/opentelemetry-api-1.40/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_40/incubator/metrics/ApplicationDoubleUpDownCounterBuilder140Incubator.java @@ -0,0 +1,26 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + +package io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_40.incubator.metrics; + +import application.io.opentelemetry.api.metrics.DoubleUpDownCounter; +import io.opentelemetry.api.metrics.DoubleUpDownCounterBuilder; +import io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_37.incubator.metrics.ApplicationDoubleUpDownCounterBuilder137; + +final class ApplicationDoubleUpDownCounterBuilder140Incubator + extends ApplicationDoubleUpDownCounterBuilder137 { + + private final io.opentelemetry.api.metrics.DoubleUpDownCounterBuilder agentBuilder; + + ApplicationDoubleUpDownCounterBuilder140Incubator(DoubleUpDownCounterBuilder agentBuilder) { + super(agentBuilder); + this.agentBuilder = agentBuilder; + } + + @Override + public DoubleUpDownCounter build() { + return new ApplicationDoubleUpDownCounter140Incubator(agentBuilder.build()); + } +} diff --git a/instrumentation/opentelemetry-api/opentelemetry-api-1.40/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_40/incubator/metrics/ApplicationLongCounter140Incubator.java b/instrumentation/opentelemetry-api/opentelemetry-api-1.40/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_40/incubator/metrics/ApplicationLongCounter140Incubator.java new file mode 100644 index 000000000000..7cec97190ce8 --- /dev/null +++ b/instrumentation/opentelemetry-api/opentelemetry-api-1.40/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_40/incubator/metrics/ApplicationLongCounter140Incubator.java @@ -0,0 +1,25 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + +package io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_40.incubator.metrics; + +import application.io.opentelemetry.api.incubator.metrics.ExtendedLongCounter; +import io.opentelemetry.api.metrics.LongCounter; +import io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_10.metrics.ApplicationLongCounter; + +final class ApplicationLongCounter140Incubator extends ApplicationLongCounter + implements ExtendedLongCounter { + private final io.opentelemetry.api.metrics.LongCounter agentCounter; + + ApplicationLongCounter140Incubator(LongCounter agentCounter) { + super(agentCounter); + this.agentCounter = agentCounter; + } + + @Override + public boolean isEnabled() { + return ((io.opentelemetry.api.incubator.metrics.ExtendedLongCounter) agentCounter).isEnabled(); + } +} diff --git a/instrumentation/opentelemetry-api/opentelemetry-api-1.40/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_40/incubator/metrics/ApplicationLongCounterBuilder140Incubator.java b/instrumentation/opentelemetry-api/opentelemetry-api-1.40/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_40/incubator/metrics/ApplicationLongCounterBuilder140Incubator.java new file mode 100644 index 000000000000..1f7eeb4cd72f --- /dev/null +++ b/instrumentation/opentelemetry-api/opentelemetry-api-1.40/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_40/incubator/metrics/ApplicationLongCounterBuilder140Incubator.java @@ -0,0 +1,30 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + +package io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_40.incubator.metrics; + +import application.io.opentelemetry.api.metrics.DoubleCounterBuilder; +import application.io.opentelemetry.api.metrics.LongCounter; +import io.opentelemetry.api.metrics.LongCounterBuilder; +import io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_37.incubator.metrics.ApplicationLongCounterBuilder137; + +final class ApplicationLongCounterBuilder140Incubator extends ApplicationLongCounterBuilder137 { + private final io.opentelemetry.api.metrics.LongCounterBuilder agentBuilder; + + ApplicationLongCounterBuilder140Incubator(LongCounterBuilder agentBuilder) { + super(agentBuilder); + this.agentBuilder = agentBuilder; + } + + @Override + public DoubleCounterBuilder ofDoubles() { + return new ApplicationDoubleCounterBuilder140Incubator(agentBuilder.ofDoubles()); + } + + @Override + public LongCounter build() { + return new ApplicationLongCounter140Incubator(agentBuilder.build()); + } +} diff --git a/instrumentation/opentelemetry-api/opentelemetry-api-1.40/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_40/incubator/metrics/ApplicationLongGauge140Incubator.java b/instrumentation/opentelemetry-api/opentelemetry-api-1.40/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_40/incubator/metrics/ApplicationLongGauge140Incubator.java new file mode 100644 index 000000000000..da3ced5d4bbf --- /dev/null +++ b/instrumentation/opentelemetry-api/opentelemetry-api-1.40/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_40/incubator/metrics/ApplicationLongGauge140Incubator.java @@ -0,0 +1,26 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + +package io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_40.incubator.metrics; + +import application.io.opentelemetry.api.incubator.metrics.ExtendedLongGauge; +import io.opentelemetry.api.metrics.LongGauge; +import io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_38.metrics.ApplicationLongGauge138; + +final class ApplicationLongGauge140Incubator extends ApplicationLongGauge138 + implements ExtendedLongGauge { + + private final io.opentelemetry.api.metrics.LongGauge agentLongGauge; + + ApplicationLongGauge140Incubator(LongGauge agentLongGauge) { + super(agentLongGauge); + this.agentLongGauge = agentLongGauge; + } + + @Override + public boolean isEnabled() { + return ((io.opentelemetry.api.incubator.metrics.ExtendedLongGauge) agentLongGauge).isEnabled(); + } +} diff --git a/instrumentation/opentelemetry-api/opentelemetry-api-1.40/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_40/incubator/metrics/ApplicationLongGaugeBuilder140Incubator.java b/instrumentation/opentelemetry-api/opentelemetry-api-1.40/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_40/incubator/metrics/ApplicationLongGaugeBuilder140Incubator.java new file mode 100644 index 000000000000..658229f4323f --- /dev/null +++ b/instrumentation/opentelemetry-api/opentelemetry-api-1.40/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_40/incubator/metrics/ApplicationLongGaugeBuilder140Incubator.java @@ -0,0 +1,26 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + +package io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_40.incubator.metrics; + +import application.io.opentelemetry.api.metrics.LongGauge; +import io.opentelemetry.api.metrics.LongGaugeBuilder; +import io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_38.incubator.metrics.ApplicationLongGaugeBuilder138Incubator; + +final class ApplicationLongGaugeBuilder140Incubator + extends ApplicationLongGaugeBuilder138Incubator { + + private final io.opentelemetry.api.metrics.LongGaugeBuilder agentBuilder; + + ApplicationLongGaugeBuilder140Incubator(LongGaugeBuilder agentBuilder) { + super(agentBuilder); + this.agentBuilder = agentBuilder; + } + + @Override + public LongGauge build() { + return new ApplicationLongGauge140Incubator(agentBuilder.build()); + } +} diff --git a/instrumentation/opentelemetry-api/opentelemetry-api-1.40/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_40/incubator/metrics/ApplicationLongHistogram140Incubator.java b/instrumentation/opentelemetry-api/opentelemetry-api-1.40/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_40/incubator/metrics/ApplicationLongHistogram140Incubator.java new file mode 100644 index 000000000000..ceb94b7decbd --- /dev/null +++ b/instrumentation/opentelemetry-api/opentelemetry-api-1.40/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_40/incubator/metrics/ApplicationLongHistogram140Incubator.java @@ -0,0 +1,27 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + +package io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_40.incubator.metrics; + +import application.io.opentelemetry.api.incubator.metrics.ExtendedLongHistogram; +import io.opentelemetry.api.metrics.LongHistogram; +import io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_10.metrics.ApplicationLongHistogram; + +final class ApplicationLongHistogram140Incubator extends ApplicationLongHistogram + implements ExtendedLongHistogram { + + private final io.opentelemetry.api.metrics.LongHistogram agentHistogram; + + ApplicationLongHistogram140Incubator(LongHistogram agentHistogram) { + super(agentHistogram); + this.agentHistogram = agentHistogram; + } + + @Override + public boolean isEnabled() { + return ((io.opentelemetry.api.incubator.metrics.ExtendedLongHistogram) agentHistogram) + .isEnabled(); + } +} diff --git a/instrumentation/opentelemetry-api/opentelemetry-api-1.40/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_40/incubator/metrics/ApplicationLongHistogramBuilder140Incubator.java b/instrumentation/opentelemetry-api/opentelemetry-api-1.40/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_40/incubator/metrics/ApplicationLongHistogramBuilder140Incubator.java new file mode 100644 index 000000000000..76c3b962d796 --- /dev/null +++ b/instrumentation/opentelemetry-api/opentelemetry-api-1.40/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_40/incubator/metrics/ApplicationLongHistogramBuilder140Incubator.java @@ -0,0 +1,25 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + +package io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_40.incubator.metrics; + +import application.io.opentelemetry.api.metrics.LongHistogram; +import io.opentelemetry.api.metrics.LongHistogramBuilder; +import io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_37.incubator.metrics.ApplicationLongHistogramBuilder137; + +final class ApplicationLongHistogramBuilder140Incubator extends ApplicationLongHistogramBuilder137 { + + private final io.opentelemetry.api.metrics.LongHistogramBuilder agentBuilder; + + ApplicationLongHistogramBuilder140Incubator(LongHistogramBuilder agentBuilder) { + super(agentBuilder); + this.agentBuilder = agentBuilder; + } + + @Override + public LongHistogram build() { + return new ApplicationLongHistogram140Incubator(agentBuilder.build()); + } +} diff --git a/instrumentation/opentelemetry-api/opentelemetry-api-1.40/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_40/incubator/metrics/ApplicationLongUpDownCounter140Incubator.java b/instrumentation/opentelemetry-api/opentelemetry-api-1.40/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_40/incubator/metrics/ApplicationLongUpDownCounter140Incubator.java new file mode 100644 index 000000000000..0ba29e0fbca6 --- /dev/null +++ b/instrumentation/opentelemetry-api/opentelemetry-api-1.40/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_40/incubator/metrics/ApplicationLongUpDownCounter140Incubator.java @@ -0,0 +1,27 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + +package io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_40.incubator.metrics; + +import application.io.opentelemetry.api.incubator.metrics.ExtendedLongUpDownCounter; +import io.opentelemetry.api.metrics.LongUpDownCounter; +import io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_10.metrics.ApplicationLongUpDownCounter; + +final class ApplicationLongUpDownCounter140Incubator extends ApplicationLongUpDownCounter + implements ExtendedLongUpDownCounter { + + private final io.opentelemetry.api.metrics.LongUpDownCounter agentCounter; + + ApplicationLongUpDownCounter140Incubator(LongUpDownCounter agentCounter) { + super(agentCounter); + this.agentCounter = agentCounter; + } + + @Override + public boolean isEnabled() { + return ((io.opentelemetry.api.incubator.metrics.ExtendedLongUpDownCounter) agentCounter) + .isEnabled(); + } +} diff --git a/instrumentation/opentelemetry-api/opentelemetry-api-1.40/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_40/incubator/metrics/ApplicationLongUpDownCounterBuilder140Incubator.java b/instrumentation/opentelemetry-api/opentelemetry-api-1.40/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_40/incubator/metrics/ApplicationLongUpDownCounterBuilder140Incubator.java new file mode 100644 index 000000000000..8a64026389c2 --- /dev/null +++ b/instrumentation/opentelemetry-api/opentelemetry-api-1.40/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_40/incubator/metrics/ApplicationLongUpDownCounterBuilder140Incubator.java @@ -0,0 +1,32 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + +package io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_40.incubator.metrics; + +import application.io.opentelemetry.api.metrics.DoubleUpDownCounterBuilder; +import application.io.opentelemetry.api.metrics.LongUpDownCounter; +import io.opentelemetry.api.metrics.LongUpDownCounterBuilder; +import io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_37.incubator.metrics.ApplicationLongUpDownCounterBuilder137; + +final class ApplicationLongUpDownCounterBuilder140Incubator + extends ApplicationLongUpDownCounterBuilder137 { + + private final io.opentelemetry.api.metrics.LongUpDownCounterBuilder agentBuilder; + + ApplicationLongUpDownCounterBuilder140Incubator(LongUpDownCounterBuilder agentBuilder) { + super(agentBuilder); + this.agentBuilder = agentBuilder; + } + + @Override + public DoubleUpDownCounterBuilder ofDoubles() { + return new ApplicationDoubleUpDownCounterBuilder140Incubator(agentBuilder.ofDoubles()); + } + + @Override + public LongUpDownCounter build() { + return new ApplicationLongUpDownCounter140Incubator(agentBuilder.build()); + } +} diff --git a/instrumentation/opentelemetry-api/opentelemetry-api-1.40/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_40/incubator/metrics/ApplicationMeter140Incubator.java b/instrumentation/opentelemetry-api/opentelemetry-api-1.40/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_40/incubator/metrics/ApplicationMeter140Incubator.java new file mode 100644 index 000000000000..a41e348042f4 --- /dev/null +++ b/instrumentation/opentelemetry-api/opentelemetry-api-1.40/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_40/incubator/metrics/ApplicationMeter140Incubator.java @@ -0,0 +1,43 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + +package io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_40.incubator.metrics; + +import application.io.opentelemetry.api.metrics.DoubleGaugeBuilder; +import application.io.opentelemetry.api.metrics.DoubleHistogramBuilder; +import application.io.opentelemetry.api.metrics.LongCounterBuilder; +import application.io.opentelemetry.api.metrics.LongUpDownCounterBuilder; +import io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_37.incubator.metrics.BaseApplicationMeter137; + +final class ApplicationMeter140Incubator extends BaseApplicationMeter137 { + + private final io.opentelemetry.api.metrics.Meter agentMeter; + + ApplicationMeter140Incubator(io.opentelemetry.api.metrics.Meter agentMeter) { + super(agentMeter); + this.agentMeter = agentMeter; + } + + @Override + public LongCounterBuilder counterBuilder(String name) { + return new ApplicationLongCounterBuilder140Incubator(agentMeter.counterBuilder(name)); + } + + @Override + public LongUpDownCounterBuilder upDownCounterBuilder(String name) { + return new ApplicationLongUpDownCounterBuilder140Incubator( + agentMeter.upDownCounterBuilder(name)); + } + + @Override + public DoubleHistogramBuilder histogramBuilder(String name) { + return new ApplicationDoubleHistogramBuilder140Incubator(agentMeter.histogramBuilder(name)); + } + + @Override + public DoubleGaugeBuilder gaugeBuilder(String name) { + return new ApplicationDoubleGaugeBuilder140Incubator(agentMeter.gaugeBuilder(name)); + } +} diff --git a/instrumentation/opentelemetry-api/opentelemetry-api-1.40/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_40/incubator/metrics/ApplicationMeterFactory140Incubator.java b/instrumentation/opentelemetry-api/opentelemetry-api-1.40/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_40/incubator/metrics/ApplicationMeterFactory140Incubator.java new file mode 100644 index 000000000000..e972272e4f5a --- /dev/null +++ b/instrumentation/opentelemetry-api/opentelemetry-api-1.40/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_40/incubator/metrics/ApplicationMeterFactory140Incubator.java @@ -0,0 +1,19 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + +package io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_40.incubator.metrics; + +import io.opentelemetry.api.metrics.Meter; +import io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_10.metrics.ApplicationMeter; +import io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_10.metrics.ApplicationMeterFactory; + +// this class is used from opentelemetry-api-1.27 via reflection +public final class ApplicationMeterFactory140Incubator implements ApplicationMeterFactory { + + @Override + public ApplicationMeter newMeter(Meter agentMeter) { + return new ApplicationMeter140Incubator(agentMeter); + } +} diff --git a/instrumentation/opentelemetry-api/opentelemetry-api-1.40/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_40/incubator/trace/ApplicationSpanBuilder140Incubator.java b/instrumentation/opentelemetry-api/opentelemetry-api-1.40/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_40/incubator/trace/ApplicationSpanBuilder140Incubator.java new file mode 100644 index 000000000000..58a7c6b10441 --- /dev/null +++ b/instrumentation/opentelemetry-api/opentelemetry-api-1.40/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_40/incubator/trace/ApplicationSpanBuilder140Incubator.java @@ -0,0 +1,202 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + +package io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_40.incubator.trace; + +import application.io.opentelemetry.api.common.AttributeKey; +import application.io.opentelemetry.api.common.Attributes; +import application.io.opentelemetry.api.incubator.trace.ExtendedSpanBuilder; +import application.io.opentelemetry.api.incubator.trace.SpanCallable; +import application.io.opentelemetry.api.incubator.trace.SpanRunnable; +import application.io.opentelemetry.api.trace.Span; +import application.io.opentelemetry.api.trace.SpanContext; +import application.io.opentelemetry.api.trace.SpanKind; +import application.io.opentelemetry.context.Context; +import application.io.opentelemetry.context.propagation.ContextPropagators; +import application.io.opentelemetry.context.propagation.TextMapGetter; +import application.io.opentelemetry.context.propagation.TextMapPropagator; +import com.google.errorprone.annotations.CanIgnoreReturnValue; +import io.opentelemetry.javaagent.instrumentation.opentelemetryapi.context.AgentContextStorage; +import io.opentelemetry.javaagent.instrumentation.opentelemetryapi.trace.ApplicationSpan; +import io.opentelemetry.javaagent.instrumentation.opentelemetryapi.trace.ApplicationSpanBuilder; +import java.util.Collection; +import java.util.Map; +import java.util.concurrent.TimeUnit; +import java.util.function.BiConsumer; +import javax.annotation.Nullable; + +final class ApplicationSpanBuilder140Incubator extends ApplicationSpanBuilder + implements ExtendedSpanBuilder { + + private final io.opentelemetry.api.incubator.trace.ExtendedSpanBuilder agentBuilder; + + ApplicationSpanBuilder140Incubator(io.opentelemetry.api.trace.SpanBuilder agentBuilder) { + super(agentBuilder); + this.agentBuilder = (io.opentelemetry.api.incubator.trace.ExtendedSpanBuilder) agentBuilder; + } + + @Override + @CanIgnoreReturnValue + public ExtendedSpanBuilder setParent(Context applicationContext) { + return (ExtendedSpanBuilder) super.setParent(applicationContext); + } + + @Override + @CanIgnoreReturnValue + public ExtendedSpanBuilder setNoParent() { + return (ExtendedSpanBuilder) super.setNoParent(); + } + + @Override + @CanIgnoreReturnValue + public ExtendedSpanBuilder addLink(SpanContext applicationSpanContext) { + return (ExtendedSpanBuilder) super.addLink(applicationSpanContext); + } + + @Override + @CanIgnoreReturnValue + public ExtendedSpanBuilder addLink( + SpanContext applicationSpanContext, Attributes applicationAttributes) { + return (ExtendedSpanBuilder) super.addLink(applicationSpanContext, applicationAttributes); + } + + @Override + @CanIgnoreReturnValue + public ExtendedSpanBuilder setAttribute(String key, String value) { + return (ExtendedSpanBuilder) super.setAttribute(key, value); + } + + @Override + @CanIgnoreReturnValue + public ExtendedSpanBuilder setAttribute(String key, long value) { + return (ExtendedSpanBuilder) super.setAttribute(key, value); + } + + @Override + @CanIgnoreReturnValue + public ExtendedSpanBuilder setAttribute(String key, double value) { + return (ExtendedSpanBuilder) super.setAttribute(key, value); + } + + @Override + @CanIgnoreReturnValue + public ExtendedSpanBuilder setAttribute(String key, boolean value) { + return (ExtendedSpanBuilder) super.setAttribute(key, value); + } + + @Override + @CanIgnoreReturnValue + public ExtendedSpanBuilder setAttribute(AttributeKey applicationKey, T value) { + return (ExtendedSpanBuilder) super.setAttribute(applicationKey, value); + } + + @Override + @CanIgnoreReturnValue + public ExtendedSpanBuilder setSpanKind(SpanKind applicationSpanKind) { + return (ExtendedSpanBuilder) super.setSpanKind(applicationSpanKind); + } + + @Override + @CanIgnoreReturnValue + public ExtendedSpanBuilder setStartTimestamp(long startTimestamp, TimeUnit unit) { + return (ExtendedSpanBuilder) super.setStartTimestamp(startTimestamp, unit); + } + + @Override + public ExtendedSpanBuilder setParentFrom( + ContextPropagators contextPropagators, Map map) { + agentBuilder.setParentFrom(new AgentContextPropagators(contextPropagators), map); + return this; + } + + @Override + public T startAndCall(SpanCallable spanCallable) throws E { + return agentBuilder.startAndCall(spanCallable::callInSpan); + } + + @Override + public T startAndCall( + SpanCallable spanCallable, BiConsumer biConsumer) throws E { + return agentBuilder.startAndCall( + spanCallable::callInSpan, + (span, throwable) -> biConsumer.accept(new ApplicationSpan(span), throwable)); + } + + @Override + public void startAndRun(SpanRunnable spanRunnable) throws E { + agentBuilder.startAndRun(spanRunnable::runInSpan); + } + + @Override + public void startAndRun( + SpanRunnable spanRunnable, BiConsumer biConsumer) throws E { + agentBuilder.startAndRun( + spanRunnable::runInSpan, + (span, throwable) -> biConsumer.accept(new ApplicationSpan(span), throwable)); + } + + private static class AgentContextPropagators + implements io.opentelemetry.context.propagation.ContextPropagators { + + private final ContextPropagators applicationContextPropagators; + + AgentContextPropagators(ContextPropagators applicationContextPropagators) { + this.applicationContextPropagators = applicationContextPropagators; + } + + @Override + public io.opentelemetry.context.propagation.TextMapPropagator getTextMapPropagator() { + return new AgentTextMapPropagator(applicationContextPropagators.getTextMapPropagator()); + } + } + + private static class AgentTextMapPropagator + implements io.opentelemetry.context.propagation.TextMapPropagator { + + private final TextMapPropagator applicationTextMapPropagator; + + AgentTextMapPropagator(TextMapPropagator applicationTextMapPropagator) { + this.applicationTextMapPropagator = applicationTextMapPropagator; + } + + @Override + public Collection fields() { + return applicationTextMapPropagator.fields(); + } + + @Override + public void inject( + io.opentelemetry.context.Context context, + @Nullable C c, + io.opentelemetry.context.propagation.TextMapSetter textMapSetter) { + applicationTextMapPropagator.inject( + AgentContextStorage.toApplicationContext(context), c, textMapSetter::set); + } + + @Override + public io.opentelemetry.context.Context extract( + io.opentelemetry.context.Context context, + @Nullable C c, + io.opentelemetry.context.propagation.TextMapGetter textMapGetter) { + return AgentContextStorage.getAgentContext( + applicationTextMapPropagator.extract( + AgentContextStorage.toApplicationContext(context), + c, + new TextMapGetter() { + + @Override + public Iterable keys(C c) { + return textMapGetter.keys(c); + } + + @Nullable + @Override + public String get(@Nullable C c, String s) { + return textMapGetter.get(c, s); + } + })); + } + } +} diff --git a/instrumentation/opentelemetry-api/opentelemetry-api-1.40/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_40/incubator/trace/ApplicationTracer140Incubator.java b/instrumentation/opentelemetry-api/opentelemetry-api-1.40/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_40/incubator/trace/ApplicationTracer140Incubator.java new file mode 100644 index 000000000000..fc70f2d6a53e --- /dev/null +++ b/instrumentation/opentelemetry-api/opentelemetry-api-1.40/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_40/incubator/trace/ApplicationTracer140Incubator.java @@ -0,0 +1,31 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + +package io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_40.incubator.trace; + +import application.io.opentelemetry.api.incubator.trace.ExtendedTracer; +import application.io.opentelemetry.api.trace.SpanBuilder; +import io.opentelemetry.api.trace.Tracer; +import io.opentelemetry.javaagent.instrumentation.opentelemetryapi.trace.ApplicationTracer; + +final class ApplicationTracer140Incubator extends ApplicationTracer implements ExtendedTracer { + + private final io.opentelemetry.api.trace.Tracer agentTracer; + + ApplicationTracer140Incubator(Tracer agentTracer) { + super(agentTracer); + this.agentTracer = agentTracer; + } + + @Override + public SpanBuilder spanBuilder(String spanName) { + return new ApplicationSpanBuilder140Incubator(agentTracer.spanBuilder(spanName)); + } + + @Override + public boolean isEnabled() { + return ((io.opentelemetry.api.incubator.trace.ExtendedTracer) agentTracer).isEnabled(); + } +} diff --git a/instrumentation/opentelemetry-api/opentelemetry-api-1.40/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_40/incubator/trace/ApplicationTracerFactory140Incubator.java b/instrumentation/opentelemetry-api/opentelemetry-api-1.40/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_40/incubator/trace/ApplicationTracerFactory140Incubator.java new file mode 100644 index 000000000000..52fa9cef4206 --- /dev/null +++ b/instrumentation/opentelemetry-api/opentelemetry-api-1.40/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_40/incubator/trace/ApplicationTracerFactory140Incubator.java @@ -0,0 +1,19 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + +package io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_40.incubator.trace; + +import io.opentelemetry.api.trace.Tracer; +import io.opentelemetry.javaagent.instrumentation.opentelemetryapi.trace.ApplicationTracer; +import io.opentelemetry.javaagent.instrumentation.opentelemetryapi.trace.ApplicationTracerFactory; + +// this class is used from opentelemetry-api-1.27.0 via reflection +public class ApplicationTracerFactory140Incubator implements ApplicationTracerFactory { + + @Override + public ApplicationTracer newTracer(Tracer agentTracer) { + return new ApplicationTracer140Incubator(agentTracer); + } +} diff --git a/instrumentation/opentelemetry-api/opentelemetry-api-1.40/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_40/incubator/logs/LoggerTest.java b/instrumentation/opentelemetry-api/opentelemetry-api-1.40/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_40/incubator/logs/LoggerTest.java new file mode 100644 index 000000000000..ee1cd7893fb3 --- /dev/null +++ b/instrumentation/opentelemetry-api/opentelemetry-api-1.40/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_40/incubator/logs/LoggerTest.java @@ -0,0 +1,33 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + +package io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_40.incubator.logs; + +import static org.assertj.core.api.Assertions.assertThat; + +import io.opentelemetry.api.incubator.logs.ExtendedLogger; +import io.opentelemetry.api.logs.Logger; +import io.opentelemetry.instrumentation.testing.junit.AgentInstrumentationExtension; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.RegisterExtension; + +class LoggerTest { + + @RegisterExtension + static final AgentInstrumentationExtension testing = AgentInstrumentationExtension.create(); + + @Test + void isEnabled() { + Logger disabledLogger = testing.getOpenTelemetry().getLogsBridge().get("disabled-logger"); + Logger enabledLogger = testing.getOpenTelemetry().getLogsBridge().get("enabled-logger"); + testEnabled(disabledLogger, false); + testEnabled(enabledLogger, true); + } + + private static void testEnabled(Logger logger, boolean expected) { + assertThat(logger).isInstanceOf(ExtendedLogger.class); + assertThat(((ExtendedLogger) logger).isEnabled()).isEqualTo(expected); + } +} diff --git a/instrumentation/opentelemetry-api/opentelemetry-api-1.40/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_40/incubator/metrics/MeterTest.java b/instrumentation/opentelemetry-api/opentelemetry-api-1.40/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_40/incubator/metrics/MeterTest.java new file mode 100644 index 000000000000..cc2fa724f893 --- /dev/null +++ b/instrumentation/opentelemetry-api/opentelemetry-api-1.40/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_40/incubator/metrics/MeterTest.java @@ -0,0 +1,85 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + +package io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_40.incubator.metrics; + +import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.assertThat; + +import io.opentelemetry.api.incubator.metrics.ExtendedDoubleCounter; +import io.opentelemetry.api.incubator.metrics.ExtendedDoubleGauge; +import io.opentelemetry.api.incubator.metrics.ExtendedDoubleHistogram; +import io.opentelemetry.api.incubator.metrics.ExtendedDoubleUpDownCounter; +import io.opentelemetry.api.incubator.metrics.ExtendedLongCounter; +import io.opentelemetry.api.incubator.metrics.ExtendedLongGauge; +import io.opentelemetry.api.incubator.metrics.ExtendedLongHistogram; +import io.opentelemetry.api.incubator.metrics.ExtendedLongUpDownCounter; +import io.opentelemetry.api.metrics.DoubleCounter; +import io.opentelemetry.api.metrics.DoubleGauge; +import io.opentelemetry.api.metrics.DoubleGaugeBuilder; +import io.opentelemetry.api.metrics.DoubleHistogram; +import io.opentelemetry.api.metrics.DoubleHistogramBuilder; +import io.opentelemetry.api.metrics.DoubleUpDownCounter; +import io.opentelemetry.api.metrics.LongCounter; +import io.opentelemetry.api.metrics.LongCounterBuilder; +import io.opentelemetry.api.metrics.LongGauge; +import io.opentelemetry.api.metrics.LongHistogram; +import io.opentelemetry.api.metrics.LongUpDownCounter; +import io.opentelemetry.api.metrics.LongUpDownCounterBuilder; +import io.opentelemetry.api.metrics.Meter; +import io.opentelemetry.instrumentation.testing.junit.AgentInstrumentationExtension; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.RegisterExtension; + +class MeterTest { + + @RegisterExtension + static final AgentInstrumentationExtension testing = AgentInstrumentationExtension.create(); + + @Test + void isEnabled() { + Meter disabledMeter = testing.getOpenTelemetry().getMeter("disabled-meter"); + Meter enabledMeter = testing.getOpenTelemetry().getMeter("enabled-meter"); + testEnabled(disabledMeter, false); + testEnabled(enabledMeter, true); + } + + private static void testEnabled(Meter meter, boolean expected) { + LongCounterBuilder counterBuilder = meter.counterBuilder("test"); + LongCounter longCounter = counterBuilder.build(); + assertThat(longCounter).isInstanceOf(ExtendedLongCounter.class); + assertThat(((ExtendedLongCounter) longCounter).isEnabled()).isEqualTo(expected); + + DoubleCounter doubleCounter = counterBuilder.ofDoubles().build(); + assertThat(doubleCounter).isInstanceOf(ExtendedDoubleCounter.class); + assertThat(((ExtendedDoubleCounter) doubleCounter).isEnabled()).isEqualTo(expected); + + LongUpDownCounterBuilder upDownCounterBuilder = meter.upDownCounterBuilder("test"); + LongUpDownCounter longUpDownCounter = upDownCounterBuilder.build(); + assertThat(longUpDownCounter).isInstanceOf(ExtendedLongUpDownCounter.class); + assertThat(((ExtendedLongUpDownCounter) longUpDownCounter).isEnabled()).isEqualTo(expected); + + DoubleUpDownCounter doubleUpDownCounter = upDownCounterBuilder.ofDoubles().build(); + assertThat(doubleUpDownCounter).isInstanceOf(ExtendedDoubleUpDownCounter.class); + assertThat(((ExtendedDoubleUpDownCounter) doubleUpDownCounter).isEnabled()).isEqualTo(expected); + + DoubleGaugeBuilder gaugeBuilder = meter.gaugeBuilder("test"); + DoubleGauge doubleGauge = gaugeBuilder.build(); + assertThat(doubleGauge).isInstanceOf(ExtendedDoubleGauge.class); + assertThat(((ExtendedDoubleGauge) doubleGauge).isEnabled()).isEqualTo(expected); + + LongGauge longGauge = gaugeBuilder.ofLongs().build(); + assertThat(longGauge).isInstanceOf(ExtendedLongGauge.class); + assertThat(((ExtendedLongGauge) longGauge).isEnabled()).isEqualTo(expected); + + DoubleHistogramBuilder histogramBuilder = meter.histogramBuilder("test"); + DoubleHistogram doubleHistogram = histogramBuilder.build(); + assertThat(doubleHistogram).isInstanceOf(ExtendedDoubleHistogram.class); + assertThat(((ExtendedDoubleHistogram) doubleHistogram).isEnabled()).isEqualTo(expected); + + LongHistogram longHistogram = histogramBuilder.ofLongs().build(); + assertThat(longHistogram).isInstanceOf(ExtendedLongHistogram.class); + assertThat(((ExtendedLongHistogram) longHistogram).isEnabled()).isEqualTo(expected); + } +} diff --git a/instrumentation/opentelemetry-api/opentelemetry-api-1.40/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_40/incubator/trace/TracerTest.java b/instrumentation/opentelemetry-api/opentelemetry-api-1.40/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_40/incubator/trace/TracerTest.java new file mode 100644 index 000000000000..bd922672499f --- /dev/null +++ b/instrumentation/opentelemetry-api/opentelemetry-api-1.40/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_40/incubator/trace/TracerTest.java @@ -0,0 +1,118 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + +package io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_40.incubator.trace; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.assertj.core.api.Assertions.assertThatThrownBy; + +import io.opentelemetry.api.incubator.trace.ExtendedSpanBuilder; +import io.opentelemetry.api.incubator.trace.ExtendedTracer; +import io.opentelemetry.api.trace.Span; +import io.opentelemetry.api.trace.SpanBuilder; +import io.opentelemetry.api.trace.SpanContext; +import io.opentelemetry.api.trace.SpanId; +import io.opentelemetry.api.trace.TraceFlags; +import io.opentelemetry.api.trace.TraceId; +import io.opentelemetry.api.trace.TraceState; +import io.opentelemetry.api.trace.Tracer; +import io.opentelemetry.api.trace.propagation.W3CTraceContextPropagator; +import io.opentelemetry.context.Context; +import io.opentelemetry.context.propagation.ContextPropagators; +import io.opentelemetry.instrumentation.testing.junit.AgentInstrumentationExtension; +import io.opentelemetry.instrumentation.testing.junit.InstrumentationExtension; +import java.util.HashMap; +import java.util.Map; +import java.util.concurrent.atomic.AtomicReference; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.RegisterExtension; + +class TracerTest { + + @RegisterExtension + private static final InstrumentationExtension testing = AgentInstrumentationExtension.create(); + + @Test + void isEnabled() { + Tracer disabledTracer = testing.getOpenTelemetry().getTracer("disabled-tracer"); + Tracer enabledTracer = testing.getOpenTelemetry().getTracer("enabled-tracer"); + testEnabled(disabledTracer, false); + testEnabled(enabledTracer, true); + } + + private static void testEnabled(Tracer tracer, boolean expected) { + assertThat(tracer).isInstanceOf(ExtendedTracer.class); + assertThat(((ExtendedTracer) tracer).isEnabled()).isEqualTo(expected); + } + + @Test + void extendedSpanBuilder() { + Tracer tracer = testing.getOpenTelemetry().getTracer("test"); + SpanBuilder spanBuilder = tracer.spanBuilder("test"); + assertThat(spanBuilder).isInstanceOf(ExtendedSpanBuilder.class); + + ExtendedSpanBuilder builder = (ExtendedSpanBuilder) spanBuilder; + { + Span span = builder.startAndCall(Span::current); + assertThat(span.getSpanContext().getTraceId()).isNotEqualTo(TraceId.getInvalid()); + } + { + Span span = builder.startAndCall(Span::current, (s, t) -> {}); + assertThat(span.getSpanContext().getTraceId()).isNotEqualTo(TraceId.getInvalid()); + } + { + AtomicReference spanRef = new AtomicReference<>(); + assertThatThrownBy( + () -> + builder.startAndCall( + () -> { + throw new IllegalStateException("fail"); + }, + (s, t) -> spanRef.set(s))) + .isInstanceOf(IllegalStateException.class); + assertThat(spanRef.get().getSpanContext().getTraceId()).isNotEqualTo(TraceId.getInvalid()); + } + + { + AtomicReference spanRef = new AtomicReference<>(); + builder.startAndRun(() -> spanRef.set(Span.current())); + assertThat(spanRef.get().getSpanContext().getTraceId()).isNotEqualTo(TraceId.getInvalid()); + } + { + AtomicReference spanRef = new AtomicReference<>(); + builder.startAndRun(() -> spanRef.set(Span.current()), (s, t) -> {}); + assertThat(spanRef.get().getSpanContext().getTraceId()).isNotEqualTo(TraceId.getInvalid()); + } + { + AtomicReference spanRef = new AtomicReference<>(); + assertThatThrownBy( + () -> + builder.startAndRun( + () -> { + throw new IllegalStateException("fail"); + }, + (s, t) -> spanRef.set(s))) + .isInstanceOf(IllegalStateException.class); + assertThat(spanRef.get().getSpanContext().getTraceId()).isNotEqualTo(TraceId.getInvalid()); + } + + Map map = new HashMap<>(); + Context context = + Context.root() + .with( + Span.wrap( + SpanContext.create( + TraceId.fromLongs(0, 1), + SpanId.fromLong(2), + TraceFlags.getDefault(), + TraceState.getDefault()))); + + W3CTraceContextPropagator.getInstance() + .inject(context, map, (m, key, value) -> m.put(key, value)); + builder.setParentFrom(ContextPropagators.create(W3CTraceContextPropagator.getInstance()), map); + Span span = builder.startSpan(); + assertThat(span.getSpanContext().getTraceId()).isEqualTo(TraceId.fromLongs(0, 1)); + } +} diff --git a/instrumentation/opentelemetry-api/opentelemetry-api-1.42/javaagent/build.gradle.kts b/instrumentation/opentelemetry-api/opentelemetry-api-1.42/javaagent/build.gradle.kts index 1d96e7a2e605..3e2a5dbf809f 100644 --- a/instrumentation/opentelemetry-api/opentelemetry-api-1.42/javaagent/build.gradle.kts +++ b/instrumentation/opentelemetry-api/opentelemetry-api-1.42/javaagent/build.gradle.kts @@ -15,6 +15,7 @@ dependencies { implementation(project(":instrumentation:opentelemetry-api:opentelemetry-api-1.32:javaagent")) implementation(project(":instrumentation:opentelemetry-api:opentelemetry-api-1.37:javaagent")) implementation(project(":instrumentation:opentelemetry-api:opentelemetry-api-1.38:javaagent")) + implementation(project(":instrumentation:opentelemetry-api:opentelemetry-api-1.40:javaagent")) } configurations.configureEach { @@ -22,5 +23,26 @@ configurations.configureEach { resolutionStrategy { force("io.opentelemetry:opentelemetry-api:1.42.0") } + if (name.startsWith("incubatorTest")) { + resolutionStrategy { + force("io.opentelemetry:opentelemetry-api-incubator:1.42.0-alpha") + } + } + } +} + +testing { + suites { + val incubatorTest by registering(JvmTestSuite::class) { + dependencies { + implementation("io.opentelemetry:opentelemetry-api-incubator:1.42.0-alpha") + } + } + } +} + +tasks { + check { + dependsOn(testing.suites) } } diff --git a/instrumentation/opentelemetry-api/opentelemetry-api-1.42/javaagent/src/incubatorTest/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_42/incubator/logs/LoggerTest.java b/instrumentation/opentelemetry-api/opentelemetry-api-1.42/javaagent/src/incubatorTest/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_42/incubator/logs/LoggerTest.java new file mode 100644 index 000000000000..57b151c40aae --- /dev/null +++ b/instrumentation/opentelemetry-api/opentelemetry-api-1.42/javaagent/src/incubatorTest/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_42/incubator/logs/LoggerTest.java @@ -0,0 +1,145 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + +package io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_42.incubator.logs; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.awaitility.Awaitility.await; + +import io.opentelemetry.api.GlobalOpenTelemetry; +import io.opentelemetry.api.common.AttributeKey; +import io.opentelemetry.api.common.Attributes; +import io.opentelemetry.api.common.KeyValue; +import io.opentelemetry.api.common.Value; +import io.opentelemetry.api.common.ValueType; +import io.opentelemetry.api.incubator.logs.ExtendedLogger; +import io.opentelemetry.api.logs.Logger; +import io.opentelemetry.api.logs.Severity; +import io.opentelemetry.api.trace.Span; +import io.opentelemetry.api.trace.SpanContext; +import io.opentelemetry.api.trace.TraceFlags; +import io.opentelemetry.api.trace.TraceState; +import io.opentelemetry.context.Context; +import io.opentelemetry.instrumentation.testing.junit.AgentInstrumentationExtension; +import io.opentelemetry.sdk.trace.IdGenerator; +import java.time.Instant; +import java.util.concurrent.TimeUnit; +import java.util.stream.Stream; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.TestInfo; +import org.junit.jupiter.api.extension.RegisterExtension; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.Arguments; +import org.junit.jupiter.params.provider.MethodSource; + +class LoggerTest { + + @RegisterExtension + static final AgentInstrumentationExtension testing = AgentInstrumentationExtension.create(); + + private String instrumentationName; + private Logger logger; + + @BeforeEach + void setupLogger(TestInfo test) { + instrumentationName = "test-" + test.getDisplayName(); + logger = + GlobalOpenTelemetry.get() + .getLogsBridge() + .loggerBuilder(instrumentationName) + .setInstrumentationVersion("1.2.3") + .setSchemaUrl("http://schema.org") + .build(); + } + + @Test + void logRecordBuilder() { + assertThat(logger).isInstanceOf(ExtendedLogger.class); + + SpanContext spanContext = + SpanContext.create( + IdGenerator.random().generateTraceId(), + IdGenerator.random().generateSpanId(), + TraceFlags.getDefault(), + TraceState.getDefault()); + + logger + .logRecordBuilder() + .setTimestamp(1, TimeUnit.SECONDS) + .setTimestamp(Instant.now()) + .setContext(Context.current().with(Span.wrap(spanContext))) + .setSeverity(Severity.DEBUG) + .setSeverityText("debug") + .setBody("body") + .setAttribute(AttributeKey.stringKey("key"), "value") + .setAllAttributes(Attributes.builder().put("key", "value").build()) + .emit(); + + await() + .untilAsserted( + () -> + assertThat(testing.logRecords()) + .satisfiesExactly( + logRecordData -> { + assertThat(logRecordData.getInstrumentationScopeInfo().getName()) + .isEqualTo(instrumentationName); + assertThat(logRecordData.getInstrumentationScopeInfo().getVersion()) + .isEqualTo("1.2.3"); + assertThat(logRecordData.getTimestampEpochNanos()).isGreaterThan(0); + assertThat(logRecordData.getSpanContext()).isEqualTo(spanContext); + assertThat(logRecordData.getSeverity()).isEqualTo(Severity.DEBUG); + assertThat(logRecordData.getSeverityText()).isEqualTo("debug"); + assertThat(logRecordData.getBodyValue().getType()) + .isEqualTo(ValueType.STRING); + assertThat(logRecordData.getBodyValue().getValue()).isEqualTo("body"); + assertThat(logRecordData.getAttributes()) + .isEqualTo(Attributes.builder().put("key", "value").build()); + })); + } + + private static Stream bodyValues() { + return Stream.of( + Arguments.of(Value.of("hello")), + Arguments.of(Value.of(42)), + Arguments.of(Value.of(42.42)), + Arguments.of(Value.of(true)), + Arguments.of(Value.of(new byte[] {4, 2})), + Arguments.of(Value.of(Value.of("hello"), Value.of(42))), + Arguments.of(Value.of(KeyValue.of("key", Value.of(42))))); + } + + @ParameterizedTest + @MethodSource("bodyValues") + void logBodyValue() { + Value value = Value.of(42); + logger.logRecordBuilder().setBody(value).emit(); + + await() + .untilAsserted( + () -> + assertThat(testing.logRecords()) + .satisfiesExactly( + logRecordData -> { + assertThat(logRecordData.getBodyValue().getType()) + .isEqualTo(value.getType()); + assertThat(logRecordData.getBodyValue().getValue()) + .isEqualTo(value.getValue()); + })); + } + + @Test + void logNullBody() { + Value value = null; + logger.logRecordBuilder().setBody(value).emit(); + + await() + .untilAsserted( + () -> + assertThat(testing.logRecords()) + .satisfiesExactly( + logRecordData -> assertThat(logRecordData.getBodyValue()).isNull())); + } +} diff --git a/instrumentation/opentelemetry-api/opentelemetry-api-1.42/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_42/OpenTelemetryApiInstrumentationModule.java b/instrumentation/opentelemetry-api/opentelemetry-api-1.42/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_42/OpenTelemetryApiInstrumentationModule.java index bd9fd79a8542..3b99eedb53c4 100644 --- a/instrumentation/opentelemetry-api/opentelemetry-api-1.42/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_42/OpenTelemetryApiInstrumentationModule.java +++ b/instrumentation/opentelemetry-api/opentelemetry-api-1.42/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_42/OpenTelemetryApiInstrumentationModule.java @@ -5,13 +5,16 @@ package io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_42; +import static io.opentelemetry.javaagent.extension.matcher.AgentElementMatchers.hasClassesNamed; import static java.util.Collections.singletonList; +import static net.bytebuddy.matcher.ElementMatchers.not; import com.google.auto.service.AutoService; import io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; import io.opentelemetry.javaagent.extension.instrumentation.internal.ExperimentalInstrumentationModule; import java.util.List; +import net.bytebuddy.matcher.ElementMatcher; @AutoService(InstrumentationModule.class) public class OpenTelemetryApiInstrumentationModule extends InstrumentationModule @@ -20,6 +23,11 @@ public OpenTelemetryApiInstrumentationModule() { super("opentelemetry-api", "opentelemetry-api-1.42"); } + @Override + public ElementMatcher.Junction classLoaderMatcher() { + return not(hasClassesNamed("application.io.opentelemetry.api.incubator.logs.ExtendedLogger")); + } + @Override public List typeInstrumentations() { return singletonList(new OpenTelemetryInstrumentation()); diff --git a/instrumentation/opentelemetry-api/opentelemetry-api-1.42/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_42/incubator/OpenTelemetryApiIncubatorInstrumentationModule.java b/instrumentation/opentelemetry-api/opentelemetry-api-1.42/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_42/incubator/OpenTelemetryApiIncubatorInstrumentationModule.java new file mode 100644 index 000000000000..fa8d0c996678 --- /dev/null +++ b/instrumentation/opentelemetry-api/opentelemetry-api-1.42/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_42/incubator/OpenTelemetryApiIncubatorInstrumentationModule.java @@ -0,0 +1,39 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + +package io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_42.incubator; + +import static io.opentelemetry.javaagent.extension.matcher.AgentElementMatchers.hasClassesNamed; +import static java.util.Collections.singletonList; + +import com.google.auto.service.AutoService; +import io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule; +import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; +import io.opentelemetry.javaagent.extension.instrumentation.internal.ExperimentalInstrumentationModule; +import java.util.List; +import net.bytebuddy.matcher.ElementMatcher; + +@AutoService(InstrumentationModule.class) +public class OpenTelemetryApiIncubatorInstrumentationModule extends InstrumentationModule + implements ExperimentalInstrumentationModule { + public OpenTelemetryApiIncubatorInstrumentationModule() { + super("opentelemetry-api", "opentelemetry-api-1.42", "opentelemetry-api-incubator-1.42"); + } + + @Override + public ElementMatcher.Junction classLoaderMatcher() { + return hasClassesNamed("application.io.opentelemetry.api.incubator.logs.ExtendedLogger"); + } + + @Override + public List typeInstrumentations() { + return singletonList(new OpenTelemetryIncubatorInstrumentation()); + } + + @Override + public String getModuleGroup() { + return "opentelemetry-api-bridge"; + } +} diff --git a/instrumentation/opentelemetry-api/opentelemetry-api-1.42/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_42/incubator/OpenTelemetryIncubatorInstrumentation.java b/instrumentation/opentelemetry-api/opentelemetry-api-1.42/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_42/incubator/OpenTelemetryIncubatorInstrumentation.java new file mode 100644 index 000000000000..6752b6c5d5c0 --- /dev/null +++ b/instrumentation/opentelemetry-api/opentelemetry-api-1.42/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_42/incubator/OpenTelemetryIncubatorInstrumentation.java @@ -0,0 +1,40 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + +package io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_42.incubator; + +import static net.bytebuddy.matcher.ElementMatchers.named; +import static net.bytebuddy.matcher.ElementMatchers.none; + +import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; +import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; +import io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_42.incubator.logs.ApplicationLoggerFactory142Incubator; +import net.bytebuddy.asm.Advice; +import net.bytebuddy.description.type.TypeDescription; +import net.bytebuddy.matcher.ElementMatcher; + +public class OpenTelemetryIncubatorInstrumentation implements TypeInstrumentation { + + @Override + public ElementMatcher typeMatcher() { + return named("application.io.opentelemetry.api.GlobalOpenTelemetry"); + } + + @Override + public void transform(TypeTransformer transformer) { + transformer.applyAdviceToMethod( + none(), OpenTelemetryIncubatorInstrumentation.class.getName() + "$InitAdvice"); + } + + @SuppressWarnings({"ReturnValueIgnored", "unused"}) + public static class InitAdvice { + @Advice.OnMethodEnter + public static void init() { + // the sole purpose of this advice is to ensure that ApplicationLoggerFactory142Incubator is + // recognized as helper class and injected into class loader + ApplicationLoggerFactory142Incubator.class.getName(); + } + } +} diff --git a/instrumentation/opentelemetry-api/opentelemetry-api-1.42/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_42/incubator/logs/ApplicationLogRecordBuilder142.java b/instrumentation/opentelemetry-api/opentelemetry-api-1.42/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_42/incubator/logs/ApplicationLogRecordBuilder142.java new file mode 100644 index 000000000000..c7db93a6a5e4 --- /dev/null +++ b/instrumentation/opentelemetry-api/opentelemetry-api-1.42/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_42/incubator/logs/ApplicationLogRecordBuilder142.java @@ -0,0 +1,74 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + +package io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_42.incubator.logs; + +import application.io.opentelemetry.api.common.KeyValue; +import application.io.opentelemetry.api.common.Value; +import application.io.opentelemetry.api.logs.LogRecordBuilder; +import io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_27.logs.ApplicationLogRecordBuilder; +import java.nio.ByteBuffer; +import java.util.ArrayList; +import java.util.List; + +class ApplicationLogRecordBuilder142 extends ApplicationLogRecordBuilder + implements LogRecordBuilder { + + private final io.opentelemetry.api.logs.LogRecordBuilder agentLogRecordBuilder; + + ApplicationLogRecordBuilder142(io.opentelemetry.api.logs.LogRecordBuilder agentLogRecordBuilder) { + super(agentLogRecordBuilder); + this.agentLogRecordBuilder = agentLogRecordBuilder; + } + + @Override + public LogRecordBuilder setBody(Value body) { + agentLogRecordBuilder.setBody(convertValue(body)); + return this; + } + + @SuppressWarnings("unchecked") + private static io.opentelemetry.api.common.Value convertValue(Value value) { + if (value == null) { + return null; + } + + switch (value.getType()) { + case STRING: + return io.opentelemetry.api.common.Value.of((String) value.getValue()); + case BOOLEAN: + return io.opentelemetry.api.common.Value.of((Boolean) value.getValue()); + case LONG: + return io.opentelemetry.api.common.Value.of((Long) value.getValue()); + case DOUBLE: + return io.opentelemetry.api.common.Value.of((Double) value.getValue()); + case ARRAY: + List> values = (List>) value.getValue(); + List> convertedValues = new ArrayList<>(); + for (Value source : values) { + convertedValues.add(convertValue(source)); + } + return io.opentelemetry.api.common.Value.of(convertedValues); + case KEY_VALUE_LIST: + List keyValueList = (List) value.getValue(); + io.opentelemetry.api.common.KeyValue[] convertedKeyValueList = + new io.opentelemetry.api.common.KeyValue[keyValueList.size()]; + int i = 0; + for (KeyValue source : keyValueList) { + convertedKeyValueList[i++] = + io.opentelemetry.api.common.KeyValue.of( + source.getKey(), convertValue(source.getValue())); + } + return io.opentelemetry.api.common.Value.of(convertedKeyValueList); + case BYTES: + ByteBuffer byteBuffer = (ByteBuffer) value.getValue(); + byte[] bytes = new byte[byteBuffer.remaining()]; + byteBuffer.get(bytes); + break; + } + + throw new IllegalStateException("Unhandled value type: " + value.getType()); + } +} diff --git a/instrumentation/opentelemetry-api/opentelemetry-api-1.42/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_42/incubator/logs/ApplicationLogger142Incubator.java b/instrumentation/opentelemetry-api/opentelemetry-api-1.42/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_42/incubator/logs/ApplicationLogger142Incubator.java new file mode 100644 index 000000000000..94609378bbfe --- /dev/null +++ b/instrumentation/opentelemetry-api/opentelemetry-api-1.42/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_42/incubator/logs/ApplicationLogger142Incubator.java @@ -0,0 +1,24 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + +package io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_42.incubator.logs; + +import application.io.opentelemetry.api.logs.LogRecordBuilder; +import io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_40.incubator.logs.ApplicationLogger140Incubator; + +class ApplicationLogger142Incubator extends ApplicationLogger140Incubator { + + private final io.opentelemetry.api.logs.Logger agentLogger; + + ApplicationLogger142Incubator(io.opentelemetry.api.logs.Logger agentLogger) { + super(agentLogger); + this.agentLogger = agentLogger; + } + + @Override + public LogRecordBuilder logRecordBuilder() { + return new ApplicationLogRecordBuilder142(agentLogger.logRecordBuilder()); + } +} diff --git a/instrumentation/opentelemetry-api/opentelemetry-api-1.42/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_42/incubator/logs/ApplicationLoggerFactory142Incubator.java b/instrumentation/opentelemetry-api/opentelemetry-api-1.42/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_42/incubator/logs/ApplicationLoggerFactory142Incubator.java new file mode 100644 index 000000000000..71887f41c9b2 --- /dev/null +++ b/instrumentation/opentelemetry-api/opentelemetry-api-1.42/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_42/incubator/logs/ApplicationLoggerFactory142Incubator.java @@ -0,0 +1,19 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + +package io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_42.incubator.logs; + +import io.opentelemetry.api.logs.Logger; +import io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_27.logs.ApplicationLogger; +import io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_27.logs.ApplicationLoggerFactory; + +// this class is used from opentelemetry-api-1.27.0 via reflection +public class ApplicationLoggerFactory142Incubator implements ApplicationLoggerFactory { + + @Override + public ApplicationLogger newLogger(Logger agentLogger) { + return new ApplicationLogger142Incubator(agentLogger); + } +} diff --git a/instrumentation/opentelemetry-api/opentelemetry-api-1.42/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_42/logs/ApplicationLoggerFactory142.java b/instrumentation/opentelemetry-api/opentelemetry-api-1.42/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_42/logs/ApplicationLoggerFactory142.java index 4353833b8a42..6ce873586f1e 100644 --- a/instrumentation/opentelemetry-api/opentelemetry-api-1.42/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_42/logs/ApplicationLoggerFactory142.java +++ b/instrumentation/opentelemetry-api/opentelemetry-api-1.42/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_42/logs/ApplicationLoggerFactory142.java @@ -9,6 +9,7 @@ import io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_27.logs.ApplicationLogger; import io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_27.logs.ApplicationLoggerFactory; +// this class is used from opentelemetry-api-1.27.0 via reflection public class ApplicationLoggerFactory142 implements ApplicationLoggerFactory { @Override diff --git a/instrumentation/opentelemetry-api/opentelemetry-api-1.42/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_42/LoggerTest.java b/instrumentation/opentelemetry-api/opentelemetry-api-1.42/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_42/logs/LoggerTest.java similarity index 99% rename from instrumentation/opentelemetry-api/opentelemetry-api-1.42/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_42/LoggerTest.java rename to instrumentation/opentelemetry-api/opentelemetry-api-1.42/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_42/logs/LoggerTest.java index 912a2f85054a..7141f9a3aaa0 100644 --- a/instrumentation/opentelemetry-api/opentelemetry-api-1.42/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_42/LoggerTest.java +++ b/instrumentation/opentelemetry-api/opentelemetry-api-1.42/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_42/logs/LoggerTest.java @@ -3,7 +3,7 @@ * SPDX-License-Identifier: Apache-2.0 */ -package io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_42; +package io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_42.logs; import static org.assertj.core.api.Assertions.assertThat; import static org.awaitility.Awaitility.await; diff --git a/opentelemetry-api-shaded-for-instrumenting/build.gradle.kts b/opentelemetry-api-shaded-for-instrumenting/build.gradle.kts index a3849d97fb1d..fe5b3d678485 100644 --- a/opentelemetry-api-shaded-for-instrumenting/build.gradle.kts +++ b/opentelemetry-api-shaded-for-instrumenting/build.gradle.kts @@ -58,6 +58,13 @@ val v1_38Deps by configurations.creating { exclude("io.opentelemetry", "opentelemetry-bom") exclude("io.opentelemetry", "opentelemetry-bom-alpha") } +val v1_40Deps by configurations.creating { + isCanBeResolved = true + isCanBeConsumed = false + // exclude the bom added by dependencyManagement + exclude("io.opentelemetry", "opentelemetry-bom") + exclude("io.opentelemetry", "opentelemetry-bom-alpha") +} val v1_42Deps by configurations.creating { isCanBeResolved = true isCanBeConsumed = false @@ -94,6 +101,10 @@ val v1_38 by configurations.creating { isCanBeConsumed = true isCanBeResolved = false } +val v1_40 by configurations.creating { + isCanBeConsumed = true + isCanBeResolved = false +} val v1_42 by configurations.creating { isCanBeConsumed = true isCanBeResolved = false @@ -154,6 +165,11 @@ dependencies { strictly("1.38.0-alpha") } } + v1_40Deps("io.opentelemetry:$it") { + version { + strictly("1.40.0-alpha") + } + } v1_42Deps("io.opentelemetry:$it") { version { strictly("1.42.0-alpha") @@ -202,6 +218,10 @@ tasks { configurations = listOf(v1_38Deps) archiveClassifier.set("v1_38") } + val v1_40Shadow by registering(ShadowJar::class) { + configurations = listOf(v1_40Deps) + archiveClassifier.set("v1_40") + } val v1_42Shadow by registering(ShadowJar::class) { configurations = listOf(v1_42Deps) archiveClassifier.set("v1_42") @@ -215,6 +235,7 @@ tasks { add(v1_32.name, v1_32Shadow) add(v1_37.name, v1_37Shadow) add(v1_38.name, v1_38Shadow) + add(v1_40.name, v1_40Shadow) add(v1_42.name, v1_42Shadow) } } diff --git a/settings.gradle.kts b/settings.gradle.kts index 5882499605b1..4b4b80009ec5 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -457,6 +457,7 @@ include(":instrumentation:opentelemetry-api:opentelemetry-api-1.31:javaagent") include(":instrumentation:opentelemetry-api:opentelemetry-api-1.32:javaagent") include(":instrumentation:opentelemetry-api:opentelemetry-api-1.37:javaagent") include(":instrumentation:opentelemetry-api:opentelemetry-api-1.38:javaagent") +include(":instrumentation:opentelemetry-api:opentelemetry-api-1.40:javaagent") include(":instrumentation:opentelemetry-api:opentelemetry-api-1.42:javaagent") include(":instrumentation:opentelemetry-extension-annotations-1.0:javaagent") include(":instrumentation:opentelemetry-extension-kotlin-1.0:javaagent") diff --git a/testing/agent-exporter/src/main/java/io/opentelemetry/javaagent/testing/exporter/AgentTestingCustomizer.java b/testing/agent-exporter/src/main/java/io/opentelemetry/javaagent/testing/exporter/AgentTestingCustomizer.java index 058ad0e38d6d..f9735e6d42df 100644 --- a/testing/agent-exporter/src/main/java/io/opentelemetry/javaagent/testing/exporter/AgentTestingCustomizer.java +++ b/testing/agent-exporter/src/main/java/io/opentelemetry/javaagent/testing/exporter/AgentTestingCustomizer.java @@ -5,13 +5,21 @@ package io.opentelemetry.javaagent.testing.exporter; +import static io.opentelemetry.sdk.internal.ScopeConfiguratorBuilder.nameEquals; + import com.google.auto.service.AutoService; import io.opentelemetry.sdk.autoconfigure.spi.AutoConfigurationCustomizer; import io.opentelemetry.sdk.autoconfigure.spi.AutoConfigurationCustomizerProvider; import io.opentelemetry.sdk.logs.export.SimpleLogRecordProcessor; +import io.opentelemetry.sdk.logs.internal.LoggerConfig; +import io.opentelemetry.sdk.logs.internal.SdkLoggerProviderUtil; import io.opentelemetry.sdk.metrics.export.MetricReader; import io.opentelemetry.sdk.metrics.export.PeriodicMetricReader; +import io.opentelemetry.sdk.metrics.internal.MeterConfig; +import io.opentelemetry.sdk.metrics.internal.SdkMeterProviderUtil; import io.opentelemetry.sdk.trace.export.SimpleSpanProcessor; +import io.opentelemetry.sdk.trace.internal.SdkTracerProviderUtil; +import io.opentelemetry.sdk.trace.internal.TracerConfig; import java.time.Duration; @AutoService(AutoConfigurationCustomizerProvider.class) @@ -36,6 +44,9 @@ static void reset() { public void customize(AutoConfigurationCustomizer autoConfigurationCustomizer) { autoConfigurationCustomizer.addTracerProviderCustomizer( (tracerProvider, config) -> { + SdkTracerProviderUtil.addTracerConfiguratorCondition( + tracerProvider, nameEquals("disabled-tracer"), TracerConfig.disabled()); + // span processor is responsible for exporting spans, not adding it disables exporting of // the spans if (config.getBoolean("testing.exporter.enabled", true)) { @@ -46,6 +57,9 @@ public void customize(AutoConfigurationCustomizer autoConfigurationCustomizer) { autoConfigurationCustomizer.addMeterProviderCustomizer( (meterProvider, config) -> { + SdkMeterProviderUtil.addMeterConfiguratorCondition( + meterProvider, nameEquals("disabled-meter"), MeterConfig.disabled()); + // metric reader is responsible for exporting metrics, not adding it disables exporting of // the metrics if (config.getBoolean("testing.exporter.enabled", true)) { @@ -56,6 +70,9 @@ public void customize(AutoConfigurationCustomizer autoConfigurationCustomizer) { autoConfigurationCustomizer.addLoggerProviderCustomizer( (logProvider, config) -> { + SdkLoggerProviderUtil.addLoggerConfiguratorCondition( + logProvider, nameEquals("disabled-logger"), LoggerConfig.disabled()); + // log record processor is responsible for exporting logs, not adding it disables // exporting of the logs if (config.getBoolean("testing.exporter.enabled", true)) {