Skip to content

Commit fedec51

Browse files
committed
update bridge to match agent
1 parent 06cb016 commit fedec51

File tree

10 files changed

+194
-191
lines changed

10 files changed

+194
-191
lines changed

declarative-config-bridge/src/main/java/io/opentelemetry/contrib/sdk/autoconfigure/PropertyTranslator.java renamed to declarative-config-bridge/src/main/java/io/opentelemetry/contrib/sdk/autoconfigure/ConfigPropertiesTranslator.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,12 +10,12 @@
1010
import javax.annotation.Nullable;
1111

1212
@SuppressWarnings("NonApiType")
13-
class PropertyTranslator {
13+
class ConfigPropertiesTranslator {
1414
// lookup order matters - we choose the first match
1515
private final LinkedHashMap<String, String> translationMap;
1616
private final Map<String, Object> fixedValues;
1717

18-
PropertyTranslator(
18+
ConfigPropertiesTranslator(
1919
LinkedHashMap<String, String> translationMap, Map<String, Object> fixedValues) {
2020
this.translationMap = translationMap;
2121
this.fixedValues = fixedValues;

declarative-config-bridge/src/main/java/io/opentelemetry/contrib/sdk/autoconfigure/ConfigPropertiesUtil.java

Lines changed: 4 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -5,57 +5,14 @@
55

66
package io.opentelemetry.contrib.sdk.autoconfigure;
77

8-
import io.opentelemetry.api.incubator.config.ConfigProvider;
9-
import io.opentelemetry.api.incubator.config.DeclarativeConfigProperties;
10-
import io.opentelemetry.sdk.autoconfigure.AutoConfiguredOpenTelemetrySdk;
11-
import io.opentelemetry.sdk.autoconfigure.internal.AutoConfigureUtil;
12-
import io.opentelemetry.sdk.autoconfigure.spi.ConfigProperties;
13-
import javax.annotation.Nullable;
14-
8+
/**
9+
* This class is internal and is hence not for public use. Its APIs are unstable and can change at
10+
* any time.
11+
*/
1512
public final class ConfigPropertiesUtil {
1613
private ConfigPropertiesUtil() {}
1714

18-
/** Resolve {@link ConfigProperties} from the {@code autoConfiguredOpenTelemetrySdk}. */
19-
public static ConfigProperties resolveConfigProperties(
20-
AutoConfiguredOpenTelemetrySdk autoConfiguredOpenTelemetrySdk) {
21-
ConfigProperties sdkConfigProperties =
22-
AutoConfigureUtil.getConfig(autoConfiguredOpenTelemetrySdk);
23-
if (sdkConfigProperties != null) {
24-
return sdkConfigProperties;
25-
}
26-
ConfigProvider configProvider =
27-
AutoConfigureUtil.getConfigProvider(autoConfiguredOpenTelemetrySdk);
28-
if (configProvider != null) {
29-
return resolveInstrumentationConfig(
30-
configProvider.getInstrumentationConfig(), propertyTranslatorBuilder());
31-
}
32-
// Should never happen
33-
throw new IllegalStateException(
34-
"AutoConfiguredOpenTelemetrySdk does not have ConfigProperties or DeclarativeConfigProperties. This is likely a programming error in opentelemetry-java");
35-
}
36-
37-
public static ConfigProperties resolveInstrumentationConfig(
38-
@Nullable DeclarativeConfigProperties instrumentationConfig) {
39-
return resolveInstrumentationConfig(instrumentationConfig, propertyTranslatorBuilder());
40-
}
41-
42-
public static ConfigProperties resolveInstrumentationConfig(
43-
@Nullable DeclarativeConfigProperties instrumentationConfig,
44-
PropertyTranslatorBuilder builder) {
45-
return DeclarativeConfigPropertiesBridge.fromInstrumentationConfig(
46-
instrumentationConfig, builder.build());
47-
}
48-
49-
public static ConfigProperties resolveConfig(
50-
@Nullable DeclarativeConfigProperties config, PropertyTranslatorBuilder builder) {
51-
return DeclarativeConfigPropertiesBridge.create(config, builder.build());
52-
}
53-
5415
public static String propertyYamlPath(String propertyName) {
5516
return DeclarativeConfigPropertiesBridge.yamlPath(propertyName);
5617
}
57-
58-
public static PropertyTranslatorBuilder propertyTranslatorBuilder() {
59-
return new PropertyTranslatorBuilder();
60-
}
6118
}

declarative-config-bridge/src/main/java/io/opentelemetry/contrib/sdk/autoconfigure/DeclarativeConfigPropertiesBridge.java

Lines changed: 6 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -45,30 +45,19 @@
4545
* common:
4646
* string_key: value
4747
* </pre>
48+
*
49+
* <p>This class is internal and is hence not for public use. Its APIs are unstable and can change
50+
* at any time.
4851
*/
4952
final class DeclarativeConfigPropertiesBridge implements ConfigProperties {
5053

5154
private static final String OTEL_INSTRUMENTATION_PREFIX = "otel.instrumentation.";
5255

53-
private final PropertyTranslator translator;
56+
private final ConfigPropertiesTranslator translator;
5457
@Nullable private final DeclarativeConfigProperties baseNode;
5558

56-
static DeclarativeConfigPropertiesBridge fromInstrumentationConfig(
57-
@Nullable DeclarativeConfigProperties instrumentationConfig, PropertyTranslator translator) {
58-
if (instrumentationConfig == null) {
59-
instrumentationConfig = DeclarativeConfigProperties.empty();
60-
}
61-
return new DeclarativeConfigPropertiesBridge(
62-
instrumentationConfig.getStructured("java", empty()), translator);
63-
}
64-
65-
static DeclarativeConfigPropertiesBridge create(
66-
@Nullable DeclarativeConfigProperties node, PropertyTranslator translator) {
67-
return new DeclarativeConfigPropertiesBridge(node, translator);
68-
}
69-
70-
private DeclarativeConfigPropertiesBridge(
71-
@Nullable DeclarativeConfigProperties baseNode, PropertyTranslator translator) {
59+
DeclarativeConfigPropertiesBridge(
60+
@Nullable DeclarativeConfigProperties baseNode, ConfigPropertiesTranslator translator) {
7261
this.baseNode = baseNode;
7362
this.translator = translator;
7463
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,76 @@
1+
/*
2+
* Copyright The OpenTelemetry Authors
3+
* SPDX-License-Identifier: Apache-2.0
4+
*/
5+
6+
package io.opentelemetry.contrib.sdk.autoconfigure;
7+
8+
import static io.opentelemetry.api.incubator.config.DeclarativeConfigProperties.empty;
9+
10+
import com.google.errorprone.annotations.CanIgnoreReturnValue;
11+
import io.opentelemetry.api.incubator.config.ConfigProvider;
12+
import io.opentelemetry.api.incubator.config.DeclarativeConfigProperties;
13+
import io.opentelemetry.sdk.autoconfigure.AutoConfiguredOpenTelemetrySdk;
14+
import io.opentelemetry.sdk.autoconfigure.internal.AutoConfigureUtil;
15+
import io.opentelemetry.sdk.autoconfigure.spi.ConfigProperties;
16+
import java.util.LinkedHashMap;
17+
import java.util.Map;
18+
import javax.annotation.Nullable;
19+
20+
/**
21+
* A builder for {@link DeclarativeConfigPropertiesBridge} that allows adding translations and fixed
22+
* values for properties.
23+
*
24+
* <p>This class is internal and is hence not for public use. Its APIs are unstable and can change
25+
* at any time.
26+
*/
27+
public class DeclarativeConfigPropertiesBridgeBuilder {
28+
private final LinkedHashMap<String, String> translationMap = new LinkedHashMap<>();
29+
private final Map<String, Object> fixedValues = new LinkedHashMap<>();
30+
31+
public DeclarativeConfigPropertiesBridgeBuilder() {}
32+
33+
@CanIgnoreReturnValue
34+
public DeclarativeConfigPropertiesBridgeBuilder addTranslation(
35+
String propertyName, String yamlPath) {
36+
translationMap.put(propertyName, yamlPath);
37+
return this;
38+
}
39+
40+
@CanIgnoreReturnValue
41+
public DeclarativeConfigPropertiesBridgeBuilder addFixedValue(String propertyName, Object value) {
42+
fixedValues.put(propertyName, value);
43+
return this;
44+
}
45+
46+
/** Resolve {@link ConfigProperties} from the {@code autoConfiguredOpenTelemetrySdk}. */
47+
public ConfigProperties resolveConfigProperties(
48+
AutoConfiguredOpenTelemetrySdk autoConfiguredOpenTelemetrySdk) {
49+
ConfigProperties sdkConfigProperties =
50+
AutoConfigureUtil.getConfig(autoConfiguredOpenTelemetrySdk);
51+
if (sdkConfigProperties != null) {
52+
return sdkConfigProperties;
53+
}
54+
ConfigProvider configProvider =
55+
AutoConfigureUtil.getConfigProvider(autoConfiguredOpenTelemetrySdk);
56+
if (configProvider != null) {
57+
return resolveInstrumentationConfig(configProvider.getInstrumentationConfig());
58+
}
59+
// Should never happen
60+
throw new IllegalStateException(
61+
"AutoConfiguredOpenTelemetrySdk does not have ConfigProperties or DeclarativeConfigProperties. This is likely a programming error in opentelemetry-java");
62+
}
63+
64+
public ConfigProperties resolveInstrumentationConfig(
65+
@Nullable DeclarativeConfigProperties instrumentationConfig) {
66+
if (instrumentationConfig == null) {
67+
instrumentationConfig = DeclarativeConfigProperties.empty();
68+
}
69+
return resolveConfig(instrumentationConfig.getStructured("java", empty()));
70+
}
71+
72+
public ConfigProperties resolveConfig(@Nullable DeclarativeConfigProperties config) {
73+
return new DeclarativeConfigPropertiesBridge(
74+
config, new ConfigPropertiesTranslator(translationMap, fixedValues));
75+
}
76+
}

declarative-config-bridge/src/main/java/io/opentelemetry/contrib/sdk/autoconfigure/PropertyTranslatorBuilder.java

Lines changed: 0 additions & 33 deletions
This file was deleted.

declarative-config-bridge/src/test/java/io/opentelemetry/contrib/sdk/autoconfigure/ConfigPropertiesUtilTest.java

Lines changed: 0 additions & 75 deletions
Original file line numberDiff line numberDiff line change
@@ -6,85 +6,10 @@
66
package io.opentelemetry.contrib.sdk.autoconfigure;
77

88
import static org.assertj.core.api.Assertions.assertThat;
9-
import static org.mockito.ArgumentMatchers.any;
10-
import static org.mockito.ArgumentMatchers.eq;
11-
import static org.mockito.Mockito.mock;
12-
import static org.mockito.Mockito.when;
139

14-
import io.opentelemetry.api.incubator.config.ConfigProvider;
15-
import io.opentelemetry.api.incubator.config.DeclarativeConfigProperties;
16-
import io.opentelemetry.sdk.autoconfigure.AutoConfiguredOpenTelemetrySdk;
17-
import io.opentelemetry.sdk.autoconfigure.internal.AutoConfigureUtil;
18-
import io.opentelemetry.sdk.autoconfigure.spi.ConfigProperties;
1910
import org.junit.jupiter.api.Test;
20-
import org.mockito.MockedStatic;
21-
import org.mockito.Mockito;
2211

23-
@SuppressWarnings("DoNotMockAutoValue")
2412
class ConfigPropertiesUtilTest {
25-
@Test
26-
void shouldUseConfigPropertiesForAutoConfiguration() {
27-
ConfigProperties configPropertiesMock = mock(ConfigProperties.class);
28-
AutoConfiguredOpenTelemetrySdk sdkMock = mock(AutoConfiguredOpenTelemetrySdk.class);
29-
try (MockedStatic<AutoConfigureUtil> autoConfigureUtilMock =
30-
Mockito.mockStatic(AutoConfigureUtil.class)) {
31-
autoConfigureUtilMock
32-
.when(() -> AutoConfigureUtil.getConfig(sdkMock))
33-
.thenReturn(configPropertiesMock);
34-
35-
ConfigProperties configProperties = ConfigPropertiesUtil.resolveConfigProperties(sdkMock);
36-
37-
assertThat(configProperties).isSameAs(configPropertiesMock);
38-
}
39-
}
40-
41-
@Test
42-
void shouldUseConfigProviderForDeclarativeConfiguration() {
43-
String propertyName = "testProperty";
44-
String expectedValue = "the value";
45-
DeclarativeConfigProperties javaNodeMock = mock(DeclarativeConfigProperties.class);
46-
when(javaNodeMock.getString(propertyName)).thenReturn(expectedValue);
47-
48-
DeclarativeConfigProperties instrumentationConfigMock = mock(DeclarativeConfigProperties.class);
49-
when(instrumentationConfigMock.getStructured(eq("java"), any())).thenReturn(javaNodeMock);
50-
51-
ConfigProvider configProviderMock = mock(ConfigProvider.class);
52-
when(configProviderMock.getInstrumentationConfig()).thenReturn(instrumentationConfigMock);
53-
54-
AutoConfiguredOpenTelemetrySdk sdkMock = mock(AutoConfiguredOpenTelemetrySdk.class);
55-
56-
try (MockedStatic<AutoConfigureUtil> autoConfigureUtilMock =
57-
Mockito.mockStatic(AutoConfigureUtil.class)) {
58-
autoConfigureUtilMock.when(() -> AutoConfigureUtil.getConfig(sdkMock)).thenReturn(null);
59-
autoConfigureUtilMock
60-
.when(() -> AutoConfigureUtil.getConfigProvider(sdkMock))
61-
.thenReturn(configProviderMock);
62-
63-
ConfigProperties configProperties = ConfigPropertiesUtil.resolveConfigProperties(sdkMock);
64-
65-
assertThat(configProperties.getString(propertyName)).isEqualTo(expectedValue);
66-
}
67-
}
68-
69-
@Test
70-
void shouldUseConfigProviderForDeclarativeConfiguration_noInstrumentationConfig() {
71-
AutoConfiguredOpenTelemetrySdk sdkMock = mock(AutoConfiguredOpenTelemetrySdk.class);
72-
ConfigProvider configProviderMock = mock(ConfigProvider.class);
73-
when(configProviderMock.getInstrumentationConfig()).thenReturn(null);
74-
75-
try (MockedStatic<AutoConfigureUtil> autoConfigureUtilMock =
76-
Mockito.mockStatic(AutoConfigureUtil.class)) {
77-
autoConfigureUtilMock.when(() -> AutoConfigureUtil.getConfig(sdkMock)).thenReturn(null);
78-
autoConfigureUtilMock
79-
.when(() -> AutoConfigureUtil.getConfigProvider(sdkMock))
80-
.thenReturn(configProviderMock);
81-
82-
ConfigProperties configProperties = ConfigPropertiesUtil.resolveConfigProperties(sdkMock);
83-
84-
assertThat(configProperties.getString("testProperty")).isEqualTo(null);
85-
}
86-
}
87-
8813
@Test
8914
void propertyYamlPath() {
9015
assertThat(ConfigPropertiesUtil.propertyYamlPath("google.otel.auth.target.signals"))

0 commit comments

Comments
 (0)