From 2c7575b3fe6ecad2867cfc13a56d7f909462e3b1 Mon Sep 17 00:00:00 2001 From: Gregor Zeitlinger Date: Wed, 9 Jul 2025 14:29:12 +0200 Subject: [PATCH 01/12] aws component provider --- aws-resources/build.gradle.kts | 2 ++ .../aws/resource/AwsResourceDetector.java | 35 +++++++++++++++++++ ...toconfigure.spi.internal.ComponentProvider | 1 + .../aws/resource/ComponentProviderTest.java | 21 +++++++++++ 4 files changed, 59 insertions(+) create mode 100644 aws-resources/src/main/java/io/opentelemetry/contrib/aws/resource/AwsResourceDetector.java create mode 100644 aws-resources/src/main/resources/META-INF/services/io.opentelemetry.sdk.autoconfigure.spi.internal.ComponentProvider create mode 100644 aws-resources/src/test/java/io/opentelemetry/contrib/aws/resource/ComponentProviderTest.java diff --git a/aws-resources/build.gradle.kts b/aws-resources/build.gradle.kts index ede0dad59..580ecb44f 100644 --- a/aws-resources/build.gradle.kts +++ b/aws-resources/build.gradle.kts @@ -9,6 +9,7 @@ otelJava.moduleName.set("io.opentelemetry.contrib.aws.resource") dependencies { api("io.opentelemetry:opentelemetry-api") + compileOnly("io.opentelemetry:opentelemetry-api-incubator") api("io.opentelemetry:opentelemetry-sdk") implementation("io.opentelemetry.semconv:opentelemetry-semconv") @@ -20,6 +21,7 @@ dependencies { implementation("com.squareup.okhttp3:okhttp") testImplementation("io.opentelemetry:opentelemetry-sdk-extension-autoconfigure") + testImplementation("io.opentelemetry:opentelemetry-api-incubator") testImplementation("io.opentelemetry:opentelemetry-sdk-testing") testImplementation("com.linecorp.armeria:armeria-junit5") diff --git a/aws-resources/src/main/java/io/opentelemetry/contrib/aws/resource/AwsResourceDetector.java b/aws-resources/src/main/java/io/opentelemetry/contrib/aws/resource/AwsResourceDetector.java new file mode 100644 index 000000000..e866d54ae --- /dev/null +++ b/aws-resources/src/main/java/io/opentelemetry/contrib/aws/resource/AwsResourceDetector.java @@ -0,0 +1,35 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + +package io.opentelemetry.contrib.aws.resource; + +import io.opentelemetry.api.incubator.config.DeclarativeConfigProperties; +import io.opentelemetry.sdk.autoconfigure.spi.internal.ComponentProvider; +import io.opentelemetry.sdk.resources.Resource; +import io.opentelemetry.sdk.resources.ResourceBuilder; + +public class AwsResourceDetector implements ComponentProvider { + + @Override + public Class getType() { + return Resource.class; + } + + @Override + public String getName() { + return "aws"; + } + + @Override + public Resource create(DeclarativeConfigProperties config) { + ResourceBuilder builder = Resource.builder(); + builder.putAll(BeanstalkResource.get()); + builder.putAll(Ec2Resource.get()); + builder.putAll(EcsResource.get()); + builder.putAll(EksResource.get()); + builder.putAll(LambdaResource.get()); + return builder.build(); + } +} diff --git a/aws-resources/src/main/resources/META-INF/services/io.opentelemetry.sdk.autoconfigure.spi.internal.ComponentProvider b/aws-resources/src/main/resources/META-INF/services/io.opentelemetry.sdk.autoconfigure.spi.internal.ComponentProvider new file mode 100644 index 000000000..b26ecb379 --- /dev/null +++ b/aws-resources/src/main/resources/META-INF/services/io.opentelemetry.sdk.autoconfigure.spi.internal.ComponentProvider @@ -0,0 +1 @@ +io.opentelemetry.contrib.aws.resource.AwsResourceDetector diff --git a/aws-resources/src/test/java/io/opentelemetry/contrib/aws/resource/ComponentProviderTest.java b/aws-resources/src/test/java/io/opentelemetry/contrib/aws/resource/ComponentProviderTest.java new file mode 100644 index 000000000..ba9bf8ae8 --- /dev/null +++ b/aws-resources/src/test/java/io/opentelemetry/contrib/aws/resource/ComponentProviderTest.java @@ -0,0 +1,21 @@ +package io.opentelemetry.contrib.aws.resource; + +import static org.assertj.core.api.Assertions.assertThat; + +import io.opentelemetry.sdk.autoconfigure.internal.SpiHelper; +import io.opentelemetry.sdk.autoconfigure.spi.internal.ComponentProvider; +import org.junit.jupiter.api.Test; +import java.util.List; + +public class ComponentProviderTest { + + @Test + void providerIsLoaded() { + @SuppressWarnings("rawtypes") + List providers = SpiHelper.create( + ComponentProviderTest.class.getClassLoader()) + .load(ComponentProvider.class); + assertThat(providers).extracting(ComponentProvider::getName) + .containsExactly("aws"); + } +} From 9eb3634d0061cb6312552c4dc0f3a5f755c7ef5b Mon Sep 17 00:00:00 2001 From: Gregor Zeitlinger Date: Wed, 9 Jul 2025 15:18:16 +0200 Subject: [PATCH 02/12] gcp component provider --- .../aws/resource/ComponentProviderTest.java | 2 +- gcp-resources/build.gradle.kts | 2 ++ .../gcp/resource/GcpResourceDetector.java | 31 +++++++++++++++++++ ...toconfigure.spi.internal.ComponentProvider | 1 + .../gcp/resource/ComponentProviderTest.java | 21 +++++++++++++ 5 files changed, 56 insertions(+), 1 deletion(-) create mode 100644 gcp-resources/src/main/java/io/opentelemetry/contrib/gcp/resource/GcpResourceDetector.java create mode 100644 gcp-resources/src/main/resources/META-INF/services/io.opentelemetry.sdk.autoconfigure.spi.internal.ComponentProvider create mode 100644 gcp-resources/src/test/java/io/opentelemetry/contrib/gcp/resource/ComponentProviderTest.java diff --git a/aws-resources/src/test/java/io/opentelemetry/contrib/aws/resource/ComponentProviderTest.java b/aws-resources/src/test/java/io/opentelemetry/contrib/aws/resource/ComponentProviderTest.java index ba9bf8ae8..7b81696a6 100644 --- a/aws-resources/src/test/java/io/opentelemetry/contrib/aws/resource/ComponentProviderTest.java +++ b/aws-resources/src/test/java/io/opentelemetry/contrib/aws/resource/ComponentProviderTest.java @@ -10,8 +10,8 @@ public class ComponentProviderTest { @Test + @SuppressWarnings("rawtypes") void providerIsLoaded() { - @SuppressWarnings("rawtypes") List providers = SpiHelper.create( ComponentProviderTest.class.getClassLoader()) .load(ComponentProvider.class); diff --git a/gcp-resources/build.gradle.kts b/gcp-resources/build.gradle.kts index 998c15870..cc227ed6e 100644 --- a/gcp-resources/build.gradle.kts +++ b/gcp-resources/build.gradle.kts @@ -9,6 +9,7 @@ otelJava.moduleName.set("io.opentelemetry.contrib.gcp.resource") dependencies { api("io.opentelemetry:opentelemetry-api") + compileOnly("io.opentelemetry:opentelemetry-api-incubator") api("io.opentelemetry:opentelemetry-sdk") // Provides GCP resource detection support @@ -21,6 +22,7 @@ dependencies { implementation("com.fasterxml.jackson.core:jackson-core") testImplementation("io.opentelemetry:opentelemetry-sdk-extension-autoconfigure") + testImplementation("io.opentelemetry:opentelemetry-api-incubator") testImplementation("io.opentelemetry:opentelemetry-sdk-testing") testImplementation("org.mockito:mockito-core") diff --git a/gcp-resources/src/main/java/io/opentelemetry/contrib/gcp/resource/GcpResourceDetector.java b/gcp-resources/src/main/java/io/opentelemetry/contrib/gcp/resource/GcpResourceDetector.java new file mode 100644 index 000000000..945548837 --- /dev/null +++ b/gcp-resources/src/main/java/io/opentelemetry/contrib/gcp/resource/GcpResourceDetector.java @@ -0,0 +1,31 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + +package io.opentelemetry.contrib.gcp.resource; + +import io.opentelemetry.api.incubator.config.DeclarativeConfigProperties; +import io.opentelemetry.sdk.autoconfigure.spi.internal.ComponentProvider; +import io.opentelemetry.sdk.resources.Resource; +import io.opentelemetry.sdk.resources.ResourceBuilder; + +public class GcpResourceDetector implements ComponentProvider { + + @Override + public Class getType() { + return Resource.class; + } + + @Override + public String getName() { + return "gcp"; + } + + @Override + public Resource create(DeclarativeConfigProperties config) { + ResourceBuilder builder = Resource.builder(); + builder.putAll(new GCPResourceProvider().getAttributes()); + return builder.build(); + } +} diff --git a/gcp-resources/src/main/resources/META-INF/services/io.opentelemetry.sdk.autoconfigure.spi.internal.ComponentProvider b/gcp-resources/src/main/resources/META-INF/services/io.opentelemetry.sdk.autoconfigure.spi.internal.ComponentProvider new file mode 100644 index 000000000..f9c6e3583 --- /dev/null +++ b/gcp-resources/src/main/resources/META-INF/services/io.opentelemetry.sdk.autoconfigure.spi.internal.ComponentProvider @@ -0,0 +1 @@ +io.opentelemetry.contrib.gcp.resource.GcpResourceDetector diff --git a/gcp-resources/src/test/java/io/opentelemetry/contrib/gcp/resource/ComponentProviderTest.java b/gcp-resources/src/test/java/io/opentelemetry/contrib/gcp/resource/ComponentProviderTest.java new file mode 100644 index 000000000..1d3755ca5 --- /dev/null +++ b/gcp-resources/src/test/java/io/opentelemetry/contrib/gcp/resource/ComponentProviderTest.java @@ -0,0 +1,21 @@ +package io.opentelemetry.contrib.gcp.resource; + +import static org.assertj.core.api.Assertions.assertThat; + +import io.opentelemetry.sdk.autoconfigure.internal.SpiHelper; +import io.opentelemetry.sdk.autoconfigure.spi.internal.ComponentProvider; +import java.util.List; +import org.junit.jupiter.api.Test; + +public class ComponentProviderTest { + + @Test + @SuppressWarnings("rawtypes") + void providerIsLoaded() { + List providers = SpiHelper.create( + ComponentProviderTest.class.getClassLoader()) + .load(ComponentProvider.class); + assertThat(providers).extracting(ComponentProvider::getName) + .containsExactly("gcp"); + } +} From 641bffe210bf6fc813a9558adbea136da1e9d18b Mon Sep 17 00:00:00 2001 From: Gregor Zeitlinger Date: Wed, 9 Jul 2025 16:32:16 +0200 Subject: [PATCH 03/12] azure component provider --- azure-resources/build.gradle.kts | 2 + .../resource/AzureAksResourceProvider.java | 2 +- .../azure/resource/AzureResourceDetector.java | 59 +++++++++++++++++++ .../resource/AzureVmResourceProvider.java | 2 +- ...toconfigure.spi.internal.ComponentProvider | 1 + .../azure/resource/ComponentProviderTest.java | 21 +++++++ 6 files changed, 85 insertions(+), 2 deletions(-) create mode 100644 azure-resources/src/main/java/io/opentelemetry/contrib/azure/resource/AzureResourceDetector.java create mode 100644 azure-resources/src/main/resources/META-INF/services/io.opentelemetry.sdk.autoconfigure.spi.internal.ComponentProvider create mode 100644 azure-resources/src/test/java/io/opentelemetry/contrib/azure/resource/ComponentProviderTest.java diff --git a/azure-resources/build.gradle.kts b/azure-resources/build.gradle.kts index 33af12d84..c17d14787 100644 --- a/azure-resources/build.gradle.kts +++ b/azure-resources/build.gradle.kts @@ -15,6 +15,7 @@ java { dependencies { api("io.opentelemetry:opentelemetry-api") + compileOnly("io.opentelemetry:opentelemetry-api-incubator") api("io.opentelemetry:opentelemetry-sdk") implementation("io.opentelemetry.semconv:opentelemetry-semconv") @@ -26,6 +27,7 @@ dependencies { testImplementation("io.opentelemetry.semconv:opentelemetry-semconv-incubating") testImplementation("io.opentelemetry:opentelemetry-sdk-extension-autoconfigure") + testImplementation("io.opentelemetry:opentelemetry-api-incubator") testImplementation("io.opentelemetry:opentelemetry-sdk-testing") // testImplementation("org.mockito:mockito-core") diff --git a/azure-resources/src/main/java/io/opentelemetry/contrib/azure/resource/AzureAksResourceProvider.java b/azure-resources/src/main/java/io/opentelemetry/contrib/azure/resource/AzureAksResourceProvider.java index 4d3b92280..d99c9d752 100644 --- a/azure-resources/src/main/java/io/opentelemetry/contrib/azure/resource/AzureAksResourceProvider.java +++ b/azure-resources/src/main/java/io/opentelemetry/contrib/azure/resource/AzureAksResourceProvider.java @@ -56,7 +56,7 @@ public AzureAksResourceProvider() { @Override public int order() { // run after the fast cloud resource providers that only check environment variables - // and before the AKS provider + // and before the VM provider return 100; } diff --git a/azure-resources/src/main/java/io/opentelemetry/contrib/azure/resource/AzureResourceDetector.java b/azure-resources/src/main/java/io/opentelemetry/contrib/azure/resource/AzureResourceDetector.java new file mode 100644 index 000000000..eda4f4dfd --- /dev/null +++ b/azure-resources/src/main/java/io/opentelemetry/contrib/azure/resource/AzureResourceDetector.java @@ -0,0 +1,59 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + +package io.opentelemetry.contrib.azure.resource; + +import io.opentelemetry.api.common.Attributes; +import io.opentelemetry.api.incubator.config.DeclarativeConfigProperties; +import io.opentelemetry.sdk.autoconfigure.spi.ResourceProvider; +import io.opentelemetry.sdk.autoconfigure.spi.internal.ComponentProvider; +import io.opentelemetry.sdk.resources.Resource; +import io.opentelemetry.sdk.resources.ResourceBuilder; + +public class AzureResourceDetector implements ComponentProvider { + + @Override + public Class getType() { + return Resource.class; + } + + @Override + public String getName() { + return "azure"; + } + + @Override + public Resource create(DeclarativeConfigProperties config) { + Builder builder = new Builder(); + builder.add(new AzureFunctionsResourceProvider()); + builder.add(new AzureAppServiceResourceProvider()); + builder.add(new AzureContainersResourceProvider()); + builder.addIfEmpty(new AzureAksResourceProvider()); + builder.addIfEmpty(new AzureVmResourceProvider()); + return builder.builder.build(); + } + + static class Builder { + ResourceBuilder builder = Resource.builder(); + int attributesCount = 0; + + @SuppressWarnings("NullAway") + private void add( + ResourceProvider provider) { + Attributes attributes = provider.createResource(null).getAttributes(); + builder.putAll(attributes); + attributesCount += attributes.size(); + } + + private void addIfEmpty( + ResourceProvider provider) { + if (attributesCount == 0) { + add(provider); + } + } + + } + +} diff --git a/azure-resources/src/main/java/io/opentelemetry/contrib/azure/resource/AzureVmResourceProvider.java b/azure-resources/src/main/java/io/opentelemetry/contrib/azure/resource/AzureVmResourceProvider.java index 139b808d4..35aca1c6e 100644 --- a/azure-resources/src/main/java/io/opentelemetry/contrib/azure/resource/AzureVmResourceProvider.java +++ b/azure-resources/src/main/java/io/opentelemetry/contrib/azure/resource/AzureVmResourceProvider.java @@ -84,7 +84,7 @@ public AzureVmResourceProvider() { public int order() { // run after the fast cloud resource providers that only check environment variables // and after the AKS provider - return 100; + return 101; } @Override diff --git a/azure-resources/src/main/resources/META-INF/services/io.opentelemetry.sdk.autoconfigure.spi.internal.ComponentProvider b/azure-resources/src/main/resources/META-INF/services/io.opentelemetry.sdk.autoconfigure.spi.internal.ComponentProvider new file mode 100644 index 000000000..373780ff0 --- /dev/null +++ b/azure-resources/src/main/resources/META-INF/services/io.opentelemetry.sdk.autoconfigure.spi.internal.ComponentProvider @@ -0,0 +1 @@ +io.opentelemetry.contrib.azure.resource.AzureResourceDetector diff --git a/azure-resources/src/test/java/io/opentelemetry/contrib/azure/resource/ComponentProviderTest.java b/azure-resources/src/test/java/io/opentelemetry/contrib/azure/resource/ComponentProviderTest.java new file mode 100644 index 000000000..a4da41a4b --- /dev/null +++ b/azure-resources/src/test/java/io/opentelemetry/contrib/azure/resource/ComponentProviderTest.java @@ -0,0 +1,21 @@ +package io.opentelemetry.contrib.azure.resource; + +import static org.assertj.core.api.Assertions.assertThat; + +import io.opentelemetry.sdk.autoconfigure.internal.SpiHelper; +import io.opentelemetry.sdk.autoconfigure.spi.internal.ComponentProvider; +import java.util.List; +import org.junit.jupiter.api.Test; + +public class ComponentProviderTest { + + @Test + @SuppressWarnings("rawtypes") + void providerIsLoaded() { + List providers = SpiHelper.create( + ComponentProviderTest.class.getClassLoader()) + .load(ComponentProvider.class); + assertThat(providers).extracting(ComponentProvider::getName) + .containsExactly("azure"); + } +} From 01c3488318a8c252a40b22aad97b28375991b076 Mon Sep 17 00:00:00 2001 From: Gregor Zeitlinger Date: Wed, 9 Jul 2025 16:42:06 +0200 Subject: [PATCH 04/12] cloud foundry component provider --- cloudfoundry-resources/build.gradle.kts | 2 ++ .../CloudFoundryResourceDetector.java | 28 +++++++++++++++++++ ...toconfigure.spi.internal.ComponentProvider | 1 + .../resources/ComponentProviderTest.java | 21 ++++++++++++++ 4 files changed, 52 insertions(+) create mode 100644 cloudfoundry-resources/src/main/java/io/opentelemetry/contrib/cloudfoundry/resources/CloudFoundryResourceDetector.java create mode 100644 cloudfoundry-resources/src/main/resources/META-INF/services/io.opentelemetry.sdk.autoconfigure.spi.internal.ComponentProvider create mode 100644 cloudfoundry-resources/src/test/java/io/opentelemetry/contrib/cloudfoundry/resources/ComponentProviderTest.java diff --git a/cloudfoundry-resources/build.gradle.kts b/cloudfoundry-resources/build.gradle.kts index e768f7389..3324504b5 100644 --- a/cloudfoundry-resources/build.gradle.kts +++ b/cloudfoundry-resources/build.gradle.kts @@ -9,6 +9,7 @@ otelJava.moduleName.set("io.opentelemetry.contrib.cloudfoundry.resources") dependencies { api("io.opentelemetry:opentelemetry-api") + compileOnly("io.opentelemetry:opentelemetry-api-incubator") api("io.opentelemetry:opentelemetry-sdk") compileOnly("io.opentelemetry:opentelemetry-sdk-extension-autoconfigure-spi") @@ -19,6 +20,7 @@ dependencies { testImplementation("io.opentelemetry.semconv:opentelemetry-semconv-incubating") testImplementation("io.opentelemetry:opentelemetry-sdk-extension-autoconfigure") + testImplementation("io.opentelemetry:opentelemetry-api-incubator") testImplementation("io.opentelemetry:opentelemetry-sdk-testing") testImplementation("io.opentelemetry:opentelemetry-sdk-extension-autoconfigure-spi") } diff --git a/cloudfoundry-resources/src/main/java/io/opentelemetry/contrib/cloudfoundry/resources/CloudFoundryResourceDetector.java b/cloudfoundry-resources/src/main/java/io/opentelemetry/contrib/cloudfoundry/resources/CloudFoundryResourceDetector.java new file mode 100644 index 000000000..02b9a6b09 --- /dev/null +++ b/cloudfoundry-resources/src/main/java/io/opentelemetry/contrib/cloudfoundry/resources/CloudFoundryResourceDetector.java @@ -0,0 +1,28 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + +package io.opentelemetry.contrib.cloudfoundry.resources; + +import io.opentelemetry.api.incubator.config.DeclarativeConfigProperties; +import io.opentelemetry.sdk.autoconfigure.spi.internal.ComponentProvider; +import io.opentelemetry.sdk.resources.Resource; + +public class CloudFoundryResourceDetector implements ComponentProvider { + + @Override + public Class getType() { + return Resource.class; + } + + @Override + public String getName() { + return "cloud_foundry"; + } + + @Override + public Resource create(DeclarativeConfigProperties config) { + return CloudFoundryResource.get(); + } +} diff --git a/cloudfoundry-resources/src/main/resources/META-INF/services/io.opentelemetry.sdk.autoconfigure.spi.internal.ComponentProvider b/cloudfoundry-resources/src/main/resources/META-INF/services/io.opentelemetry.sdk.autoconfigure.spi.internal.ComponentProvider new file mode 100644 index 000000000..96092ce3d --- /dev/null +++ b/cloudfoundry-resources/src/main/resources/META-INF/services/io.opentelemetry.sdk.autoconfigure.spi.internal.ComponentProvider @@ -0,0 +1 @@ +io.opentelemetry.contrib.cloudfoundry.resources.CloudFoundryResourceDetector diff --git a/cloudfoundry-resources/src/test/java/io/opentelemetry/contrib/cloudfoundry/resources/ComponentProviderTest.java b/cloudfoundry-resources/src/test/java/io/opentelemetry/contrib/cloudfoundry/resources/ComponentProviderTest.java new file mode 100644 index 000000000..3e250ed75 --- /dev/null +++ b/cloudfoundry-resources/src/test/java/io/opentelemetry/contrib/cloudfoundry/resources/ComponentProviderTest.java @@ -0,0 +1,21 @@ +package io.opentelemetry.contrib.cloudfoundry.resources; + +import static org.assertj.core.api.Assertions.assertThat; + +import io.opentelemetry.sdk.autoconfigure.internal.SpiHelper; +import io.opentelemetry.sdk.autoconfigure.spi.internal.ComponentProvider; +import java.util.List; +import org.junit.jupiter.api.Test; + +public class ComponentProviderTest { + + @Test + @SuppressWarnings("rawtypes") + void providerIsLoaded() { + List providers = SpiHelper.create( + ComponentProviderTest.class.getClassLoader()) + .load(ComponentProvider.class); + assertThat(providers).extracting(ComponentProvider::getName) + .containsExactly("cloud_foundry"); + } +} From 73cdcf5f66ab2cbb28d01f30d4c2c4a505cb0ae5 Mon Sep 17 00:00:00 2001 From: Gregor Zeitlinger Date: Wed, 9 Jul 2025 16:49:10 +0200 Subject: [PATCH 05/12] maven component provider --- maven-extension/build.gradle.kts | 2 ++ .../resources/MavenResourceDetector.java | 28 +++++++++++++++++++ .../resources/MavenResourceProvider.java | 4 +++ ...toconfigure.spi.internal.ComponentProvider | 1 + .../ResourceComponentProviderTest.java | 20 +++++++++++++ 5 files changed, 55 insertions(+) create mode 100644 maven-extension/src/main/java/io/opentelemetry/maven/resources/MavenResourceDetector.java create mode 100644 maven-extension/src/main/resources/META-INF/services/io.opentelemetry.sdk.autoconfigure.spi.internal.ComponentProvider create mode 100644 maven-extension/src/test/java/io/opentelemetry/maven/resources/ResourceComponentProviderTest.java diff --git a/maven-extension/build.gradle.kts b/maven-extension/build.gradle.kts index d14faa992..a2972d0ea 100644 --- a/maven-extension/build.gradle.kts +++ b/maven-extension/build.gradle.kts @@ -16,6 +16,7 @@ dependencies { compileOnly("javax.inject:javax.inject:1") implementation("io.opentelemetry:opentelemetry-api") + compileOnly("io.opentelemetry:opentelemetry-api-incubator") implementation("io.opentelemetry:opentelemetry-sdk") implementation("io.opentelemetry:opentelemetry-sdk-trace") implementation("io.opentelemetry:opentelemetry-sdk-metrics") @@ -32,6 +33,7 @@ dependencies { compileOnly("org.apache.maven:maven-core:3.5.0") // do not auto-update, support older mvn versions compileOnly("org.slf4j:slf4j-api") + testImplementation("io.opentelemetry:opentelemetry-api-incubator") testImplementation("org.apache.maven:maven-core:3.5.0") testImplementation("org.slf4j:slf4j-simple") } diff --git a/maven-extension/src/main/java/io/opentelemetry/maven/resources/MavenResourceDetector.java b/maven-extension/src/main/java/io/opentelemetry/maven/resources/MavenResourceDetector.java new file mode 100644 index 000000000..47ff50759 --- /dev/null +++ b/maven-extension/src/main/java/io/opentelemetry/maven/resources/MavenResourceDetector.java @@ -0,0 +1,28 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + +package io.opentelemetry.maven.resources; + +import io.opentelemetry.api.incubator.config.DeclarativeConfigProperties; +import io.opentelemetry.sdk.autoconfigure.spi.internal.ComponentProvider; +import io.opentelemetry.sdk.resources.Resource; + +public class MavenResourceDetector implements ComponentProvider { + + @Override + public Class getType() { + return Resource.class; + } + + @Override + public String getName() { + return "maven"; + } + + @Override + public Resource create(DeclarativeConfigProperties config) { + return MavenResourceProvider.create(); + } +} diff --git a/maven-extension/src/main/java/io/opentelemetry/maven/resources/MavenResourceProvider.java b/maven-extension/src/main/java/io/opentelemetry/maven/resources/MavenResourceProvider.java index 66e7b028b..9b75d11d0 100644 --- a/maven-extension/src/main/java/io/opentelemetry/maven/resources/MavenResourceProvider.java +++ b/maven-extension/src/main/java/io/opentelemetry/maven/resources/MavenResourceProvider.java @@ -23,6 +23,10 @@ public class MavenResourceProvider implements ResourceProvider { @Override public Resource createResource(ConfigProperties config) { + return create(); + } + + static Resource create() { return Resource.builder() .put(ServiceAttributes.SERVICE_NAME, MavenOtelSemanticAttributes.SERVICE_NAME_VALUE) .put(ServiceAttributes.SERVICE_VERSION, getMavenRuntimeVersion()) diff --git a/maven-extension/src/main/resources/META-INF/services/io.opentelemetry.sdk.autoconfigure.spi.internal.ComponentProvider b/maven-extension/src/main/resources/META-INF/services/io.opentelemetry.sdk.autoconfigure.spi.internal.ComponentProvider new file mode 100644 index 000000000..baac89a6a --- /dev/null +++ b/maven-extension/src/main/resources/META-INF/services/io.opentelemetry.sdk.autoconfigure.spi.internal.ComponentProvider @@ -0,0 +1 @@ +io.opentelemetry.maven.resources.MavenResourceDetector diff --git a/maven-extension/src/test/java/io/opentelemetry/maven/resources/ResourceComponentProviderTest.java b/maven-extension/src/test/java/io/opentelemetry/maven/resources/ResourceComponentProviderTest.java new file mode 100644 index 000000000..dfcb7e477 --- /dev/null +++ b/maven-extension/src/test/java/io/opentelemetry/maven/resources/ResourceComponentProviderTest.java @@ -0,0 +1,20 @@ +package io.opentelemetry.maven.resources; + +import static org.assertj.core.api.Assertions.assertThat; + +import io.opentelemetry.sdk.autoconfigure.internal.SpiHelper; +import io.opentelemetry.sdk.autoconfigure.spi.internal.ComponentProvider; +import java.util.List; +import org.junit.jupiter.api.Test; + +public class ResourceComponentProviderTest { + + @Test + @SuppressWarnings("rawtypes") + void providerIsLoaded() { + List providers = SpiHelper.create( + ResourceComponentProviderTest.class.getClassLoader()) + .load(ComponentProvider.class); + assertThat(providers).extracting(ComponentProvider::getName).contains("maven"); + } +} From 4ae3decdf1a5d0f3a38e430cb7514d3d7e5a2077 Mon Sep 17 00:00:00 2001 From: Gregor Zeitlinger Date: Wed, 9 Jul 2025 16:55:46 +0200 Subject: [PATCH 06/12] cleanup --- .../contrib/azure/resource/AzureAksResourceProvider.java | 3 +-- .../azure/resource/AzureAppServiceResourceProvider.java | 4 ++-- .../azure/resource/AzureContainersResourceProvider.java | 3 +-- .../azure/resource/AzureFunctionsResourceProvider.java | 3 +-- .../contrib/azure/resource/AzureResourceDetector.java | 9 +++------ .../contrib/azure/resource/AzureVmResourceProvider.java | 3 +-- .../contrib/azure/resource/CloudResourceProvider.java | 8 ++++++++ 7 files changed, 17 insertions(+), 16 deletions(-) diff --git a/azure-resources/src/main/java/io/opentelemetry/contrib/azure/resource/AzureAksResourceProvider.java b/azure-resources/src/main/java/io/opentelemetry/contrib/azure/resource/AzureAksResourceProvider.java index d99c9d752..9823c6f9e 100644 --- a/azure-resources/src/main/java/io/opentelemetry/contrib/azure/resource/AzureAksResourceProvider.java +++ b/azure-resources/src/main/java/io/opentelemetry/contrib/azure/resource/AzureAksResourceProvider.java @@ -8,7 +8,6 @@ import static io.opentelemetry.contrib.azure.resource.IncubatingAttributes.CloudPlatformIncubatingValues.AZURE_AKS; import static io.opentelemetry.contrib.azure.resource.IncubatingAttributes.K8S_CLUSTER_NAME; -import io.opentelemetry.sdk.autoconfigure.spi.ConfigProperties; import io.opentelemetry.sdk.resources.Resource; import java.util.HashMap; import java.util.Map; @@ -61,7 +60,7 @@ public int order() { } @Override - public Resource createResource(ConfigProperties configProperties) { + public Resource createResource() { if (environment.get(KUBERNETES_SERVICE_HOST) == null) { return Resource.empty(); } diff --git a/azure-resources/src/main/java/io/opentelemetry/contrib/azure/resource/AzureAppServiceResourceProvider.java b/azure-resources/src/main/java/io/opentelemetry/contrib/azure/resource/AzureAppServiceResourceProvider.java index 71cf699e6..d278ea754 100644 --- a/azure-resources/src/main/java/io/opentelemetry/contrib/azure/resource/AzureAppServiceResourceProvider.java +++ b/azure-resources/src/main/java/io/opentelemetry/contrib/azure/resource/AzureAppServiceResourceProvider.java @@ -17,8 +17,8 @@ import io.opentelemetry.api.common.Attributes; import io.opentelemetry.api.common.AttributesBuilder; import io.opentelemetry.api.internal.StringUtils; -import io.opentelemetry.sdk.autoconfigure.spi.ConfigProperties; import io.opentelemetry.sdk.resources.Resource; + import java.util.HashMap; import java.util.Map; import java.util.Objects; @@ -60,7 +60,7 @@ public AzureAppServiceResourceProvider() { } @Override - public Resource createResource(ConfigProperties config) { + public Resource createResource() { return Resource.create(getAttributes()); } diff --git a/azure-resources/src/main/java/io/opentelemetry/contrib/azure/resource/AzureContainersResourceProvider.java b/azure-resources/src/main/java/io/opentelemetry/contrib/azure/resource/AzureContainersResourceProvider.java index 2f641148f..63d0f4428 100644 --- a/azure-resources/src/main/java/io/opentelemetry/contrib/azure/resource/AzureContainersResourceProvider.java +++ b/azure-resources/src/main/java/io/opentelemetry/contrib/azure/resource/AzureContainersResourceProvider.java @@ -12,7 +12,6 @@ import io.opentelemetry.api.common.AttributeKey; import io.opentelemetry.api.common.Attributes; import io.opentelemetry.api.common.AttributesBuilder; -import io.opentelemetry.sdk.autoconfigure.spi.ConfigProperties; import io.opentelemetry.sdk.resources.Resource; import java.util.HashMap; import java.util.Map; @@ -45,7 +44,7 @@ public AzureContainersResourceProvider() { } @Override - public Resource createResource(ConfigProperties config) { + public Resource createResource() { return Resource.create(getAttributes()); } diff --git a/azure-resources/src/main/java/io/opentelemetry/contrib/azure/resource/AzureFunctionsResourceProvider.java b/azure-resources/src/main/java/io/opentelemetry/contrib/azure/resource/AzureFunctionsResourceProvider.java index 1b86c6212..e35fe95c4 100644 --- a/azure-resources/src/main/java/io/opentelemetry/contrib/azure/resource/AzureFunctionsResourceProvider.java +++ b/azure-resources/src/main/java/io/opentelemetry/contrib/azure/resource/AzureFunctionsResourceProvider.java @@ -15,7 +15,6 @@ import io.opentelemetry.api.common.AttributeKey; import io.opentelemetry.api.common.Attributes; import io.opentelemetry.api.common.AttributesBuilder; -import io.opentelemetry.sdk.autoconfigure.spi.ConfigProperties; import io.opentelemetry.sdk.resources.Resource; import java.util.HashMap; import java.util.Map; @@ -47,7 +46,7 @@ public AzureFunctionsResourceProvider() { } @Override - public Resource createResource(ConfigProperties config) { + public Resource createResource() { return Resource.create(getAttributes()); } diff --git a/azure-resources/src/main/java/io/opentelemetry/contrib/azure/resource/AzureResourceDetector.java b/azure-resources/src/main/java/io/opentelemetry/contrib/azure/resource/AzureResourceDetector.java index eda4f4dfd..aeb161f97 100644 --- a/azure-resources/src/main/java/io/opentelemetry/contrib/azure/resource/AzureResourceDetector.java +++ b/azure-resources/src/main/java/io/opentelemetry/contrib/azure/resource/AzureResourceDetector.java @@ -7,7 +7,6 @@ import io.opentelemetry.api.common.Attributes; import io.opentelemetry.api.incubator.config.DeclarativeConfigProperties; -import io.opentelemetry.sdk.autoconfigure.spi.ResourceProvider; import io.opentelemetry.sdk.autoconfigure.spi.internal.ComponentProvider; import io.opentelemetry.sdk.resources.Resource; import io.opentelemetry.sdk.resources.ResourceBuilder; @@ -39,16 +38,14 @@ static class Builder { ResourceBuilder builder = Resource.builder(); int attributesCount = 0; - @SuppressWarnings("NullAway") - private void add( - ResourceProvider provider) { - Attributes attributes = provider.createResource(null).getAttributes(); + private void add(CloudResourceProvider provider) { + Attributes attributes = provider.createResource().getAttributes(); builder.putAll(attributes); attributesCount += attributes.size(); } private void addIfEmpty( - ResourceProvider provider) { + CloudResourceProvider provider) { if (attributesCount == 0) { add(provider); } diff --git a/azure-resources/src/main/java/io/opentelemetry/contrib/azure/resource/AzureVmResourceProvider.java b/azure-resources/src/main/java/io/opentelemetry/contrib/azure/resource/AzureVmResourceProvider.java index 35aca1c6e..9d41cbf31 100644 --- a/azure-resources/src/main/java/io/opentelemetry/contrib/azure/resource/AzureVmResourceProvider.java +++ b/azure-resources/src/main/java/io/opentelemetry/contrib/azure/resource/AzureVmResourceProvider.java @@ -22,7 +22,6 @@ import io.opentelemetry.api.common.AttributeKey; import io.opentelemetry.api.common.Attributes; import io.opentelemetry.api.common.AttributesBuilder; -import io.opentelemetry.sdk.autoconfigure.spi.ConfigProperties; import io.opentelemetry.sdk.resources.Resource; import java.io.IOException; import java.util.HashMap; @@ -88,7 +87,7 @@ public int order() { } @Override - public Resource createResource(ConfigProperties config) { + public Resource createResource() { return client .get() .map(body -> parseMetadata(body, COMPUTE_MAPPING, AZURE_VM)) diff --git a/azure-resources/src/main/java/io/opentelemetry/contrib/azure/resource/CloudResourceProvider.java b/azure-resources/src/main/java/io/opentelemetry/contrib/azure/resource/CloudResourceProvider.java index 181a22889..3c7fcc862 100644 --- a/azure-resources/src/main/java/io/opentelemetry/contrib/azure/resource/CloudResourceProvider.java +++ b/azure-resources/src/main/java/io/opentelemetry/contrib/azure/resource/CloudResourceProvider.java @@ -17,4 +17,12 @@ public abstract class CloudResourceProvider implements ConditionalResourceProvid public final boolean shouldApply(ConfigProperties config, Resource existing) { return existing.getAttribute(CLOUD_PROVIDER) == null; } + + @Override + public final Resource createResource(ConfigProperties config) { + // not using config in any providers + return createResource(); + } + + abstract Resource createResource(); } From 9c2067ffff7fca45b71249d8a5ec1fbb78de7b93 Mon Sep 17 00:00:00 2001 From: Gregor Zeitlinger Date: Wed, 9 Jul 2025 17:17:02 +0200 Subject: [PATCH 07/12] app server component provider --- ...ava => ResourceComponentProviderTest.java} | 4 +-- ...ava => ResourceComponentProviderTest.java} | 4 +-- ...ava => ResourceComponentProviderTest.java} | 4 +-- ...ava => ResourceComponentProviderTest.java} | 4 +-- resource-providers/build.gradle.kts | 2 ++ .../AppServerResourceDetector.java | 31 +++++++++++++++++++ .../AppServerServiceNameProvider.java | 4 +++ .../ResourceComponentProviderTest.java | 20 ++++++++++++ 8 files changed, 65 insertions(+), 8 deletions(-) rename aws-resources/src/test/java/io/opentelemetry/contrib/aws/resource/{ComponentProviderTest.java => ResourceComponentProviderTest.java} (83%) rename azure-resources/src/test/java/io/opentelemetry/contrib/azure/resource/{ComponentProviderTest.java => ResourceComponentProviderTest.java} (83%) rename cloudfoundry-resources/src/test/java/io/opentelemetry/contrib/cloudfoundry/resources/{ComponentProviderTest.java => ResourceComponentProviderTest.java} (84%) rename gcp-resources/src/test/java/io/opentelemetry/contrib/gcp/resource/{ComponentProviderTest.java => ResourceComponentProviderTest.java} (83%) create mode 100644 resource-providers/src/main/java/io/opentelemetry/contrib/resourceproviders/AppServerResourceDetector.java create mode 100644 resource-providers/src/test/java/io/opentelemetry/contrib/resourceproviders/ResourceComponentProviderTest.java diff --git a/aws-resources/src/test/java/io/opentelemetry/contrib/aws/resource/ComponentProviderTest.java b/aws-resources/src/test/java/io/opentelemetry/contrib/aws/resource/ResourceComponentProviderTest.java similarity index 83% rename from aws-resources/src/test/java/io/opentelemetry/contrib/aws/resource/ComponentProviderTest.java rename to aws-resources/src/test/java/io/opentelemetry/contrib/aws/resource/ResourceComponentProviderTest.java index 7b81696a6..7354b9e03 100644 --- a/aws-resources/src/test/java/io/opentelemetry/contrib/aws/resource/ComponentProviderTest.java +++ b/aws-resources/src/test/java/io/opentelemetry/contrib/aws/resource/ResourceComponentProviderTest.java @@ -7,13 +7,13 @@ import org.junit.jupiter.api.Test; import java.util.List; -public class ComponentProviderTest { +public class ResourceComponentProviderTest { @Test @SuppressWarnings("rawtypes") void providerIsLoaded() { List providers = SpiHelper.create( - ComponentProviderTest.class.getClassLoader()) + ResourceComponentProviderTest.class.getClassLoader()) .load(ComponentProvider.class); assertThat(providers).extracting(ComponentProvider::getName) .containsExactly("aws"); diff --git a/azure-resources/src/test/java/io/opentelemetry/contrib/azure/resource/ComponentProviderTest.java b/azure-resources/src/test/java/io/opentelemetry/contrib/azure/resource/ResourceComponentProviderTest.java similarity index 83% rename from azure-resources/src/test/java/io/opentelemetry/contrib/azure/resource/ComponentProviderTest.java rename to azure-resources/src/test/java/io/opentelemetry/contrib/azure/resource/ResourceComponentProviderTest.java index a4da41a4b..a84a742cc 100644 --- a/azure-resources/src/test/java/io/opentelemetry/contrib/azure/resource/ComponentProviderTest.java +++ b/azure-resources/src/test/java/io/opentelemetry/contrib/azure/resource/ResourceComponentProviderTest.java @@ -7,13 +7,13 @@ import java.util.List; import org.junit.jupiter.api.Test; -public class ComponentProviderTest { +public class ResourceComponentProviderTest { @Test @SuppressWarnings("rawtypes") void providerIsLoaded() { List providers = SpiHelper.create( - ComponentProviderTest.class.getClassLoader()) + ResourceComponentProviderTest.class.getClassLoader()) .load(ComponentProvider.class); assertThat(providers).extracting(ComponentProvider::getName) .containsExactly("azure"); diff --git a/cloudfoundry-resources/src/test/java/io/opentelemetry/contrib/cloudfoundry/resources/ComponentProviderTest.java b/cloudfoundry-resources/src/test/java/io/opentelemetry/contrib/cloudfoundry/resources/ResourceComponentProviderTest.java similarity index 84% rename from cloudfoundry-resources/src/test/java/io/opentelemetry/contrib/cloudfoundry/resources/ComponentProviderTest.java rename to cloudfoundry-resources/src/test/java/io/opentelemetry/contrib/cloudfoundry/resources/ResourceComponentProviderTest.java index 3e250ed75..3a7db7304 100644 --- a/cloudfoundry-resources/src/test/java/io/opentelemetry/contrib/cloudfoundry/resources/ComponentProviderTest.java +++ b/cloudfoundry-resources/src/test/java/io/opentelemetry/contrib/cloudfoundry/resources/ResourceComponentProviderTest.java @@ -7,13 +7,13 @@ import java.util.List; import org.junit.jupiter.api.Test; -public class ComponentProviderTest { +public class ResourceComponentProviderTest { @Test @SuppressWarnings("rawtypes") void providerIsLoaded() { List providers = SpiHelper.create( - ComponentProviderTest.class.getClassLoader()) + ResourceComponentProviderTest.class.getClassLoader()) .load(ComponentProvider.class); assertThat(providers).extracting(ComponentProvider::getName) .containsExactly("cloud_foundry"); diff --git a/gcp-resources/src/test/java/io/opentelemetry/contrib/gcp/resource/ComponentProviderTest.java b/gcp-resources/src/test/java/io/opentelemetry/contrib/gcp/resource/ResourceComponentProviderTest.java similarity index 83% rename from gcp-resources/src/test/java/io/opentelemetry/contrib/gcp/resource/ComponentProviderTest.java rename to gcp-resources/src/test/java/io/opentelemetry/contrib/gcp/resource/ResourceComponentProviderTest.java index 1d3755ca5..a0b008df2 100644 --- a/gcp-resources/src/test/java/io/opentelemetry/contrib/gcp/resource/ComponentProviderTest.java +++ b/gcp-resources/src/test/java/io/opentelemetry/contrib/gcp/resource/ResourceComponentProviderTest.java @@ -7,13 +7,13 @@ import java.util.List; import org.junit.jupiter.api.Test; -public class ComponentProviderTest { +public class ResourceComponentProviderTest { @Test @SuppressWarnings("rawtypes") void providerIsLoaded() { List providers = SpiHelper.create( - ComponentProviderTest.class.getClassLoader()) + ResourceComponentProviderTest.class.getClassLoader()) .load(ComponentProvider.class); assertThat(providers).extracting(ComponentProvider::getName) .containsExactly("gcp"); diff --git a/resource-providers/build.gradle.kts b/resource-providers/build.gradle.kts index 1dc20be51..4dc0a28d5 100644 --- a/resource-providers/build.gradle.kts +++ b/resource-providers/build.gradle.kts @@ -11,6 +11,7 @@ dependencies { compileOnly("com.google.auto.service:auto-service") compileOnly("io.opentelemetry:opentelemetry-api") + compileOnly("io.opentelemetry:opentelemetry-api-incubator") compileOnly("io.opentelemetry:opentelemetry-sdk") compileOnly("io.opentelemetry:opentelemetry-sdk-extension-autoconfigure") compileOnly("io.opentelemetry:opentelemetry-sdk-extension-autoconfigure-spi") @@ -18,4 +19,5 @@ dependencies { testImplementation("io.opentelemetry.semconv:opentelemetry-semconv") testImplementation("com.google.auto.service:auto-service") testImplementation("io.opentelemetry:opentelemetry-sdk-extension-autoconfigure") + testImplementation("io.opentelemetry:opentelemetry-api-incubator") } diff --git a/resource-providers/src/main/java/io/opentelemetry/contrib/resourceproviders/AppServerResourceDetector.java b/resource-providers/src/main/java/io/opentelemetry/contrib/resourceproviders/AppServerResourceDetector.java new file mode 100644 index 000000000..7d5d399c4 --- /dev/null +++ b/resource-providers/src/main/java/io/opentelemetry/contrib/resourceproviders/AppServerResourceDetector.java @@ -0,0 +1,31 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + +package io.opentelemetry.contrib.resourceproviders; + +import com.google.auto.service.AutoService; +import io.opentelemetry.api.incubator.config.DeclarativeConfigProperties; +import io.opentelemetry.sdk.autoconfigure.spi.internal.ComponentProvider; +import io.opentelemetry.sdk.resources.Resource; + +@SuppressWarnings("rawtypes") +@AutoService(ComponentProvider.class) +public class AppServerResourceDetector implements ComponentProvider { + + @Override + public Class getType() { + return Resource.class; + } + + @Override + public String getName() { + return "app_server"; + } + + @Override + public Resource create(DeclarativeConfigProperties config) { + return new AppServerServiceNameProvider().create(); + } +} diff --git a/resource-providers/src/main/java/io/opentelemetry/contrib/resourceproviders/AppServerServiceNameProvider.java b/resource-providers/src/main/java/io/opentelemetry/contrib/resourceproviders/AppServerServiceNameProvider.java index 505dbef84..5ce7196f2 100644 --- a/resource-providers/src/main/java/io/opentelemetry/contrib/resourceproviders/AppServerServiceNameProvider.java +++ b/resource-providers/src/main/java/io/opentelemetry/contrib/resourceproviders/AppServerServiceNameProvider.java @@ -38,6 +38,10 @@ public AppServerServiceNameProvider() { @Override public Resource createResource(ConfigProperties config) { + return create(); + } + + Resource create() { String serviceName = detectServiceName(); if (serviceName == null) { logger.log( diff --git a/resource-providers/src/test/java/io/opentelemetry/contrib/resourceproviders/ResourceComponentProviderTest.java b/resource-providers/src/test/java/io/opentelemetry/contrib/resourceproviders/ResourceComponentProviderTest.java new file mode 100644 index 000000000..375d6297f --- /dev/null +++ b/resource-providers/src/test/java/io/opentelemetry/contrib/resourceproviders/ResourceComponentProviderTest.java @@ -0,0 +1,20 @@ +package io.opentelemetry.contrib.resourceproviders; + +import static org.assertj.core.api.Assertions.assertThat; + +import io.opentelemetry.sdk.autoconfigure.internal.SpiHelper; +import io.opentelemetry.sdk.autoconfigure.spi.internal.ComponentProvider; +import java.util.List; +import org.junit.jupiter.api.Test; + +public class ResourceComponentProviderTest { + + @Test + @SuppressWarnings("rawtypes") + void providerIsLoaded() { + List providers = SpiHelper.create( + ResourceComponentProviderTest.class.getClassLoader()) + .load(ComponentProvider.class); + assertThat(providers).extracting(ComponentProvider::getName).contains("app_server"); + } +} From ba4b4ed09f29516cfc81e41e81c05a1f9f832bff Mon Sep 17 00:00:00 2001 From: Gregor Zeitlinger Date: Wed, 9 Jul 2025 17:30:57 +0200 Subject: [PATCH 08/12] format --- .../resource/ResourceComponentProviderTest.java | 16 ++++++++++------ .../AzureAppServiceResourceProvider.java | 1 - .../azure/resource/AzureResourceDetector.java | 5 +---- .../resource/ResourceComponentProviderTest.java | 14 +++++++++----- .../resources/ResourceComponentProviderTest.java | 14 +++++++++----- .../resource/ResourceComponentProviderTest.java | 14 +++++++++----- .../resources/ResourceComponentProviderTest.java | 11 ++++++++--- .../ResourceComponentProviderTest.java | 11 ++++++++--- 8 files changed, 54 insertions(+), 32 deletions(-) diff --git a/aws-resources/src/test/java/io/opentelemetry/contrib/aws/resource/ResourceComponentProviderTest.java b/aws-resources/src/test/java/io/opentelemetry/contrib/aws/resource/ResourceComponentProviderTest.java index 7354b9e03..bdcc3dd70 100644 --- a/aws-resources/src/test/java/io/opentelemetry/contrib/aws/resource/ResourceComponentProviderTest.java +++ b/aws-resources/src/test/java/io/opentelemetry/contrib/aws/resource/ResourceComponentProviderTest.java @@ -1,21 +1,25 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + package io.opentelemetry.contrib.aws.resource; import static org.assertj.core.api.Assertions.assertThat; import io.opentelemetry.sdk.autoconfigure.internal.SpiHelper; import io.opentelemetry.sdk.autoconfigure.spi.internal.ComponentProvider; -import org.junit.jupiter.api.Test; import java.util.List; +import org.junit.jupiter.api.Test; public class ResourceComponentProviderTest { @Test @SuppressWarnings("rawtypes") void providerIsLoaded() { - List providers = SpiHelper.create( - ResourceComponentProviderTest.class.getClassLoader()) - .load(ComponentProvider.class); - assertThat(providers).extracting(ComponentProvider::getName) - .containsExactly("aws"); + List providers = + SpiHelper.create(ResourceComponentProviderTest.class.getClassLoader()) + .load(ComponentProvider.class); + assertThat(providers).extracting(ComponentProvider::getName).containsExactly("aws"); } } diff --git a/azure-resources/src/main/java/io/opentelemetry/contrib/azure/resource/AzureAppServiceResourceProvider.java b/azure-resources/src/main/java/io/opentelemetry/contrib/azure/resource/AzureAppServiceResourceProvider.java index d278ea754..74ad96334 100644 --- a/azure-resources/src/main/java/io/opentelemetry/contrib/azure/resource/AzureAppServiceResourceProvider.java +++ b/azure-resources/src/main/java/io/opentelemetry/contrib/azure/resource/AzureAppServiceResourceProvider.java @@ -18,7 +18,6 @@ import io.opentelemetry.api.common.AttributesBuilder; import io.opentelemetry.api.internal.StringUtils; import io.opentelemetry.sdk.resources.Resource; - import java.util.HashMap; import java.util.Map; import java.util.Objects; diff --git a/azure-resources/src/main/java/io/opentelemetry/contrib/azure/resource/AzureResourceDetector.java b/azure-resources/src/main/java/io/opentelemetry/contrib/azure/resource/AzureResourceDetector.java index aeb161f97..2e55980cd 100644 --- a/azure-resources/src/main/java/io/opentelemetry/contrib/azure/resource/AzureResourceDetector.java +++ b/azure-resources/src/main/java/io/opentelemetry/contrib/azure/resource/AzureResourceDetector.java @@ -44,13 +44,10 @@ private void add(CloudResourceProvider provider) { attributesCount += attributes.size(); } - private void addIfEmpty( - CloudResourceProvider provider) { + private void addIfEmpty(CloudResourceProvider provider) { if (attributesCount == 0) { add(provider); } } - } - } diff --git a/azure-resources/src/test/java/io/opentelemetry/contrib/azure/resource/ResourceComponentProviderTest.java b/azure-resources/src/test/java/io/opentelemetry/contrib/azure/resource/ResourceComponentProviderTest.java index a84a742cc..27a79f14a 100644 --- a/azure-resources/src/test/java/io/opentelemetry/contrib/azure/resource/ResourceComponentProviderTest.java +++ b/azure-resources/src/test/java/io/opentelemetry/contrib/azure/resource/ResourceComponentProviderTest.java @@ -1,3 +1,8 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + package io.opentelemetry.contrib.azure.resource; import static org.assertj.core.api.Assertions.assertThat; @@ -12,10 +17,9 @@ public class ResourceComponentProviderTest { @Test @SuppressWarnings("rawtypes") void providerIsLoaded() { - List providers = SpiHelper.create( - ResourceComponentProviderTest.class.getClassLoader()) - .load(ComponentProvider.class); - assertThat(providers).extracting(ComponentProvider::getName) - .containsExactly("azure"); + List providers = + SpiHelper.create(ResourceComponentProviderTest.class.getClassLoader()) + .load(ComponentProvider.class); + assertThat(providers).extracting(ComponentProvider::getName).containsExactly("azure"); } } diff --git a/cloudfoundry-resources/src/test/java/io/opentelemetry/contrib/cloudfoundry/resources/ResourceComponentProviderTest.java b/cloudfoundry-resources/src/test/java/io/opentelemetry/contrib/cloudfoundry/resources/ResourceComponentProviderTest.java index 3a7db7304..0d026136d 100644 --- a/cloudfoundry-resources/src/test/java/io/opentelemetry/contrib/cloudfoundry/resources/ResourceComponentProviderTest.java +++ b/cloudfoundry-resources/src/test/java/io/opentelemetry/contrib/cloudfoundry/resources/ResourceComponentProviderTest.java @@ -1,3 +1,8 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + package io.opentelemetry.contrib.cloudfoundry.resources; import static org.assertj.core.api.Assertions.assertThat; @@ -12,10 +17,9 @@ public class ResourceComponentProviderTest { @Test @SuppressWarnings("rawtypes") void providerIsLoaded() { - List providers = SpiHelper.create( - ResourceComponentProviderTest.class.getClassLoader()) - .load(ComponentProvider.class); - assertThat(providers).extracting(ComponentProvider::getName) - .containsExactly("cloud_foundry"); + List providers = + SpiHelper.create(ResourceComponentProviderTest.class.getClassLoader()) + .load(ComponentProvider.class); + assertThat(providers).extracting(ComponentProvider::getName).containsExactly("cloud_foundry"); } } diff --git a/gcp-resources/src/test/java/io/opentelemetry/contrib/gcp/resource/ResourceComponentProviderTest.java b/gcp-resources/src/test/java/io/opentelemetry/contrib/gcp/resource/ResourceComponentProviderTest.java index a0b008df2..46746441c 100644 --- a/gcp-resources/src/test/java/io/opentelemetry/contrib/gcp/resource/ResourceComponentProviderTest.java +++ b/gcp-resources/src/test/java/io/opentelemetry/contrib/gcp/resource/ResourceComponentProviderTest.java @@ -1,3 +1,8 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + package io.opentelemetry.contrib.gcp.resource; import static org.assertj.core.api.Assertions.assertThat; @@ -12,10 +17,9 @@ public class ResourceComponentProviderTest { @Test @SuppressWarnings("rawtypes") void providerIsLoaded() { - List providers = SpiHelper.create( - ResourceComponentProviderTest.class.getClassLoader()) - .load(ComponentProvider.class); - assertThat(providers).extracting(ComponentProvider::getName) - .containsExactly("gcp"); + List providers = + SpiHelper.create(ResourceComponentProviderTest.class.getClassLoader()) + .load(ComponentProvider.class); + assertThat(providers).extracting(ComponentProvider::getName).containsExactly("gcp"); } } diff --git a/maven-extension/src/test/java/io/opentelemetry/maven/resources/ResourceComponentProviderTest.java b/maven-extension/src/test/java/io/opentelemetry/maven/resources/ResourceComponentProviderTest.java index dfcb7e477..40f54e381 100644 --- a/maven-extension/src/test/java/io/opentelemetry/maven/resources/ResourceComponentProviderTest.java +++ b/maven-extension/src/test/java/io/opentelemetry/maven/resources/ResourceComponentProviderTest.java @@ -1,3 +1,8 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + package io.opentelemetry.maven.resources; import static org.assertj.core.api.Assertions.assertThat; @@ -12,9 +17,9 @@ public class ResourceComponentProviderTest { @Test @SuppressWarnings("rawtypes") void providerIsLoaded() { - List providers = SpiHelper.create( - ResourceComponentProviderTest.class.getClassLoader()) - .load(ComponentProvider.class); + List providers = + SpiHelper.create(ResourceComponentProviderTest.class.getClassLoader()) + .load(ComponentProvider.class); assertThat(providers).extracting(ComponentProvider::getName).contains("maven"); } } diff --git a/resource-providers/src/test/java/io/opentelemetry/contrib/resourceproviders/ResourceComponentProviderTest.java b/resource-providers/src/test/java/io/opentelemetry/contrib/resourceproviders/ResourceComponentProviderTest.java index 375d6297f..c6f13a8af 100644 --- a/resource-providers/src/test/java/io/opentelemetry/contrib/resourceproviders/ResourceComponentProviderTest.java +++ b/resource-providers/src/test/java/io/opentelemetry/contrib/resourceproviders/ResourceComponentProviderTest.java @@ -1,3 +1,8 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + package io.opentelemetry.contrib.resourceproviders; import static org.assertj.core.api.Assertions.assertThat; @@ -12,9 +17,9 @@ public class ResourceComponentProviderTest { @Test @SuppressWarnings("rawtypes") void providerIsLoaded() { - List providers = SpiHelper.create( - ResourceComponentProviderTest.class.getClassLoader()) - .load(ComponentProvider.class); + List providers = + SpiHelper.create(ResourceComponentProviderTest.class.getClassLoader()) + .load(ComponentProvider.class); assertThat(providers).extracting(ComponentProvider::getName).contains("app_server"); } } From cfa2f54d0490b30d6062e68bb068f8ffdcaabb65 Mon Sep 17 00:00:00 2001 From: Gregor Zeitlinger Date: Mon, 21 Jul 2025 10:26:29 +0200 Subject: [PATCH 09/12] move to internal --- .../aws/resource/{ => internal}/AwsResourceDetector.java | 7 ++++++- ...emetry.sdk.autoconfigure.spi.internal.ComponentProvider | 2 +- .../contrib/azure/resource/AzureResourceDetector.java | 2 +- .../gcp/resource/{ => internal}/GcpResourceDetector.java | 3 ++- ...emetry.sdk.autoconfigure.spi.internal.ComponentProvider | 2 +- 5 files changed, 11 insertions(+), 5 deletions(-) rename aws-resources/src/main/java/io/opentelemetry/contrib/aws/resource/{ => internal}/AwsResourceDetector.java (72%) rename gcp-resources/src/main/java/io/opentelemetry/contrib/gcp/resource/{ => internal}/GcpResourceDetector.java (86%) diff --git a/aws-resources/src/main/java/io/opentelemetry/contrib/aws/resource/AwsResourceDetector.java b/aws-resources/src/main/java/io/opentelemetry/contrib/aws/resource/internal/AwsResourceDetector.java similarity index 72% rename from aws-resources/src/main/java/io/opentelemetry/contrib/aws/resource/AwsResourceDetector.java rename to aws-resources/src/main/java/io/opentelemetry/contrib/aws/resource/internal/AwsResourceDetector.java index e866d54ae..ae4255570 100644 --- a/aws-resources/src/main/java/io/opentelemetry/contrib/aws/resource/AwsResourceDetector.java +++ b/aws-resources/src/main/java/io/opentelemetry/contrib/aws/resource/internal/AwsResourceDetector.java @@ -3,9 +3,14 @@ * SPDX-License-Identifier: Apache-2.0 */ -package io.opentelemetry.contrib.aws.resource; +package io.opentelemetry.contrib.aws.resource.internal; import io.opentelemetry.api.incubator.config.DeclarativeConfigProperties; +import io.opentelemetry.contrib.aws.resource.BeanstalkResource; +import io.opentelemetry.contrib.aws.resource.Ec2Resource; +import io.opentelemetry.contrib.aws.resource.EcsResource; +import io.opentelemetry.contrib.aws.resource.EksResource; +import io.opentelemetry.contrib.aws.resource.LambdaResource; import io.opentelemetry.sdk.autoconfigure.spi.internal.ComponentProvider; import io.opentelemetry.sdk.resources.Resource; import io.opentelemetry.sdk.resources.ResourceBuilder; diff --git a/aws-resources/src/main/resources/META-INF/services/io.opentelemetry.sdk.autoconfigure.spi.internal.ComponentProvider b/aws-resources/src/main/resources/META-INF/services/io.opentelemetry.sdk.autoconfigure.spi.internal.ComponentProvider index b26ecb379..ea6d743f4 100644 --- a/aws-resources/src/main/resources/META-INF/services/io.opentelemetry.sdk.autoconfigure.spi.internal.ComponentProvider +++ b/aws-resources/src/main/resources/META-INF/services/io.opentelemetry.sdk.autoconfigure.spi.internal.ComponentProvider @@ -1 +1 @@ -io.opentelemetry.contrib.aws.resource.AwsResourceDetector +io.opentelemetry.contrib.aws.resource.internal.AwsResourceDetector diff --git a/azure-resources/src/main/java/io/opentelemetry/contrib/azure/resource/AzureResourceDetector.java b/azure-resources/src/main/java/io/opentelemetry/contrib/azure/resource/AzureResourceDetector.java index 2e55980cd..78cadbb54 100644 --- a/azure-resources/src/main/java/io/opentelemetry/contrib/azure/resource/AzureResourceDetector.java +++ b/azure-resources/src/main/java/io/opentelemetry/contrib/azure/resource/AzureResourceDetector.java @@ -34,7 +34,7 @@ public Resource create(DeclarativeConfigProperties config) { return builder.builder.build(); } - static class Builder { + private static class Builder { ResourceBuilder builder = Resource.builder(); int attributesCount = 0; diff --git a/gcp-resources/src/main/java/io/opentelemetry/contrib/gcp/resource/GcpResourceDetector.java b/gcp-resources/src/main/java/io/opentelemetry/contrib/gcp/resource/internal/GcpResourceDetector.java similarity index 86% rename from gcp-resources/src/main/java/io/opentelemetry/contrib/gcp/resource/GcpResourceDetector.java rename to gcp-resources/src/main/java/io/opentelemetry/contrib/gcp/resource/internal/GcpResourceDetector.java index 945548837..35adbeded 100644 --- a/gcp-resources/src/main/java/io/opentelemetry/contrib/gcp/resource/GcpResourceDetector.java +++ b/gcp-resources/src/main/java/io/opentelemetry/contrib/gcp/resource/internal/GcpResourceDetector.java @@ -3,9 +3,10 @@ * SPDX-License-Identifier: Apache-2.0 */ -package io.opentelemetry.contrib.gcp.resource; +package io.opentelemetry.contrib.gcp.resource.internal; import io.opentelemetry.api.incubator.config.DeclarativeConfigProperties; +import io.opentelemetry.contrib.gcp.resource.GCPResourceProvider; import io.opentelemetry.sdk.autoconfigure.spi.internal.ComponentProvider; import io.opentelemetry.sdk.resources.Resource; import io.opentelemetry.sdk.resources.ResourceBuilder; diff --git a/gcp-resources/src/main/resources/META-INF/services/io.opentelemetry.sdk.autoconfigure.spi.internal.ComponentProvider b/gcp-resources/src/main/resources/META-INF/services/io.opentelemetry.sdk.autoconfigure.spi.internal.ComponentProvider index f9c6e3583..e65bbc840 100644 --- a/gcp-resources/src/main/resources/META-INF/services/io.opentelemetry.sdk.autoconfigure.spi.internal.ComponentProvider +++ b/gcp-resources/src/main/resources/META-INF/services/io.opentelemetry.sdk.autoconfigure.spi.internal.ComponentProvider @@ -1 +1 @@ -io.opentelemetry.contrib.gcp.resource.GcpResourceDetector +io.opentelemetry.contrib.gcp.resource.internal.GcpResourceDetector From 2084d65ebfb5a0f0eacf810f3b23857c5aeb4cbc Mon Sep 17 00:00:00 2001 From: Gregor Zeitlinger Date: Mon, 21 Jul 2025 14:02:10 +0200 Subject: [PATCH 10/12] use component loader --- .../aws/resource/ResourceComponentProviderTest.java | 7 +++---- .../azure/resource/ResourceComponentProviderTest.java | 7 +++---- .../resources/ResourceComponentProviderTest.java | 7 +++---- .../gcp/resource/ResourceComponentProviderTest.java | 7 +++---- .../maven/resources/ResourceComponentProviderTest.java | 7 +++---- .../resourceproviders/ResourceComponentProviderTest.java | 7 +++---- 6 files changed, 18 insertions(+), 24 deletions(-) diff --git a/aws-resources/src/test/java/io/opentelemetry/contrib/aws/resource/ResourceComponentProviderTest.java b/aws-resources/src/test/java/io/opentelemetry/contrib/aws/resource/ResourceComponentProviderTest.java index bdcc3dd70..468d26efb 100644 --- a/aws-resources/src/test/java/io/opentelemetry/contrib/aws/resource/ResourceComponentProviderTest.java +++ b/aws-resources/src/test/java/io/opentelemetry/contrib/aws/resource/ResourceComponentProviderTest.java @@ -7,9 +7,8 @@ import static org.assertj.core.api.Assertions.assertThat; -import io.opentelemetry.sdk.autoconfigure.internal.SpiHelper; +import io.opentelemetry.common.ComponentLoader; import io.opentelemetry.sdk.autoconfigure.spi.internal.ComponentProvider; -import java.util.List; import org.junit.jupiter.api.Test; public class ResourceComponentProviderTest { @@ -17,8 +16,8 @@ public class ResourceComponentProviderTest { @Test @SuppressWarnings("rawtypes") void providerIsLoaded() { - List providers = - SpiHelper.create(ResourceComponentProviderTest.class.getClassLoader()) + Iterable providers = + ComponentLoader.forClassLoader(ResourceComponentProviderTest.class.getClassLoader()) .load(ComponentProvider.class); assertThat(providers).extracting(ComponentProvider::getName).containsExactly("aws"); } diff --git a/azure-resources/src/test/java/io/opentelemetry/contrib/azure/resource/ResourceComponentProviderTest.java b/azure-resources/src/test/java/io/opentelemetry/contrib/azure/resource/ResourceComponentProviderTest.java index 27a79f14a..a02b35ffc 100644 --- a/azure-resources/src/test/java/io/opentelemetry/contrib/azure/resource/ResourceComponentProviderTest.java +++ b/azure-resources/src/test/java/io/opentelemetry/contrib/azure/resource/ResourceComponentProviderTest.java @@ -7,9 +7,8 @@ import static org.assertj.core.api.Assertions.assertThat; -import io.opentelemetry.sdk.autoconfigure.internal.SpiHelper; +import io.opentelemetry.common.ComponentLoader; import io.opentelemetry.sdk.autoconfigure.spi.internal.ComponentProvider; -import java.util.List; import org.junit.jupiter.api.Test; public class ResourceComponentProviderTest { @@ -17,8 +16,8 @@ public class ResourceComponentProviderTest { @Test @SuppressWarnings("rawtypes") void providerIsLoaded() { - List providers = - SpiHelper.create(ResourceComponentProviderTest.class.getClassLoader()) + Iterable providers = + ComponentLoader.forClassLoader(ResourceComponentProviderTest.class.getClassLoader()) .load(ComponentProvider.class); assertThat(providers).extracting(ComponentProvider::getName).containsExactly("azure"); } diff --git a/cloudfoundry-resources/src/test/java/io/opentelemetry/contrib/cloudfoundry/resources/ResourceComponentProviderTest.java b/cloudfoundry-resources/src/test/java/io/opentelemetry/contrib/cloudfoundry/resources/ResourceComponentProviderTest.java index 0d026136d..bc881255e 100644 --- a/cloudfoundry-resources/src/test/java/io/opentelemetry/contrib/cloudfoundry/resources/ResourceComponentProviderTest.java +++ b/cloudfoundry-resources/src/test/java/io/opentelemetry/contrib/cloudfoundry/resources/ResourceComponentProviderTest.java @@ -7,9 +7,8 @@ import static org.assertj.core.api.Assertions.assertThat; -import io.opentelemetry.sdk.autoconfigure.internal.SpiHelper; +import io.opentelemetry.common.ComponentLoader; import io.opentelemetry.sdk.autoconfigure.spi.internal.ComponentProvider; -import java.util.List; import org.junit.jupiter.api.Test; public class ResourceComponentProviderTest { @@ -17,8 +16,8 @@ public class ResourceComponentProviderTest { @Test @SuppressWarnings("rawtypes") void providerIsLoaded() { - List providers = - SpiHelper.create(ResourceComponentProviderTest.class.getClassLoader()) + Iterable providers = + ComponentLoader.forClassLoader(ResourceComponentProviderTest.class.getClassLoader()) .load(ComponentProvider.class); assertThat(providers).extracting(ComponentProvider::getName).containsExactly("cloud_foundry"); } diff --git a/gcp-resources/src/test/java/io/opentelemetry/contrib/gcp/resource/ResourceComponentProviderTest.java b/gcp-resources/src/test/java/io/opentelemetry/contrib/gcp/resource/ResourceComponentProviderTest.java index 46746441c..b643fc18f 100644 --- a/gcp-resources/src/test/java/io/opentelemetry/contrib/gcp/resource/ResourceComponentProviderTest.java +++ b/gcp-resources/src/test/java/io/opentelemetry/contrib/gcp/resource/ResourceComponentProviderTest.java @@ -7,9 +7,8 @@ import static org.assertj.core.api.Assertions.assertThat; -import io.opentelemetry.sdk.autoconfigure.internal.SpiHelper; +import io.opentelemetry.common.ComponentLoader; import io.opentelemetry.sdk.autoconfigure.spi.internal.ComponentProvider; -import java.util.List; import org.junit.jupiter.api.Test; public class ResourceComponentProviderTest { @@ -17,8 +16,8 @@ public class ResourceComponentProviderTest { @Test @SuppressWarnings("rawtypes") void providerIsLoaded() { - List providers = - SpiHelper.create(ResourceComponentProviderTest.class.getClassLoader()) + Iterable providers = + ComponentLoader.forClassLoader(ResourceComponentProviderTest.class.getClassLoader()) .load(ComponentProvider.class); assertThat(providers).extracting(ComponentProvider::getName).containsExactly("gcp"); } diff --git a/maven-extension/src/test/java/io/opentelemetry/maven/resources/ResourceComponentProviderTest.java b/maven-extension/src/test/java/io/opentelemetry/maven/resources/ResourceComponentProviderTest.java index 40f54e381..d1999ecff 100644 --- a/maven-extension/src/test/java/io/opentelemetry/maven/resources/ResourceComponentProviderTest.java +++ b/maven-extension/src/test/java/io/opentelemetry/maven/resources/ResourceComponentProviderTest.java @@ -7,9 +7,8 @@ import static org.assertj.core.api.Assertions.assertThat; -import io.opentelemetry.sdk.autoconfigure.internal.SpiHelper; +import io.opentelemetry.common.ComponentLoader; import io.opentelemetry.sdk.autoconfigure.spi.internal.ComponentProvider; -import java.util.List; import org.junit.jupiter.api.Test; public class ResourceComponentProviderTest { @@ -17,8 +16,8 @@ public class ResourceComponentProviderTest { @Test @SuppressWarnings("rawtypes") void providerIsLoaded() { - List providers = - SpiHelper.create(ResourceComponentProviderTest.class.getClassLoader()) + Iterable providers = + ComponentLoader.forClassLoader(ResourceComponentProviderTest.class.getClassLoader()) .load(ComponentProvider.class); assertThat(providers).extracting(ComponentProvider::getName).contains("maven"); } diff --git a/resource-providers/src/test/java/io/opentelemetry/contrib/resourceproviders/ResourceComponentProviderTest.java b/resource-providers/src/test/java/io/opentelemetry/contrib/resourceproviders/ResourceComponentProviderTest.java index c6f13a8af..5fb105398 100644 --- a/resource-providers/src/test/java/io/opentelemetry/contrib/resourceproviders/ResourceComponentProviderTest.java +++ b/resource-providers/src/test/java/io/opentelemetry/contrib/resourceproviders/ResourceComponentProviderTest.java @@ -7,9 +7,8 @@ import static org.assertj.core.api.Assertions.assertThat; -import io.opentelemetry.sdk.autoconfigure.internal.SpiHelper; +import io.opentelemetry.common.ComponentLoader; import io.opentelemetry.sdk.autoconfigure.spi.internal.ComponentProvider; -import java.util.List; import org.junit.jupiter.api.Test; public class ResourceComponentProviderTest { @@ -17,8 +16,8 @@ public class ResourceComponentProviderTest { @Test @SuppressWarnings("rawtypes") void providerIsLoaded() { - List providers = - SpiHelper.create(ResourceComponentProviderTest.class.getClassLoader()) + Iterable providers = + ComponentLoader.forClassLoader(ResourceComponentProviderTest.class.getClassLoader()) .load(ComponentProvider.class); assertThat(providers).extracting(ComponentProvider::getName).contains("app_server"); } From 90e574e35e03cb145ab4359581cf4ccf8b2c9f08 Mon Sep 17 00:00:00 2001 From: Gregor Zeitlinger Date: Mon, 21 Jul 2025 14:03:39 +0200 Subject: [PATCH 11/12] pr review --- .../contrib/aws/resource/ResourceComponentProviderTest.java | 2 +- .../contrib/azure/resource/AzureVmResourceProvider.java | 2 +- .../contrib/azure/resource/ResourceComponentProviderTest.java | 2 +- .../cloudfoundry/resources/ResourceComponentProviderTest.java | 2 +- .../contrib/gcp/resource/ResourceComponentProviderTest.java | 2 +- .../maven/resources/ResourceComponentProviderTest.java | 2 +- .../resourceproviders/ResourceComponentProviderTest.java | 2 +- 7 files changed, 7 insertions(+), 7 deletions(-) diff --git a/aws-resources/src/test/java/io/opentelemetry/contrib/aws/resource/ResourceComponentProviderTest.java b/aws-resources/src/test/java/io/opentelemetry/contrib/aws/resource/ResourceComponentProviderTest.java index 468d26efb..1534aca17 100644 --- a/aws-resources/src/test/java/io/opentelemetry/contrib/aws/resource/ResourceComponentProviderTest.java +++ b/aws-resources/src/test/java/io/opentelemetry/contrib/aws/resource/ResourceComponentProviderTest.java @@ -11,7 +11,7 @@ import io.opentelemetry.sdk.autoconfigure.spi.internal.ComponentProvider; import org.junit.jupiter.api.Test; -public class ResourceComponentProviderTest { +class ResourceComponentProviderTest { @Test @SuppressWarnings("rawtypes") diff --git a/azure-resources/src/main/java/io/opentelemetry/contrib/azure/resource/AzureVmResourceProvider.java b/azure-resources/src/main/java/io/opentelemetry/contrib/azure/resource/AzureVmResourceProvider.java index 9d41cbf31..38c983b4a 100644 --- a/azure-resources/src/main/java/io/opentelemetry/contrib/azure/resource/AzureVmResourceProvider.java +++ b/azure-resources/src/main/java/io/opentelemetry/contrib/azure/resource/AzureVmResourceProvider.java @@ -83,7 +83,7 @@ public AzureVmResourceProvider() { public int order() { // run after the fast cloud resource providers that only check environment variables // and after the AKS provider - return 101; + return 100; } @Override diff --git a/azure-resources/src/test/java/io/opentelemetry/contrib/azure/resource/ResourceComponentProviderTest.java b/azure-resources/src/test/java/io/opentelemetry/contrib/azure/resource/ResourceComponentProviderTest.java index a02b35ffc..f04e256ff 100644 --- a/azure-resources/src/test/java/io/opentelemetry/contrib/azure/resource/ResourceComponentProviderTest.java +++ b/azure-resources/src/test/java/io/opentelemetry/contrib/azure/resource/ResourceComponentProviderTest.java @@ -11,7 +11,7 @@ import io.opentelemetry.sdk.autoconfigure.spi.internal.ComponentProvider; import org.junit.jupiter.api.Test; -public class ResourceComponentProviderTest { +class ResourceComponentProviderTest { @Test @SuppressWarnings("rawtypes") diff --git a/cloudfoundry-resources/src/test/java/io/opentelemetry/contrib/cloudfoundry/resources/ResourceComponentProviderTest.java b/cloudfoundry-resources/src/test/java/io/opentelemetry/contrib/cloudfoundry/resources/ResourceComponentProviderTest.java index bc881255e..2e1e434b2 100644 --- a/cloudfoundry-resources/src/test/java/io/opentelemetry/contrib/cloudfoundry/resources/ResourceComponentProviderTest.java +++ b/cloudfoundry-resources/src/test/java/io/opentelemetry/contrib/cloudfoundry/resources/ResourceComponentProviderTest.java @@ -11,7 +11,7 @@ import io.opentelemetry.sdk.autoconfigure.spi.internal.ComponentProvider; import org.junit.jupiter.api.Test; -public class ResourceComponentProviderTest { +class ResourceComponentProviderTest { @Test @SuppressWarnings("rawtypes") diff --git a/gcp-resources/src/test/java/io/opentelemetry/contrib/gcp/resource/ResourceComponentProviderTest.java b/gcp-resources/src/test/java/io/opentelemetry/contrib/gcp/resource/ResourceComponentProviderTest.java index b643fc18f..b80d6c427 100644 --- a/gcp-resources/src/test/java/io/opentelemetry/contrib/gcp/resource/ResourceComponentProviderTest.java +++ b/gcp-resources/src/test/java/io/opentelemetry/contrib/gcp/resource/ResourceComponentProviderTest.java @@ -11,7 +11,7 @@ import io.opentelemetry.sdk.autoconfigure.spi.internal.ComponentProvider; import org.junit.jupiter.api.Test; -public class ResourceComponentProviderTest { +class ResourceComponentProviderTest { @Test @SuppressWarnings("rawtypes") diff --git a/maven-extension/src/test/java/io/opentelemetry/maven/resources/ResourceComponentProviderTest.java b/maven-extension/src/test/java/io/opentelemetry/maven/resources/ResourceComponentProviderTest.java index d1999ecff..e992f24da 100644 --- a/maven-extension/src/test/java/io/opentelemetry/maven/resources/ResourceComponentProviderTest.java +++ b/maven-extension/src/test/java/io/opentelemetry/maven/resources/ResourceComponentProviderTest.java @@ -11,7 +11,7 @@ import io.opentelemetry.sdk.autoconfigure.spi.internal.ComponentProvider; import org.junit.jupiter.api.Test; -public class ResourceComponentProviderTest { +class ResourceComponentProviderTest { @Test @SuppressWarnings("rawtypes") diff --git a/resource-providers/src/test/java/io/opentelemetry/contrib/resourceproviders/ResourceComponentProviderTest.java b/resource-providers/src/test/java/io/opentelemetry/contrib/resourceproviders/ResourceComponentProviderTest.java index 5fb105398..91ea7b216 100644 --- a/resource-providers/src/test/java/io/opentelemetry/contrib/resourceproviders/ResourceComponentProviderTest.java +++ b/resource-providers/src/test/java/io/opentelemetry/contrib/resourceproviders/ResourceComponentProviderTest.java @@ -11,7 +11,7 @@ import io.opentelemetry.sdk.autoconfigure.spi.internal.ComponentProvider; import org.junit.jupiter.api.Test; -public class ResourceComponentProviderTest { +class ResourceComponentProviderTest { @Test @SuppressWarnings("rawtypes") From ea833b9ad9ba97566ce0eef54b709f84d5e0d508 Mon Sep 17 00:00:00 2001 From: Gregor Zeitlinger Date: Mon, 21 Jul 2025 14:06:39 +0200 Subject: [PATCH 12/12] make final --- .../contrib/azure/resource/AzureResourceDetector.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/azure-resources/src/main/java/io/opentelemetry/contrib/azure/resource/AzureResourceDetector.java b/azure-resources/src/main/java/io/opentelemetry/contrib/azure/resource/AzureResourceDetector.java index 78cadbb54..556e1d60c 100644 --- a/azure-resources/src/main/java/io/opentelemetry/contrib/azure/resource/AzureResourceDetector.java +++ b/azure-resources/src/main/java/io/opentelemetry/contrib/azure/resource/AzureResourceDetector.java @@ -35,7 +35,7 @@ public Resource create(DeclarativeConfigProperties config) { } private static class Builder { - ResourceBuilder builder = Resource.builder(); + final ResourceBuilder builder = Resource.builder(); int attributesCount = 0; private void add(CloudResourceProvider provider) {