diff --git a/instrumentation/spring/spring-boot-autoconfigure/build.gradle.kts b/instrumentation/spring/spring-boot-autoconfigure/build.gradle.kts index 64d16622dcdc..87cb10190a81 100644 --- a/instrumentation/spring/spring-boot-autoconfigure/build.gradle.kts +++ b/instrumentation/spring/spring-boot-autoconfigure/build.gradle.kts @@ -99,6 +99,7 @@ dependencies { testImplementation("io.opentelemetry:opentelemetry-sdk") testImplementation("io.opentelemetry:opentelemetry-sdk-testing") + testImplementation("io.opentelemetry:opentelemetry-api-incubator") testImplementation(project(":instrumentation:resources:library")) testImplementation("io.opentelemetry:opentelemetry-sdk-extension-autoconfigure-spi") testImplementation("io.opentelemetry:opentelemetry-extension-trace-propagators") diff --git a/instrumentation/spring/spring-boot-autoconfigure/src/main/java/io/opentelemetry/instrumentation/spring/autoconfigure/EmbeddedConfigFile.java b/instrumentation/spring/spring-boot-autoconfigure/src/main/java/io/opentelemetry/instrumentation/spring/autoconfigure/EmbeddedConfigFile.java index b2222baf489f..46409dc52149 100644 --- a/instrumentation/spring/spring-boot-autoconfigure/src/main/java/io/opentelemetry/instrumentation/spring/autoconfigure/EmbeddedConfigFile.java +++ b/instrumentation/spring/spring-boot-autoconfigure/src/main/java/io/opentelemetry/instrumentation/spring/autoconfigure/EmbeddedConfigFile.java @@ -46,20 +46,25 @@ class EmbeddedConfigFile { private EmbeddedConfigFile() {} static OpenTelemetryConfigurationModel extractModel(ConfigurableEnvironment environment) { - Map props = extractSpringProperties(environment); - return convertToOpenTelemetryConfigurationModel(props); + Map props = extractSpringProperties(environment); + Map nested = convertFlatPropsToNested(props); + return MAPPER.convertValue(nested, OpenTelemetryConfigurationModel.class); } - private static Map extractSpringProperties(ConfigurableEnvironment environment) { + private static Map extractSpringProperties(ConfigurableEnvironment environment) { MutablePropertySources propertySources = environment.getPropertySources(); - Map props = new HashMap<>(); + Map props = new HashMap<>(); for (PropertySource propertySource : propertySources) { if (propertySource instanceof EnumerablePropertySource) { for (String propertyName : ((EnumerablePropertySource) propertySource).getPropertyNames()) { if (propertyName.startsWith("otel.")) { - String property = environment.getProperty(propertyName); + Object property = propertySource.getProperty(propertyName); + // Resolve ${} placeholders in String values while preserving types for others + if (property instanceof String) { + property = environment.resolvePlaceholders((String) property); + } if (Objects.equals(property, "")) { property = null; // spring returns empty string for yaml null } @@ -95,29 +100,18 @@ private static Map extractSpringProperties(ConfigurableEnvironme return props; } - static OpenTelemetryConfigurationModel convertToOpenTelemetryConfigurationModel( - Map flatProps) { - Map nested = convertFlatPropsToNested(flatProps); - - return getObjectMapper().convertValue(nested, OpenTelemetryConfigurationModel.class); - } - - static ObjectMapper getObjectMapper() { - return MAPPER; - } - /** * Convert flat property map to nested structure. e.g. "otel.instrumentation.java.list[0]" = "one" * and "otel.instrumentation.java.list[1]" = "two" becomes: {otel: {instrumentation: {java: {list: * ["one", "two"]}}}} */ @SuppressWarnings("unchecked") - static Map convertFlatPropsToNested(Map flatProps) { + static Map convertFlatPropsToNested(Map flatProps) { Map result = new HashMap<>(); - for (Map.Entry entry : flatProps.entrySet()) { + for (Map.Entry entry : flatProps.entrySet()) { String key = entry.getKey(); - String value = entry.getValue(); + Object value = entry.getValue(); // Split the key by dots String[] parts = key.split("\\."); diff --git a/instrumentation/spring/spring-boot-autoconfigure/src/main/java/io/opentelemetry/instrumentation/spring/autoconfigure/OpenTelemetryAutoConfiguration.java b/instrumentation/spring/spring-boot-autoconfigure/src/main/java/io/opentelemetry/instrumentation/spring/autoconfigure/OpenTelemetryAutoConfiguration.java index bbb40a59a2cb..97bf29714202 100644 --- a/instrumentation/spring/spring-boot-autoconfigure/src/main/java/io/opentelemetry/instrumentation/spring/autoconfigure/OpenTelemetryAutoConfiguration.java +++ b/instrumentation/spring/spring-boot-autoconfigure/src/main/java/io/opentelemetry/instrumentation/spring/autoconfigure/OpenTelemetryAutoConfiguration.java @@ -8,11 +8,13 @@ import static java.util.Objects.requireNonNull; import io.opentelemetry.api.OpenTelemetry; +import io.opentelemetry.api.incubator.ExtendedOpenTelemetry; import io.opentelemetry.api.incubator.config.ConfigProvider; import io.opentelemetry.api.trace.TracerProvider; import io.opentelemetry.common.ComponentLoader; import io.opentelemetry.instrumentation.api.incubator.config.internal.InstrumentationConfig; import io.opentelemetry.instrumentation.api.internal.EmbeddedInstrumentationProperties; +import io.opentelemetry.instrumentation.config.bridge.ConfigPropertiesBackedConfigProvider; import io.opentelemetry.instrumentation.config.bridge.DeclarativeConfigPropertiesBridgeBuilder; import io.opentelemetry.instrumentation.spring.autoconfigure.internal.DeclarativeConfigDisabled; import io.opentelemetry.instrumentation.spring.autoconfigure.internal.DeclarativeConfigEnabled; @@ -125,9 +127,12 @@ public AutoConfiguredOpenTelemetrySdk autoConfiguredOpenTelemetrySdk( @Bean public OpenTelemetry openTelemetry( - AutoConfiguredOpenTelemetrySdk autoConfiguredOpenTelemetrySdk) { + AutoConfiguredOpenTelemetrySdk autoConfiguredOpenTelemetrySdk, + ConfigProperties otelProperties) { logStart(); - return autoConfiguredOpenTelemetrySdk.getOpenTelemetrySdk(); + OpenTelemetrySdk openTelemetry = autoConfiguredOpenTelemetrySdk.getOpenTelemetrySdk(); + ConfigProvider configProvider = ConfigPropertiesBackedConfigProvider.create(otelProperties); + return new SpringOpenTelemetrySdk(openTelemetry, configProvider); } @Bean @@ -171,9 +176,11 @@ public OpenTelemetry openTelemetry( return sdk; } + // TODO remove once ConfigProperties usage is removed from remaining + // spring boot starter instrumentations @Bean - public ConfigProvider configProvider(OpenTelemetryConfigurationModel model) { - return SpringConfigProvider.create(model); + public ConfigProvider configProvider(OpenTelemetry openTelemetry) { + return ((ExtendedOpenTelemetry) openTelemetry).getConfigProvider(); } /** @@ -182,12 +189,16 @@ public ConfigProvider configProvider(OpenTelemetryConfigurationModel model) { *

Not using spring boot properties directly, because declarative configuration does not * integrate with spring boot properties. */ + // TODO remove once ConfigProperties usage is removed from remaining + // spring boot starter instrumentations @Bean public ConfigProperties otelProperties(ConfigProvider configProvider) { return new DeclarativeConfigPropertiesBridgeBuilder() .buildFromInstrumentationConfig(configProvider.getInstrumentationConfig()); } + // TODO remove once ConfigProperties usage is removed from remaining + // spring boot starter instrumentations @Bean public InstrumentationConfig instrumentationConfig( ConfigProperties properties, ConfigProvider configProvider) { diff --git a/instrumentation/spring/spring-boot-autoconfigure/src/main/java/io/opentelemetry/instrumentation/spring/autoconfigure/SpringConfigProvider.java b/instrumentation/spring/spring-boot-autoconfigure/src/main/java/io/opentelemetry/instrumentation/spring/autoconfigure/SpringConfigProvider.java deleted file mode 100644 index f18378409814..000000000000 --- a/instrumentation/spring/spring-boot-autoconfigure/src/main/java/io/opentelemetry/instrumentation/spring/autoconfigure/SpringConfigProvider.java +++ /dev/null @@ -1,68 +0,0 @@ -/* - * Copyright The OpenTelemetry Authors - * SPDX-License-Identifier: Apache-2.0 - */ - -package io.opentelemetry.instrumentation.spring.autoconfigure; - -import com.fasterxml.jackson.core.type.TypeReference; -import io.opentelemetry.api.incubator.config.ConfigProvider; -import io.opentelemetry.api.incubator.config.DeclarativeConfigProperties; -import io.opentelemetry.common.ComponentLoader; -import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.OpenTelemetryConfigurationModel; -import java.util.Collections; -import java.util.Map; -import javax.annotation.Nullable; - -/** - * Spring flavor of {@link io.opentelemetry.sdk.extension.incubator.fileconfig.SdkConfigProvider} - * that tries to coerce types, because spring doesn't tell what the original type was. - * - *

The entire class is a copy of SdkConfigProvider - * which uses {@link SpringDeclarativeConfigProperties} instead of {@link - * io.opentelemetry.sdk.extension.incubator.fileconfig.YamlDeclarativeConfigProperties}. - */ -final class SpringConfigProvider implements ConfigProvider { - - @Nullable private final DeclarativeConfigProperties instrumentationConfig; - - private SpringConfigProvider( - OpenTelemetryConfigurationModel model, ComponentLoader componentLoader) { - DeclarativeConfigProperties configProperties = toConfigProperties(model, componentLoader); - this.instrumentationConfig = configProperties.getStructured("instrumentation/development"); - } - - private static DeclarativeConfigProperties toConfigProperties( - Object model, ComponentLoader componentLoader) { - Map configurationMap = - EmbeddedConfigFile.getObjectMapper() - .convertValue(model, new TypeReference>() {}); - if (configurationMap == null) { - configurationMap = Collections.emptyMap(); - } - return SpringDeclarativeConfigProperties.create(configurationMap, componentLoader); - } - - /** - * Create a {@link SpringConfigProvider} from the {@code model}. - * - * @param model the configuration model - * @return the {@link SpringConfigProvider} - */ - static SpringConfigProvider create(OpenTelemetryConfigurationModel model) { - return new SpringConfigProvider( - model, ComponentLoader.forClassLoader(SpringConfigProvider.class.getClassLoader())); - } - - @Nullable - @Override - public DeclarativeConfigProperties getInstrumentationConfig() { - return instrumentationConfig; - } - - @Override - public String toString() { - return "SpringConfigProvider{" + "instrumentationConfig=" + instrumentationConfig + '}'; - } -} diff --git a/instrumentation/spring/spring-boot-autoconfigure/src/main/java/io/opentelemetry/instrumentation/spring/autoconfigure/SpringDeclarativeConfigProperties.java b/instrumentation/spring/spring-boot-autoconfigure/src/main/java/io/opentelemetry/instrumentation/spring/autoconfigure/SpringDeclarativeConfigProperties.java deleted file mode 100644 index 26b2e462c99f..000000000000 --- a/instrumentation/spring/spring-boot-autoconfigure/src/main/java/io/opentelemetry/instrumentation/spring/autoconfigure/SpringDeclarativeConfigProperties.java +++ /dev/null @@ -1,319 +0,0 @@ -/* - * Copyright The OpenTelemetry Authors - * SPDX-License-Identifier: Apache-2.0 - */ - -package io.opentelemetry.instrumentation.spring.autoconfigure; - -import static java.util.stream.Collectors.joining; -import static java.util.stream.Collectors.toList; - -import io.opentelemetry.api.incubator.config.DeclarativeConfigException; -import io.opentelemetry.api.incubator.config.DeclarativeConfigProperties; -import io.opentelemetry.common.ComponentLoader; -import io.opentelemetry.sdk.extension.incubator.fileconfig.DeclarativeConfiguration; -import java.util.Arrays; -import java.util.Collections; -import java.util.LinkedHashMap; -import java.util.LinkedHashSet; -import java.util.List; -import java.util.Map; -import java.util.Objects; -import java.util.Set; -import java.util.StringJoiner; -import javax.annotation.Nullable; - -/** - * Spring flavor of {@link - * io.opentelemetry.sdk.extension.incubator.fileconfig.YamlDeclarativeConfigProperties}, that tries - * to coerce types, because spring doesn't tell what the original type was. - * - *

The entire class is a copy of YamlDeclarativeConfigProperties - * with only minor modifications to type coercion logic. - */ -final class SpringDeclarativeConfigProperties implements DeclarativeConfigProperties { - - private static final Set> SUPPORTED_SCALAR_TYPES = - Collections.unmodifiableSet( - new LinkedHashSet<>( - Arrays.asList(String.class, Boolean.class, Long.class, Double.class))); - - /** Values are {@link #isPrimitive(Object)}, {@link List} of scalars. */ - private final Map simpleEntries; - - private final Map> listEntries; - private final Map mapEntries; - private final ComponentLoader componentLoader; - - private SpringDeclarativeConfigProperties( - Map simpleEntries, - Map> listEntries, - Map mapEntries, - ComponentLoader componentLoader) { - this.simpleEntries = simpleEntries; - this.listEntries = listEntries; - this.mapEntries = mapEntries; - this.componentLoader = componentLoader; - } - - /** - * Create a {@link SpringDeclarativeConfigProperties} from the {@code properties} map. - * - *

{@code properties} is expected to be the output of YAML parsing (i.e. with Jackson {@code - * com.fasterxml.jackson.databind.ObjectMapper}), and have values which are scalars, lists of - * scalars, lists of maps, and maps. - * - * @see DeclarativeConfiguration#toConfigProperties(Object) - */ - @SuppressWarnings("unchecked") - public static SpringDeclarativeConfigProperties create( - Map properties, ComponentLoader componentLoader) { - Map simpleEntries = new LinkedHashMap<>(); - Map> listEntries = new LinkedHashMap<>(); - Map mapEntries = new LinkedHashMap<>(); - for (Map.Entry entry : properties.entrySet()) { - String key = entry.getKey(); - Object value = entry.getValue(); - if (isPrimitive(value) || value == null) { - simpleEntries.put(key, value); - continue; - } - if (isPrimitiveList(value)) { - simpleEntries.put(key, value); - continue; - } - if (isListOfMaps(value)) { - List list = - ((List>) value) - .stream() - .map(map -> SpringDeclarativeConfigProperties.create(map, componentLoader)) - .collect(toList()); - listEntries.put(key, list); - continue; - } - if (isMap(value)) { - SpringDeclarativeConfigProperties configProperties = - SpringDeclarativeConfigProperties.create((Map) value, componentLoader); - mapEntries.put(key, configProperties); - continue; - } - throw new DeclarativeConfigException( - "Unable to initialize ExtendedConfigProperties. Key \"" - + key - + "\" has unrecognized object type " - + value.getClass().getName()); - } - return new SpringDeclarativeConfigProperties( - simpleEntries, listEntries, mapEntries, componentLoader); - } - - private static boolean isPrimitiveList(Object object) { - if (object instanceof List) { - List list = (List) object; - return list.stream().allMatch(SpringDeclarativeConfigProperties::isPrimitive); - } - return false; - } - - private static boolean isPrimitive(Object object) { - return object instanceof String - || object instanceof Integer - || object instanceof Long - || object instanceof Float - || object instanceof Double - || object instanceof Boolean; - } - - private static boolean isListOfMaps(Object object) { - if (object instanceof List) { - List list = (List) object; - return list.stream() - .allMatch( - entry -> - entry instanceof Map - && ((Map) entry) - .keySet().stream().allMatch(key -> key instanceof String)); - } - return false; - } - - private static boolean isMap(Object object) { - if (object instanceof Map) { - Map map = (Map) object; - return map.keySet().stream().allMatch(entry -> entry instanceof String); - } - return false; - } - - @Nullable - @Override - public String getString(String name) { - return stringOrNull(simpleEntries.get(name)); - } - - @Nullable - @Override - public Boolean getBoolean(String name) { - return booleanOrNull(simpleEntries.get(name)); - } - - @Nullable - @Override - public Integer getInt(String name) { - Object value = simpleEntries.get(name); - if (value == null) { - return null; - } - if (value instanceof Integer) { - return (Integer) value; - } - if (value instanceof Long) { - return ((Long) value).intValue(); - } - return Integer.parseInt(value.toString()); - } - - @Nullable - @Override - public Long getLong(String name) { - return longOrNull(simpleEntries.get(name)); - } - - @Nullable - @Override - public Double getDouble(String name) { - return doubleOrNull(simpleEntries.get(name)); - } - - @Nullable - @Override - public List getScalarList(String name, Class scalarType) { - if (!SUPPORTED_SCALAR_TYPES.contains(scalarType)) { - throw new DeclarativeConfigException( - "Unsupported scalar type " - + scalarType.getName() - + ". Supported types include " - + SUPPORTED_SCALAR_TYPES.stream() - .map(Class::getName) - .collect(joining(",", "[", "]"))); - } - Object value = simpleEntries.get(name); - if (value instanceof List) { - List objectList = ((List) value); - if (objectList.isEmpty()) { - return Collections.emptyList(); - } - List result = - objectList.stream() - .map( - entry -> { - if (scalarType == String.class) { - return stringOrNull(entry); - } else if (scalarType == Boolean.class) { - return booleanOrNull(entry); - } else if (scalarType == Long.class) { - return longOrNull(entry); - } else if (scalarType == Double.class) { - return doubleOrNull(entry); - } - return null; - }) - .filter(Objects::nonNull) - .map(scalarType::cast) - .collect(toList()); - if (result.isEmpty()) { - return null; - } - return result; - } - return null; - } - - @Nullable - private static String stringOrNull(@Nullable Object value) { - if (value == null) { - return null; - } - return value.toString(); - } - - @Nullable - private static Boolean booleanOrNull(@Nullable Object value) { - if (value == null) { - return null; - } - if (value instanceof Boolean) { - return (Boolean) value; - } - return Boolean.parseBoolean(value.toString()); - } - - @Nullable - private static Long longOrNull(@Nullable Object value) { - if (value == null) { - return null; - } - if (value instanceof Integer) { - return ((Integer) value).longValue(); - } - if (value instanceof Long) { - return (Long) value; - } - return Long.parseLong(value.toString()); - } - - @Nullable - private static Double doubleOrNull(@Nullable Object value) { - if (value == null) { - return null; - } - if (value instanceof Float) { - return ((Float) value).doubleValue(); - } - if (value instanceof Double) { - return (Double) value; - } - return Double.parseDouble(value.toString()); - } - - @Nullable - @Override - public DeclarativeConfigProperties getStructured(String name) { - return mapEntries.get(name); - } - - @Nullable - @Override - public List getStructuredList(String name) { - List value = listEntries.get(name); - if (value != null) { - return Collections.unmodifiableList(value); - } - return null; - } - - @Override - public Set getPropertyKeys() { - Set keys = new LinkedHashSet<>(); - keys.addAll(simpleEntries.keySet()); - keys.addAll(listEntries.keySet()); - keys.addAll(mapEntries.keySet()); - return Collections.unmodifiableSet(keys); - } - - @Override - public String toString() { - StringJoiner joiner = new StringJoiner(", ", "SpringDeclarativeConfigProperties{", "}"); - simpleEntries.forEach((key, value) -> joiner.add(key + "=" + value)); - listEntries.forEach((key, value) -> joiner.add(key + "=" + value)); - mapEntries.forEach((key, value) -> joiner.add(key + "=" + value)); - return joiner.toString(); - } - - /** Return the {@link ComponentLoader}. */ - @Override - public ComponentLoader getComponentLoader() { - return componentLoader; - } -} diff --git a/instrumentation/spring/spring-boot-autoconfigure/src/main/java/io/opentelemetry/instrumentation/spring/autoconfigure/SpringOpenTelemetrySdk.java b/instrumentation/spring/spring-boot-autoconfigure/src/main/java/io/opentelemetry/instrumentation/spring/autoconfigure/SpringOpenTelemetrySdk.java new file mode 100644 index 000000000000..8fbd36c3c4ec --- /dev/null +++ b/instrumentation/spring/spring-boot-autoconfigure/src/main/java/io/opentelemetry/instrumentation/spring/autoconfigure/SpringOpenTelemetrySdk.java @@ -0,0 +1,29 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + +package io.opentelemetry.instrumentation.spring.autoconfigure; + +import io.opentelemetry.api.incubator.ExtendedOpenTelemetry; +import io.opentelemetry.api.incubator.config.ConfigProvider; +import io.opentelemetry.sdk.OpenTelemetrySdk; + +final class SpringOpenTelemetrySdk extends OpenTelemetrySdk implements ExtendedOpenTelemetry { + + private final ConfigProvider configProvider; + + SpringOpenTelemetrySdk(OpenTelemetrySdk delegate, ConfigProvider configProvider) { + super( + delegate.getSdkTracerProvider(), + delegate.getSdkMeterProvider(), + delegate.getSdkLoggerProvider(), + delegate.getPropagators()); + this.configProvider = configProvider; + } + + @Override + public ConfigProvider getConfigProvider() { + return configProvider; + } +} diff --git a/instrumentation/spring/spring-boot-autoconfigure/src/main/java/io/opentelemetry/instrumentation/spring/autoconfigure/internal/instrumentation/scheduling/SpringSchedulingInstrumentationAspect.java b/instrumentation/spring/spring-boot-autoconfigure/src/main/java/io/opentelemetry/instrumentation/spring/autoconfigure/internal/instrumentation/scheduling/SpringSchedulingInstrumentationAspect.java index 6d84cde77985..ba51f605a884 100644 --- a/instrumentation/spring/spring-boot-autoconfigure/src/main/java/io/opentelemetry/instrumentation/spring/autoconfigure/internal/instrumentation/scheduling/SpringSchedulingInstrumentationAspect.java +++ b/instrumentation/spring/spring-boot-autoconfigure/src/main/java/io/opentelemetry/instrumentation/spring/autoconfigure/internal/instrumentation/scheduling/SpringSchedulingInstrumentationAspect.java @@ -9,7 +9,7 @@ import io.opentelemetry.api.common.AttributeKey; import io.opentelemetry.context.Context; import io.opentelemetry.context.Scope; -import io.opentelemetry.instrumentation.api.incubator.config.internal.InstrumentationConfig; +import io.opentelemetry.instrumentation.api.incubator.config.internal.DeclarativeConfigUtil; import io.opentelemetry.instrumentation.api.incubator.semconv.code.CodeAttributesExtractor; import io.opentelemetry.instrumentation.api.incubator.semconv.code.CodeAttributesGetter; import io.opentelemetry.instrumentation.api.incubator.semconv.code.CodeSpanNameExtractor; @@ -42,8 +42,7 @@ final class SpringSchedulingInstrumentationAspect { private static final String INSTRUMENTATION_NAME = "io.opentelemetry.spring-boot-autoconfigure"; private final Instrumenter instrumenter; - public SpringSchedulingInstrumentationAspect( - OpenTelemetry openTelemetry, InstrumentationConfig config) { + public SpringSchedulingInstrumentationAspect(OpenTelemetry openTelemetry) { CodeAttributesGetter codedAttributesGetter = ClassAndMethod.codeAttributesGetter(); InstrumenterBuilder builder = @@ -52,8 +51,8 @@ public SpringSchedulingInstrumentationAspect( INSTRUMENTATION_NAME, CodeSpanNameExtractor.create(codedAttributesGetter)) .addAttributesExtractor(CodeAttributesExtractor.create(codedAttributesGetter)); - if (config.getBoolean( - "otel.instrumentation.spring-scheduling.experimental-span-attributes", false)) { + if (DeclarativeConfigUtil.getInstrumentationConfig(openTelemetry, "spring_scheduling") + .getBoolean("experimental-span-attributes/development", false)) { builder.addAttributesExtractor( AttributesExtractor.constant(AttributeKey.stringKey("job.system"), "spring_scheduling")); } diff --git a/instrumentation/spring/spring-boot-autoconfigure/src/main/java/io/opentelemetry/instrumentation/spring/autoconfigure/internal/instrumentation/scheduling/SpringSchedulingInstrumentationAutoConfiguration.java b/instrumentation/spring/spring-boot-autoconfigure/src/main/java/io/opentelemetry/instrumentation/spring/autoconfigure/internal/instrumentation/scheduling/SpringSchedulingInstrumentationAutoConfiguration.java index 85a54625e455..cfeae0637929 100644 --- a/instrumentation/spring/spring-boot-autoconfigure/src/main/java/io/opentelemetry/instrumentation/spring/autoconfigure/internal/instrumentation/scheduling/SpringSchedulingInstrumentationAutoConfiguration.java +++ b/instrumentation/spring/spring-boot-autoconfigure/src/main/java/io/opentelemetry/instrumentation/spring/autoconfigure/internal/instrumentation/scheduling/SpringSchedulingInstrumentationAutoConfiguration.java @@ -6,7 +6,6 @@ package io.opentelemetry.instrumentation.spring.autoconfigure.internal.instrumentation.scheduling; import io.opentelemetry.api.OpenTelemetry; -import io.opentelemetry.instrumentation.api.incubator.config.internal.InstrumentationConfig; import io.opentelemetry.instrumentation.spring.autoconfigure.internal.ConditionalOnEnabledInstrumentation; import org.aspectj.lang.annotation.Aspect; import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; @@ -26,7 +25,7 @@ class SpringSchedulingInstrumentationAutoConfiguration { @Bean SpringSchedulingInstrumentationAspect springSchedulingInstrumentationAspect( - OpenTelemetry openTelemetry, InstrumentationConfig config) { - return new SpringSchedulingInstrumentationAspect(openTelemetry, config); + OpenTelemetry openTelemetry) { + return new SpringSchedulingInstrumentationAspect(openTelemetry); } } diff --git a/instrumentation/spring/spring-boot-autoconfigure/src/main/java/io/opentelemetry/instrumentation/spring/autoconfigure/internal/instrumentation/web/RestTemplateInstrumentation.java b/instrumentation/spring/spring-boot-autoconfigure/src/main/java/io/opentelemetry/instrumentation/spring/autoconfigure/internal/instrumentation/web/RestTemplateInstrumentation.java index ca4c0c97c466..137b1e8fe4ac 100644 --- a/instrumentation/spring/spring-boot-autoconfigure/src/main/java/io/opentelemetry/instrumentation/spring/autoconfigure/internal/instrumentation/web/RestTemplateInstrumentation.java +++ b/instrumentation/spring/spring-boot-autoconfigure/src/main/java/io/opentelemetry/instrumentation/spring/autoconfigure/internal/instrumentation/web/RestTemplateInstrumentation.java @@ -25,7 +25,7 @@ static RestTemplate addIfNotPresent( ClientHttpRequestInterceptor instrumentationInterceptor = InstrumentationConfigUtil.configureClientBuilder( - config, + openTelemetry, SpringWebTelemetry.builder(openTelemetry), WebTelemetryUtil.getBuilderExtractor()) .build() diff --git a/instrumentation/spring/spring-boot-autoconfigure/src/main/java/io/opentelemetry/instrumentation/spring/autoconfigure/internal/instrumentation/webflux/SpringWebfluxInstrumentationAutoConfiguration.java b/instrumentation/spring/spring-boot-autoconfigure/src/main/java/io/opentelemetry/instrumentation/spring/autoconfigure/internal/instrumentation/webflux/SpringWebfluxInstrumentationAutoConfiguration.java index 79bacde3ccc2..93e9a1fde417 100644 --- a/instrumentation/spring/spring-boot-autoconfigure/src/main/java/io/opentelemetry/instrumentation/spring/autoconfigure/internal/instrumentation/webflux/SpringWebfluxInstrumentationAutoConfiguration.java +++ b/instrumentation/spring/spring-boot-autoconfigure/src/main/java/io/opentelemetry/instrumentation/spring/autoconfigure/internal/instrumentation/webflux/SpringWebfluxInstrumentationAutoConfiguration.java @@ -6,7 +6,6 @@ package io.opentelemetry.instrumentation.spring.autoconfigure.internal.instrumentation.webflux; import io.opentelemetry.api.OpenTelemetry; -import io.opentelemetry.instrumentation.api.incubator.config.internal.InstrumentationConfig; import io.opentelemetry.instrumentation.spring.autoconfigure.internal.ConditionalOnEnabledInstrumentation; import org.springframework.beans.factory.ObjectProvider; import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; @@ -33,14 +32,13 @@ public SpringWebfluxInstrumentationAutoConfiguration() {} // static to avoid "is not eligible for getting processed by all BeanPostProcessors" warning @Bean static WebClientBeanPostProcessor otelWebClientBeanPostProcessor( - ObjectProvider openTelemetryProvider, - ObjectProvider configProvider) { - return new WebClientBeanPostProcessor(openTelemetryProvider, configProvider); + ObjectProvider openTelemetryProvider) { + return new WebClientBeanPostProcessor(openTelemetryProvider); } @Bean - WebFilter telemetryFilter(OpenTelemetry openTelemetry, InstrumentationConfig config) { - return WebClientBeanPostProcessor.getWebfluxServerTelemetry(openTelemetry, config) + WebFilter telemetryFilter(OpenTelemetry openTelemetry) { + return WebClientBeanPostProcessor.getWebfluxServerTelemetry(openTelemetry) .createWebFilterAndRegisterReactorHook(); } } diff --git a/instrumentation/spring/spring-boot-autoconfigure/src/main/java/io/opentelemetry/instrumentation/spring/autoconfigure/internal/instrumentation/webflux/WebClientBeanPostProcessor.java b/instrumentation/spring/spring-boot-autoconfigure/src/main/java/io/opentelemetry/instrumentation/spring/autoconfigure/internal/instrumentation/webflux/WebClientBeanPostProcessor.java index 9b501c410be3..355bf8ea2450 100644 --- a/instrumentation/spring/spring-boot-autoconfigure/src/main/java/io/opentelemetry/instrumentation/spring/autoconfigure/internal/instrumentation/webflux/WebClientBeanPostProcessor.java +++ b/instrumentation/spring/spring-boot-autoconfigure/src/main/java/io/opentelemetry/instrumentation/spring/autoconfigure/internal/instrumentation/webflux/WebClientBeanPostProcessor.java @@ -6,7 +6,6 @@ package io.opentelemetry.instrumentation.spring.autoconfigure.internal.instrumentation.webflux; import io.opentelemetry.api.OpenTelemetry; -import io.opentelemetry.instrumentation.api.incubator.config.internal.InstrumentationConfig; import io.opentelemetry.instrumentation.spring.autoconfigure.internal.properties.InstrumentationConfigUtil; import io.opentelemetry.instrumentation.spring.webflux.v5_3.SpringWebfluxClientTelemetry; import io.opentelemetry.instrumentation.spring.webflux.v5_3.SpringWebfluxServerTelemetry; @@ -23,28 +22,22 @@ final class WebClientBeanPostProcessor implements BeanPostProcessor { private final ObjectProvider openTelemetryProvider; - private final ObjectProvider configProvider; - WebClientBeanPostProcessor( - ObjectProvider openTelemetryProvider, - ObjectProvider configProvider) { + WebClientBeanPostProcessor(ObjectProvider openTelemetryProvider) { this.openTelemetryProvider = openTelemetryProvider; - this.configProvider = configProvider; } - static SpringWebfluxClientTelemetry getWebfluxClientTelemetry( - OpenTelemetry openTelemetry, InstrumentationConfig config) { + static SpringWebfluxClientTelemetry getWebfluxClientTelemetry(OpenTelemetry openTelemetry) { return InstrumentationConfigUtil.configureClientBuilder( - config, + openTelemetry, SpringWebfluxClientTelemetry.builder(openTelemetry), SpringWebfluxBuilderUtil.getClientBuilderExtractor()) .build(); } - static SpringWebfluxServerTelemetry getWebfluxServerTelemetry( - OpenTelemetry openTelemetry, InstrumentationConfig config) { + static SpringWebfluxServerTelemetry getWebfluxServerTelemetry(OpenTelemetry openTelemetry) { return InstrumentationConfigUtil.configureServerBuilder( - config, + openTelemetry, SpringWebfluxServerTelemetry.builder(openTelemetry), SpringWebfluxBuilderUtil.getServerBuilderExtractor()) .build(); @@ -64,7 +57,7 @@ public Object postProcessAfterInitialization(Object bean, String beanName) { private WebClient.Builder wrapBuilder(WebClient.Builder webClientBuilder) { SpringWebfluxClientTelemetry instrumentation = - getWebfluxClientTelemetry(openTelemetryProvider.getObject(), configProvider.getObject()); + getWebfluxClientTelemetry(openTelemetryProvider.getObject()); return webClientBuilder.filters(instrumentation::addFilter); } } diff --git a/instrumentation/spring/spring-boot-autoconfigure/src/main/java/io/opentelemetry/instrumentation/spring/autoconfigure/internal/instrumentation/webmvc/SpringWebMvc5InstrumentationAutoConfiguration.java b/instrumentation/spring/spring-boot-autoconfigure/src/main/java/io/opentelemetry/instrumentation/spring/autoconfigure/internal/instrumentation/webmvc/SpringWebMvc5InstrumentationAutoConfiguration.java index 73d3f657504c..8e47a741b7f8 100644 --- a/instrumentation/spring/spring-boot-autoconfigure/src/main/java/io/opentelemetry/instrumentation/spring/autoconfigure/internal/instrumentation/webmvc/SpringWebMvc5InstrumentationAutoConfiguration.java +++ b/instrumentation/spring/spring-boot-autoconfigure/src/main/java/io/opentelemetry/instrumentation/spring/autoconfigure/internal/instrumentation/webmvc/SpringWebMvc5InstrumentationAutoConfiguration.java @@ -6,7 +6,6 @@ package io.opentelemetry.instrumentation.spring.autoconfigure.internal.instrumentation.webmvc; import io.opentelemetry.api.OpenTelemetry; -import io.opentelemetry.instrumentation.api.incubator.config.internal.InstrumentationConfig; import io.opentelemetry.instrumentation.spring.autoconfigure.internal.ConditionalOnEnabledInstrumentation; import io.opentelemetry.instrumentation.spring.autoconfigure.internal.properties.InstrumentationConfigUtil; import io.opentelemetry.instrumentation.spring.webmvc.v5_3.SpringWebMvcTelemetry; @@ -28,9 +27,9 @@ public class SpringWebMvc5InstrumentationAutoConfiguration { @Bean - Filter otelWebMvcFilter(OpenTelemetry openTelemetry, InstrumentationConfig config) { + Filter otelWebMvcFilter(OpenTelemetry openTelemetry) { return InstrumentationConfigUtil.configureServerBuilder( - config, + openTelemetry, SpringWebMvcTelemetry.builder(openTelemetry), SpringMvcBuilderUtil.getBuilderExtractor()) .build() diff --git a/instrumentation/spring/spring-boot-autoconfigure/src/main/java/io/opentelemetry/instrumentation/spring/autoconfigure/internal/properties/InstrumentationConfigUtil.java b/instrumentation/spring/spring-boot-autoconfigure/src/main/java/io/opentelemetry/instrumentation/spring/autoconfigure/internal/properties/InstrumentationConfigUtil.java index 683529a18b29..8019fcb21649 100644 --- a/instrumentation/spring/spring-boot-autoconfigure/src/main/java/io/opentelemetry/instrumentation/spring/autoconfigure/internal/properties/InstrumentationConfigUtil.java +++ b/instrumentation/spring/spring-boot-autoconfigure/src/main/java/io/opentelemetry/instrumentation/spring/autoconfigure/internal/properties/InstrumentationConfigUtil.java @@ -6,6 +6,7 @@ package io.opentelemetry.instrumentation.spring.autoconfigure.internal.properties; import com.google.errorprone.annotations.CanIgnoreReturnValue; +import io.opentelemetry.api.OpenTelemetry; import io.opentelemetry.instrumentation.api.incubator.builder.internal.DefaultHttpClientInstrumenterBuilder; import io.opentelemetry.instrumentation.api.incubator.builder.internal.DefaultHttpServerInstrumenterBuilder; import io.opentelemetry.instrumentation.api.incubator.config.internal.CommonConfig; @@ -21,24 +22,24 @@ private InstrumentationConfigUtil() {} @CanIgnoreReturnValue public static T configureClientBuilder( - InstrumentationConfig config, + OpenTelemetry openTelemetry, T builder, Function> getBuilder) { - getBuilder.apply(builder).configure(getConfig(config)); + getBuilder.apply(builder).configure(getConfig(openTelemetry)); return builder; } @CanIgnoreReturnValue public static T configureServerBuilder( - InstrumentationConfig config, + OpenTelemetry openTelemetry, T builder, Function> getBuilder) { - getBuilder.apply(builder).configure(getConfig(config)); + getBuilder.apply(builder).configure(getConfig(openTelemetry)); return builder; } - private static CommonConfig getConfig(InstrumentationConfig config) { - return new CommonConfig(config); + private static CommonConfig getConfig(OpenTelemetry openTelemetry) { + return new CommonConfig(openTelemetry); } public static boolean isStatementSanitizationEnabled(InstrumentationConfig config, String key) { diff --git a/instrumentation/spring/spring-boot-autoconfigure/src/main/javaSpring3/io/opentelemetry/instrumentation/spring/autoconfigure/internal/instrumentation/web/RestClientBeanPostProcessor.java b/instrumentation/spring/spring-boot-autoconfigure/src/main/javaSpring3/io/opentelemetry/instrumentation/spring/autoconfigure/internal/instrumentation/web/RestClientBeanPostProcessor.java index 9ef5b7f19194..118354dc04c4 100644 --- a/instrumentation/spring/spring-boot-autoconfigure/src/main/javaSpring3/io/opentelemetry/instrumentation/spring/autoconfigure/internal/instrumentation/web/RestClientBeanPostProcessor.java +++ b/instrumentation/spring/spring-boot-autoconfigure/src/main/javaSpring3/io/opentelemetry/instrumentation/spring/autoconfigure/internal/instrumentation/web/RestClientBeanPostProcessor.java @@ -57,7 +57,7 @@ private static RestClient addRestClientInterceptorIfNotPresent( static ClientHttpRequestInterceptor getInterceptor( OpenTelemetry openTelemetry, InstrumentationConfig config) { return InstrumentationConfigUtil.configureClientBuilder( - config, + openTelemetry, SpringWebTelemetry.builder(openTelemetry), WebTelemetryUtil.getBuilderExtractor()) .build() diff --git a/instrumentation/spring/spring-boot-autoconfigure/src/main/javaSpring3/io/opentelemetry/instrumentation/spring/autoconfigure/internal/instrumentation/webmvc/SpringWebMvc6InstrumentationAutoConfiguration.java b/instrumentation/spring/spring-boot-autoconfigure/src/main/javaSpring3/io/opentelemetry/instrumentation/spring/autoconfigure/internal/instrumentation/webmvc/SpringWebMvc6InstrumentationAutoConfiguration.java index b8653d4d3936..84e553dfeb6b 100644 --- a/instrumentation/spring/spring-boot-autoconfigure/src/main/javaSpring3/io/opentelemetry/instrumentation/spring/autoconfigure/internal/instrumentation/webmvc/SpringWebMvc6InstrumentationAutoConfiguration.java +++ b/instrumentation/spring/spring-boot-autoconfigure/src/main/javaSpring3/io/opentelemetry/instrumentation/spring/autoconfigure/internal/instrumentation/webmvc/SpringWebMvc6InstrumentationAutoConfiguration.java @@ -6,7 +6,6 @@ package io.opentelemetry.instrumentation.spring.autoconfigure.internal.instrumentation.webmvc; import io.opentelemetry.api.OpenTelemetry; -import io.opentelemetry.instrumentation.api.incubator.config.internal.InstrumentationConfig; import io.opentelemetry.instrumentation.spring.autoconfigure.internal.ConditionalOnEnabledInstrumentation; import io.opentelemetry.instrumentation.spring.autoconfigure.internal.properties.InstrumentationConfigUtil; import io.opentelemetry.instrumentation.spring.webmvc.v6_0.SpringWebMvcTelemetry; @@ -28,9 +27,9 @@ public class SpringWebMvc6InstrumentationAutoConfiguration { @Bean - Filter otelWebMvcFilter(OpenTelemetry openTelemetry, InstrumentationConfig config) { + Filter otelWebMvcFilter(OpenTelemetry openTelemetry) { return InstrumentationConfigUtil.configureServerBuilder( - config, + openTelemetry, SpringWebMvcTelemetry.builder(openTelemetry), SpringMvcBuilderUtil.getBuilderExtractor()) .build() diff --git a/instrumentation/spring/spring-boot-autoconfigure/src/main/javaSpring4/io/opentelemetry/instrumentation/spring/autoconfigure/internal/instrumentation/web/RestClientBeanPostProcessorSpring4.java b/instrumentation/spring/spring-boot-autoconfigure/src/main/javaSpring4/io/opentelemetry/instrumentation/spring/autoconfigure/internal/instrumentation/web/RestClientBeanPostProcessorSpring4.java index 03aef6f6d7a6..409c0b1bf9d5 100644 --- a/instrumentation/spring/spring-boot-autoconfigure/src/main/javaSpring4/io/opentelemetry/instrumentation/spring/autoconfigure/internal/instrumentation/web/RestClientBeanPostProcessorSpring4.java +++ b/instrumentation/spring/spring-boot-autoconfigure/src/main/javaSpring4/io/opentelemetry/instrumentation/spring/autoconfigure/internal/instrumentation/web/RestClientBeanPostProcessorSpring4.java @@ -67,7 +67,7 @@ private static boolean isInterceptorNotPresent( static ClientHttpRequestInterceptor getInterceptor( OpenTelemetry openTelemetry, InstrumentationConfig config) { return InstrumentationConfigUtil.configureClientBuilder( - config, + openTelemetry, SpringWebTelemetry.builder(openTelemetry), WebTelemetryUtil.getBuilderExtractor()) .build() diff --git a/instrumentation/spring/spring-boot-autoconfigure/src/test/java/io/opentelemetry/instrumentation/spring/autoconfigure/EmbeddedConfigFileTest.java b/instrumentation/spring/spring-boot-autoconfigure/src/test/java/io/opentelemetry/instrumentation/spring/autoconfigure/EmbeddedConfigFileTest.java index 2396a1147ad3..201fda267d22 100644 --- a/instrumentation/spring/spring-boot-autoconfigure/src/test/java/io/opentelemetry/instrumentation/spring/autoconfigure/EmbeddedConfigFileTest.java +++ b/instrumentation/spring/spring-boot-autoconfigure/src/test/java/io/opentelemetry/instrumentation/spring/autoconfigure/EmbeddedConfigFileTest.java @@ -16,7 +16,7 @@ class EmbeddedConfigFileTest { @Test void convertFlatPropsToNested_simpleProperties() { - Map flatProps = new HashMap<>(); + Map flatProps = new HashMap<>(); flatProps.put("resource.service.name", "my-service"); flatProps.put("traces.exporter", "otlp"); @@ -55,7 +55,7 @@ void convertFlatPropsToNested_simpleProperties() { @Test void convertFlatPropsToNested_arrayProperties() { - Map flatProps = new HashMap<>(); + Map flatProps = new HashMap<>(); flatProps.put("instrumentation.java.list[0]", "one"); flatProps.put("instrumentation.java.list[1]", "two"); flatProps.put("instrumentation.java.list[2]", "three"); @@ -89,7 +89,7 @@ void convertFlatPropsToNested_arrayProperties() { @Test void convertFlatPropsToNested_mixedPropertiesAndArrays() { - Map flatProps = new HashMap<>(); + Map flatProps = new HashMap<>(); flatProps.put("resource.service.name", "test-service"); flatProps.put("resource.attributes[0]", "key1=value1"); flatProps.put("resource.attributes[1]", "key2=value2"); @@ -124,7 +124,7 @@ void convertFlatPropsToNested_mixedPropertiesAndArrays() { @Test void convertFlatPropsToNested_emptyMap() { - Map flatProps = new HashMap<>(); + Map flatProps = new HashMap<>(); Map result = EmbeddedConfigFile.convertFlatPropsToNested(flatProps); @@ -133,7 +133,7 @@ void convertFlatPropsToNested_emptyMap() { @Test void convertFlatPropsToNested_singleLevelProperty() { - Map flatProps = new HashMap<>(); + Map flatProps = new HashMap<>(); flatProps.put("enabled", "true"); Map result = EmbeddedConfigFile.convertFlatPropsToNested(flatProps); @@ -143,7 +143,7 @@ void convertFlatPropsToNested_singleLevelProperty() { @Test void convertFlatPropsToNested_arrayWithGaps() { - Map flatProps = new HashMap<>(); + Map flatProps = new HashMap<>(); flatProps.put("list[0]", "first"); flatProps.put("list[2]", "third"); @@ -161,7 +161,7 @@ void convertFlatPropsToNested_arrayWithGaps() { @Test void convertFlatPropsToNested_deeplyNestedProperties() { - Map flatProps = new HashMap<>(); + Map flatProps = new HashMap<>(); flatProps.put("a.b.c.d.e", "deep-value"); Map result = EmbeddedConfigFile.convertFlatPropsToNested(flatProps); @@ -183,7 +183,7 @@ void convertFlatPropsToNested_deeplyNestedProperties() { @Test void convertFlatPropsToNested_nestedArrays() { - Map flatProps = new HashMap<>(); + Map flatProps = new HashMap<>(); flatProps.put("outer[0].inner[0]", "value1"); flatProps.put("outer[0].inner[1]", "value2"); flatProps.put("outer[1].inner[0]", "value3"); diff --git a/instrumentation/spring/spring-boot-autoconfigure/src/test/java/io/opentelemetry/instrumentation/spring/autoconfigure/internal/instrumentation/scheduling/SchedulingInstrumentationAspectTest.java b/instrumentation/spring/spring-boot-autoconfigure/src/test/java/io/opentelemetry/instrumentation/spring/autoconfigure/internal/instrumentation/scheduling/SchedulingInstrumentationAspectTest.java index 3306b280869c..6e66cfa96d7c 100644 --- a/instrumentation/spring/spring-boot-autoconfigure/src/test/java/io/opentelemetry/instrumentation/spring/autoconfigure/internal/instrumentation/scheduling/SchedulingInstrumentationAspectTest.java +++ b/instrumentation/spring/spring-boot-autoconfigure/src/test/java/io/opentelemetry/instrumentation/spring/autoconfigure/internal/instrumentation/scheduling/SchedulingInstrumentationAspectTest.java @@ -13,14 +13,10 @@ import io.opentelemetry.api.trace.Tracer; import io.opentelemetry.context.Context; import io.opentelemetry.context.Scope; -import io.opentelemetry.instrumentation.api.incubator.config.internal.InstrumentationConfig; -import io.opentelemetry.instrumentation.spring.autoconfigure.internal.properties.ConfigPropertiesBridge; import io.opentelemetry.instrumentation.testing.junit.LibraryInstrumentationExtension; import io.opentelemetry.instrumentation.testing.junit.code.SemconvCodeStabilityUtil; -import io.opentelemetry.sdk.autoconfigure.spi.internal.DefaultConfigProperties; import io.opentelemetry.sdk.testing.assertj.AttributeAssertion; import io.opentelemetry.sdk.trace.data.StatusData; -import java.util.Collections; import java.util.List; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; @@ -39,9 +35,8 @@ class SchedulingInstrumentationAspectTest { private String unproxiedTesterSimpleClassName; private String unproxiedTesterClassName; - SpringSchedulingInstrumentationAspect newAspect( - OpenTelemetry openTelemetry, InstrumentationConfig config) { - return new SpringSchedulingInstrumentationAspect(openTelemetry, config); + SpringSchedulingInstrumentationAspect newAspect(OpenTelemetry openTelemetry) { + return new SpringSchedulingInstrumentationAspect(openTelemetry); } @BeforeEach @@ -54,11 +49,7 @@ void setup() { AspectJProxyFactory factory = new AspectJProxyFactory(); factory.setTarget(unproxiedTester); - SpringSchedulingInstrumentationAspect aspect = - newAspect( - testing.getOpenTelemetry(), - new ConfigPropertiesBridge( - DefaultConfigProperties.createFromMap(Collections.emptyMap()))); + SpringSchedulingInstrumentationAspect aspect = newAspect(testing.getOpenTelemetry()); factory.addAspect(aspect); schedulingTester = factory.getProxy(); diff --git a/instrumentation/spring/spring-boot-autoconfigure/src/test/java/io/opentelemetry/instrumentation/spring/autoconfigure/internal/instrumentation/webflux/WebClientBeanPostProcessorTest.java b/instrumentation/spring/spring-boot-autoconfigure/src/test/java/io/opentelemetry/instrumentation/spring/autoconfigure/internal/instrumentation/webflux/WebClientBeanPostProcessorTest.java index 4c25da12a112..5911ef85c815 100644 --- a/instrumentation/spring/spring-boot-autoconfigure/src/test/java/io/opentelemetry/instrumentation/spring/autoconfigure/internal/instrumentation/webflux/WebClientBeanPostProcessorTest.java +++ b/instrumentation/spring/spring-boot-autoconfigure/src/test/java/io/opentelemetry/instrumentation/spring/autoconfigure/internal/instrumentation/webflux/WebClientBeanPostProcessorTest.java @@ -8,7 +8,6 @@ import static org.assertj.core.api.Assertions.assertThat; import io.opentelemetry.api.OpenTelemetry; -import io.opentelemetry.instrumentation.api.incubator.config.internal.InstrumentationConfig; import io.opentelemetry.instrumentation.spring.autoconfigure.internal.properties.ConfigPropertiesBridge; import io.opentelemetry.sdk.autoconfigure.spi.internal.DefaultConfigProperties; import java.util.Collections; @@ -34,9 +33,7 @@ class WebClientBeanPostProcessorTest { "when processed bean is NOT of type WebClient or WebClientBuilder should return Object") void returnsObject() { BeanPostProcessor underTest = - new WebClientBeanPostProcessor( - beanFactory.getBeanProvider(OpenTelemetry.class), - beanFactory.getBeanProvider(InstrumentationConfig.class)); + new WebClientBeanPostProcessor(beanFactory.getBeanProvider(OpenTelemetry.class)); assertThat(underTest.postProcessAfterInitialization(new Object(), "testObject")) .isExactlyInstanceOf(Object.class); @@ -46,9 +43,7 @@ void returnsObject() { @DisplayName("when processed bean is of type WebClient should return WebClient") void returnsWebClient() { BeanPostProcessor underTest = - new WebClientBeanPostProcessor( - beanFactory.getBeanProvider(OpenTelemetry.class), - beanFactory.getBeanProvider(InstrumentationConfig.class)); + new WebClientBeanPostProcessor(beanFactory.getBeanProvider(OpenTelemetry.class)); assertThat(underTest.postProcessAfterInitialization(WebClient.create(), "testWebClient")) .isInstanceOf(WebClient.class); @@ -58,9 +53,7 @@ void returnsWebClient() { @DisplayName("when processed bean is of type WebClientBuilder should return WebClientBuilder") void returnsWebClientBuilder() { BeanPostProcessor underTest = - new WebClientBeanPostProcessor( - beanFactory.getBeanProvider(OpenTelemetry.class), - beanFactory.getBeanProvider(InstrumentationConfig.class)); + new WebClientBeanPostProcessor(beanFactory.getBeanProvider(OpenTelemetry.class)); assertThat( underTest.postProcessAfterInitialization(WebClient.builder(), "testWebClientBuilder")) @@ -71,9 +64,7 @@ void returnsWebClientBuilder() { @DisplayName("when processed bean is of type WebClient should add exchange filter to WebClient") void addsExchangeFilterWebClient() { BeanPostProcessor underTest = - new WebClientBeanPostProcessor( - beanFactory.getBeanProvider(OpenTelemetry.class), - beanFactory.getBeanProvider(InstrumentationConfig.class)); + new WebClientBeanPostProcessor(beanFactory.getBeanProvider(OpenTelemetry.class)); WebClient webClient = WebClient.create(); Object processedWebClient = @@ -96,9 +87,7 @@ void addsExchangeFilterWebClient() { "when processed bean is of type WebClientBuilder should add ONE exchange filter to WebClientBuilder") void addsExchangeFilterWebClientBuilder() { BeanPostProcessor underTest = - new WebClientBeanPostProcessor( - beanFactory.getBeanProvider(OpenTelemetry.class), - beanFactory.getBeanProvider(InstrumentationConfig.class)); + new WebClientBeanPostProcessor(beanFactory.getBeanProvider(OpenTelemetry.class)); WebClient.Builder webClientBuilder = WebClient.builder(); underTest.postProcessAfterInitialization(webClientBuilder, "testWebClientBuilder"); diff --git a/smoke-tests-otel-starter/spring-boot-2/src/testDeclarativeConfig/resources/application.yaml b/smoke-tests-otel-starter/spring-boot-2/src/testDeclarativeConfig/resources/application.yaml index 6b24c0ee67fa..4c3abc3e2354 100644 --- a/smoke-tests-otel-starter/spring-boot-2/src/testDeclarativeConfig/resources/application.yaml +++ b/smoke-tests-otel-starter/spring-boot-2/src/testDeclarativeConfig/resources/application.yaml @@ -40,8 +40,9 @@ otel: instrumentation/development: java: - runtime-telemetry: - emit_experimental_telemetry: true - http: - client: - emit_experimental_telemetry: true + common: + http: + client: + emit_experimental_telemetry/development: true + runtime_telemetry: + emit_experimental_telemetry/development: true diff --git a/smoke-tests-otel-starter/spring-boot-3.2/src/main/resources/application.yaml b/smoke-tests-otel-starter/spring-boot-3.2/src/main/resources/application.yaml index 0533d63c9b88..48687a310de1 100644 --- a/smoke-tests-otel-starter/spring-boot-3.2/src/main/resources/application.yaml +++ b/smoke-tests-otel-starter/spring-boot-3.2/src/main/resources/application.yaml @@ -40,8 +40,9 @@ otel: instrumentation/development: java: - runtime-telemetry: - emit_experimental_telemetry: true - http: - client: - emit_experimental_telemetry: true + common: + http: + client: + emit_experimental_telemetry/development: true + runtime_telemetry: + emit_experimental_telemetry/development: true