Skip to content

Commit 4f75414

Browse files
WIP
1 parent 45f8efe commit 4f75414

File tree

2 files changed

+46
-36
lines changed

2 files changed

+46
-36
lines changed
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
/*
2+
* Copyright The OpenTelemetry Authors
3+
* SPDX-License-Identifier: Apache-2.0
4+
*/
5+
6+
package io.opentelemetry.maven;
7+
8+
import io.opentelemetry.sdk.autoconfigure.AutoConfiguredOpenTelemetrySdk;
9+
import io.opentelemetry.sdk.autoconfigure.internal.AutoConfigureUtil;
10+
import io.opentelemetry.sdk.resources.Resource;
11+
import java.lang.reflect.InvocationTargetException;
12+
import java.lang.reflect.Method;
13+
14+
public class AutoConfigureUtil2 {
15+
16+
private AutoConfigureUtil2() {}
17+
18+
/**
19+
* Returns the {@link Resource} that was auto-configured.
20+
*
21+
* @see AutoConfigureUtil#getConfig(AutoConfiguredOpenTelemetrySdk)
22+
*/
23+
public static Resource getResource(
24+
AutoConfiguredOpenTelemetrySdk autoConfiguredOpenTelemetrySdk) {
25+
try {
26+
Method method = AutoConfiguredOpenTelemetrySdk.class.getDeclaredMethod("getResource");
27+
method.setAccessible(true);
28+
return (Resource) method.invoke(autoConfiguredOpenTelemetrySdk);
29+
} catch (NoSuchMethodException | InvocationTargetException | IllegalAccessException e) {
30+
throw new IllegalStateException(
31+
"Error calling getResource on AutoConfiguredOpenTelemetrySdk", e);
32+
}
33+
}
34+
}

maven-extension/src/main/java/io/opentelemetry/maven/OpenTelemetrySdkService.java

Lines changed: 12 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -11,17 +11,17 @@
1111
import io.opentelemetry.maven.semconv.MavenOtelSemanticAttributes;
1212
import io.opentelemetry.sdk.OpenTelemetrySdk;
1313
import io.opentelemetry.sdk.autoconfigure.AutoConfiguredOpenTelemetrySdk;
14+
import io.opentelemetry.sdk.autoconfigure.internal.AutoConfigureUtil;
1415
import io.opentelemetry.sdk.autoconfigure.spi.ConfigProperties;
1516
import io.opentelemetry.sdk.autoconfigure.spi.internal.DefaultConfigProperties;
1617
import io.opentelemetry.sdk.common.CompletableResultCode;
1718
import io.opentelemetry.sdk.resources.Resource;
1819
import java.io.Closeable;
1920
import java.util.Collections;
2021
import java.util.HashMap;
21-
import java.util.Locale;
2222
import java.util.Map;
23+
import java.util.Optional;
2324
import java.util.concurrent.TimeUnit;
24-
import javax.annotation.Nullable;
2525
import javax.annotation.PreDestroy;
2626
import javax.inject.Named;
2727
import javax.inject.Singleton;
@@ -40,9 +40,9 @@ public final class OpenTelemetrySdkService implements Closeable {
4040

4141
private final OpenTelemetrySdk openTelemetrySdk;
4242

43-
private Resource resource;
43+
private final Resource resource;
4444

45-
private ConfigProperties configProperties;
45+
private final ConfigProperties configProperties;
4646

4747
private final Tracer tracer;
4848

@@ -55,37 +55,26 @@ public OpenTelemetrySdkService() {
5555
"OpenTelemetry: Initialize OpenTelemetrySdkService v{}...",
5656
MavenOtelSemanticAttributes.TELEMETRY_DISTRO_VERSION_VALUE);
5757

58-
this.resource = Resource.empty();
59-
this.configProperties = DefaultConfigProperties.createFromMap(Collections.emptyMap());
60-
6158
AutoConfiguredOpenTelemetrySdk autoConfiguredOpenTelemetrySdk =
6259
AutoConfiguredOpenTelemetrySdk.builder()
6360
.setServiceClassLoader(getClass().getClassLoader())
6461
.addPropertiesCustomizer(
6562
OpenTelemetrySdkService::requireExplicitConfigOfTheOtlpExporter)
66-
.addPropertiesCustomizer(
67-
config -> {
68-
// keep a reference to the computed config properties for future use in the
69-
// extension
70-
this.configProperties = config;
71-
return Collections.emptyMap();
72-
})
73-
.addResourceCustomizer(
74-
(res, configProperties) -> {
75-
// keep a reference to the computed Resource for future use in the extension
76-
this.resource = Resource.builder().putAll(res).build();
77-
return this.resource;
78-
})
7963
.disableShutdownHook()
8064
.build();
8165

8266
this.openTelemetrySdk = autoConfiguredOpenTelemetrySdk.getOpenTelemetrySdk();
67+
this.configProperties =
68+
Optional.ofNullable(AutoConfigureUtil.getConfig(autoConfiguredOpenTelemetrySdk))
69+
.orElseGet(() -> DefaultConfigProperties.createFromMap(Collections.emptyMap()));
70+
this.resource =
71+
Optional.ofNullable(AutoConfigureUtil2.getResource(autoConfiguredOpenTelemetrySdk))
72+
.orElseGet(Resource::getDefault);
8373

8474
logger.debug("OpenTelemetry: OpenTelemetrySdkService initialized, resource:{}", resource);
8575

86-
// TODO should we replace `getBooleanConfig(name)` by `configProperties.getBoolean(name)`?
87-
Boolean mojoSpansEnabled = getBooleanConfig("otel.instrumentation.maven.mojo.enabled");
88-
this.mojosInstrumentationEnabled = mojoSpansEnabled == null || mojoSpansEnabled;
76+
this.mojosInstrumentationEnabled =
77+
configProperties.getBoolean("otel.instrumentation.maven.mojo.enabled", true);
8978

9079
this.tracer = openTelemetrySdk.getTracer("io.opentelemetry.contrib.maven", VERSION);
9180
}
@@ -168,17 +157,4 @@ public ContextPropagators getPropagators() {
168157
public boolean isMojosInstrumentationEnabled() {
169158
return mojosInstrumentationEnabled;
170159
}
171-
172-
@Nullable
173-
private static Boolean getBooleanConfig(String name) {
174-
String value = System.getProperty(name);
175-
if (value != null) {
176-
return Boolean.parseBoolean(value);
177-
}
178-
value = System.getenv(name.toUpperCase(Locale.ROOT).replace('.', '_'));
179-
if (value != null) {
180-
return Boolean.parseBoolean(value);
181-
}
182-
return null;
183-
}
184160
}

0 commit comments

Comments
 (0)