Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@
import com.google.auto.service.AutoService;
import io.opentelemetry.sdk.extension.incubator.fileconfig.DeclarativeConfigurationCustomizer;
import io.opentelemetry.sdk.extension.incubator.fileconfig.DeclarativeConfigurationCustomizerProvider;
import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.ExperimentalLanguageSpecificInstrumentationPropertyModel;
import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.OpenTelemetryConfigurationModel;
import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.PropagatorModel;
import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.SpanProcessorModel;
Expand Down Expand Up @@ -61,7 +62,7 @@ private static boolean isFeatureEnabled(OpenTelemetryConfigurationModel model) {
return false;
}

Map<String, Object> properties =
Map<String, ExperimentalLanguageSpecificInstrumentationPropertyModel> properties =
Copy link
Copy Markdown
Contributor

@robsunday robsunday Jan 13, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

A side comment for upstream - I really do not like this class name. ExperimentalLanguageSpecificInstrumentationPropertyModel and ExperimentalLanguageSpecificInstrumentationModel are hard to distinguish when reading the code and this often leads to confusion.

model.getInstrumentationDevelopment().getJava().getAdditionalProperties();

return getAdditionalPropertyOrDefault(properties, CONFIG_CISCO_CTX_ENABLED, false);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@

package io.opentelemetry.sdk.autoconfigure;

