diff --git a/docs/apidiffs/current_vs_latest/opentelemetry-sdk-extension-autoconfigure-spi.txt b/docs/apidiffs/current_vs_latest/opentelemetry-sdk-extension-autoconfigure-spi.txt index df26146497b..71352e13666 100644 --- a/docs/apidiffs/current_vs_latest/opentelemetry-sdk-extension-autoconfigure-spi.txt +++ b/docs/apidiffs/current_vs_latest/opentelemetry-sdk-extension-autoconfigure-spi.txt @@ -1,2 +1,4 @@ Comparing source compatibility of against -No changes. \ No newline at end of file +***! MODIFIED INTERFACE: PUBLIC ABSTRACT io.opentelemetry.sdk.autoconfigure.spi.ResourceProvider (not serializable) + === CLASS FILE FORMAT VERSION: 52.0 <- 52.0 + +++! NEW METHOD: PUBLIC(+) boolean shouldApply(io.opentelemetry.sdk.autoconfigure.spi.ConfigProperties, io.opentelemetry.sdk.resources.Resource) diff --git a/sdk-extensions/autoconfigure-spi/src/main/java/io/opentelemetry/sdk/autoconfigure/spi/ResourceProvider.java b/sdk-extensions/autoconfigure-spi/src/main/java/io/opentelemetry/sdk/autoconfigure/spi/ResourceProvider.java index 0957929e5a9..0a43126d244 100644 --- a/sdk-extensions/autoconfigure-spi/src/main/java/io/opentelemetry/sdk/autoconfigure/spi/ResourceProvider.java +++ b/sdk-extensions/autoconfigure-spi/src/main/java/io/opentelemetry/sdk/autoconfigure/spi/ResourceProvider.java @@ -14,4 +14,16 @@ public interface ResourceProvider extends Ordered { Resource createResource(ConfigProperties config); + + /** + * If an implementation needs to apply only under certain conditions related to the config or the + * existing state of the Resource being built, they can choose to override this default. + * + * @param config The auto configuration properties + * @param existing The current state of the Resource being created + * @return false to skip over this ResourceProvider, or true to use it + */ + default boolean shouldApply(ConfigProperties config, Resource existing) { + return true; + } } diff --git a/sdk-extensions/autoconfigure/src/main/java/io/opentelemetry/sdk/autoconfigure/ResourceConfiguration.java b/sdk-extensions/autoconfigure/src/main/java/io/opentelemetry/sdk/autoconfigure/ResourceConfiguration.java index 76646ab441d..663dad12da1 100644 --- a/sdk-extensions/autoconfigure/src/main/java/io/opentelemetry/sdk/autoconfigure/ResourceConfiguration.java +++ b/sdk-extensions/autoconfigure/src/main/java/io/opentelemetry/sdk/autoconfigure/ResourceConfiguration.java @@ -46,7 +46,9 @@ static Resource configureResource( if (disabledProviders.contains(resourceProvider.getClass().getName())) { continue; } - result = result.merge(resourceProvider.createResource(config)); + if (resourceProvider.shouldApply(config, result)) { + result = result.merge(resourceProvider.createResource(config)); + } } result = result.merge(createEnvironmentResource(config));