diff --git a/sdk-extensions/autoconfigure/src/main/java/io/opentelemetry/sdk/autoconfigure/AutoConfiguredOpenTelemetrySdk.java b/sdk-extensions/autoconfigure/src/main/java/io/opentelemetry/sdk/autoconfigure/AutoConfiguredOpenTelemetrySdk.java index 424368ccf8..2b43746144 100644 --- a/sdk-extensions/autoconfigure/src/main/java/io/opentelemetry/sdk/autoconfigure/AutoConfiguredOpenTelemetrySdk.java +++ b/sdk-extensions/autoconfigure/src/main/java/io/opentelemetry/sdk/autoconfigure/AutoConfiguredOpenTelemetrySdk.java @@ -51,10 +51,10 @@ public abstract class AutoConfiguredOpenTelemetrySdk { public abstract OpenTelemetrySdk getOpenTelemetrySdk(); /** Returns the {@link Resource} that was auto-configured. */ - public abstract Resource getResource(); + abstract Resource getResource(); /** Returns the {@link ConfigProperties} used for auto-configuration. */ - public abstract ConfigProperties getConfig(); + abstract ConfigProperties getConfig(); AutoConfiguredOpenTelemetrySdk() {} } diff --git a/sdk-extensions/autoconfigure/src/main/java/io/opentelemetry/sdk/autoconfigure/internal/AutoConfigureUtil.java b/sdk-extensions/autoconfigure/src/main/java/io/opentelemetry/sdk/autoconfigure/internal/AutoConfigureUtil.java new file mode 100644 index 0000000000..e77620fc49 --- /dev/null +++ b/sdk-extensions/autoconfigure/src/main/java/io/opentelemetry/sdk/autoconfigure/internal/AutoConfigureUtil.java @@ -0,0 +1,33 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + +package io.opentelemetry.sdk.autoconfigure.internal; + +import io.opentelemetry.sdk.autoconfigure.AutoConfiguredOpenTelemetrySdk; +import io.opentelemetry.sdk.autoconfigure.spi.ConfigProperties; +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Method; + +/** + * This class is internal and is hence not for public use. Its APIs are unstable and can change at + * any time. + */ +public final class AutoConfigureUtil { + + private AutoConfigureUtil() {} + + /** Returns the {@link ConfigProperties} used for auto-configuration. */ + public static ConfigProperties getConfig( + AutoConfiguredOpenTelemetrySdk autoConfiguredOpenTelemetrySdk) { + try { + Method method = AutoConfiguredOpenTelemetrySdk.class.getDeclaredMethod("getConfig"); + method.setAccessible(true); + return (ConfigProperties) method.invoke(autoConfiguredOpenTelemetrySdk); + } catch (NoSuchMethodException | InvocationTargetException | IllegalAccessException e) { + throw new IllegalStateException( + "Error calling getConfig on AutoConfiguredOpenTelemetrySdk", e); + } + } +} diff --git a/sdk-extensions/autoconfigure/src/test/java/io/opentelemetry/sdk/autoconfigure/AutoConfigureUtilTest.java b/sdk-extensions/autoconfigure/src/test/java/io/opentelemetry/sdk/autoconfigure/AutoConfigureUtilTest.java new file mode 100644 index 0000000000..33dd1ba01d --- /dev/null +++ b/sdk-extensions/autoconfigure/src/test/java/io/opentelemetry/sdk/autoconfigure/AutoConfigureUtilTest.java @@ -0,0 +1,34 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + +package io.opentelemetry.sdk.autoconfigure; + +import static java.util.Collections.singletonMap; + +import io.opentelemetry.sdk.autoconfigure.internal.AutoConfigureUtil; +import org.assertj.core.api.Assertions; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + +class AutoConfigureUtilTest { + + AutoConfiguredOpenTelemetrySdk autoConfiguredOpenTelemetrySdk; + + @BeforeEach + void beforeEach() { + autoConfiguredOpenTelemetrySdk = + AutoConfiguredOpenTelemetrySdk.builder() + .addPropertiesSupplier(() -> singletonMap("otel.metrics.exporter", "none")) + .addPropertiesSupplier(() -> singletonMap("otel.traces.exporter", "none")) + .addPropertiesSupplier(() -> singletonMap("otel.logs.exporter", "none")) + .build(); + } + + @Test + void getConfig() { + Assertions.assertThat(AutoConfigureUtil.getConfig(autoConfiguredOpenTelemetrySdk)) + .isSameAs(autoConfiguredOpenTelemetrySdk.getConfig()); + } +}