import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.ExperimentalLanguageSpecificInstrumentationPropertyModel;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.function.BiConsumer;
Expand All @@ -24,7 +25,8 @@
@SuppressWarnings("unchecked")
public class AdditionalPropertiesUtil {
public static Object getAdditionalProperty(
Map<String, Object> additionalProperties, String propertyName) {
Map<String, ExperimentalLanguageSpecificInstrumentationPropertyModel> additionalProperties,
String propertyName) {
String[] propertyNameSegments = propertyName.trim().split("\\.");
if (propertyNameSegments.length == 0) {
throw new IllegalArgumentException("Empty property name");
Expand All @@ -37,7 +39,13 @@ public static Object getAdditionalProperty(
target = ((Map<String, Object>) target).get(propertyNameSegments[i]);
if (target == null) {
return null;
} else if (!(target instanceof Map)) {
}
if (target instanceof ExperimentalLanguageSpecificInstrumentationPropertyModel) {
target =
((ExperimentalLanguageSpecificInstrumentationPropertyModel) target)
.getAdditionalProperties();
}
if (!(target instanceof Map)) {
throw new IllegalArgumentException(
"Property name: "
+ propertyName
Expand All @@ -52,13 +60,17 @@ public static Object getAdditionalProperty(
}

public static Object getAdditionalPropertyOrDefault(
Map<String, Object> additionalProperties, String propertyName, Object defaultValue) {
Map<String, ExperimentalLanguageSpecificInstrumentationPropertyModel> additionalProperties,
String propertyName,
Object defaultValue) {
Object value = getAdditionalProperty(additionalProperties, propertyName);
return value == null ? defaultValue : value;
}

public static Boolean getAdditionalPropertyOrDefault(
Map<String, Object> additionalProperties, String propertyName, boolean defaultValue) {
Map<String, ExperimentalLanguageSpecificInstrumentationPropertyModel> additionalProperties,
String propertyName,
boolean defaultValue) {
Object value = getAdditionalProperty(additionalProperties, propertyName);
if (value instanceof Boolean) {
return (Boolean) value;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,8 @@

import static io.opentelemetry.api.incubator.config.DeclarativeConfigProperties.empty;

import io.opentelemetry.api.OpenTelemetry;
import io.opentelemetry.api.incubator.ExtendedOpenTelemetry;
import io.opentelemetry.api.incubator.config.ConfigProvider;
import io.opentelemetry.api.incubator.config.DeclarativeConfigProperties;
import io.opentelemetry.instrumentation.config.bridge.ConfigPropertiesBackedConfigProvider;
Expand Down Expand Up @@ -47,13 +49,22 @@ public static ConfigProperties getConfig(AutoConfiguredOpenTelemetrySdk sdk) {
}

public static boolean isDeclarativeConfig(AutoConfiguredOpenTelemetrySdk sdk) {
return !(sdk.getConfigProvider() instanceof ConfigPropertiesBackedConfigProvider);
OpenTelemetry openTelemetry = sdk.getOpenTelemetrySdk();
if (openTelemetry instanceof ExtendedOpenTelemetry) {
return !(((ExtendedOpenTelemetry) openTelemetry).getConfigProvider()
instanceof ConfigPropertiesBackedConfigProvider);
}
return false;
}

@Nullable
public static DeclarativeConfigProperties getDistributionConfig(
AutoConfiguredOpenTelemetrySdk sdk) {
ConfigProvider configProvider = (ConfigProvider) sdk.getConfigProvider();
OpenTelemetry openTelemetry = sdk.getOpenTelemetrySdk();
if (!(openTelemetry instanceof ExtendedOpenTelemetry)) {
return null;
}
ConfigProvider configProvider = ((ExtendedOpenTelemetry) openTelemetry).getConfigProvider();
if (configProvider == null) {
return null;
}
Expand Down
2 changes: 1 addition & 1 deletion dependencyManagement/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ plugins {
`java-platform`
}

val otelVersion = "1.57.0"
val otelVersion = "1.58.0"
val otelAlphaVersion = otelVersion.replaceFirst("(-SNAPSHOT)?$".toRegex(), "-alpha$1")
val otelInstrumentationVersion = "2.24.0-SNAPSHOT"
val otelInstrumentationAlphaVersion = otelInstrumentationVersion.replaceFirst("(-SNAPSHOT)?$".toRegex(), "-alpha$1")
Expand Down
28 changes: 14 additions & 14 deletions licenses/licenses.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@

# splunk-otel-javaagent
## Dependency License Report
_2026-01-12 10:41:25 EET_
_2026-01-13 13:19:08 EET_
## Apache License, Version 2.0

**1** **Group:** `com.squareup.okhttp3` **Name:** `okhttp` **Version:** `5.3.2`
Expand All @@ -28,55 +28,55 @@ _2026-01-12 10:41:25 EET_
> - **POM Project URL**: [https://github.com/square/wire/](https://github.com/square/wire/)
> - **POM License**: Apache License, Version 2.0 - [https://www.apache.org/licenses/LICENSE-2.0](https://www.apache.org/licenses/LICENSE-2.0)

**7** **Group:** `io.opentelemetry` **Name:** `opentelemetry-api` **Version:** `1.57.0`
**7** **Group:** `io.opentelemetry` **Name:** `opentelemetry-api` **Version:** `1.58.0`
> - **POM Project URL**: [https://github.com/open-telemetry/opentelemetry-java](https://github.com/open-telemetry/opentelemetry-java)
> - **POM License**: Apache License, Version 2.0 - [https://www.apache.org/licenses/LICENSE-2.0](https://www.apache.org/licenses/LICENSE-2.0)

**8** **Group:** `io.opentelemetry` **Name:** `opentelemetry-common` **Version:** `1.57.0`
**8** **Group:** `io.opentelemetry` **Name:** `opentelemetry-common` **Version:** `1.58.0`
> - **POM Project URL**: [https://github.com/open-telemetry/opentelemetry-java](https://github.com/open-telemetry/opentelemetry-java)
> - **POM License**: Apache License, Version 2.0 - [https://www.apache.org/licenses/LICENSE-2.0](https://www.apache.org/licenses/LICENSE-2.0)

**9** **Group:** `io.opentelemetry` **Name:** `opentelemetry-context` **Version:** `1.57.0`
**9** **Group:** `io.opentelemetry` **Name:** `opentelemetry-context` **Version:** `1.58.0`
> - **POM Project URL**: [https://github.com/open-telemetry/opentelemetry-java](https://github.com/open-telemetry/opentelemetry-java)
> - **POM License**: Apache License, Version 2.0 - [https://www.apache.org/licenses/LICENSE-2.0](https://www.apache.org/licenses/LICENSE-2.0)

**10** **Group:** `io.opentelemetry` **Name:** `opentelemetry-exporter-common` **Version:** `1.57.0`
**10** **Group:** `io.opentelemetry` **Name:** `opentelemetry-exporter-common` **Version:** `1.58.0`
> - **POM Project URL**: [https://github.com/open-telemetry/opentelemetry-java](https://github.com/open-telemetry/opentelemetry-java)
> - **POM License**: Apache License, Version 2.0 - [https://www.apache.org/licenses/LICENSE-2.0](https://www.apache.org/licenses/LICENSE-2.0)

**11** **Group:** `io.opentelemetry` **Name:** `opentelemetry-exporter-otlp` **Version:** `1.57.0`
**11** **Group:** `io.opentelemetry` **Name:** `opentelemetry-exporter-otlp` **Version:** `1.58.0`
> - **POM Project URL**: [https://github.com/open-telemetry/opentelemetry-java](https://github.com/open-telemetry/opentelemetry-java)
> - **POM License**: Apache License, Version 2.0 - [https://www.apache.org/licenses/LICENSE-2.0](https://www.apache.org/licenses/LICENSE-2.0)

**12** **Group:** `io.opentelemetry` **Name:** `opentelemetry-exporter-otlp-common` **Version:** `1.57.0`
**12** **Group:** `io.opentelemetry` **Name:** `opentelemetry-exporter-otlp-common` **Version:** `1.58.0`
> - **POM Project URL**: [https://github.com/open-telemetry/opentelemetry-java](https://github.com/open-telemetry/opentelemetry-java)
> - **POM License**: Apache License, Version 2.0 - [https://www.apache.org/licenses/LICENSE-2.0](https://www.apache.org/licenses/LICENSE-2.0)

**13** **Group:** `io.opentelemetry` **Name:** `opentelemetry-exporter-sender-okhttp` **Version:** `1.57.0`
**13** **Group:** `io.opentelemetry` **Name:** `opentelemetry-exporter-sender-okhttp` **Version:** `1.58.0`
> - **POM Project URL**: [https://github.com/open-telemetry/opentelemetry-java](https://github.com/open-telemetry/opentelemetry-java)
> - **POM License**: Apache License, Version 2.0 - [https://www.apache.org/licenses/LICENSE-2.0](https://www.apache.org/licenses/LICENSE-2.0)

**14** **Group:** `io.opentelemetry` **Name:** `opentelemetry-sdk` **Version:** `1.57.0`
**14** **Group:** `io.opentelemetry` **Name:** `opentelemetry-sdk` **Version:** `1.58.0`
> - **POM Project URL**: [https://github.com/open-telemetry/opentelemetry-java](https://github.com/open-telemetry/opentelemetry-java)
> - **POM License**: Apache License, Version 2.0 - [https://www.apache.org/licenses/LICENSE-2.0](https://www.apache.org/licenses/LICENSE-2.0)

**15** **Group:** `io.opentelemetry` **Name:** `opentelemetry-sdk-common` **Version:** `1.57.0`
**15** **Group:** `io.opentelemetry` **Name:** `opentelemetry-sdk-common` **Version:** `1.58.0`
> - **POM Project URL**: [https://github.com/open-telemetry/opentelemetry-java](https://github.com/open-telemetry/opentelemetry-java)
> - **POM License**: Apache License, Version 2.0 - [https://www.apache.org/licenses/LICENSE-2.0](https://www.apache.org/licenses/LICENSE-2.0)

**16** **Group:** `io.opentelemetry` **Name:** `opentelemetry-sdk-extension-autoconfigure-spi` **Version:** `1.57.0`
**16** **Group:** `io.opentelemetry` **Name:** `opentelemetry-sdk-extension-autoconfigure-spi` **Version:** `1.58.0`
> - **POM Project URL**: [https://github.com/open-telemetry/opentelemetry-java](https://github.com/open-telemetry/opentelemetry-java)
> - **POM License**: Apache License, Version 2.0 - [https://www.apache.org/licenses/LICENSE-2.0](https://www.apache.org/licenses/LICENSE-2.0)

**17** **Group:** `io.opentelemetry` **Name:** `opentelemetry-sdk-logs` **Version:** `1.57.0`
**17** **Group:** `io.opentelemetry` **Name:** `opentelemetry-sdk-logs` **Version:** `1.58.0`
> - **POM Project URL**: [https://github.com/open-telemetry/opentelemetry-java](https://github.com/open-telemetry/opentelemetry-java)
> - **POM License**: Apache License, Version 2.0 - [https://www.apache.org/licenses/LICENSE-2.0](https://www.apache.org/licenses/LICENSE-2.0)

**18** **Group:** `io.opentelemetry` **Name:** `opentelemetry-sdk-metrics` **Version:** `1.57.0`
**18** **Group:** `io.opentelemetry` **Name:** `opentelemetry-sdk-metrics` **Version:** `1.58.0`
> - **POM Project URL**: [https://github.com/open-telemetry/opentelemetry-java](https://github.com/open-telemetry/opentelemetry-java)
> - **POM License**: Apache License, Version 2.0 - [https://www.apache.org/licenses/LICENSE-2.0](https://www.apache.org/licenses/LICENSE-2.0)

**19** **Group:** `io.opentelemetry` **Name:** `opentelemetry-sdk-trace` **Version:** `1.57.0`
**19** **Group:** `io.opentelemetry` **Name:** `opentelemetry-sdk-trace` **Version:** `1.58.0`
> - **POM Project URL**: [https://github.com/open-telemetry/opentelemetry-java](https://github.com/open-telemetry/opentelemetry-java)
> - **POM License**: Apache License, Version 2.0 - [https://www.apache.org/licenses/LICENSE-2.0](https://www.apache.org/licenses/LICENSE-2.0)

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,7 @@
import io.opentelemetry.sdk.autoconfigure.spi.ConfigProperties;
import io.opentelemetry.sdk.autoconfigure.spi.ConfigurationException;
import io.opentelemetry.sdk.extension.incubator.fileconfig.YamlDeclarativeConfigProperties;
import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.ExperimentalLanguageSpecificInstrumentationPropertyModel;
import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.OpenTelemetryConfigurationModel;
import io.opentelemetry.sdk.logs.export.LogRecordExporter;
import java.util.Map;
Expand Down Expand Up @@ -236,8 +237,10 @@ void shouldThrowExceptionForInvalidProtocol() {
// For now it is temporary placed under the instrumentation node.
private static DeclarativeConfigProperties getExporterConfig(
OpenTelemetryConfigurationModel model) {
Map<String, Object> properties =
Map<String, ExperimentalLanguageSpecificInstrumentationPropertyModel> original =
model.getInstrumentationDevelopment().getJava().getAdditionalProperties();
Map<String, Object> properties =
Map.of("distribution", original.get("distribution").getAdditionalProperties());
ComponentLoader componentLoader =
ComponentLoader.forClassLoader(DeclarativeConfigProperties.class.getClassLoader());
DeclarativeConfigProperties declarativeConfigProperties =
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@
import io.opentelemetry.api.incubator.config.DeclarativeConfigProperties;
import io.opentelemetry.common.ComponentLoader;
import io.opentelemetry.sdk.extension.incubator.fileconfig.YamlDeclarativeConfigProperties;
import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.ExperimentalLanguageSpecificInstrumentationPropertyModel;
import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.OpenTelemetryConfigurationModel;
import java.time.Duration;
import java.util.Map;
Expand Down Expand Up @@ -85,8 +86,10 @@ void shouldMapYamlToConfiguration() {

private static DeclarativeConfigProperties getProfilingConfig(
OpenTelemetryConfigurationModel model) {
Map<String, Object> properties =
Map<String, ExperimentalLanguageSpecificInstrumentationPropertyModel> original =
model.getInstrumentationDevelopment().getJava().getAdditionalProperties();
Map<String, Object> properties =
Map.of("distribution", original.get("distribution").getAdditionalProperties());
ComponentLoader componentLoader =
ComponentLoader.forClassLoader(DeclarativeConfigProperties.class.getClassLoader());
DeclarativeConfigProperties declarativeConfigProperties =
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@
import io.opentelemetry.sdk.autoconfigure.spi.ConfigurationException;
import io.opentelemetry.sdk.extension.incubator.fileconfig.YamlDeclarativeConfigProperties;
import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.OpenTelemetryConfigurationModel;
import java.util.Map;
import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.TextMapPropagatorPropertyModel;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.ValueSource;
Expand Down Expand Up @@ -107,7 +107,7 @@ void shouldThrowExceptionWhenInvalidSelectionProbability(double selectionProbabi

static DeclarativeConfigProperties getPropagatorProperties(
OpenTelemetryConfigurationModel model) {
Object config =
TextMapPropagatorPropertyModel config =
model
.getPropagator()
.getComposite()
Expand All @@ -117,6 +117,6 @@ static DeclarativeConfigProperties getPropagatorProperties(
if (config == null) {
return DeclarativeConfigProperties.empty();
}
return YamlDeclarativeConfigProperties.create((Map<String, Object>) config, null);
return YamlDeclarativeConfigProperties.create(config.getAdditionalProperties(), null);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -121,11 +121,6 @@ public ConfigProperties getConfig() {
return properties;
}

@Override
Object getConfigProvider() {
return null;
}

@Override
public boolean supportsParameter(
ParameterContext parameterContext, ExtensionContext extensionContext) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,12 +16,12 @@

package com.splunk.opentelemetry.testing.declarativeconfig;

import io.opentelemetry.api.incubator.ExtendedOpenTelemetry;
import io.opentelemetry.api.incubator.config.ConfigProvider;
import io.opentelemetry.instrumentation.config.bridge.DeclarativeConfigPropertiesBridgeBuilder;
import io.opentelemetry.sdk.OpenTelemetrySdk;
import io.opentelemetry.sdk.autoconfigure.AutoConfiguredOpenTelemetrySdk;
import io.opentelemetry.sdk.autoconfigure.SdkAutoconfigureAccess;
import io.opentelemetry.sdk.autoconfigure.internal.AutoConfigureUtil;
import io.opentelemetry.sdk.extension.incubator.fileconfig.DeclarativeConfiguration;
import io.opentelemetry.sdk.extension.incubator.fileconfig.DeclarativeConfigurationBuilder;
import io.opentelemetry.sdk.extension.incubator.fileconfig.DeclarativeConfigurationCustomizerProvider;
Expand Down Expand Up @@ -79,16 +79,16 @@ public static AutoConfiguredOpenTelemetrySdk createAutoConfiguredSdk(String yaml
"otel.experimental.config.file", configFilePath.toString()))
.build();

ConfigProvider configProvider = AutoConfigureUtil.getConfigProvider(autoConfiguredSdk);
ConfigProvider configProvider =
((ExtendedOpenTelemetry) autoConfiguredSdk.getOpenTelemetrySdk()).getConfigProvider();
OpenTelemetrySdk sdk = autoConfiguredSdk.getOpenTelemetrySdk();

if (configProvider != null) {
return SdkAutoconfigureAccess.create(
sdk,
SdkAutoconfigureAccess.getResource(autoConfiguredSdk),
new DeclarativeConfigPropertiesBridgeBuilder()
.buildFromInstrumentationConfig(configProvider.getInstrumentationConfig()),
configProvider);
.buildFromInstrumentationConfig(configProvider.getInstrumentationConfig()));
}

return autoConfiguredSdk;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ public static Resource getResource(AutoConfiguredOpenTelemetrySdk sdk) {
}

public static AutoConfiguredOpenTelemetrySdk create(
OpenTelemetrySdk sdk, Resource resource, ConfigProperties config, Object configProvider) {
return AutoConfiguredOpenTelemetrySdk.create(sdk, resource, config, configProvider);
OpenTelemetrySdk sdk, Resource resource, ConfigProperties config) {
return AutoConfiguredOpenTelemetrySdk.create(sdk, resource, config);
}
}