Skip to content

Commit 9e3f469

Browse files
committed
rename builder
1 parent f84d534 commit 9e3f469

File tree

7 files changed

+120
-126
lines changed

7 files changed

+120
-126
lines changed

javaagent-extension-api/src/main/java/io/opentelemetry/javaagent/extension/internal/ConfigPropertiesFactory.java

Lines changed: 0 additions & 106 deletions
This file was deleted.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
/*
2+
* Copyright The OpenTelemetry Authors
3+
* SPDX-License-Identifier: Apache-2.0
4+
*/
5+
6+
package io.opentelemetry.javaagent.extension.internal;
7+
8+
9+
import java.util.LinkedHashMap;
10+
import java.util.Map;
11+
12+
@SuppressWarnings("NonApiType")
13+
class ConfigPropertiesTranslator {
14+
// lookup order matters - we choose the first match
15+
private final LinkedHashMap<String, String> translationMap;
16+
private final Map<String, Object> fixedValues;
17+
18+
ConfigPropertiesTranslator(
19+
LinkedHashMap<String, String> translationMap, Map<String, Object> fixedValues) {
20+
this.translationMap = translationMap;
21+
this.fixedValues = fixedValues;
22+
}
23+
24+
String translateProperty(String property) {
25+
for (Map.Entry<String, String> entry : translationMap.entrySet()) {
26+
if (property.startsWith(entry.getKey())) {
27+
return entry.getValue() + property.substring(entry.getKey().length());
28+
}
29+
}
30+
return property;
31+
}
32+
33+
public Object get(String propertyName) {
34+
return fixedValues.get(propertyName);
35+
}
36+
37+
}

