diff --git a/.fossa.yml b/.fossa.yml index 7d094439bd12..b2374a9de0c9 100644 --- a/.fossa.yml +++ b/.fossa.yml @@ -4,6 +4,9 @@ targets: only: # only scanning the modules which are published # (as opposed to internal testing modules + - type: gradle + path: ./ + target: ':declarative-config-bridge' - type: gradle path: ./ target: ':instrumentation-annotations' diff --git a/instrumentation-api-incubator/README.md b/declarative-config-bridge/README.md similarity index 84% rename from instrumentation-api-incubator/README.md rename to declarative-config-bridge/README.md index 348cd6bb1720..4938649ae891 100644 --- a/instrumentation-api-incubator/README.md +++ b/declarative-config-bridge/README.md @@ -1,11 +1,4 @@ -# OpenTelemetry Instrumentation API Incubator - -Instrumentation API Incubator is a collection of libraries that provide additional functionality -for OpenTelemetry instrumentation and auto-configuration. It is intended to be used by -instrumentation authors and auto-configuration providers to enhance their capabilities and provide a -more consistent experience when working with OpenTelemetry. - -## Declarative Config Bridge +# Declarative Config Bridge Declarative Config Bridge allows instrumentation authors to access configuration in a uniform way, regardless of the configuration source. @@ -13,7 +6,7 @@ regardless of the configuration source. The bridge allows you to read configuration using the system property style when dealing with declarative configuration. -### Example +## Example As an example, let's look at the inferred spans configuration. First, there is a configuration method that reads the properties and is unaware of the source of the diff --git a/declarative-config-bridge/build.gradle.kts b/declarative-config-bridge/build.gradle.kts new file mode 100644 index 000000000000..b5ac9ec9c1c3 --- /dev/null +++ b/declarative-config-bridge/build.gradle.kts @@ -0,0 +1,19 @@ +plugins { + id("otel.java-conventions") + id("otel.publish-conventions") + id("otel.nullaway-conventions") +} + +group = "io.opentelemetry.instrumentation" + +dependencies { + compileOnly("io.opentelemetry:opentelemetry-sdk-extension-autoconfigure") + implementation("io.opentelemetry:opentelemetry-sdk-extension-autoconfigure-spi") + implementation("io.opentelemetry:opentelemetry-api-incubator") + + testImplementation("io.opentelemetry:opentelemetry-sdk-extension-incubator") + testImplementation("io.opentelemetry:opentelemetry-sdk-extension-autoconfigure") + + compileOnly("com.google.code.findbugs:annotations") + testCompileOnly("com.google.code.findbugs:annotations") +} diff --git a/instrumentation-api-incubator/src/main/java/io/opentelemetry/instrumentation/api/incubator/sdk/config/bridge/ConfigPropertiesUtil.java b/declarative-config-bridge/src/main/java/io/opentelemetry/instrumentation/config/bridge/ConfigPropertiesUtil.java similarity index 89% rename from instrumentation-api-incubator/src/main/java/io/opentelemetry/instrumentation/api/incubator/sdk/config/bridge/ConfigPropertiesUtil.java rename to declarative-config-bridge/src/main/java/io/opentelemetry/instrumentation/config/bridge/ConfigPropertiesUtil.java index 6a026e38d468..cc7fb351ea3c 100644 --- a/instrumentation-api-incubator/src/main/java/io/opentelemetry/instrumentation/api/incubator/sdk/config/bridge/ConfigPropertiesUtil.java +++ b/declarative-config-bridge/src/main/java/io/opentelemetry/instrumentation/config/bridge/ConfigPropertiesUtil.java @@ -3,7 +3,7 @@ * SPDX-License-Identifier: Apache-2.0 */ -package io.opentelemetry.instrumentation.api.incubator.sdk.config.bridge; +package io.opentelemetry.instrumentation.config.bridge; public final class ConfigPropertiesUtil { private ConfigPropertiesUtil() {} diff --git a/instrumentation-api-incubator/src/main/java/io/opentelemetry/instrumentation/api/incubator/sdk/config/bridge/DeclarativeConfigPropertiesBridge.java b/declarative-config-bridge/src/main/java/io/opentelemetry/instrumentation/config/bridge/DeclarativeConfigPropertiesBridge.java similarity index 98% rename from instrumentation-api-incubator/src/main/java/io/opentelemetry/instrumentation/api/incubator/sdk/config/bridge/DeclarativeConfigPropertiesBridge.java rename to declarative-config-bridge/src/main/java/io/opentelemetry/instrumentation/config/bridge/DeclarativeConfigPropertiesBridge.java index 000d928159d4..928a17f5bd0e 100644 --- a/instrumentation-api-incubator/src/main/java/io/opentelemetry/instrumentation/api/incubator/sdk/config/bridge/DeclarativeConfigPropertiesBridge.java +++ b/declarative-config-bridge/src/main/java/io/opentelemetry/instrumentation/config/bridge/DeclarativeConfigPropertiesBridge.java @@ -3,7 +3,7 @@ * SPDX-License-Identifier: Apache-2.0 */ -package io.opentelemetry.instrumentation.api.incubator.sdk.config.bridge; +package io.opentelemetry.instrumentation.config.bridge; import static io.opentelemetry.api.incubator.config.DeclarativeConfigProperties.empty; diff --git a/instrumentation-api-incubator/src/main/java/io/opentelemetry/instrumentation/api/incubator/sdk/config/bridge/DeclarativeConfigPropertiesBridgeBuilder.java b/declarative-config-bridge/src/main/java/io/opentelemetry/instrumentation/config/bridge/DeclarativeConfigPropertiesBridgeBuilder.java similarity index 98% rename from instrumentation-api-incubator/src/main/java/io/opentelemetry/instrumentation/api/incubator/sdk/config/bridge/DeclarativeConfigPropertiesBridgeBuilder.java rename to declarative-config-bridge/src/main/java/io/opentelemetry/instrumentation/config/bridge/DeclarativeConfigPropertiesBridgeBuilder.java index e3a30c196fd5..3c70dc8b6100 100644 --- a/instrumentation-api-incubator/src/main/java/io/opentelemetry/instrumentation/api/incubator/sdk/config/bridge/DeclarativeConfigPropertiesBridgeBuilder.java +++ b/declarative-config-bridge/src/main/java/io/opentelemetry/instrumentation/config/bridge/DeclarativeConfigPropertiesBridgeBuilder.java @@ -3,7 +3,7 @@ * SPDX-License-Identifier: Apache-2.0 */ -package io.opentelemetry.instrumentation.api.incubator.sdk.config.bridge; +package io.opentelemetry.instrumentation.config.bridge; import static io.opentelemetry.api.incubator.config.DeclarativeConfigProperties.empty; diff --git a/instrumentation-api-incubator/src/test/java/io/opentelemetry/instrumentation/api/incubator/sdk/config/bridge/ConfigPropertiesUtilTest.java b/declarative-config-bridge/src/test/java/io/opentelemetry/instrumentation/config/bridge/ConfigPropertiesUtilTest.java similarity index 86% rename from instrumentation-api-incubator/src/test/java/io/opentelemetry/instrumentation/api/incubator/sdk/config/bridge/ConfigPropertiesUtilTest.java rename to declarative-config-bridge/src/test/java/io/opentelemetry/instrumentation/config/bridge/ConfigPropertiesUtilTest.java index 535fda407160..db62912fd572 100644 --- a/instrumentation-api-incubator/src/test/java/io/opentelemetry/instrumentation/api/incubator/sdk/config/bridge/ConfigPropertiesUtilTest.java +++ b/declarative-config-bridge/src/test/java/io/opentelemetry/instrumentation/config/bridge/ConfigPropertiesUtilTest.java @@ -3,7 +3,7 @@ * SPDX-License-Identifier: Apache-2.0 */ -package io.opentelemetry.instrumentation.api.incubator.sdk.config.bridge; +package io.opentelemetry.instrumentation.config.bridge; import static org.assertj.core.api.Assertions.assertThat; diff --git a/instrumentation-api-incubator/src/test/java/io/opentelemetry/instrumentation/api/incubator/sdk/config/bridge/DeclarativeConfigPropertiesBridgeBuilderTest.java b/declarative-config-bridge/src/test/java/io/opentelemetry/instrumentation/config/bridge/DeclarativeConfigPropertiesBridgeBuilderTest.java similarity index 98% rename from instrumentation-api-incubator/src/test/java/io/opentelemetry/instrumentation/api/incubator/sdk/config/bridge/DeclarativeConfigPropertiesBridgeBuilderTest.java rename to declarative-config-bridge/src/test/java/io/opentelemetry/instrumentation/config/bridge/DeclarativeConfigPropertiesBridgeBuilderTest.java index 96b4ff0f3b9f..d3058e0b888f 100644 --- a/instrumentation-api-incubator/src/test/java/io/opentelemetry/instrumentation/api/incubator/sdk/config/bridge/DeclarativeConfigPropertiesBridgeBuilderTest.java +++ b/declarative-config-bridge/src/test/java/io/opentelemetry/instrumentation/config/bridge/DeclarativeConfigPropertiesBridgeBuilderTest.java @@ -3,7 +3,7 @@ * SPDX-License-Identifier: Apache-2.0 */ -package io.opentelemetry.instrumentation.api.incubator.sdk.config.bridge; +package io.opentelemetry.instrumentation.config.bridge; import static org.assertj.core.api.Assertions.assertThat; import static org.mockito.ArgumentMatchers.eq; diff --git a/instrumentation-api-incubator/src/test/java/io/opentelemetry/instrumentation/api/incubator/sdk/config/bridge/DeclarativeConfigPropertiesBridgeTest.java b/declarative-config-bridge/src/test/java/io/opentelemetry/instrumentation/config/bridge/DeclarativeConfigPropertiesBridgeTest.java similarity index 98% rename from instrumentation-api-incubator/src/test/java/io/opentelemetry/instrumentation/api/incubator/sdk/config/bridge/DeclarativeConfigPropertiesBridgeTest.java rename to declarative-config-bridge/src/test/java/io/opentelemetry/instrumentation/config/bridge/DeclarativeConfigPropertiesBridgeTest.java index 879c2223646a..29f9d424cd9d 100644 --- a/instrumentation-api-incubator/src/test/java/io/opentelemetry/instrumentation/api/incubator/sdk/config/bridge/DeclarativeConfigPropertiesBridgeTest.java +++ b/declarative-config-bridge/src/test/java/io/opentelemetry/instrumentation/config/bridge/DeclarativeConfigPropertiesBridgeTest.java @@ -3,7 +3,7 @@ * SPDX-License-Identifier: Apache-2.0 */ -package io.opentelemetry.instrumentation.api.incubator.sdk.config.bridge; +package io.opentelemetry.instrumentation.config.bridge; import static org.assertj.core.api.Assertions.assertThat; diff --git a/instrumentation-api-incubator/src/test/resources/config.yaml b/declarative-config-bridge/src/test/resources/config.yaml similarity index 100% rename from instrumentation-api-incubator/src/test/resources/config.yaml rename to declarative-config-bridge/src/test/resources/config.yaml diff --git a/instrumentation-api-incubator/build.gradle.kts b/instrumentation-api-incubator/build.gradle.kts index ac891987027a..229230ef880d 100644 --- a/instrumentation-api-incubator/build.gradle.kts +++ b/instrumentation-api-incubator/build.gradle.kts @@ -14,8 +14,6 @@ dependencies { api("io.opentelemetry.semconv:opentelemetry-semconv") api(project(":instrumentation-api")) api("io.opentelemetry:opentelemetry-api-incubator") - compileOnly("io.opentelemetry:opentelemetry-sdk-extension-autoconfigure") - compileOnly("io.opentelemetry:opentelemetry-sdk-extension-incubator") compileOnly("com.google.auto.value:auto-value-annotations") annotationProcessor("com.google.auto.value:auto-value") @@ -24,8 +22,6 @@ dependencies { testImplementation("io.opentelemetry:opentelemetry-sdk") testImplementation("io.opentelemetry:opentelemetry-sdk-testing") testImplementation("io.opentelemetry.semconv:opentelemetry-semconv-incubating") - testImplementation("io.opentelemetry:opentelemetry-sdk-extension-autoconfigure") - testImplementation("io.opentelemetry:opentelemetry-sdk-extension-incubator") } testing { diff --git a/javaagent-tooling/build.gradle.kts b/javaagent-tooling/build.gradle.kts index 0d94d1baeb09..653ff1bdf1ce 100644 --- a/javaagent-tooling/build.gradle.kts +++ b/javaagent-tooling/build.gradle.kts @@ -17,10 +17,10 @@ dependencies { implementation(project(":instrumentation-annotations-support")) implementation(project(":muzzle")) implementation(project(":sdk-autoconfigure-support")) + implementation(project(":declarative-config-bridge")) implementation("io.opentelemetry:opentelemetry-api") implementation("io.opentelemetry:opentelemetry-sdk") - implementation("io.opentelemetry:opentelemetry-sdk-extension-autoconfigure-spi") implementation("io.opentelemetry:opentelemetry-extension-kotlin") implementation("io.opentelemetry:opentelemetry-extension-trace-propagators") // the incubator's ViewConfigCustomizer is used to support loading yaml-based metric views diff --git a/javaagent-tooling/src/main/java/io/opentelemetry/javaagent/tooling/OpenTelemetryInstaller.java b/javaagent-tooling/src/main/java/io/opentelemetry/javaagent/tooling/OpenTelemetryInstaller.java index 3a31d4986cdc..b51fa03a3a95 100644 --- a/javaagent-tooling/src/main/java/io/opentelemetry/javaagent/tooling/OpenTelemetryInstaller.java +++ b/javaagent-tooling/src/main/java/io/opentelemetry/javaagent/tooling/OpenTelemetryInstaller.java @@ -6,7 +6,7 @@ package io.opentelemetry.javaagent.tooling; import io.opentelemetry.api.incubator.config.ConfigProvider; -import io.opentelemetry.instrumentation.api.incubator.sdk.config.bridge.DeclarativeConfigPropertiesBridgeBuilder; +import io.opentelemetry.instrumentation.config.bridge.DeclarativeConfigPropertiesBridgeBuilder; import io.opentelemetry.javaagent.bootstrap.OpenTelemetrySdkAccess; import io.opentelemetry.javaagent.tooling.config.EarlyInitAgentConfig; import io.opentelemetry.sdk.OpenTelemetrySdk; diff --git a/javaagent/build.gradle.kts b/javaagent/build.gradle.kts index f4eec724b26c..6c67d685a80b 100644 --- a/javaagent/build.gradle.kts +++ b/javaagent/build.gradle.kts @@ -57,6 +57,7 @@ dependencies { bootstrapLibs(project(":instrumentation-api")) // opentelemetry-api is an api dependency of :instrumentation-api, but opentelemetry-api-incubator is not bootstrapLibs("io.opentelemetry:opentelemetry-api-incubator") + bootstrapLibs(project(":instrumentation-api-incubator")) bootstrapLibs(project(":instrumentation-annotations-support")) bootstrapLibs(project(":javaagent-bootstrap")) @@ -70,11 +71,8 @@ dependencies { exclude("io.opentelemetry", "opentelemetry-sdk-extension-autoconfigure-spi") } baseJavaagentLibs(project(":javaagent-extension-api")) - baseJavaagentLibs(project(":instrumentation-api-incubator")) - baseJavaagentLibs(project(":javaagent-tooling")) { - exclude("io.opentelemetry", "opentelemetry-sdk-extension-autoconfigure-spi") - } + baseJavaagentLibs(project(":javaagent-tooling")) baseJavaagentLibs(project(":javaagent-internal-logging-application")) baseJavaagentLibs(project(":javaagent-internal-logging-simple", configuration = "shadow")) baseJavaagentLibs(project(":muzzle")) @@ -149,7 +147,8 @@ tasks { val buildBootstrapLibs by registering(ShadowJar::class) { configurations = listOf(bootstrapLibs) - excludeNonBootstrapClasses() + // exclude the agent part of the javaagent-extension-api; these classes will be added in relocate tasks + exclude("io/opentelemetry/javaagent/extension/**") duplicatesStrategy = DuplicatesStrategy.EXCLUDE @@ -425,30 +424,17 @@ fun CopySpec.copyByteBuddy(jar: Provider) { } } -// exclude bootstrap projects from javaagent libs - they won't be added to inst/ -fun ShadowJar.excludeNonBootstrapClasses() { - // exclude the agent part of the javaagent-extension-api; these classes will be added in relocate tasks - exclude("io/opentelemetry/javaagent/extension/**") - exclude("**/instrumentation/api/incubator/sdk/**") -} - // exclude bootstrap projects from javaagent libs - they won't be added to inst/ fun ShadowJar.excludeBootstrapClasses() { dependencies { exclude(project(":instrumentation-api")) + exclude(project(":instrumentation-api-incubator")) exclude(project(":instrumentation-annotations-support")) exclude(project(":javaagent-bootstrap")) } // exclude the bootstrap part of the javaagent-extension-api exclude("io/opentelemetry/javaagent/bootstrap/**") - - // all in instrumentation-api-incubator except the bridge package - exclude("io/opentelemetry/instrumentation/api/incubator/builder/**") - exclude("io/opentelemetry/instrumentation/api/incubator/config/**") - exclude("io/opentelemetry/instrumentation/api/incubator/instrumenter/**") - exclude("io/opentelemetry/instrumentation/api/incubator/log/**") - exclude("io/opentelemetry/instrumentation/api/incubator/semconv/**") } class JavaagentProvider( diff --git a/settings.gradle.kts b/settings.gradle.kts index 7e171f79605a..2a6f241d7470 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -86,6 +86,7 @@ include(":javaagent-internal-logging-application") include(":javaagent-internal-logging-simple") include(":javaagent") include(":sdk-autoconfigure-support") +include(":declarative-config-bridge") include(":bom") include(":bom-alpha")