Skip to content

Commit e0d0405

Browse files
committed
supplier and then function
1 parent 70aede1 commit e0d0405

4 files changed

Lines changed: 17 additions & 31 deletions

File tree

api/all/src/main/java/io/opentelemetry/api/GlobalOpenTelemetry.java

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
import io.opentelemetry.context.propagation.ContextPropagators;
1818
import java.lang.reflect.InvocationTargetException;
1919
import java.lang.reflect.Method;
20+
import java.util.function.Function;
2021
import java.util.function.Supplier;
2122
import java.util.logging.Level;
2223
import java.util.logging.Logger;
@@ -117,11 +118,18 @@ public static void set(OpenTelemetry openTelemetry) {
117118
}
118119
}
119120

120-
public static <T extends OpenTelemetry> T set(Supplier<T> supplier) {
121+
/**
122+
* Sets the {@link OpenTelemetry} that should be the global instance.
123+
*
124+
* <p>This method calls the given {@code supplier}, converts the output to an {@link
125+
* OpenTelemetry} object, and finally calls {@link #set(OpenTelemetry)}, all while holding the
126+
* {@link GlobalOpenTelemetry} mutex.
127+
*/
128+
public static <T> T set(Supplier<T> supplier, Function<T, OpenTelemetry> converter) {
121129
synchronized (mutex) {
122-
T openTelemetry = supplier.get();
123-
set(openTelemetry);
124-
return openTelemetry;
130+
T output = supplier.get();
131+
set(converter.apply(output));
132+
return output;
125133
}
126134
}
127135

sdk-extensions/autoconfigure/src/main/java/io/opentelemetry/sdk/autoconfigure/AutoConfiguredOpenTelemetrySdk.java

Lines changed: 1 addition & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,6 @@
99
import io.opentelemetry.api.GlobalOpenTelemetry;
1010
import io.opentelemetry.api.OpenTelemetry;
1111
import io.opentelemetry.api.incubator.config.ConfigProvider;
12-
import io.opentelemetry.api.logs.LoggerProvider;
13-
import io.opentelemetry.api.metrics.MeterProvider;
14-
import io.opentelemetry.api.trace.TracerProvider;
15-
import io.opentelemetry.context.propagation.ContextPropagators;
1612
import io.opentelemetry.sdk.OpenTelemetrySdk;
1713
import io.opentelemetry.sdk.autoconfigure.internal.AutoConfigureUtil;
1814
import io.opentelemetry.sdk.autoconfigure.spi.ConfigProperties;
@@ -29,7 +25,7 @@
2925
*/
3026
@Immutable
3127
@AutoValue
32-
public abstract class AutoConfiguredOpenTelemetrySdk implements OpenTelemetry {
28+
public abstract class AutoConfiguredOpenTelemetrySdk {
3329

3430
/**
3531
* Returns an {@link AutoConfiguredOpenTelemetrySdk} automatically initialized through recognized
@@ -94,24 +90,4 @@ static AutoConfiguredOpenTelemetrySdk create(
9490
abstract Object getConfigProvider();
9591

9692
AutoConfiguredOpenTelemetrySdk() {}
97-
98-
@Override
99-
public TracerProvider getTracerProvider() {
100-
return getOpenTelemetrySdk().getTracerProvider();
101-
}
102-
103-
@Override
104-
public MeterProvider getMeterProvider() {
105-
return getOpenTelemetrySdk().getMeterProvider();
106-
}
107-
108-
@Override
109-
public LoggerProvider getLogsBridge() {
110-
return getOpenTelemetrySdk().getLogsBridge();
111-
}
112-
113-
@Override
114-
public ContextPropagators getPropagators() {
115-
return getOpenTelemetrySdk().getPropagators();
116-
}
11793
}

sdk-extensions/autoconfigure/src/main/java/io/opentelemetry/sdk/autoconfigure/AutoConfiguredOpenTelemetrySdkBuilder.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -427,7 +427,9 @@ public AutoConfiguredOpenTelemetrySdk build() {
427427
if (!setResultAsGlobal) {
428428
return buildImpl();
429429
}
430-
AutoConfiguredOpenTelemetrySdk sdk = GlobalOpenTelemetry.set(this::buildImpl);
430+
AutoConfiguredOpenTelemetrySdk sdk =
431+
GlobalOpenTelemetry.set(
432+
this::buildImpl, AutoConfiguredOpenTelemetrySdk::getOpenTelemetrySdk);
431433
logger.log(Level.FINE, "Global OpenTelemetry set to {0} by autoconfiguration", sdk);
432434
return sdk;
433435
}

sdk-extensions/autoconfigure/src/test/java/io/opentelemetry/sdk/autoconfigure/AutoConfiguredOpenTelemetrySdkTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -374,7 +374,7 @@ void builder_setResultAsGlobalFalse() {
374374

375375
@Test
376376
void builder_setResultAsGlobalTrue() {
377-
OpenTelemetry openTelemetry = builder.setResultAsGlobal().build();
377+
OpenTelemetrySdk openTelemetry = builder.setResultAsGlobal().build().getOpenTelemetrySdk();
378378

379379
assertThat(GlobalOpenTelemetry.get()).extracting("delegate").isSameAs(openTelemetry);
380380
}

0 commit comments

Comments
 (0)