javaagent-extension-api/src/main/java/io/opentelemetry/javaagent/extension/internal/DeclarativeConfigPropertiesBridge.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -53,11 +53,11 @@ final class DeclarativeConfigPropertiesBridge implements ConfigProperties {
5353

5454
private static final String OTEL_INSTRUMENTATION_PREFIX = "otel.instrumentation.";
5555

56-
private final ConfigPropertiesFactory translator;
56+
private final ConfigPropertiesTranslator translator;
5757
@Nullable private final DeclarativeConfigProperties baseNode;
5858

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

javaagent-extension-api/src/test/java/io/opentelemetry/javaagent/extension/internal/ConfigPropertiesFactoryTest.java renamed to javaagent-extension-api/src/test/java/io/opentelemetry/javaagent/extension/internal/DeclarativeConfigPropertiesBridgeBuilderTest.java

Lines changed: 4 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,3 @@
1-
/*
2-
* Copyright The OpenTelemetry Authors
3-
* SPDX-License-Identifier: Apache-2.0
4-
*/
5-
61
package io.opentelemetry.javaagent.extension.internal;
72

83
import static org.assertj.core.api.Assertions.assertThat;
@@ -20,8 +15,7 @@
2015
import org.mockito.MockedStatic;
2116
import org.mockito.Mockito;
2217

23-
@SuppressWarnings("DoNotMockAutoValue")
24-
class ConfigPropertiesFactoryTest {
18+
class DeclarativeConfigPropertiesBridgeBuilderTest {
2519
@Test
2620
void shouldUseConfigPropertiesForAutoConfiguration() {
2721
ConfigProperties configPropertiesMock = mock(ConfigProperties.class);
@@ -33,7 +27,7 @@ void shouldUseConfigPropertiesForAutoConfiguration() {
3327
.thenReturn(configPropertiesMock);
3428

3529
ConfigProperties configProperties =
36-
ConfigPropertiesFactory.builder().resolveConfigProperties(sdkMock);
30+
new DeclarativeConfigPropertiesBridgeBuilder().resolveConfigProperties(sdkMock);
3731

3832
assertThat(configProperties).isSameAs(configPropertiesMock);
3933
}
@@ -62,7 +56,7 @@ void shouldUseConfigProviderForDeclarativeConfiguration() {
6256
.thenReturn(configProviderMock);
6357

6458
ConfigProperties configProperties =
65-
ConfigPropertiesFactory.builder().resolveConfigProperties(sdkMock);
59+
new DeclarativeConfigPropertiesBridgeBuilder().resolveConfigProperties(sdkMock);
6660

6761
assertThat(configProperties.getString(propertyName)).isEqualTo(expectedValue);
6862
}
@@ -82,7 +76,7 @@ void shouldUseConfigProviderForDeclarativeConfiguration_noInstrumentationConfig(
8276
.thenReturn(configProviderMock);
8377

8478
ConfigProperties configProperties =
85-
ConfigPropertiesFactory.builder().resolveConfigProperties(sdkMock);
79+
new DeclarativeConfigPropertiesBridgeBuilder().resolveConfigProperties(sdkMock);
8680

8781
assertThat(configProperties.getString("testProperty")).isEqualTo(null);
8882
}

javaagent-extension-api/src/test/java/io/opentelemetry/javaagent/extension/internal/DeclarativeConfigPropertiesBridgeTest.java

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -27,19 +27,20 @@ class DeclarativeConfigPropertiesBridgeTest {
2727

2828
@BeforeEach
2929
void setup() {
30-
bridge = create(ConfigPropertiesFactory.builder());
30+
bridge = create(new DeclarativeConfigPropertiesBridgeBuilder());
3131

3232
OpenTelemetryConfigurationModel emptyModel =
3333
new OpenTelemetryConfigurationModel()
3434
.withAdditionalProperty("instrumentation/development", new InstrumentationModel());
3535
SdkConfigProvider emptyConfigProvider = SdkConfigProvider.create(emptyModel);
3636
emptyBridge =
37-
ConfigPropertiesFactory.builder()
37+
new DeclarativeConfigPropertiesBridgeBuilder()
3838
.resolveInstrumentationConfig(
3939
Objects.requireNonNull(emptyConfigProvider.getInstrumentationConfig()));
4040
}
4141

42-
private static ConfigProperties create(ConfigPropertiesFactory.Builder builder) {
42+
private static ConfigProperties create(
43+
DeclarativeConfigPropertiesBridgeBuilder builder) {
4344
OpenTelemetryConfigurationModel model =
4445
DeclarativeConfiguration.parse(
4546
DeclarativeConfigPropertiesBridgeTest.class
@@ -124,15 +125,15 @@ void vendor() {
124125
@Test
125126
void vendorTranslation() {
126127
ConfigProperties propertiesBridge =
127-
create(ConfigPropertiesFactory.builder().addTranslation("acme", "acme.full_name"));
128+
create(new DeclarativeConfigPropertiesBridgeBuilder().addTranslation("acme", "acme.full_name"));
128129
assertThat(propertiesBridge.getBoolean("acme.preserved")).isTrue();
129130
}
130131

131132
@Test
132133
void agentCommonTranslation() {
133134
assertThat(
134135
create(
135-
ConfigPropertiesFactory.builder()
136+
new DeclarativeConfigPropertiesBridgeBuilder()
136137
.addTranslation(
137138
"otel.instrumentation.common.default-enabled",
138139
"common.default.enabled"))
@@ -144,7 +145,7 @@ void agentCommonTranslation() {
144145
void agentTranslation() {
145146
ConfigProperties bridge =
146147
create(
147-
ConfigPropertiesFactory.builder()
148+
new DeclarativeConfigPropertiesBridgeBuilder()
148149
.addTranslation("otel.javaagent", "agent")
149150
.addFixedValue("otel.javaagent.debug", true)
150151
.addFixedValue("otel.javaagent.logging", "application"));

javaagent-tooling/src/main/java/io/opentelemetry/javaagent/tooling/OpenTelemetryInstaller.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77

88
import io.opentelemetry.api.incubator.config.ConfigProvider;
99
import io.opentelemetry.javaagent.bootstrap.OpenTelemetrySdkAccess;
10-
import io.opentelemetry.javaagent.extension.internal.ConfigPropertiesFactory;
10+
import io.opentelemetry.javaagent.extension.internal.DeclarativeConfigPropertiesBridgeBuilder;
1111
import io.opentelemetry.javaagent.tooling.config.EarlyInitAgentConfig;
1212
import io.opentelemetry.sdk.OpenTelemetrySdk;
1313
import io.opentelemetry.sdk.autoconfigure.AutoConfiguredOpenTelemetrySdk;
@@ -47,7 +47,7 @@ public static AutoConfiguredOpenTelemetrySdk installOpenTelemetrySdk(
4747
// the Resource from the original instance is also the default Resource,
4848
// so this is functionally equivalent
4949
Resource.getDefault(),
50-
ConfigPropertiesFactory.builder()
50+
new DeclarativeConfigPropertiesBridgeBuilder()
5151
.addTranslation(
5252
"otel.instrumentation.common.default-enabled", "common.default.enabled")
5353
.addTranslation("otel.javaagent", "agent")

0 commit comments

Comments
 (0)